diff options
Diffstat (limited to 'meta-ti-extras/recipes-ti/beagleboard')
16 files changed, 293 insertions, 0 deletions
diff --git a/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes.bb b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes.bb new file mode 100644 index 00000000..ceefe0d6 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes.bb @@ -0,0 +1,26 @@ +DESCRIPTION = "Userspace setup for beaglebone capes" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +PR = "r4" + +inherit allarch + +SRC_URI = "file://cape.service \ + file://cape.sh \ + file://cape-stop.sh \ + " + +do_install() { + install -d ${D}${base_libdir}/systemd/system/ + install -m 0644 ${WORKDIR}/cape.service ${D}${base_libdir}/systemd/system + + install -d ${D}${base_libdir}/systemd/system/basic.target.wants + ln -sf ../cape.service ${D}${base_libdir}/systemd/system/basic.target.wants/ + + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/cape*.sh ${D}${bindir} +} + +FILES:${PN} += "${base_libdir}/systemd/system" diff --git a/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape-stop.sh b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape-stop.sh new file mode 100755 index 00000000..222a010d --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape-stop.sh @@ -0,0 +1,14 @@ +#!/bin/sh +for eeprom in /sys/bus/i2c/devices/3-005*/eeprom ; do + PARTNUMBER=$(hexdump -e '8/1 "%c"' $eeprom -s 58 -n16) + case $PARTNUMBER in + "BB-BONE-LCD3-01.") + echo "Turning off backlight for LCD3 cape" + i2cset -f -y 1 0x24 0x07 0x00;; + "BB-BONE-LCD4"*) + echo "Turning off backlight for LCD4 cape" + i2cset -f -y 1 0x24 0x07 0x00;; + *) + echo "unknown cape: $PARTNUMBER";; + esac +done diff --git a/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape.service b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape.service new file mode 100644 index 00000000..ce0db719 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape.service @@ -0,0 +1,11 @@ +[Unit] +Description=Beaglebone cape support + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/cape.sh +ExecStop=/usr/bin/cape-stop.sh + +[Install] +WantedBy=basic.target diff --git a/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape.sh b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape.sh new file mode 100755 index 00000000..c279349d --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-capes/cape.sh @@ -0,0 +1,22 @@ +#!/bin/sh +for eeprom in /sys/bus/i2c/devices/3-005*/eeprom ; do + PARTNUMBER=$(hexdump -e '8/1 "%c"' $eeprom -s 58 -n16) + case $PARTNUMBER in + "BB-BONE-LCD3-01.") + echo "Turning on backlight for LCD3 cape" + i2cset -f -y 1 0x24 0x07 0x09 + i2cset -f -y 1 0x24 0x08 0x60;; + "BB-BONE-LCD4"*) + echo "Turning on backlight for LCD4 cape" + i2cset -f -y 1 0x24 0x07 0x09 + i2cset -f -y 1 0x24 0x08 0x60;; + "BB-BONE-WTHR-01.") + echo "Initializing I2C devices" + echo sht21 0x40 > /sys/class/i2c-adapter/i2c-3/new_device + echo bmp085 0x77 > /sys/class/i2c-adapter/i2c-3/new_device + echo tsl2550 0x39 > /sys/class/i2c-adapter/i2c-3/new_device + echo 1 > /sys/bus/i2c/devices/3-0039/operating_mode;; + *) + echo "unknown cape: $PARTNUMBER";; + esac +done diff --git a/meta-ti-extras/recipes-ti/beagleboard/beaglebone-getting-started.bb b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-getting-started.bb new file mode 100644 index 00000000..85ab861d --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/beaglebone-getting-started.bb @@ -0,0 +1,21 @@ +SUMMARY = "BeagleBone Getting Started Guide" + +PR = "r22" + +inherit allarch + +LICENSE = "CC-BY-SA-3.0 & GPL-3.0-or-later & MIT & PD" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f6f02761e31334c48f7021fb94c89aaa" + +SRCREV = "05bedba192646152b7bc80b0accaea75aef864e5" +SRC_URI = "git://github.com/jadonk/beaglebone-getting-started.git;protocol=https;branch=master" + +S = "${WORKDIR}/git" + +do_install() { + install -d ${D}${datadir}/${PN} + cp -R --no-dereference --preserve=mode,links ${S}/* ${D}${datadir}/${PN} +} + +FILES:${PN} += "${datadir}/${PN}" +INSANE_SKIP:${PN} = "file-rdeps" diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init.bb b/meta-ti-extras/recipes-ti/beagleboard/gadget-init.bb new file mode 100644 index 00000000..3ab00ec3 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init.bb @@ -0,0 +1,60 @@ +DESCRIPTION = "Units to initialize usb gadgets" + +PR = "r19" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +COMPATIBLE_MACHINE = "(ti33x)" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +SRC_URI = "file://storage-gadget-init.service \ + file://network-gadget-init.service \ + file://udhcpd.service \ + file://udhcpd.conf \ + file://bone-gmass-eject.rules \ + file://udhcpd.rules \ + file://g-storage-reinsert.sh \ + file://g-ether-start-service.sh \ + file://g-ether-load.sh \ + file://update-image-info-on-mmcblk0p1.sh \ + " + +do_install() { + install -d ${D}${base_libdir}/systemd/system/basic.target.wants + install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system + + for i in ${WORKDIR}/storage-gadget-init.service ; do + install -m 0644 $i ${D}${base_libdir}/systemd/system + ln -sf ../$(basename $i) ${D}${base_libdir}/systemd/system/basic.target.wants/ + done + + install -d ${D}${sysconfdir}/udev/rules.d + install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d + install -m 0644 ${WORKDIR}/*.conf ${D}${sysconfdir} + + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/*.sh ${D}${bindir} +} + +PACKAGES =+ "${PN}-storage ${PN}-network ${PN}-udhcpd" + +ALLOW_EMPTY:${PN} = "1" + +FILES:${PN}-storage = "${base_libdir}/systemd/system/storage-gadget-init.service \ + ${base_libdir}/systemd/system/basic.target.wants/storage-gadget-init.service \ + ${bindir}/g-storage-reinsert.sh \ + ${bindir}/update-image-info-on-mmcblk0p1.sh \ + ${sysconfdir}/udev/rules.d/bone-gmass-eject.rules" + +FILES:${PN}-network = "${base_libdir}/systemd/system/network-gadget-init.service \ + ${base_libdir}/systemd/system/basic.target.wants/network-gadget-init.service \ + ${bindir}/g-ether-load.sh \ + ${bindir}/g-ether-start-service.sh \ + ${sysconfdir}/udev/rules.d/udhcpd.rules" + +FILES:${PN}-udhcpd = "${base_libdir}/systemd/system/udhcpd.service \ + ${base_libdir}/systemd/system/basic.target.wants/udhcpd.service \ + ${sysconfdir}/udhcpd.conf" + +RRECOMMENDS:${PN} = "${PN}-storage ${PN}-network ${PN}-udhcpd" diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/bone-gmass-eject.rules b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/bone-gmass-eject.rules new file mode 100644 index 00000000..ee6f93e2 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/bone-gmass-eject.rules @@ -0,0 +1 @@ +SUBSYSTEM=="block",ACTION=="change",KERNEL=="mmcblk0p1",RUN+="/usr/bin/g-ether-start-service.sh" diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-ether-load.sh b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-ether-load.sh new file mode 100755 index 00000000..f9400649 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-ether-load.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +function get_devmem() +{ + /usr/bin/devmem2 $1 | grep ": " | cut -d ":" -f 2|cut -d "x" -f 2 +} + +function hex_to_mac_addr() +{ + addr=$1 + n=0 + mac_addr=$(echo ${addr} | while read -r -n2 c; do + if [ ! -z "$c" ]; then + if [ $n -ne 0 ] ; then + echo -n ":${c}" + else + echo -n "${c}" + fi + fi + n=$(($n+1)) + done) + echo ${mac_addr} +} + +function reverse_bytes() +{ + addr=$1 + New_addr=$(echo ${addr} | while read -r -n2 c; do + if [ ! -z "$c" ]; then + New_addr=${c}${New_addr} + else echo + echo ${New_addr} + fi + done) + echo ${New_addr} +} + +DEVMEM_ADDR_LO=$(get_devmem 0x44e10638|bc) +DEVMEM_ADDR_LO=$(reverse_bytes ${DEVMEM_ADDR_LO}) + +DEVMEM_ADDR_HI=$(get_devmem 0x44e1063C) +DEVMEM_ADDR_HI=$(reverse_bytes ${DEVMEM_ADDR_HI}) + +DEV_ADDR=$(hex_to_mac_addr "${DEVMEM_ADDR_HI}${DEVMEM_ADDR_LO}") + +modprobe g_ether host_addr=${DEV_ADDR} diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-ether-start-service.sh b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-ether-start-service.sh new file mode 100755 index 00000000..6e73b155 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-ether-start-service.sh @@ -0,0 +1,10 @@ +#!/bin/sh +if [ -a /sys/devices/platform/omap/musb-ti81xx/musb-hdrc.0/gadget/lun0/file ] +then + x=$(cat /sys/devices/platform/omap/musb-ti81xx/musb-hdrc.0/gadget/lun0/file) + if [ -z "$x" ] + then + /bin/systemctl stop storage-gadget-init.service + /bin/systemctl start network-gadget-init.service + fi +fi diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-storage-reinsert.sh b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-storage-reinsert.sh new file mode 100755 index 00000000..d358640a --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/g-storage-reinsert.sh @@ -0,0 +1,4 @@ +#!/bin/sh +/bin/systemctl stop storage-gadget-init.service +/bin/systemctl stop network-gadget-init.service +/bin/systemctl start storage-gadget-init.service diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/network-gadget-init.service b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/network-gadget-init.service new file mode 100644 index 00000000..0ee29147 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/network-gadget-init.service @@ -0,0 +1,11 @@ +[Unit] +Description=Start USB Ethernet gadget +Conflicts=storage-gadget-init.service + +[Service] +RemainAfterExit=yes +ExecStart=/usr/bin/g-ether-load.sh +ExecStop=/sbin/rmmod g_ether + +[Install] +WantedBy=gether.target diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/storage-gadget-init.service b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/storage-gadget-init.service new file mode 100644 index 00000000..9a8513e8 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/storage-gadget-init.service @@ -0,0 +1,11 @@ +[Unit] +Description=Start usb mass storage gadget +After=dev-mmcblk0p1.device + +[Service] +RemainAfterExit=yes +ExecStart=/sbin/modprobe g_mass_storage file=/dev/mmcblk0p1 cdrom=0 stall=0 removable=1 nofua=1 +ExecStop=/sbin/rmmod g_mass_storage + +[Install] +WantedBy=basic.target diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.conf b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.conf new file mode 100644 index 00000000..3bcf00f0 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.conf @@ -0,0 +1,5 @@ +start 192.168.7.1 +end 192.168.7.1 +interface usb0 +max_leases 1 +option subnet 255.255.255.252 diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.rules b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.rules new file mode 100644 index 00000000..db65f9ac --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.rules @@ -0,0 +1,2 @@ +SUBSYSTEM=="net",ACTION=="add",KERNEL=="usb0",RUN+="/sbin/ifconfig usb0 192.168.7.2 netmask 255.255.255.252",RUN+="/bin/systemctl start udhcpd.service" +SUBSYSTEM=="net",ACTION=="remove",KERNEL=="usb0",RUN+="/bin/systemctl stop udhcpd.service" diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.service b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.service new file mode 100644 index 00000000..1f4ac688 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/udhcpd.service @@ -0,0 +1,12 @@ +[Unit] +Description=DHCP server for USB0 network gadget +After=dev-usb0.device +Conflicts=storage-gadget-init.service + +[Service] +ExecStart=/usr/sbin/udhcpd -f -S /etc/udhcpd.conf +ExecStop=/bin/kill -TERM $MAINPID +KillSignal=SIGINT + +[Install] +WantedBy=gether.target diff --git a/meta-ti-extras/recipes-ti/beagleboard/gadget-init/update-image-info-on-mmcblk0p1.sh b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/update-image-info-on-mmcblk0p1.sh new file mode 100755 index 00000000..a4daf734 --- /dev/null +++ b/meta-ti-extras/recipes-ti/beagleboard/gadget-init/update-image-info-on-mmcblk0p1.sh @@ -0,0 +1,37 @@ +#!/bin/sh +mount /dev/mmcblk0p1 /mnt +echo "Image info snapshot" > /mnt/info.txt + +echo >> /mnt/info.txt +echo "/etc/angstrom-version:" >> /mnt/info.txt +cat /etc/angstrom-version >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "/proc/cpuinfo:" >> /mnt/info.txt +cat /proc/cpuinfo >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "uname -a:" >> /mnt/info.txt +uname -a >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "/proc/cmdline:" >> /mnt/info.txt +cat /proc/cmdline >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "ifconfig:" >> /mnt/info.txt +ifconfig >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "/etc/angstrom-build-info:" >> /mnt/info.txt +cat /etc/angstrom-build-info >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "/etc/image-version-info:" >> /mnt/info.txt +cat /etc/image-version-info >> /mnt/info.txt + +echo >> /mnt/info.txt +echo "opkg list-installed:" >> /mnt/info.txt +opkg list-installed >> /mnt/info.txt + +umount /mnt |