Support systemd services of MOST for CES2017 Demo 17/7717/6
authorTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Tue, 20 Dec 2016 12:34:46 +0000 (21:34 +0900)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Thu, 22 Dec 2016 15:29:37 +0000 (15:29 +0000)
This change is for booting all stuff for MOST automatically
after WindowManager launched.

All services except insmod are in systemd user mode.

Change-Id: I15043493c797511275e4f02173a85f06a7298ca0
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
13 files changed:
recipes-demo-hmi/unicens/files/0001-Support-booting-by-systemd.patch [new file with mode: 0644]
recipes-demo-hmi/unicens/files/most-network-manager.service [new file with mode: 0644]
recipes-demo-hmi/unicens/files/most-network-startup.service [new file with mode: 0644]
recipes-demo-hmi/unicens/unicens_0.1.bb
recipes-kernel/aim-cdev/aim-cdev.bb
recipes-kernel/aim-network/aim-network.bb
recipes-kernel/aim-sound/aim-sound.bb
recipes-kernel/aim-v4l2/aim-v4l2.bb
recipes-kernel/hdm-dim2/hdm-dim2.bb
recipes-kernel/hdm-i2c/hdm-i2c.bb
recipes-kernel/hdm-usb/hdm-usb.bb
recipes-kernel/mocca-usb/mocca-usb.bb
recipes-kernel/mostcore/mostcore.bb

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 (file)
index 0000000..5c18aac
--- /dev/null
@@ -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 (file)
index 0000000..61e17b2
--- /dev/null
@@ -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 (file)
index 0000000..4fd0375
--- /dev/null
@@ -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
index 176baa4..0fc0afc 100644 (file)
@@ -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)} \
+    "
index b51fe23..b43800e 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "aim_cdev" > ${D}${sysconfdir}/modules-load.d/aim_cdev.conf
+    fi
+}
index b51fe23..ce3d767 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "aim_network" > ${D}${sysconfdir}/modules-load.d/aim_network.conf
+    fi
+}
index b51fe23..02d7907 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "aim_sound" > ${D}${sysconfdir}/modules-load.d/aim_sound.conf
+    fi
+}
index b51fe23..1233696 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "aim_v4l2" > ${D}${sysconfdir}/modules-load.d/aim_v4l2.conf
+    fi
+}
index b51fe23..d9cdf4d 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "hdm_dim2" > ${D}${sysconfdir}/modules-load.d/hdm_dim2.conf
+    fi
+}
index b51fe23..6e51106 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "hdm_i2c" > ${D}${sysconfdir}/modules-load.d/hdm_i2c.conf
+    fi
+}
index b51fe23..d8724d4 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "ad245bdd60434dd46d6461f585d49db1b3b0d75b"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "hdm_usb" > ${D}${sysconfdir}/modules-load.d/hdm_usb.conf
+    fi
+}
index 6f4e586..034585f 100644 (file)
@@ -12,3 +12,11 @@ SRCREV = "02ba272c0eb51b06160307b6cb71f91684772c8c"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "mocca_usb" > ${D}${sysconfdir}/modules-load.d/mocca_usb.conf
+    fi
+}
index 3a2e1cf..f170c58 100644 (file)
@@ -16,3 +16,11 @@ SRCREV = "7850efa9077fa84536e0442c65d39a36e25e39d1"
 
 # The inherit of module.bbclass will automatically name module packages with
 # "kernel-module-" prefix as required by the oe-core build environment.
+
+do_install_append () {
+    # modprobe automatically at boot
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        echo "mostcore" > ${D}${sysconfdir}/modules-load.d/mostcore.conf
+    fi
+}