All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Packham <Chris.Packham@alliedtelesis.co.nz>
To: "pantelis.antoniou@konsulko.com" <pantelis.antoniou@konsulko.com>,
	"frowand.list@gmail.com" <frowand.list@gmail.com>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>
Cc: "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Hamish Martin <Hamish.Martin@alliedtelesis.co.nz>
Subject: Using device tree overlays in Linux
Date: Thu, 4 Apr 2019 01:50:20 +0000	[thread overview]
Message-ID: <71fb0ff289e84c55bd92ecd96bc9aa76@svr-chch-ex1.atlnz.lc> (raw)

Hi,

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


arch/arm/boot/dts/Makefile:
DTC_FLAGS_myboard += -@

drivers/foo/Makefile:
obj-y += myplugin.dtb.o
obj-y += mydriver.o

drivers/foo/myplugin.dts:
/dts-v1/;
/plugin/;
/{
	fragment@0 {
		target = <&i2c0>;
		__overlay__ {
			gpio@74 {
				compatible = "nxp,pca9539";
				reg = <0x74>
			};
		};
	};
};

drivers/foo/mydriver.c:
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 checkpatch.pl 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.



             reply	other threads:[~2019-04-04  1:50 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-04  1:50 Chris Packham [this message]
2019-04-06  6:07 ` Using device tree overlays in Linux Rob Herring
2019-04-08  1:05 ` Frank Rowand
2019-04-08  1:27   ` Chris Packham
2019-04-09 19:19     ` Frank Rowand
2019-04-09 20:54       ` Chris Packham
2019-04-09 19:33     ` Frank Rowand
2019-04-09 20:47       ` Chris Packham

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=71fb0ff289e84c55bd92ecd96bc9aa76@svr-chch-ex1.atlnz.lc \
    --to=chris.packham@alliedtelesis.co.nz \
    --cc=Hamish.Martin@alliedtelesis.co.nz \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pantelis.antoniou@konsulko.com \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.