1
0
This repository has been archived on 2024-11-10. You can view files and clone it, but cannot push or open issues or pull requests.
Lakka-rk322x/projects/Amlogic/patches/alsa-lib/amlogic-0001-WIP-add-AMLOGIC-HDMI-and-AMLOGIC-HDMI-SPDIF-confs.patch
2021-01-31 15:11:56 +00:00

372 lines
8.1 KiB
Diff

From 0d37174c3b629235867e288b4ab9f32cf8c2e80f Mon Sep 17 00:00:00 2001
From: chewitt <christianshewitt@gmail.com>
Date: Thu, 14 May 2020 13:31:34 +0000
Subject: [PATCH 1/3] WIP: add AMLOGIC-HDMI and AMLOGIC-HDMI-SPDIF confs
---
src/conf/cards/AMLOGIC-HDMI-SPDIF.conf | 174 +++++++++++++++++++++++++
src/conf/cards/AMLOGIC-HDMI.conf | 170 ++++++++++++++++++++++++
2 files changed, 344 insertions(+)
create mode 100644 src/conf/cards/AMLOGIC-HDMI-SPDIF.conf
create mode 100644 src/conf/cards/AMLOGIC-HDMI.conf
diff --git a/src/conf/cards/AMLOGIC-HDMI-SPDIF.conf b/src/conf/cards/AMLOGIC-HDMI-SPDIF.conf
new file mode 100644
index 00000000..d2783edc
--- /dev/null
+++ b/src/conf/cards/AMLOGIC-HDMI-SPDIF.conf
@@ -0,0 +1,174 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
+
+#
+# All PCM must be 24-bit for easy kernel conversion.
+# IEC958 formatted output can be sent directly.
+#
+# Direct-to-hardware converting to 24-bit output.
+#
+AMLOGIC-HDMI-SPDIF.pcm.hw-s24le {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type linear
+ slave.pcm {
+ type hw
+ card $CARD
+ }
+ slave.format S24_LE
+}
+
+#
+# Common output path for front and surround outputs
+#
+AMLOGIC-HDMI-SPDIF.pcm.common.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type asym
+ playback.pcm {
+ type softvol
+ slave.pcm {
+ @func refer name {
+ @func concat strings [
+ "cards."
+ { @func card_driver card $CARD }
+ ".pcm.hw-s24le:CARD=" $CARD
+ ]
+ }
+ }
+ control {
+ name "PCM Playback Volume"
+ card $CARD
+ }
+ }
+}
+
+<confdir:pcm/front.conf>
+
+AMLOGIC-HDMI-SPDIF.pcm.front.0 cards.AMLOGIC-HDMI-SPDIF.pcm.common.0
+
+# The mapping of ALSA channels to surround channels is very imprecise.
+# ALSA uses a different terminology and speaker placement to the CEA
+# surround positioning. CEA has the positioning of:
+#
+# LFE
+# FL FLC FC FRC FR
+#
+# RL RLC RC RRC RR
+#
+# ALSA's idea is:
+#
+# LFE
+# FL C FR
+#
+# SL SR
+#
+# RL RR
+#
+# We do our best to map between these representations.
+
+<confdir:pcm/surround40.conf>
+
+AMLOGIC-HDMI-SPDIF.pcm.surround40.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type empty
+ slave.pcm {
+ @func refer
+ name {
+ @func concat strings [
+ "cards.AMLOGIC-HDMI-SPDIF.pcm.common.0:CARD="
+ $CARD
+ ]
+ }
+ }
+}
+
+# surround 41 and surround50 are (annoyingly) mapped to surround51
+# We could do without stacking two 'route' plugins on top of each other
+
+<confdir:pcm/surround41.conf>
+<confdir:pcm/surround50.conf>
+<confdir:pcm/surround51.conf>
+
+AMLOGIC-HDMI-SPDIF.pcm.surround51.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type route
+ slave.pcm {
+ @func refer
+ name {
+ @func concat strings [
+ "cards.AMLOGIC-HDMI-SPDIF.pcm.common.0:CARD="
+ $CARD
+ ]
+ }
+ }
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
+ ttable.2.4 1.0 # RL -> slave 4 -> hdmi 4 RL
+ ttable.3.5 1.0 # RR -> slave 5 -> hdmi 5 RR
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
+}
+
+<confdir:pcm/surround71.conf>
+
+AMLOGIC-HDMI-SPDIF.pcm.surround71.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type route
+ slave.pcm {
+ @func refer
+ name {
+ @func concat strings [
+ "cards.AMLOGIC-HDMI-SPDIF.pcm.common.0:CARD="
+ $CARD
+ ]
+ }
+ }
+ slave.channels 8
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
+ ttable.2.6 1.0 # RL -> slave 6 -> hdmi 6 RLC/FLC
+ ttable.3.7 1.0 # RR -> slave 7 -> hdmi 7 RRC/FRC
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
+ ttable.6.4 1.0 # SL -> slave 4 -> hdmi 4 RL
+ ttable.7.5 1.0 # SR -> slave 5 -> hdmi 5 RR
+}
+
+#<confdir:pcm/hdmi.conf>
+#
+#AMLOGIC-HDMI-SPDIF.pcm.hdmi.0 {
+# @args [ CARD AES0 AES1 AES2 AES3 ]
+# @args.CARD {
+# type string
+# }
+# @args.AES0 {
+# type integer
+# }
+# @args.AES1 {
+# type integer
+# }
+# @args.AES2 {
+# type integer
+# }
+# @args.AES3 {
+# type integer
+# default 0x01 # IEC958_AES3_CON_FS_NOTID
+# }
+# type iec958
+# slave.pcm {
+# type hw
+# card $CARD
+# }
+# slave.format IEC958_SUBFRAME_LE
+# # $AES3 must be correct for some AV receivers to accept the stream
+# status [ $AES0 $AES1 $AES2 $AES3 ]
+# hdmi_mode true
+#}
+#
+#<confdir:pcm/iec958.conf>
+#
+#AMLOGIC-HDMI-SPDIF.pcm.iec958.0 AMLOGIC-HDMI-SPDIF.pcm.hdmi.0
diff --git a/src/conf/cards/AMLOGIC-HDMI.conf b/src/conf/cards/AMLOGIC-HDMI.conf
new file mode 100644
index 00000000..8e410c4d
--- /dev/null
+++ b/src/conf/cards/AMLOGIC-HDMI.conf
@@ -0,0 +1,170 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
+
+#
+# All PCM must be 24-bit for easy kernel conversion.
+# IEC958 formatted output can be sent directly.
+#
+# Direct-to-hardware converting to 24-bit output.
+#
+AMLOGIC-HDMI.pcm.hw-s24le {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type linear
+ slave.pcm {
+ type hw
+ card $CARD
+ }
+ slave.format S24_LE
+}
+
+#
+# Common output path for front and surround outputs
+#
+AMLOGIC-HDMI.pcm.common.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type asym
+ playback.pcm {
+ type softvol
+ slave.pcm {
+ @func refer name {
+ @func concat strings [
+ "cards."
+ { @func card_driver card $CARD }
+ ".pcm.hw-s24le:CARD=" $CARD
+ ]
+ }
+ }
+ control {
+ name "PCM Playback Volume"
+ card $CARD
+ }
+ }
+}
+
+<confdir:pcm/front.conf>
+
+AMLOGIC-HDMI.pcm.front.0 cards.AMLOGIC-HDMI.pcm.common.0
+
+# The mapping of ALSA channels to surround channels is very imprecise.
+# ALSA uses a different terminology and speaker placement to the CEA
+# surround positioning. CEA has the positioning of:
+#
+# LFE
+# FL FLC FC FRC FR#
+#
+# RL RLC RC RRC RR
+#
+# ALSA's idea is:
+#
+# LFE
+# FL C FR
+#
+# SL SR
+#
+# RL RR
+#
+# We do our best to map between these representations.
+
+<confdir:pcm/surround40.conf>
+
+AMLOGIC-HDMI.pcm.surround40.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type empty
+ slave.pcm {
+ @func refer
+ name {
+ @func concat strings [
+ "cards.AMLOGIC-HDMI.pcm.common.0:CARD="
+ $CARD
+ ]
+ }
+ }
+}
+
+# surround 41 and surround50 are (annoyingly) mapped to surround51
+# We could do without stacking two 'route' plugins on top of each other
+
+<confdir:pcm/surround41.conf>
+<confdir:pcm/surround50.conf>
+<confdir:pcm/surround51.conf>
+
+AMLOGIC-HDMI.pcm.surround51.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type route
+ slave.pcm {
+ @func refer
+ name {
+ @func concat strings [
+ "cards.AMLOGIC-HDMI.pcm.common.0:CARD="
+ $CARD
+ ]
+ }
+ }
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
+ ttable.2.4 1.0 # RL -> slave 4 -> hdmi 4 RL
+ ttable.3.5 1.0 # RR -> slave 5 -> hdmi 5 RR
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
+}
+
+<confdir:pcm/surround71.conf>
+
+AMLOGIC-HDMI.pcm.surround71.0 {
+ @args [ CARD ]
+ @args.CARD { type string }
+ type route
+ slave.pcm {
+ @func refer
+ name {
+ @func concat strings [
+ "cards.AMLOGIC-HDMI.pcm.common.0:CARD="
+ $CARD
+ ]
+ }
+ }
+ slave.channels 8
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
+ ttable.2.6 1.0 # RL -> slave 6 -> hdmi 6 RLC/FLC
+ ttable.3.7 1.0 # RR -> slave 7 -> hdmi 7 RRC/FRC
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
+ ttable.6.4 1.0 # SL -> slave 4 -> hdmi 4 RL
+ ttable.7.5 1.0 # SR -> slave 5 -> hdmi 5 RR
+}
+
+#<confdir:pcm/hdmi.conf>
+#
+#AMLOGIC-HDMI.pcm.hdmi.0 {
+# @args [ CARD AES0 AES1 AES2 AES3 ]
+# @args.CARD {
+# type string
+# }
+# @args.AES0 {
+# type integer
+# }
+# @args.AES1 {
+# type integer
+# }
+# @args.AES2 {
+# type integer
+# }
+# @args.AES3 {
+# type integer
+# default 0x01 # IEC958_AES3_CON_FS_NOTID
+# }
+# type iec958
+# slave.pcm {
+# type hw
+# card $CARD
+# }
+# slave.format IEC958_SUBFRAME_LE
+# # $AES3 must be correct for some AV receivers to accept the stream
+# status [ $AES0 $AES1 $AES2 $AES3 ]
+# hdmi_mode true
+#}
--
2.17.1