On Fri, 18 Dec 2020, Jason Gunthorpe wrote: > On Fri, Dec 18, 2020 at 06:03:10PM +0000, Mark Brown wrote: > > On Fri, Dec 18, 2020 at 12:28:17PM -0400, Jason Gunthorpe wrote: > > > On Fri, Dec 18, 2020 at 03:52:04PM +0000, Mark Brown wrote: > > > > On Fri, Dec 18, 2020 at 10:08:54AM -0400, Jason Gunthorpe wrote: > > > > > > > I thought the recent LWN article summed it up nicely, auxillary bus is > > > > > for gluing to subsystems together using a driver specific software API > > > > > to connect to the HW, MFD is for splitting a physical HW into disjoint > > > > > regions of HW. > > > > > > This conflicts with the statements from Greg about not using the > > > > platform bus for things that aren't memory mapped or "direct firmware", > > > > a large proportion of MFD subfunctions are neither at least in so far as > > > > I can understand what direct firmware means. > > > > > I assume MFD will keep existing and it will somehow stop using > > > platform device for the children it builds. > > > > If it's not supposed to use platform devices so I'm assuming that the > > intention is that it should use aux devices, otherwise presumably it'd > > be making some new clone of the platform bus but I've not seen anyone > > suggesting this. > > I wouldn't assume that, I certainly don't want to see all the HW > related items in platform_device cloned roughly into aux device. > > I've understood the bus type should be basically related to the thing > that is creating the device. In a clean view platform code creates > platform devices. DT should create DT devices, ACPI creates ACPI > devices, PNP does pnp devices, etc > > So, I strongly suspect, MFD should create mfd devices on a MFD bus > type. > > Alexandre's point is completely valid, and I think is the main > challenge here, somehow avoiding duplication. > > If we were to look at it with some OOP viewpoint I'd say the generic > HW resource related parts should be some shared superclass between > 'struct device' and 'struct platform/pnp/pci/acpi/mfd/etc_device'. You're confusing things here. ACPI, DT and MFD are not busses. They are just methods to describe/register devices which will operate on buses. Busses include things like; I2C, SPI, PCI, USB and Platform (MMIO). -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog