On Mon, May 08, 2017 at 12:31:52PM +0100, Chris Dew wrote:
> First, apologies, this is my first Linux kernel patch in at least 15 years.
> While I have spent a few hours reading various pieces of documentation about
> the Linux kernel development processes, I have probably missed some critical
> files entirely.
>
> Also, there are probably a few coding issues in this patch.
>
> This driver has only been tested to work on our custom ARM board, where we
> give it the following device tree info:
>
> arch/arm/boot/dts/imx6qdl-smarcfimx6.dtsi:
>
> ...
> &i2c1 {
> ...
> pca9570: pca9570@24 {
> compatible = "pca9570";
> reg = <0x24>;
> gpio-controller;
> };
> };
>
> I have some questions:
>
> - Is the "value", with which struct gpio_chip.set is called, guaranteed to
> be 0 or 1?
>
> - Do I need to implement any form of locking around this driver, or is that
> done for me in layers above?
>
> - The pca9571 is an 8-bit version of this chip. Is leaving pca9571 support
> to a later patch the best idea? (I do not have one to test, nor any way to
> test one, at the moment.)
These are all good questions to ask on the gpio mailing list. Use
scripts/get_maintainer.pl to determine what people, and lists, to cc:
for a patch. That will get you to the right people.
> - This code was written and tested against a vendor-modified 4.1.15 kernel
> tree. This patch is made against the stable 4.9.9. To make it compile
> against the newer kernel I had to replace references to struct gpio_chip.dev
> with struct gpio_chip.parent, as that struct member had been renamed between
> kernel versions.
4.9.9 is really old as well, you need to make a patch against Linus's
tree at the least, and linux-next is usually much better. We can't go
back in time and add new drivers to old kernels.
> - Should this driver be in the staging directory?
Why would it belong there? What needs to be done to it to get it out of
staging? Hint, you need a TODO file for a staging driver listing that
type of thing...
Minor comments on your patch:
You need a proper changelog and signed-off-by: line, please read
Documentation/SubmittingPatches for all of the info you need.
>
>
> ---
> drivers/gpio/Kconfig | 7 ++
> drivers/gpio/Makefile | 1 +
> drivers/gpio/gpio-pca9570.c | 253
> ++++++++++++++++++++++++++++++++++++++++++++
Your patch is line-wapped :(
> include/linux/i2c/pca9570.h | 22 ++++
> 4 files changed, 283 insertions(+)
> create mode 100644 drivers/gpio/gpio-pca9570.c
> create mode 100644 include/linux/i2c/pca9570.h
Why do you need a .h file?
> +/*
> + * Driver for pca9570 I2C GPO expanders
> + * Note: 9570 is at 0x24 - these value must be set
> + * in device tree.
> + *
> + * Copyright (C) 2017 Chris Dew, Thorcom Systems Ltd.
> + *
> + * Derived from drivers/gpio/gpio-max732x.c
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
Do you really mean "any later version"?
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Always run scripts/checkpatch.pl on your patch, so you don't get grumpyu
maintainers telling you to run scripts/checkpatch.pl on your patch...
> +out_failed:
> + if (chip->client)
> + i2c_unregister_device(chip->client);
> +
> + return -1;
Don't make up random error values, use proper -E codes instead.
thanks,
greg k-h
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel