distribution/packages/hardware/quirks/devices/Powkiddy RGB10 MAX 3/003-audio
fewtarius 8c08cdbfe9
* Add a mechanism for providing configuration on a per device basis.
* Supported via fresh flash and during the first post-install reboot.
  * Add configurations to packages/hardware/quirks/devices/(DEVICE)/config/ in the same format it would be found in /storage/.config.
  * System generic configs are copied first, and device specific configs are copied over them.
* Tweak audio so it works on boot.
2023-07-01 18:46:51 +00:00

263 lines
4 KiB
Bash
Executable file

#!/bin/bash
# SPDX-License-Identifier: Apache-2.0
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
. /etc/profile
### Set a custom device so we don't clobber it.
set-audio set "CUSTOM (UNMANAGED)"
set-audio esset "Master"
cat <<EOF >/storage/.config/asound.conf
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_time 0
period_size 4096
buffer_size 131072
rate 96000
}
bindings {
0 0
1 1
}
}
EOF
if [ ! -e "/storage/.config/asound.state" ]
then
cat <<EOF >/storage/.config/asound.state
state.Ultra {
control.1 {
iface MIXER
name 'Master Playback Volume'
value.0 223
value.1 223
comment {
access 'read write'
type INTEGER
count 2
range '0 - 252'
dbmin -9500
dbmax 0
dbvalue.0 -1094
dbvalue.1 -1094
}
}
control.2 {
iface MIXER
name 'Master Capture Volume'
value.0 226
value.1 226
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
dbmin -9500
dbmax 0
dbvalue.0 -1081
dbvalue.1 -1081
}
}
control.3 {
iface MIXER
name 'Mic Capture Gain'
value.0 6
value.1 6
comment {
access 'read write'
type INTEGER
count 2
range '0 - 15'
dbmin -1800
dbmax 2700
dbvalue.0 0
dbvalue.1 0
}
}
control.4 {
iface MIXER
name 'TDMOUT_B Lane 0 Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
}
}
control.5 {
iface MIXER
name 'TDMOUT_B Lane 1 Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
}
}
control.6 {
iface MIXER
name 'TDMOUT_B Lane 2 Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
}
}
control.7 {
iface MIXER
name 'TDMOUT_B Lane 3 Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
}
}
control.8 {
iface MIXER
name 'TDMOUT_B Gain Enable Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.9 {
iface MIXER
name 'FRDDR_A SRC 1 EN Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.10 {
iface MIXER
name 'FRDDR_A SRC 2 EN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.11 {
iface MIXER
name 'FRDDR_A SRC 3 EN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.12 {
iface MIXER
name 'FRDDR_A SINK 1 SEL'
value 'OUT 1'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'OUT 0'
item.1 'OUT 1'
item.2 'OUT 2'
item.3 'OUT 3'
item.4 'OUT 4'
item.5 'OUT 5'
item.6 'OUT 6'
item.7 'OUT 7'
}
}
control.13 {
iface MIXER
name 'FRDDR_A SINK 2 SEL'
value 'OUT 0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'OUT 0'
item.1 'OUT 1'
item.2 'OUT 2'
item.3 'OUT 3'
item.4 'OUT 4'
item.5 'OUT 5'
item.6 'OUT 6'
item.7 'OUT 7'
}
}
control.14 {
iface MIXER
name 'FRDDR_A SINK 3 SEL'
value 'OUT 0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'OUT 0'
item.1 'OUT 1'
item.2 'OUT 2'
item.3 'OUT 3'
item.4 'OUT 4'
item.5 'OUT 5'
item.6 'OUT 6'
item.7 'OUT 7'
}
}
control.15 {
iface MIXER
name 'Playback Mux'
value HP
comment {
access 'read write'
type ENUMERATED
count 1
item.0 HP
item.1 SPK
}
}
control.16 {
iface MIXER
name 'TDMOUT_B SRC SEL'
value 'IN 0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'IN 0'
item.1 'IN 1'
item.2 'IN 2'
}
}
}
EOF
fi
alsactl restore -f /storage/.config/asound.state
amixer sset 'FRDDR_A SINK 1 SEL' 'OUT 1'
amixer sset 'FRDDR_A SRC 1 EN' 'on'
amixer sset 'TDMOUT_B SRC SEL' 'IN 0'
amixer -c0 sset "Playback Mux" "${DEVICE_PLAYBACK_PATH_SPK}"
alsactl store -f /storage/.config/asound.state