driver_probe_device never called for nested device

Mathieu Malaterre mathieu.malaterre at gmail.com
Thu Sep 7 03:41:12 EDT 2017


Hi all,

I am trying to understand the mechanism for driver_probe_device for my
specific setup. It seems that I cannot bind the driver to the device
in the following case (nested node):

cgu: jz4780-cgu at 10000000 {
compatible = "ingenic,jz4780-cgu", "syscon";
(...)
rng: rng at d8 {
compatible = "ingenic,jz4780-rng";
};
};

Using CONFIG_DEBUG_DRIVER=y, all I can see in the log is:

Sep  6 22:06:36 ci20 kernel: [    0.180304] bus: 'platform': add
driver jz4780-rng

While I would have expected something like:

Sep  6 22:30:57 ci20 kernel: [    0.167017] bus: 'platform': add
driver jz4780-rng
Sep  6 22:30:57 ci20 kernel: [    0.167033] bus: 'platform':
driver_probe_device: matched device 100000d8.rng with driver
jz4780-rng
Sep  6 22:30:57 ci20 kernel: [    0.167038] bus: 'platform':
really_probe: probing driver jz4780-rng with device 100000d8.rng

Did I miss something from the documentation about nested node ? I
failed to understand the code in drivers/base/bus.c &
drivers/base/dd.c to understand how the device tree is traversed (for
instance: which bus is not considered).


For reference:

* https://github.com/torvalds/linux/blob/master/arch/mips/boot/dts/ingenic/jz4780.dtsi#L37-L45
* https://github.com/torvalds/linux/blob/master/drivers/clk/ingenic/jz4780-cgu.c#L733

Thanks for help,
--
Mathieu



More information about the Kernelnewbies mailing list