devicetree vs. MODULE_DEPEND

Ian Lepore ian at freebsd.org
Wed Aug 9 21:59:28 UTC 2017


On Wed, 2017-08-09 at 22:59 +0200, Manuel Stühn wrote:
> Hi list,
> 
> is it correct, that the sequence in the devicetree-blob defines the 
> probing sequence without considering the MODULE_DEPEND-macro?
> 
> I stumbled over an unexpected behavior during the ti_pruss-driver 
> development. Because the ti-pruss is gone in the default devicetree,
>> activate it via the overlay-framework and put it to the address 
> "/ocp/pruss at 4a300000".  The devicetree-blob contains the entry and
> the 
> driver gets probed, but it fails to enable its clock. 
> This is quite obvious as according to dmesg the am335x_prcm0 is
> probed 
> _after_ the ti_pruss0 device. So I tried to handle this by adding an 
> explicit dependency to ti_prcm into the ti_pruss driver like: 
> MODULE_DEPEND(ti_pruss, ti_prcm, 1, 1, 1);
> 
> It compiles cleanly, unfortunately this changes nothing. Only placing
> it 
> in the devicetree after the prcm-node or loading it as a module
> after 
> the OS booted up makes the device probe correctly.
> 
> Any ideas?

MODULE_DEPEND only affects the kernel linker.  It ensures that other
modules you depend on automatically get loaded along with your module.

Try the attached patch to ensure that the clocks driver is loaded
earlier than drivers that might rely on it.

-- Ian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: am335x_prcm.c.diff
Type: text/x-patch
Size: 589 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20170809/e76f7f02/attachment.bin>


More information about the freebsd-arm mailing list