[lkml]   [2019]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectUsing device tree overlays in Linux

I'm implementing support for some modular Linux based systems using
device tree overlays. The code is working but it seems a little more
fiddly that than it should be so I'm wondering if I'm doing it right.

An example of what I'm doing is

DTC_FLAGS_myboard += -@

obj-y += myplugin.dtb.o
obj-y += mydriver.o

fragment@0 {
target = <&i2c0>;
__overlay__ {
gpio@74 {
compatible = "nxp,pca9539";
reg = <0x74>

extern uint8_t __dtb_myplugin_begin[];
extern uint8_t __dtb_myplugin_end[];

int mydriver_probe(struct platform_device *pdev)
u32 size = __dtb_myplugin_end - __dtb_myplugin_begin;
int overlay_id;
int ret;

ret = of_overlay_fdt_apply(__dtb_myplugin_begin,
size, &overlay_id);
return ret;

The first issue is that I need to add -@ to the DTC_FLAGS for my board
dtb. I kind of understand that I only need -@ if my overlay targets
something symbolic so I might not need it but I was surprised that there
wasn't a Kconfig option that makes this happen automatically.

externing things in C files makes complain. I see the
of/unittests.c and rcar_du_of.c hide this with a macro. I was again
surprised that there wasn't a common macro to declare these.

 \ /
  Last update: 2019-04-04 03:51    [W:0.109 / U:0.088 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site