Device Tree Blob support in l4linux

Martin Schröder martin.schroeder at openlimit.com
Tue Aug 19 17:43:29 CEST 2014


Am 19.08.2014 um 14:25 schrieb Martin Schröder:
> Hi Adam,
>
> I tracked the problem down to l4linux/arch/l4/kernel/arch-arm/setup.c:
> In static customize_machine(void) either machine_desc->init_machine() is
> called and the static/generic platform devices are added (and the DT
> disregarded). If init_machine is not set the DT is parsed instead by
> of_platform_populate. So I changed in l4.c the .init_machine property to
> NULL and got all the devices generated from the DT.

While trying to get fec_main.c probed, I recognized that skipping 
.init_machine is not a good idea, since dma_alloc_coherent fails while 
allocating the memory for the network buffer descriptors in fec_main.c. 
This is due to the missing call of l4io_request_iomem in the "dmamem" 
device L4X_DEVICE_CB. So it seems that both init_machine() and 
of_platform_populate() is needed. If I remove the "else" line from the 
if statement in customize_machine the dma_alloc_coherent succeeds again.

> Now at least I got the pinctrl-mxs.c working (utilizes only memory). But
> gpoi-mxs.c does not get it's irq and fails probing. What is the correct
> interrupt-parent definition if the interrupt controller is outside of
> l4linux?

Maybe the interrupt-parent adjustment could also be done "in memory" 
after loading the dtb?


Best regards,
    Martin.





More information about the l4-hackers mailing list