From 2ecc433295f5936b044126d4bbc42190e5435d08 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Mon, 25 Feb 2019 16:30:04 +0100 Subject: [PATCH] pulseaudio: generalize recipe and add support to MAX98089 sound card profile Add pulseaudio audio profile for MAX98089 sound card and generalize the recipe to support multiple platforms with the same audio sound card. https://jira.digi.com/browse/DEL-6461 Signed-off-by: Arturo Buzarra --- .../pulseaudio/hdmi/90-pulseaudio-hdmi.rules | 4 + .../pulseaudio/{ => hdmi}/dey-audio-hdmi.conf | 2 +- .../pulseaudio/{ => hdmi}/hdmi_hotplug.sh | 0 .../pulseaudio/max98089/90-pulseaudio.rules | 2 + .../max98089/dey-audio-max98089.conf | 75 +++++++++++++++++++ .../pulseaudio/sgtl5000/90-pulseaudio.rules | 2 + .../{ => sgtl5000}/dey-audio-sgtl5000.conf | 2 +- .../pulseaudio/pulseaudio_%.bbappend | 68 +++++++++++------ 8 files changed, 131 insertions(+), 24 deletions(-) create mode 100644 meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/90-pulseaudio-hdmi.rules rename meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/{ => hdmi}/dey-audio-hdmi.conf (95%) rename meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/{ => hdmi}/hdmi_hotplug.sh (100%) create mode 100644 meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/90-pulseaudio.rules create mode 100644 meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/dey-audio-max98089.conf create mode 100644 meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/90-pulseaudio.rules rename meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/{ => sgtl5000}/dey-audio-sgtl5000.conf (97%) diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/90-pulseaudio-hdmi.rules b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/90-pulseaudio-hdmi.rules new file mode 100644 index 000000000..f30a2b9ad --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/90-pulseaudio-hdmi.rules @@ -0,0 +1,4 @@ +# Digi ConnectCore HDMI sound card +ATTRS{id}=="imxhdmisoc", ENV{PULSE_PROFILE_SET}="dey-audio-hdmi.conf" + +SUBSYSTEM=="platform", KERNEL=="*hdmi_video", ACTION=="change", RUN+="/etc/udev/scripts/hdmi_hotplug.sh" diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-hdmi.conf b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/dey-audio-hdmi.conf similarity index 95% rename from meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-hdmi.conf rename to meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/dey-audio-hdmi.conf index 6ae671021..7069c63fa 100644 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-hdmi.conf +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/dey-audio-hdmi.conf @@ -13,7 +13,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with PulseAudio; if not, see . -; Audio profile for Digi ConnectCore 6 HDMI sound card +; Audio profile for Digi ConnectCore HDMI sound card ; ; Copyright (C) 2017 by Digi International Inc. ; diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi_hotplug.sh b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/hdmi_hotplug.sh similarity index 100% rename from meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi_hotplug.sh rename to meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/hdmi/hdmi_hotplug.sh diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/90-pulseaudio.rules b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/90-pulseaudio.rules new file mode 100644 index 000000000..4c9b5ca17 --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/90-pulseaudio.rules @@ -0,0 +1,2 @@ +# Digi ConnectCore MAX98089 sound card +ATTRS{id}=="imxmax98088", ENV{PULSE_PROFILE_SET}="dey-audio-max98089.conf" diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/dey-audio-max98089.conf b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/dey-audio-max98089.conf new file mode 100644 index 000000000..e9753825d --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/max98089/dey-audio-max98089.conf @@ -0,0 +1,75 @@ +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation; either version 2.1 of the +# License, or (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see . + +; Audio profile for Digi ConnectCore MAX98089 sound card +; +; Copyright (C) 2019 by Digi International Inc. +; +; This device can operate in either mono or stereo for output, input or duplex +; +; Profile probing is skipped to save time during loading +; +; See default.conf for an explanation on the directives used here. + +[General] +auto-profiles = no + +[Mapping analog-mono] +device-strings = hw:%f +channel-map = mono +priority = 2 + +[Mapping analog-stereo] +device-strings = hw:%f +channel-map = left,right +priority = 60 + +[Profile input:analog-mono] +description = Analog Mono Input +input-mappings = analog-mono +skip-probe = yes +priority = 2 + +[Profile input:analog-stereo] +description = Analog Stereo Input +input-mappings = analog-stereo +skip-probe = yes +priority = 60 + +[Profile output:analog-mono] +description = Analog Mono Output +output-mappings = analog-mono +skip-probe = yes +priority = 200 + +[Profile output:analog-mono+input:analog-mono] +description = Analog Mono Duplex +output-mappings = analog-mono +input-mappings = analog-mono +skip-probe = yes +priority = 202 + +[Profile output:analog-stereo] +description = Analog Stereo Output +output-mappings = analog-stereo +skip-probe = yes +priority = 6000 + +[Profile output:analog-stereo+input:analog-stereo] +description = Analog Stereo Duplex +output-mappings = analog-stereo +input-mappings = analog-stereo +skip-probe = yes +priority = 6060 diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/90-pulseaudio.rules b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/90-pulseaudio.rules new file mode 100644 index 000000000..62f9e80f3 --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/90-pulseaudio.rules @@ -0,0 +1,2 @@ +# Digi ConnectCore SGTL5000 sound card +ATTRS{id}=="sgtl5000audio", ENV{PULSE_PROFILE_SET}="dey-audio-sgtl5000.conf" diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/dey-audio-sgtl5000.conf similarity index 97% rename from meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf rename to meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/dey-audio-sgtl5000.conf index ffd115c07..94cd64dfa 100644 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/sgtl5000/dey-audio-sgtl5000.conf @@ -13,7 +13,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with PulseAudio; if not, see . -; Audio profile for Digi ConnectCore 6 SBC SGTL5000 sound card +; Audio profile for Digi ConnectCore SGTL5000 sound card ; ; Copyright (C) 2017 by Digi International Inc. ; diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend index 0b6d1ad0b..3ef776924 100644 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend @@ -1,35 +1,59 @@ -# Copyright (C) 2017 Digi International +# Copyright (C) 2019 Digi International FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" -SRC_URI_append_ccimx6ulsbc = " file://0001-pulseaudio-keep-headphones-volume-in-platforms-witho.patch" -SRC_URI_append_ccimx6 = " \ - file://hdmi_hotplug.sh \ - file://dey-audio-hdmi.conf \ - file://dey-audio-sgtl5000.conf \ +# Configuration files for SGTL500 sound card +CFG_SGTL5000 = " \ + file://sgtl5000/dey-audio-sgtl5000.conf \ + file://sgtl5000/90-pulseaudio.rules \ +" + +# Configuration files for MAX98089 sound card +CFG_MAX98089 = " \ + file://max98089/dey-audio-max98089.conf \ + file://max98089/90-pulseaudio.rules \ +" + +# Configuration files for HDMI sound card +CFG_HDMI = " \ + file://hdmi/hdmi_hotplug.sh \ + file://hdmi/dey-audio-hdmi.conf \ + file://hdmi/90-pulseaudio-hdmi.rules \ +" +SOUND_CARD ?= "max98089" +SOUND_CARD_ccimx6 ?= "sgtl5000" + +AUDIO_HDMI ?= "" +AUDIO_HDMI_ccimx6 = "yes" + +SRC_URI_append = " \ + ${@oe.utils.conditional('SOUND_CARD', 'sgtl5000', '${CFG_SGTL5000}', '', d)} \ + ${@oe.utils.conditional('SOUND_CARD', 'max98089', '${CFG_MAX98089}', '', d)} \ + ${@oe.utils.conditional('AUDIO_HDMI', 'yes', '${CFG_HDMI}', '', d)} \ +" + +SRC_URI_append_ccimx6ulsbc = " \ + file://0001-pulseaudio-keep-headphones-volume-in-platforms-witho.patch \ " EXTRA_OECONF_append_ccimx6 = " --disable-memfd" -do_install_append_ccimx6() { - install -d ${D}${sysconfdir}/udev/scripts - install -m 0755 ${WORKDIR}/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts - +do_install_append() { install -d ${D}${datadir}/pulseaudio/alsa-mixer/profile-sets - install -m 0644 ${WORKDIR}/dey-audio-hdmi.conf ${D}${datadir}/pulseaudio/alsa-mixer/profile-sets - install -m 0644 ${WORKDIR}/dey-audio-sgtl5000.conf ${D}${datadir}/pulseaudio/alsa-mixer/profile-sets + install -m 0644 ${WORKDIR}/${SOUND_CARD}/dey-audio-*.conf ${D}${datadir}/pulseaudio/alsa-mixer/profile-sets + + install -d ${D}${base_libdir}/udev/rules.d + install -m 0644 ${WORKDIR}/${SOUND_CARD}/90-pulseaudio.rules ${D}${base_libdir}/udev/rules.d + + # Configuration files for HDMI sound card + if [ "${AUDIO_HDMI}" = "yes" ]; then + install -d ${D}${sysconfdir}/udev/scripts + install -m 0755 ${WORKDIR}/hdmi/hdmi_hotplug.sh ${D}${sysconfdir}/udev/scripts + install -m 0644 ${WORKDIR}/hdmi/dey-audio-hdmi.conf ${D}${datadir}/pulseaudio/alsa-mixer/profile-sets + install -m 0644 ${WORKDIR}/hdmi/90-pulseaudio-hdmi.rules ${D}${base_libdir}/udev/rules.d + fi sed -i -e '/load-module module-suspend-on-idle/{s,$, timeout=0,g}' ${D}${sysconfdir}/pulse/default.pa - - cat >> ${D}${base_libdir}/udev/rules.d/90-pulseaudio.rules <<-_EOL_ - - # Digi ConnectCore 6 SBC HDMI - ATTRS{id}=="imxhdmisoc", ENV{PULSE_PROFILE_SET}="dey-audio-hdmi.conf" - # Digi ConnectCore 6 SBC SGTL5000 - ATTRS{id}=="sgtl5000audio", ENV{PULSE_PROFILE_SET}="dey-audio-sgtl5000.conf" - - SUBSYSTEM=="platform", KERNEL=="*hdmi_video", ACTION=="change", RUN+="/etc/udev/scripts/hdmi_hotplug.sh" - _EOL_ } PACKAGE_ARCH = "${MACHINE_ARCH}"