R-Car/DT-Overlays

From eLinux.org
Jump to: navigation, search

Renesas Device Tree Overlays

To aid in using DT overlays, two branches are available in the repository at git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git:

  • topic/overlays: Basic DT overlay infrastructure,
  • topic/renesas-overlays: DT overlay sources to access various devices on expansion connectors on boards with Renesas SoCs.

Note: Both branches are rebased frequently.


Kernel Configuration

Make sure to enable the following options when configuring your kernel:

  • Device Tree overlays
  • Device Tree Overlay ConfigFS interface
CONFIG_OF_OVERLAY=y
CONFIG_OF_CONFIGFS=y


Build DT Overlays

DT Overlay binaries (*.dtbo) are created together with normal DT binaries (*.dtb) during:

make dtbs


Install DT Overlays

Copy all *.dtbo for your platform to /lib/firmware/ on the target.


Mount ConfigFS

Make sure ConfigFS is mounted. On Debian, this is taken care of automatically by /etc/init.d/mountkernfs.sh.

If needed, you can mount it manually using:

mount x /sys/kernel/config -t configfs


Load and Unload DT Overlays

overlay add hscif1
overlay rm hscif1

Note: As the script uses wildcards, do not pass non-unique dtbo filename parts.

References

Pantelis Antoniou's DT overlay repository

Helper Script

Copy the following to e.g. /usr/local/sbin/overlay:

#!/bin/bash

set -e

OVERLAYS=/sys/kernel/config/device-tree/overlays
FIRMWARE=/lib/firmware

function add()
{
        if [ -e $OVERLAYS/$1 ]; then
                echo Overlay $1 already exists
                exit -1
        fi

        mkdir $OVERLAYS/$1
        echo $(basename $FIRMWARE/*$1*) > $OVERLAYS/$i/path
}

function remove()
{
        rmdir $OVERLAYS/$1
}

cmd=add

for i in $*; do
        case $i in
        add)
                cmd=add
                ;;

        rm)
                cmd=remove
                ;;

        *)
                $cmd $i
                ;;
        esac
done