mbox series

[v6,0/6] Add Intel LJCA device driver

Message ID 20230323172113.1231050-1-xiang.ye@intel.com
Headers show
Series Add Intel LJCA device driver | expand

Message

Ye Xiang March 23, 2023, 5:21 p.m. UTC
Add driver for Intel La Jolla Cove Adapter (LJCA) device.
This is a USB-GPIO, USB-I2C and USB-SPI device. We add 4
drivers to support this device: a USB driver, a GPIO chip
driver, a I2C controller driver and a SPI controller driver.

---
v6:
 - ljca: split LJCA USB driver into two commits: USB part and API part.
 - gpio/i2c/spi: use auxiliary bus for sub-module device enumeration instead of MFD.
 - move document patch for LJCA sysfs entry to the 3th patch of this patch series.
 - ljca: fix potential race condition when wait response timeout.
 - ljca: use devm_kzalloc to malloc ljca device struct. 

v5:
 - move ljca.h from drivers/include/mfd to drivers/include/usb.
 - ljca: fix a potential memory leak issue.
 - add a blank line before return to adust to kernel code style.
 - ljca: sysfs: split "cmd" to "ljca_dfu" and "ljca_trace_level".

v4:
 - move ljca.c from drivers/mfd to drivers/usb/misc folder.
 - fix index warning in sysfs-bus-devices-ljca.

v3:
 - spi: make ljca_spi_transfer inline and fix an endian issue.

v2:
 - ljca: remove reset command.
 - gpio/spi/i2c: add `default MFD_LJCA` in Kconfig.
 - gpio: add "select GPIOLIB_IRQCHIP" in Kconfig.

Ye Xiang (6):
  usb: Add support for Intel LJCA device
  usb: ljca: Add transport interfaces for sub-module drivers
  Documentation: Add ABI doc for attributes of LJCA device
  gpio: Add support for Intel LJCA USB GPIO driver
  i2c: Add support for Intel LJCA USB I2C driver
  spi: Add support for Intel LJCA USB SPI driver

 .../ABI/testing/sysfs-bus-usb-devices-ljca    |   36 +
 drivers/gpio/Kconfig                          |   12 +
 drivers/gpio/Makefile                         |    1 +
 drivers/gpio/gpio-ljca.c                      |  458 ++++++++
 drivers/i2c/busses/Kconfig                    |   11 +
 drivers/i2c/busses/Makefile                   |    1 +
 drivers/i2c/busses/i2c-ljca.c                 |  355 ++++++
 drivers/spi/Kconfig                           |   11 +
 drivers/spi/Makefile                          |    1 +
 drivers/spi/spi-ljca.c                        |  289 +++++
 drivers/usb/misc/Kconfig                      |   13 +
 drivers/usb/misc/Makefile                     |    1 +
 drivers/usb/misc/ljca.c                       | 1012 +++++++++++++++++
 include/linux/usb/ljca.h                      |   95 ++
 14 files changed, 2296 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
 create mode 100644 drivers/gpio/gpio-ljca.c
 create mode 100644 drivers/i2c/busses/i2c-ljca.c
 create mode 100644 drivers/spi/spi-ljca.c
 create mode 100644 drivers/usb/misc/ljca.c
 create mode 100644 include/linux/usb/ljca.h

Comments

Greg Kroah-Hartman March 23, 2023, 6:05 p.m. UTC | #1
On Fri, Mar 24, 2023 at 01:21:08AM +0800, Ye Xiang wrote:
> +config USB_LJCA
> +	tristate "Intel La Jolla Cove Adapter support"
> +	select AUXILIARY_BUS
> +	depends on USB
> +	help
> +	  This adds support for Intel La Jolla Cove USB-I2C/SPI/GPIO
> +	  Master Adapter (LJCA). Additional drivers such as I2C_LJCA,
> +	  GPIO_LJCA and SPI_LJCA must be enabled in order to use the
> +	  functionality of the device.
> +
> +	  This driver can also be built as a module. If so, the module
> +	  will be called ljca.

That's a very generic name for a USB driver, why not "usb_ljca"?

> +struct ljca_dev {
> +	struct usb_device *udev;

You didn't remove this like you said you would :(
Ye Xiang March 23, 2023, 6:44 p.m. UTC | #2
Hi Greg,

Thanks for your review.
On Thu, Mar 23, 2023 at 07:05:22PM +0100, Greg Kroah-Hartman wrote:
> On Fri, Mar 24, 2023 at 01:21:08AM +0800, Ye Xiang wrote:
> > +config USB_LJCA
> > +	tristate "Intel La Jolla Cove Adapter support"
> > +	select AUXILIARY_BUS
> > +	depends on USB
> > +	help
> > +	  This adds support for Intel La Jolla Cove USB-I2C/SPI/GPIO
> > +	  Master Adapter (LJCA). Additional drivers such as I2C_LJCA,
> > +	  GPIO_LJCA and SPI_LJCA must be enabled in order to use the
> > +	  functionality of the device.
> > +
> > +	  This driver can also be built as a module. If so, the module
> > +	  will be called ljca.
> 
> That's a very generic name for a USB driver, why not "usb_ljca"?
Thanks for the suggestion. Will adopt it on next version.
> 
> > +struct ljca_dev {
> > +	struct usb_device *udev;
> 
> You didn't remove this like you said you would :(
Sorry. I just stopped using it, but I forgot to delete it in struct ljca_dev.
The udev field is unused in this driver now. I will definitely delete
it on next version.

--
Thanks
Ye Xiang