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" 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 = "r3" SRC_URI = " \ git://git.multitech.net/mt-dt-overlay.git;protocol=git \ file://init \ " SRCREV = "${PV}" DEPENDS = "virtual/kernel u-boot-mkimage-native" 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 }