aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-01-12 00:27:14 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-01-12 00:27:14 +0300
commitb3977c16f63968f7e02e5d903954f3a6f6d48ec1 (patch)
treee0920e128f37cace218231c9f6d84b62433a256f
parentf3fcef5114b6f22dd01846f829cc87e7438051dc (diff)
tools: add common amixer setup script for opi boards
-rw-r--r--tools/sunxi-setup-amixer.sh114
1 files changed, 114 insertions, 0 deletions
diff --git a/tools/sunxi-setup-amixer.sh b/tools/sunxi-setup-amixer.sh
new file mode 100644
index 0000000..f33ebb7
--- /dev/null
+++ b/tools/sunxi-setup-amixer.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+amixer() {
+ /usr/bin/amixer "$@"
+}
+
+setup_opi_pc2() {
+ for v in unmute cap; do
+ amixer set "Line In" $v
+ amixer set "Mic1" $v
+ amixer set "Mic2" $v
+ done
+
+ for k in "Mic1 Boost" "Line In" "Mic1" "Mic2 Boost" "Mic2"; do
+ amixer set "$k" "86%"
+ done
+}
+
+setup_opi_one() {
+ for v in unmute cap; do
+ amixer set "Line In" $v
+ amixer set "Mic1" $v
+ done
+
+ for k in "Mic1 Boost" "Line In" "Mic1"; do
+ amixer set "$k" "86%"
+ done
+}
+
+setup_opi3lts() {
+ switches=(
+ "Left DAC Mixer ADCL"
+ "Left DAC Mixer I2SDACL"
+ "Left I2S Mixer ADCL"
+ "Left I2S Mixer I2SDACL"
+ "Left Input Mixer LINEINL"
+ "Left Input Mixer MIC1"
+ "Left Input Mixer MIC2"
+ "Left Input Mixer OMixerL"
+ "Left Input Mixer OMixerR"
+ "Left Input Mixer PhoneN"
+ "Left Input Mixer PhonePN"
+ "Left Output Mixer DACL"
+ "Left Output Mixer DACR"
+ "Left Output Mixer LINEINL"
+ "Left Output Mixer MIC1"
+ "Left Output Mixer MIC2"
+ "Left Output Mixer PhoneN"
+ "Left Output Mixer PhonePN"
+ "Right DAC Mixer ADCR"
+ "Right DAC Mixer I2SDACR"
+ "Right I2S Mixer ADCR"
+ "Right I2S Mixer I2SDACR"
+ "Right Input Mixer LINEINR"
+ "Right Input Mixer MIC1"
+ "Right Input Mixer MIC2"
+ "Right Input Mixer OMixerL"
+ "Right Input Mixer OMixerR"
+ "Right Input Mixer PhoneP"
+ "Right Input Mixer PhonePN"
+ "Right Output Mixer DACL"
+ "Right Output Mixer DACR"
+ "Right Output Mixer LINEINR"
+ "Right Output Mixer MIC1"
+ "Right Output Mixer MIC2"
+ "Right Output Mixer PhoneP"
+ "Right Output Mixer PhonePN"
+ )
+ for v in "${switches[@]}"; do
+ value=on
+ case "$v" in
+ *Input*)
+ value=on
+ ;;
+ *Output*)
+ value=off
+ ;;
+ esac
+ amixer set "$v" $value
+ done
+
+ to_mute=(
+ "I2S Mixer ADC"
+ "I2S Mixer DAC"
+ "ADC Input"
+ "DAC Mixer ADC"
+ "DAC Mxier DAC" # this is not a typo
+ )
+ for v in "${to_mute[@]}"; do
+ amixer set "$v" "0%"
+ done
+
+ amixer set "Master" "100%"
+ amixer set "MIC1 Boost" "100%"
+ amixer set "MIC2 Boost" "100%"
+ amixer set "Line Out Mixer" "86%"
+ amixer set "MIC Out Mixer" "71%"
+}
+
+device="$(tr -d '\0' < /sys/firmware/devicetree/base/model)"
+case "$device" in
+ *"Orange Pi PC 2")
+ setup_opi_pc2
+ ;;
+ *"Orange Pi One")
+ setup_opi_one
+ ;;
+ *"OrangePi 3 LTS")
+ setup_opi3lts
+ ;;
+ *)
+ >&2 echo "error: unidentified device: $device"
+ ;;
+esac