From fca507d316ded1e3126ba6db265b7fe871550fae Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu de Pedro Date: Tue, 8 Mar 2016 18:36:49 +0100 Subject: [PATCH] meta-digi-dey: pulseaudio: add HDMI audio sink on hotplug This patch adds a udev rule and a script to detect HDMI hotplug and create the HDMI audio pulseaudio sink if needed (that is, if the system was booted with no HDMI cable plugged). https://jira.digi.com/browse/DEL-2327 Signed-off-by: Jose Diaz de Grenu de Pedro --- .../pulseaudio/pulseaudio/hdmi_hotplug.sh | 18 ++++++++++++++++++ .../pulseaudio/pulseaudio_%.bbappend | 14 ++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi_hotplug.sh diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi_hotplug.sh b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi_hotplug.sh new file mode 100644 index 000000000..63ce0772e --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi_hotplug.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# +# Called from udev on HDMI plug/unplug event + +# Find HDMI card number +for card in /sys/class/sound/card*; do + if readlink ${card}/device | grep -qs hdmi; then + HDMI_CARD="${card##/sys/class/sound/card}" + fi +done + +# On HDMI plugin event, if the sink has not been loaded yet, load the +# HDMI audio sink from ALSA +if [ "${EVENT}" = "plugin" ]; then + if ! pactl list sinks | grep -qs "imx-hdmi-soc"; then + pactl load-module module-alsa-sink device=hw:${HDMI_CARD} + fi +fi diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend index 8c02716bc..47dc37227 100644 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend @@ -1,2 +1,16 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" + +SRC_URI += "file://hdmi_hotplug.sh" + # Do not include module-udev-detect so that module-detect is used instead RDEPENDS_pulseaudio-server_remove = "pulseaudio-module-udev-detect" + +do_install_append() { + install -d ${D}${sysconfdir}/udev/scripts + install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts + + cat >> ${D}${base_libdir}/udev/rules.d/90-pulseaudio.rules <<-_EOL_ + + SUBSYSTEM=="platform", KERNEL=="*hdmi_video", ACTION=="change", RUN+="/etc/udev/scripts/hdmi_hotplug.sh" + _EOL_ +}