Discussion:
linux-yocto custom device tree in overlay
Andreas Galauner
2014-05-07 15:33:29 UTC
Permalink
Hi Yocto Community,

I'm currently trying to build a custom image for a beaglebone black for
which I need to enable the can-controllers on the SoC. I managed to
create an overlay which already deals with building a few tools for CAN
communication, I created a kernel config snippet for linux-yocto to
enable CAN-support in the kernel and it already works with a USB
transceiver.

Now I need to modify the device tree for the board to enable the SoC
controllers. How do I put the device tree into my overlay? I tried
several ways, but the kernel buildsystem doesn't seem to find the dts
file to be compiled.
SRC_URI += "file://can.cfg \
file://am335x-boneblack-cansniff.dts"
KERNEL_DEVICETREE = "am335x-boneblack-cansniff.dtb"
Any ideas? Google wasn't too fruitful either.
With non-yocto kernels I always put the device tree into the whole path
like 'git/arch/arm/boot/dts/mydevicetree.dts' but that also doesn't
seem to work on linux-yocto because it uses another layout in its
working directory.

I'd rather not want to create my own git repo for linux-yocto like I did
for another project where I needed the same.

Thanks for your help,
- Andy
--
Bruce Ashfield
2014-05-07 19:37:02 UTC
Permalink
Post by Andreas Galauner
Hi Yocto Community,
I'm currently trying to build a custom image for a beaglebone black for
which I need to enable the can-controllers on the SoC. I managed to
create an overlay which already deals with building a few tools for CAN
communication, I created a kernel config snippet for linux-yocto to
enable CAN-support in the kernel and it already works with a USB
transceiver.
Now I need to modify the device tree for the board to enable the SoC
controllers. How do I put the device tree into my overlay? I tried
several ways, but the kernel buildsystem doesn't seem to find the dts
file to be compiled.
SRC_URI += "file://can.cfg \
file://am335x-boneblack-cansniff.dts"
KERNEL_DEVICETREE = "am335x-boneblack-cansniff.dtb"
Any ideas? Google wasn't too fruitful either.
With non-yocto kernels I always put the device tree into the whole path
like 'git/arch/arm/boot/dts/mydevicetree.dts' but that also doesn't
seem to work on linux-yocto because it uses another layout in its
working directory.
I use device trees all the time with linux-yocto based kernels, and
what you have above is fundamentally correct, except (as you noted)
the dts is going only be in ${WORKDIR} and not somewhere the kernel
build can find it.

So you can either patch it into the kernel, or do a bbappend with
that copies it into the source tree
(linux/arch/arm/boot/dts/mydevicetree.dts).

Cheers,

Bruce
Post by Andreas Galauner
I'd rather not want to create my own git repo for linux-yocto like I did
for another project where I needed the same.
Thanks for your help,
- Andy
--
Andreas Galauner
2014-05-08 13:48:48 UTC
Permalink
Post by Bruce Ashfield
So you can either patch it into the kernel, or do a bbappend with
that copies it into the source tree
(linux/arch/arm/boot/dts/mydevicetree.dts).
Thx! That worked fine.
Post by Bruce Ashfield
do_install_prepend() {
cp ${WORKDIR}/*.dts ${WORKDIR}/linux/arch/${ARCH}/boot/dts/
}
Cheers,
- Andy

--
Bruce Ashfield
2014-05-08 15:17:20 UTC
Permalink
Post by Andreas Galauner
Post by Bruce Ashfield
So you can either patch it into the kernel, or do a bbappend with
that copies it into the source tree
(linux/arch/arm/boot/dts/mydevicetree.dts).
Thx! That worked fine.
Glad to hear!

Bruce
Post by Andreas Galauner
Post by Bruce Ashfield
do_install_prepend() {
cp ${WORKDIR}/*.dts ${WORKDIR}/linux/arch/${ARCH}/boot/dts/
}
Cheers,
- Andy
--
adnan
2016-07-18 16:39:57 UTC
Permalink
Post by Bruce Ashfield
Post by Andreas Galauner
Post by Bruce Ashfield
So you can either patch it into the kernel, or do a bbappend with
that copies it into the source tree
(linux/arch/arm/boot/dts/mydevicetree.dts).
Thx! That worked fine.
Glad to hear!
Bruce
Post by Andreas Galauner
Post by Bruce Ashfield
do_install_prepend() {
cp ${WORKDIR}/*.dts ${WORKDIR}/linux/arch/${ARCH}/boot/dts/
}
Cheers,
- Andy
Hi,
I am running into the same problem. Editing the existing dts files in
the kernel source directory does not help. After some time, the files
are restored again.

I added my own dts file which is located at a different location but the
method you mentioned is not clear to me. Could you please specify where
did you add this? In which file?

Thanks in advance.
Adnan

--

Loading...