Quoting Nicolas Saenz Julienne (2019-06-06 07:22:56) > diff --git a/drivers/cpufreq/raspberrypi-cpufreq.c > b/drivers/cpufreq/raspberrypi-cpufreq.c > new file mode 100644 > index 000000000000..99b59d5a50aa > --- /dev/null > +++ b/drivers/cpufreq/raspberrypi-cpufreq.c [...] > + > +/* > + * Since the driver depends on clk-raspberrypi, which may return > EPROBE_DEFER, > + * all the activity is performed in the probe, which may be defered as well. > + */ > +static struct platform_driver raspberrypi_cpufreq_driver = { > + .driver = { > + .name = "raspberrypi-cpufreq", > + }, > + .probe = raspberrypi_cpufreq_probe, > + .remove = raspberrypi_cpufreq_remove, > +}; > +module_platform_driver(raspberrypi_cpufreq_driver);
How does this driver probe? Do you have a node in DT named raspberrypi-cpufreq that matches and probes this? I would think this would follow the drivers/cpufreq/cpufreq-dt-platdev.c design where it's an initcall that probes the board compatible string. Or, if it depends on clk-raspberrypi probing, maybe it could create the platform device in that drivers probe function. > + > +MODULE_AUTHOR("Nicolas Saenz Julienne <nsaenzjulie...@suse.de"); > +MODULE_DESCRIPTION("Raspberry Pi cpufreq driver"); > +MODULE_LICENSE("GPL"); > +MODULE_ALIAS("platform:raspberrypi-cpufreq"); I don't think the module alias is needed anymore.