summaryrefslogtreecommitdiff
path: root/recipes-bsp/multitech/mt-dt-overlay_1.2.0.bb
blob: 8062f531058238dabf3a08ba5f10aa063d7b4c6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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 = "r1"

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
}