meta-agl-bsp: meta-rcar-gen3-adas: Rework KF radio initialization 64/22364/1
authorScott Murray <scott.murray@konsulko.com>
Mon, 9 Sep 2019 23:44:03 +0000 (19:44 -0400)
committerScott Murray <scott.murray@konsulko.com>
Mon, 9 Sep 2019 23:48:07 +0000 (19:48 -0400)
Add a systemd service unit and recipe to install it and a udev rules
file so that the Kingfisher Si4689 radio will be initialized on boot
if present, and the I2C device to access it will be accessible to
applications with the "audio" permission.  Note that an accompanying
change to agl-service-radio is required to remove its now unworkable
usage of the si_init script, which is replaced by this change.

Bug-AGL: SPEC-2716

Change-Id: I81cf4b8c439598bdac1eb7910a0d693825141d7b
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
meta-agl-bsp/meta-rcar-gen3-adas/conf/layer.conf
meta-agl-bsp/meta-rcar-gen3-adas/recipes-bsp/si-tools/files/si-init.service [new file with mode: 0644]
meta-agl-bsp/meta-rcar-gen3-adas/recipes-bsp/si-tools/si-init_1.0.bb [new file with mode: 0644]

index c41fcf5..796d926 100644 (file)
@@ -40,6 +40,7 @@ IMAGE_INSTALL_append_rcar-gen3 = " \
 # Radio packages
 IMAGE_INSTALL_append_rcar-gen3 += " \
     si-tools \
+    si-init \
     linux-firmware-wl18xx \
     ti-bt \
     ti-bt-firmware \
diff --git a/meta-agl-bsp/meta-rcar-gen3-adas/recipes-bsp/si-tools/files/si-init.service b/meta-agl-bsp/meta-rcar-gen3-adas/recipes-bsp/si-tools/files/si-init.service
new file mode 100644 (file)
index 0000000..d2204cb
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Initialize Si468x radio
+ConditionPathExists=/sys/firmware/devicetree/base/si468x@0/compatible
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/si_init
+
+[Install]
+WantedBy=sysinit.target
diff --git a/meta-agl-bsp/meta-rcar-gen3-adas/recipes-bsp/si-tools/si-init_1.0.bb b/meta-agl-bsp/meta-rcar-gen3-adas/recipes-bsp/si-tools/si-init_1.0.bb
new file mode 100644 (file)
index 0000000..7ab99e0
--- /dev/null
@@ -0,0 +1,28 @@
+SUMMARY     = "Systemd service unit for Si468x radio initialization"
+LICENSE     = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd
+
+SRC_URI = "file://si-init.service"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/si-init.service ${D}${systemd_system_unitdir}
+
+    # Add symlink to sysinit.target.wants
+    install -d ${D}${sysconfdir}/systemd/system/sysinit.target.wants
+    ln -s ${systemd_system_unitdir}/si-init.service ${D}${sysconfdir}/systemd/system/sysinit.target.wants/
+
+    # Add a rule to ensure the 'audio' user has permission to access
+    # the Si468x device via i2c
+    install -d ${D}${sysconfdir}/udev/rules.d
+    cat >${D}${sysconfdir}/udev/rules.d/zz-radio-si.rules <<'EOF'
+KERNEL=="i2c-12", MODE="0660", GROUP="audio", SECLABEL{smack}="*"
+EOF
+}
+
+FILES_${PN} += "${systemd_system_unitdir}"