diff options
Diffstat (limited to 'recipes-bsp/multitech/mt-dt-overlay_1.2.5.bb')
-rw-r--r-- | recipes-bsp/multitech/mt-dt-overlay_1.2.5.bb | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/recipes-bsp/multitech/mt-dt-overlay_1.2.5.bb b/recipes-bsp/multitech/mt-dt-overlay_1.2.5.bb new file mode 100644 index 0000000..58bcf69 --- /dev/null +++ b/recipes-bsp/multitech/mt-dt-overlay_1.2.5.bb @@ -0,0 +1,95 @@ +DESCRIPTION = "Compile MT board device tree overlays" +LICENSE = "(GPLv2+)" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit update-rc.d +INITSCRIPT_NAME = "${PN}" +# mt-dt-overlay must start before mts-io +# because the gpio-leds driver will not load +# after mts-io. +INITSCRIPT_PARAMS = "start 39 S ." +DEPENDS = "dtc-native linux-at91 virtual/kernel u-boot-mkimage-native" +RDEPENDS_${PN} = "bash" + + +COMPATIBLE_MACHINE = "(mtcap|mtrv1|mtcdt)" + +# By using an overlay, we should be able to support multiple pinouts +# using the same image. The overlays go into /lib/dtoverlays. +# There names are: [hw-version]-driver.dtbo +# e.g. /lib/dtoverlays/MTRV1-0.0-pps.dtbo +# The idea is that mts-io will search for the overlays, and install the +# appropriate device tree overlay for the current hw-version. + +dt_dir = "/lib/dtoverlays" + +PR = "r1" + +SRC_URI = " \ + git://git.multitech.net/mt-dt-overlay.git;protocol=git \ + file://init \ +" + +SRCREV = "${PV}" + + +S = "${WORKDIR}/git" + +do_compile[depends] += "virtual/kernel:do_deploy virtual/kernel:do_shared_workdir" +do_compile[nostamp] = "1" + +# Make sure we are using the Yocto version of DTC, not what is installed in /usr/bin +DTC_BIN_DIR = "${COMPONENTS_DIR}/x86_64/dtc-native/usr/bin" + +do_compile () { + echo MACHINE is ${MACHINE} + oe_runmake DTC=${DTC_BIN_DIR}/dtc KERNEL_DIR=${STAGING_KERNEL_DIR} KERNEL_BUILD_DIR=${KERNEL_PATH} ${MACHINE}_dtbos +} + +FILES_${PN} = "${dt_dir} ${sysconfdir}" + +addtask install after do_compile + +# The destination and any symlinks are defined in the source file. +# +# A line starting as follows " * Put: [destination]" in the source +# defines the destination file name for the device tree binaries. +# +# A line starting as follows " * Link: [destination]" defines a symlink +# to the device tree binary file. +# +do_install () { + install -d ${D}/${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/${PN} + # Copy files to /lib/dt-overlay/main (mtac cards will be in mtac) + if [ -e ${AT91BOOTSTRAP_MACHINE} ]; then + install -d ${D}/${dt_dir} + ( + cd ${MACHINE} + echo "Current directory is $(pwd)" + for f in *.dtbo ; do + s=$(basename -s .dtbo $f).dtso + location_ln=$(egrep '^[[:space:]]*\*[[:space:]]*Put:[[:space:]]*[^[:space:]]+' $s | sed -r 's/.*Put:[[:space:]]*//') + echo "Binary: $f Source: $s" + echo "Destination: $location_ln" + dirname=$(dirname $location_ln) + install -d ${D}/${dt_dir}/$dirname + install ${f} ${D}/${dt_dir}/$location_ln + links=$(egrep '^[[:space:]]*\*[[:space:]]*Link:[[:space:]]*[^[:space:]]+' $s | sed -r 's/.*Link:[[:space:]]*//') + echo "All Links: " + echo "$links" + echo "End links" + for l in $links ; do + ldirname=$(dirname $l) + if ! [ -d "${D}/$ldirname" ] ; then + install -d ${D}/${dt_dir}/$ldirname + fi + echo ln -sf ${dt_dir}/$dirname/$f ${D}/${dt_dir}/$l + ln -sf ${dt_dir}/$location_ln ${D}/${dt_dir}/$l + done + done + ) + fi +} + |