[meta-intel] [PATCH 6/6] initscripts: update the default audio device setup script

nitin.a.kamble at intel.com nitin.a.kamble at intel.com
Wed Mar 5 17:58:04 PST 2014


From: Nitin A Kamble <nitin.a.kamble at intel.com>

This recipe now targets more BSPs than NUC. Accordingly the script
is made generic, so that it can work on multiple platforms.

Signed-off-by: Nitin A Kamble <nitin.a.kamble at intel.com>
---
 .../initscripts/initscripts/hdmi_port_audio.sh     | 28 ---------
 .../initscripts/set_default_alsa_device.sh         | 69 ++++++++++++++++++++++
 .../initscripts/initscripts_1.0.bbappend           |  6 +-
 3 files changed, 72 insertions(+), 31 deletions(-)
 delete mode 100644 common/recipes-core/initscripts/initscripts/hdmi_port_audio.sh
 create mode 100644 common/recipes-core/initscripts/initscripts/set_default_alsa_device.sh

diff --git a/common/recipes-core/initscripts/initscripts/hdmi_port_audio.sh b/common/recipes-core/initscripts/initscripts/hdmi_port_audio.sh
deleted file mode 100644
index 69d8a53..0000000
--- a/common/recipes-core/initscripts/initscripts/hdmi_port_audio.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:
-# Required-Start:
-# Required-Stop:
-# Default-Start:     S
-# Default-Stop:
-# Short-Description: Configure ALSA audio output to the connected HDMI port
-### END INIT INFO
-
-#
-# If both HDMI ports are connected then use HDMI0 for default ALSA audio out..
-
-ALSA_CONF_FILE="/etc/asound.conf"
-
-HDMI0_STATUS_FILE="/sys/class/drm/card0-HDMI-A-1/status"
-HDMI1_STATUS_FILE="/sys/class/drm/card0-HDMI-A-2/status"
-
-HDMI0_ALSA_CONF="hw:0,3"
-HDMI1_ALSA_CONF="hw:0,7"
-
-if [ -f "${HDMI0_STATUS_FILE}" ] && [ "`cat ${HDMI0_STATUS_FILE}`" == "connected" ]
-then
-	sed -i "s/pcm *\"hw:[0-9]*,[0-9]*\"/pcm \"${HDMI0_ALSA_CONF}\"/" ${ALSA_CONF_FILE}
-elif [ -f "${HDMI1_STATUS_FILE}" ] && [ "`cat ${HDMI1_STATUS_FILE}`" == "connected" ]
-then
-	sed -i "s/pcm \"hw:[0-9]*,[0-9]*\"/pcm \"${HDMI1_ALSA_CONF}\"/" ${ALSA_CONF_FILE}
-fi
diff --git a/common/recipes-core/initscripts/initscripts/set_default_alsa_device.sh b/common/recipes-core/initscripts/initscripts/set_default_alsa_device.sh
new file mode 100644
index 0000000..9f67d5b
--- /dev/null
+++ b/common/recipes-core/initscripts/initscripts/set_default_alsa_device.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+param=$@
+
+Usage()
+{
+  echo Usage: $0 [-f]
+  echo        Params:
+  echo              -f : force selecting new audio device in the asound.conf
+  exit -1
+}
+
+
+echo Display DRM devices:
+DRM_devices_list=`ls -1 /sys/class/drm/*/status | sed "s-/status--"`
+
+for i in $DRM_devices_list
+do
+  echo -n $i:
+  cat $i/status
+done
+echo
+
+echo ALSA Audio devices:
+aplay -l
+echo
+
+current_audio_device=`grep "pcm \"hw:" /etc/asound.conf | sed "s/.* \"//" | sed "s/\".*//"`
+
+available_audio_devices=`aplay -l | egrep "^card" | sed "s/:.*, device /,/" | sed "s/:.*//" | sed "s/^card /hw:/"`
+
+change_needed=1
+for i in $available_audio_devices
+do
+  if [ $i == $current_audio_device ]
+  then
+    change_needed=0
+  fi
+done
+
+if [ $change_needed == 1 ]
+then
+    echo Invalid default ALSA sound device was set in asound.conf
+fi
+
+case $param in
+  -f)
+    change_needed=1
+    ;;
+  '')
+    # do nothing
+    ;;
+  *)
+    # Anything else is wrong parameter
+    Usage
+    ;;
+esac
+
+if [ $change_needed == 1 ]
+then
+  new_device=`echo $available_audio_devices | sort | head -n 1`
+  new_device=`aplay -l | egrep "^card" | sed "s/:.*, device /,/" | sed "s/:.*//" | sed "s/^card /hw:/" | sort | head -n 1`
+  echo Setting $new_device as the default audio device in asound.conf
+  sed -i "s/pcm \"$current_audio_device\"/pcm \"$new_device\"/" /etc/asound.conf
+  card=`echo $new_device | sed "s/,.*//" | sed "s/.*hw://"`
+  sed -i "s/card [0-9]*/card $card/" /etc/asound.conf
+else
+  echo Using the default device $current_audio_device as per existing asound.conf
+fi
diff --git a/common/recipes-core/initscripts/initscripts_1.0.bbappend b/common/recipes-core/initscripts/initscripts_1.0.bbappend
index abc5fe0..90e2cab 100644
--- a/common/recipes-core/initscripts/initscripts_1.0.bbappend
+++ b/common/recipes-core/initscripts/initscripts_1.0.bbappend
@@ -1,10 +1,10 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
-SRC_URI += "file://hdmi_port_audio.sh"
+SRC_URI += "file://set_default_alsa_device.sh"
 
 PR .= ".1"
 
 do_install_append() {
-	install -m 0755    ${WORKDIR}/hdmi_port_audio.sh       ${D}${sysconfdir}/init.d
-	ln -sf          ../init.d/hdmi_port_audio.sh   ${D}${sysconfdir}/rcS.d/S66hdmi_port_audio.sh
+	install -m 0755    ${WORKDIR}/set_default_alsa_device.sh       ${D}${sysconfdir}/init.d
+	ln -sf          ../init.d/set_default_alsa_device.sh   ${D}${sysconfdir}/rcS.d/S66set_default_alsa_device.sh
 }
-- 
1.8.1.4



More information about the meta-intel mailing list