On Thu, Mar 28, 2024 at 09:36:54AM +0100, Krzysztof Kozlowski wrote: > On 28/03/2024 03:32, Pavan Holla wrote: > > On Tue, Mar 26, 2024 at 9:59 PM Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: > >> > >> On 27/03/2024 04:39, Pavan Holla wrote: > >>> Hi Krzysztof, > >>> > >>> Thanks for the review. > >>> > >>> On Tue, Mar 26, 2024 at 1:47 AM Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: > >>>> Nothing improved. > >>> > >>> Yes. I only added maintainers of drivers/platform/chrome in v2. I am > >>> still investigating why MODULE_ALIAS() is required. > >> > >> Heh, I wrote why. You miss ID table. > > > > This driver is going to be used by the cros_ec_dev.c MFD. The UCSI device doesn’t > > have an ACPI or OF entry, so I am not sure how I can use MODULE_DEVICE_TABLE > > here. If I don’t use MODULE_ALIAS(“platform:” DRV_NAME), > > https://elixir.bootlin.com/linux/latest/source/drivers/mfd/cros_ec_dev.c#L206 > > isn’t able to automatically associate the driver with the device at boot. > > I haven’t upstreamed the change in cros_ec_dev.c yet, but the code is similar to > > existing code for drivers/platform/chrome/cros_usbpd_logger.c. There are many > > other occurrences of the same MODULE_ALIAS pattern: > > Just open other platform drivers and look how it is done there. Or ask > colleagues. There is absolutely no one in entire Chromium/google who > ever wrote platform_driver? platform_driver has ID table for matching. > > Otherwise how do you expect this to be matched? How your driver is being > matched and device bound? By fallback, right? So what is the primary method? Those platform devices are adding in drivers/mfd/cros_ec_dev.c via mfd_add_hotplug_devices(). By looking other use cases of mfd_add_hotplug_devices(): $ grep -R --files-with-matches mfd_add_hotplug_devices drivers/mfd/ drivers/mfd/dln2.c drivers/mfd/cros_ec_dev.c drivers/mfd/viperboard.c They also have no ID tables and need MODULE_ALIAS(). - drivers/gpio/gpio-dln2.c - drivers/i2c/busses/i2c-dln2.c - drivers/spi/spi-dln2.c - drivers/iio/adc/dln2-adc.c - drivers/gpio/gpio-viperboard.c - drivers/i2c/busses/i2c-viperboard.c - drivers/iio/adc/viperboard_adc.c I'm not sure whether using the path results in: - Lack of device ID table. - Need MODULE_ALIAS(). in the platform device drivers. And perhaps it relies on the fallback match?