Re: [PATCH v3] mfd: ch341: add driver for the WCH CH341 in I2C/GPIO mode

From: Lee Jones
Date: Wed Mar 16 2022 - 03:29:46 EST


On Tue, 15 Mar 2022, Frank Zago wrote:

> Hello Lee,
>
> >> Changes from v2:
> >> - bug fixes
> >> - more robust USB enumeration
> >> - Changed to an MFD driver as suggested
> >
> > Perhaps you should have engaged with me before potentially wasting
> > your valuable time.
> >
> > MFD is designed to take a parent platform driver and split it out into
> > various sub-systems. If you don't use the MFD Core API (which is the
> > case here) it is not an MFD. MFD is not a dumping ground for
> > collections of random device drivers.
> >
> > I have no problem with you placing registration and core code inside
> > MFD (that *is* what it was designed for), but the leaf 'functionality'
> > should be placed in more appropriate locations.
> >
> > I2C => drivers/i2c
> > SPI => drivers/spi
> > GPIO => drivers/gpio (or perhaps drivers/pinctrl)
> > USB => drivers/usb
> > UART => drivers/tty/serial
> >
> > Etc ... Find places for everything.
> >
> > Anything left over, give to Greg (drivers/misc). :)
> >
>
> AFAICS that works if the driver is built-in, but not as a module.

How did you reach that conclusion?

I expect most of the drivers in MFD and their children to be modules.

`git grep module_.*_driver -- drivers/mfd/`

> I'd prefer that driver to be a module if desired, and have all its files in the same
> place instead of scattered in various directories.

The design and organisation of the kernel does not work like that.

> I can try drivers/misc if it's a better place.

I suspect you'll receive the same advice from Greg and Arnd.

--
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog