Hi Heikki, Thanks for the review. On Tue, Mar 14, 2023 at 10:36:57AM +0200, Heikki Krogerus wrote: > Hi Xiang, > > On Tue, Mar 14, 2023 at 04:03:26PM +0800, Ye, Xiang wrote: > > > Please don't use the MFD API outside of drivers/mfd. > > > > > > If you wish to use the API, please do. > > > > > > Strip out (only) the MFD parts and move them into drivers/mfd. > > I have no idea about how to split MFD parts out from this driver > > currently. The MFD part just have mfd cells filling and the call > > mfd_add_hotplug_devices to register mfd devices. How to module them > > as an independent driver? > > Would you give some hints or recommendations? > > > > And I am a little comfused about where this USB device driver should > > be put to (drivers/mfd or drivers/usb). > > > > As far as I know, where a driver should be put is based on what > > it provides. This driver just do some urb package transfer to provides > > multi-functions, such as GPIO function, I2C function, SPI function. > > so it should be under drivers/mfd folder. Please correct me, if > > something is wrong. Thanks > > You don't really seem to get any benefit from MFD. Perhaps it would be > more appropriate and clear if you just registered auxiliary devices in > this driver. Check drivers/base/auxiliary.c. Yes, it should be a work. I have a question. MFD provides the ACPI binding for sub-devices through struct mfd_cell_acpi_match. But I didn't see this in drivers/base/auxiliary.c. If using auxiliary bus to implement the LJCA sub-devices, we need to do the sub-devices acpi binding manually in ljca.c. Something Like: adr = LJCA_ACPI_MATCH_GPIO adev = acpi_find_child_device(parent, adr, false); ACPI_COMPANION_SET(&pdev->dev, adev ?: parent); Is that acceptable? -- Thanks Ye Xiang