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_ +}