Hi Alexander,
On Thu, 16 Oct 2025 20:40:34 +0200 Alexander Sverdlin alexander.sverdlin@gmail.com wrote:
...
In order to have the I2C or the SPI module loaded automatically, move the MODULE_DEVICE_TABLE(of, ...) the core to I2C and SPI parts. Also move cs4271_dt_ids itself from the core part to I2C and SPI parts as both the call to MODULE_DEVICE_TABLE(of, ...) and the cs4271_dt_ids table itself need to be in the same file.
I'm a bit confused by this change. What do you have in SYSFS "uevent" entry for the real device?
Here is my uevent content: --- 8<--- # cat /sys/bus/i2c/devices/3-0010/uevent DRIVER=cs4271 OF_NAME=cs4271 OF_FULLNAME=/i2c@ff130000/cs4271@10 OF_COMPATIBLE_0=cirrus,cs4271 OF_COMPATIBLE_N=1 MODALIAS=of:Ncs4271T(null)Ccirrus,cs4271 # --- 8< ---
If you consider spi_uevent() and i2c_device_uevent(), "MODALIAS=" in the "uevent" should be prefixed with either "spi:" or "i2c:". And this isn't what you adress in your patch.
You provide [identical] "of:" prefixed modalias to two different modules (not sure, how this should work), but cs4271 is not an MMIO device, so it should not generate an "of:" prefixed uevent.
Could you please show the relevant DT snippet for the affected HW?
And this is the related DT part: --- 8< --- &i2c3 { status = "okay";
cs4271@10 { compatible = "cirrus,cs4271"; reg = <0x10>; clocks = <&cru SCLK_I2S_8CH_OUT>; clock-names = "mclk";
... }; }; --- 8< ---
i2c3 is the following node: https://elixir.bootlin.com/linux/v6.17.1/source/arch/arm64/boot/dts/rockchip...
About the related module, I have the following: --- 8< --- # modinfo snd_soc_cs4271_i2c filename: /lib/modules/6.18.0-rc1xxxx-00050-g4fa36970abe5-dirty/kernel/sound/soc/codecs/snd-soc-cs4271-i2c.ko license: GPL author: Alexander Sverdlin subaparts@yandex.ru description: ASoC CS4271 I2C Driver alias: i2c:cs4271 alias: of:N*T*Ccirrus,cs4271C* alias: of:N*T*Ccirrus,cs4271 depends: snd-soc-cs4271 intree: Y name: snd_soc_cs4271_i2c vermagic: 6.18.0-rc1xxxx-00050-g4fa36970abe5-dirty SMP preempt mod_unload aarch64 # --- 8< ---
Best regards, Hervé