diff options
Diffstat (limited to 'recipes-demo-hmi/unicens')
4 files changed, 200 insertions, 8 deletions
diff --git a/recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch b/recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch new file mode 100644 index 000000000..5c18aacdc --- /dev/null +++ b/recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch @@ -0,0 +1,147 @@ +From 7942933a4f1508966375326c4ee230812f504f4b Mon Sep 17 00:00:00 2001 +From: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> +Date: Tue, 20 Dec 2016 19:04:48 +0900 +Subject: [PATCH] Support booting by systemd + +Hack for CES2017 demo integration. + +Loading modules would be done by systemd, so loadDriver.sh +could skip all insmod. + +Change-Id: I1d0d6db6faad789754707ffff127099f70150b1f +Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> +--- + scripts/loadDriver.sh | 95 +++++++++++++++++++++++++++++---------------------- + 1 file changed, 55 insertions(+), 40 deletions(-) + +diff --git a/scripts/loadDriver.sh b/scripts/loadDriver.sh +index f55fdde..a3979cc 100755 +--- a/scripts/loadDriver.sh ++++ b/scripts/loadDriver.sh +@@ -1,4 +1,7 @@ + #!/bin/bash ++# ++# Usage: loadDriver.sh [--systemd] ++# + + if [ ! "$(whoami)" = "root" ] + then +@@ -13,63 +16,75 @@ else + echo Searching driver in folder:$(pwd) + fi + +-#unload MOST Kernel modules +-lsmod | grep "^mxc_mlb\>" > /dev/null && +- rmmod mxc_mlb && echo "unloaded mxc_mlb" ++load_modules() ++{ ++ #unload MOST Kernel modules ++ lsmod | grep "^mxc_mlb\>" > /dev/null && ++ rmmod mxc_mlb && echo "unloaded mxc_mlb" ++ ++ lsmod | grep "^hdm_dim2_mx6q\>" > /dev/null && ++ rmmod hdm_dim2_mx6q && echo "unloaded hdm_dim2_mx6q" + +-lsmod | grep "^hdm_dim2_mx6q\>" > /dev/null && +- rmmod hdm_dim2_mx6q && echo "unloaded hdm_dim2_mx6q" ++ lsmod | grep "^hdm_dim2\>" > /dev/null && ++ rmmod hdm_dim2 && echo "unloaded hdm_dim2" + +-lsmod | grep "^hdm_dim2\>" > /dev/null && +- rmmod hdm_dim2 && echo "unloaded hdm_dim2" ++ lsmod | grep "^hdm_usb\>" > /dev/null && ++ rmmod hdm_usb && echo "unloaded hdm_usb" + +-lsmod | grep "^hdm_usb\>" > /dev/null && +- rmmod hdm_usb && echo "unloaded hdm_usb" ++ lsmod | grep "^aim_sound\>" > /dev/null && ++ rmmod aim_sound && echo "unloaded aim_sound" + +-lsmod | grep "^aim_sound\>" > /dev/null && +- rmmod aim_sound && echo "unloaded aim_sound" ++ lsmod | grep "^aim_v4l2\>" > /dev/null && ++ rmmod aim_v4l2 && echo "unloaded aim_v4l2" + +-lsmod | grep "^aim_v4l2\>" > /dev/null && +- rmmod aim_v4l2 && echo "unloaded aim_v4l2" ++ lsmod | grep "^aim_cdev\>" > /dev/null && ++ rmmod aim_cdev && echo "unloaded aim_cdev" + +-lsmod | grep "^aim_cdev\>" > /dev/null && +- rmmod aim_cdev && echo "unloaded aim_cdev" ++ lsmod | grep "^aim_network\>" > /dev/null && ++ rmmod aim_network && echo "unloaded aim_network" + +-lsmod | grep "^aim_network\>" > /dev/null && +- rmmod aim_network && echo "unloaded aim_network" ++ lsmod | grep "^mostcore\>" > /dev/null && ++ rmmod mostcore && echo "unloaded mostcore" + +-lsmod | grep "^mostcore\>" > /dev/null && +- rmmod mostcore && echo "unloaded mostcore" ++ echo ++ #load V4L support ++ lsmod | grep "^media\>" || ++ insmod /lib/modules/$(uname -r)/kernel/drivers/media/media.ko + +-echo +-#load V4L support +-lsmod | grep "^media\>" || +- insmod /lib/modules/$(uname -r)/kernel/drivers/media/media.ko ++ lsmod | grep "^videodev\>" || ++ insmod /lib/modules/$(uname -r)/kernel/drivers/media/v4l2-core/videodev.ko + +-lsmod | grep "^videodev\>" || +- insmod /lib/modules/$(uname -r)/kernel/drivers/media/v4l2-core/videodev.ko ++ #load MOST Kernel modules ++ insmod mostcore.ko && echo "loaded mostcore" ++ insmod aim_cdev.ko && echo "loaded aim_cdev" + +-#load MOST Kernel modules +-insmod mostcore.ko && echo "loaded mostcore" +-insmod aim_cdev.ko && echo "loaded aim_cdev" ++ [ -e aim_network.ko ] && ++ insmod aim_network.ko && echo "loaded aim_network" + +-[ -e aim_network.ko ] && +- insmod aim_network.ko && echo "loaded aim_network" ++ [ -e aim_sound.ko ] && ++ insmod aim_sound.ko && echo "loaded sound" + +-[ -e aim_sound.ko ] && +- insmod aim_sound.ko && echo "loaded sound" ++ [ -e aim_v4l2.ko ] && ++ insmod aim_v4l2.ko && echo "loaded v4l2" + +-[ -e aim_v4l2.ko ] && +- insmod aim_v4l2.ko && echo "loaded v4l2" ++ [ -e hdm_usb.ko ] && ++ insmod hdm_usb.ko && echo "loaded hdm_usb" + +-[ -e hdm_usb.ko ] && +- insmod hdm_usb.ko && echo "loaded hdm_usb" ++ [ -e hdm_dim2.ko ] && ++ insmod hdm_dim2.ko clock_speed=4096fs fcnt=3 && echo "loaded hdm_dim2" + +-[ -e hdm_dim2.ko ] && +- insmod hdm_dim2.ko clock_speed=4096fs fcnt=3 && echo "loaded hdm_dim2" ++ [ -e hdm_dim2_mx6q.ko ] && ++ insmod hdm_dim2_mx6q.ko && echo "loaded hdm_dim2_mx6q" ++} + +-[ -e hdm_dim2_mx6q.ko ] && +- insmod hdm_dim2_mx6q.ko && echo "loaded hdm_dim2_mx6q" ++# ++# Systemd load modules when booting system already. ++# If argv[1] == "--systemd" then skip load modules ++# ++if [ "$1" != "--systemd" ]; then ++ echo "Load modules" ++ load_modules ++fi + + DEVS=/sys/devices/virtual/most/mostcore/devices + AIMS=/sys/devices/virtual/most/mostcore/aims +-- +2.7.4 + diff --git a/recipes-demo-hmi/unicens/files/most-network-manager.service b/recipes-demo-hmi/unicens/files/most-network-manager.service new file mode 100644 index 000000000..61e17b2d4 --- /dev/null +++ b/recipes-demo-hmi/unicens/files/most-network-manager.service @@ -0,0 +1,11 @@ +[Unit] +Description=Most Network Manager Service +After=WindowManager.service most-network-startup.service + +[Service] +Type=simple +ExecStart=/usr/AGL/most/MostNetworkManager -i /usr/AGL/most/config-agl.xml +Restart=always + +[Install] +WantedBy=default.target diff --git a/recipes-demo-hmi/unicens/files/most-network-startup.service b/recipes-demo-hmi/unicens/files/most-network-startup.service new file mode 100644 index 000000000..4fd037531 --- /dev/null +++ b/recipes-demo-hmi/unicens/files/most-network-startup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Most Network Startup Service +After=WindowManager.service + +[Service] +Type=simple +RemainAfterExit=yes +ExecStart=/usr/AGL/most/loadDriver.sh --systemd +Restart=always + +[Install] +WantedBy=default.target diff --git a/recipes-demo-hmi/unicens/unicens_0.1.bb b/recipes-demo-hmi/unicens/unicens_0.1.bb index 176baa402..0fc0afc93 100644 --- a/recipes-demo-hmi/unicens/unicens_0.1.bb +++ b/recipes-demo-hmi/unicens/unicens_0.1.bb @@ -10,18 +10,40 @@ DEPENDS += "libxml2" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/unicens;protocol=https" SRC_URI += "file://0001-Fix-cross-compilation-with-yocto.patch" +SRC_URI += "file://0001-Support-booting-by-systemd.patch \ + file://most-network-startup.service \ + file://most-network-manager.service" S = "${WORKDIR}/git" #SRCREV = "8c5f2324d7aa61669324aec1a0ad091fe1379489" SRCREV = "${AUTOREV}" do_install() { - install -m 0755 -d ${D}${bindir} ${D}/home/root - install -m 0755 ${S}/NetworkManager ${D}${bindir}/MostNetworkManager - install -m 0644 ${S}/scripts/config-agl.xml ${D}/home/root - install -m 0644 ${S}/scripts/camera-os88122-ts.script ${D}/home/root - install -m 0644 ${S}/scripts/i2c-slim-amplifier-v2.3.script ${D}/home/root - install -m 0644 ${S}/scripts/i2c-uda1388-v2.3.script ${D}/home/root - install -m 0755 ${S}/scripts/loadDriver.sh ${D}/home/root + install -m 0755 -d ${D}/usr/AGL/most + install -m 0755 ${S}/NetworkManager ${D}/usr/AGL/most/MostNetworkManager + install -m 0644 ${S}/scripts/config-agl.xml ${D}/usr/AGL/most/ + install -m 0644 ${S}/scripts/camera-os88122-ts.script ${D}/usr/AGL/most/ + install -m 0644 ${S}/scripts/i2c-slim-amplifier-v2.3.script ${D}/usr/AGL/most/ + install -m 0644 ${S}/scripts/i2c-uda1388-v2.3.script ${D}/usr/AGL/most + install -m 0755 ${S}/scripts/loadDriver.sh ${D}/usr/AGL/most + + # Install MOST network startup systemd service (user) + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -m 644 -p -D ${WORKDIR}/most-network-startup.service ${D}${systemd_user_unitdir}/most-network-startup.service + install -m 644 -p -D ${WORKDIR}/most-network-manager.service ${D}${systemd_user_unitdir}/most-network-manager.service + + # Execute install manually for root user on behalf of systemctl script + # because it doesn't support user mode of systemd. + install -m 0755 -d ${D}/home/root/.config/systemd/user/default.target.wants/ + ln -sf ${systemd_user_unitdir}/most-network-startup.service ${D}/home/root/.config/systemd/user/default.target.wants/most-network-startup.service + ln -sf ${systemd_user_unitdir}/most-network-manager.service ${D}/home/root/.config/systemd/user/default.target.wants/most-network-manager.service + fi } -FILES_${PN} += "/home/root*" + +FILES_${PN} += " \ + /usr/AGL/most \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/most-network-startup.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/most-network-manager.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '/home/root/.config/systemd/user/default.target.wants/most-network-startup.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '/home/root/.config/systemd/user/default.target.wants/most-network-manager.service', '', d)} \ + " |