linux-yocto custom device tree in overlay
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.
That definitely doesn't work:
Quoted 3 lines
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
Quoted 19 lines · 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.
That definitely doesn't work:
Quoted 3 lines
SRC_URI += "file://can.cfg \ file://am335x-boneblack-cansniff.dts"
KERNEL_DEVICETREE= "am335x-boneblack-cansniff.dtb"
Quoted 5 lines
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
Quoted 7 lines
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
Quoted 3 lines · 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.
For reference, this is what I added:
Quoted 3 lines
do_install_prepend() {
cp ${WORKDIR}/*.dts ${WORKDIR}/linux/arch/${ARCH}/boot/dts/
}Cheers,
- Andy
Quoted 6 lines · Andreas Galauner
Quoted 3 lines · 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
Quoted 9 lines
For reference, this is what I added:
Quoted 3 lines
do_install_prepend() { cp ${WORKDIR}/*.dts ${WORKDIR}/linux/arch/${ARCH}/boot/dts/ }Cheers,
- Andy
Quoted 7 lines · Bruce Ashfield
Quoted 5 lines · Andreas Galauner
Quoted 3 lines · 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).
Quoted 16 lines
Quoted 1 line
Thx! That worked fine.
Glad to hear!
Bruce
Quoted 9 lines
For reference, this is what I added:
Quoted 3 lines
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