distribution/packages/hardware/quirks/devices/Anbernic RG552/003-audio
2023-07-09 13:47:11 +00:00

530 lines
8.8 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 "DAC"
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 1024
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}
EOF
cat <<EOF >/storage/.config/asound.state
state.rockchipes8316c {
control.1 {
iface CARD
name 'Headphones Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.2 {
iface MIXER
name 'Headphone Playback Volume'
value.0 3
value.1 3
comment {
access 'read write'
type INTEGER
count 2
range '0 - 3'
dbmin -4800
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.3 {
iface MIXER
name 'Headphone Mixer Volume'
value.0 11
value.1 11
comment {
access 'read write'
type INTEGER
count 2
range '0 - 11'
dbmin -1200
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.4 {
iface MIXER
name 'Playback Polarity'
value 'R Invert'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Normal
item.1 'R Invert'
item.2 'L Invert'
item.3 'L + R Invert'
}
}
control.5 {
iface MIXER
name 'DAC Playback Volume'
value.0 144
value.1 144
comment {
access 'read write'
type INTEGER
count 2
range '0 - 192'
dbmin -9999999
dbmax 0
dbvalue.0 -2400
dbvalue.1 -2400
}
}
control.6 {
iface MIXER
name 'DAC Soft Ramp Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.7 {
iface MIXER
name 'DAC Soft Ramp Rate'
value 4
comment {
access 'read write'
type INTEGER
count 1
range '0 - 4'
}
}
control.8 {
iface MIXER
name 'DAC Notch Filter Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.9 {
iface MIXER
name 'DAC Double Fs Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.10 {
iface MIXER
name 'DAC Stereo Enhancement'
value 7
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
}
}
control.11 {
iface MIXER
name 'DAC Mono Mix Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.12 {
iface MIXER
name 'Capture Polarity'
value Normal
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Normal
item.1 Invert
}
}
control.13 {
iface MIXER
name 'Mic Boost Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.14 {
iface MIXER
name 'ADC Capture Volume'
value 192
comment {
access 'read write'
type INTEGER
count 1
range '0 - 192'
dbmin -9999999
dbmax 0
dbvalue.0 0
}
}
control.15 {
iface MIXER
name 'ADC PGA Gain Volume'
value 7
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10'
dbmin -350
dbmax 2400
dbvalue.0 1600
}
}
control.16 {
iface MIXER
name 'ADC Soft Ramp Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.17 {
iface MIXER
name 'ADC Double Fs Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.18 {
iface MIXER
name 'ALC Capture Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.19 {
iface MIXER
name 'ALC Capture Max Volume'
value 28
comment {
access 'read write'
type INTEGER
count 1
range '0 - 28'
dbmin -650
dbmax 3550
dbvalue.0 3550
}
}
control.20 {
iface MIXER
name 'ALC Capture Min Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 28'
dbmin -1200
dbmax 3000
dbvalue.0 -1200
}
}
control.21 {
iface MIXER
name 'ALC Capture Target Volume'
value 10
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10'
dbmin -1650
dbmax -150
dbvalue.0 -150
}
}
control.22 {
iface MIXER
name 'ALC Capture Hold Time'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10'
}
}
control.23 {
iface MIXER
name 'ALC Capture Decay Time'
value 3
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10'
}
}
control.24 {
iface MIXER
name 'ALC Capture Attack Time'
value 2
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10'
}
}
control.25 {
iface MIXER
name 'ALC Capture Noise Gate Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.26 {
iface MIXER
name 'ALC Capture Noise Gate Threshold'
value 31
comment {
access 'read write'
type INTEGER
count 1
range '0 - 31'
}
}
control.27 {
iface MIXER
name 'ALC Capture Noise Gate Type'
value 'Constant PGA Gain'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'Constant PGA Gain'
item.1 'Mute ADC Output'
}
}
control.28 {
iface MIXER
name 'Speaker Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.29 {
iface MIXER
name 'Differential Mux'
value lin1-rin1
comment {
access 'read write'
type ENUMERATED
count 1
item.0 lin1-rin1
item.1 lin2-rin2
item.2 'lin1-rin1 with 20db Boost'
item.3 'lin2-rin2 with 20db Boost'
}
}
control.30 {
iface MIXER
name 'Digital Mic Mux'
value 'dmic disable'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'dmic disable'
item.1 'dmic data at high level'
item.2 'dmic data at low level'
}
}
control.31 {
iface MIXER
name 'DAC Source Mux'
value 'LDATA TO LDAC, RDATA TO RDAC'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'LDATA TO LDAC, RDATA TO RDAC'
item.1 'LDATA TO LDAC, LDATA TO RDAC'
item.2 'RDATA TO LDAC, RDATA TO RDAC'
item.3 'RDATA TO LDAC, LDATA TO RDAC'
}
}
control.32 {
iface MIXER
name 'Left Headphone Mux'
value lin1-rin1
comment {
access 'read write'
type ENUMERATED
count 1
item.0 lin1-rin1
item.1 lin2-rin2
item.2 'lin-rin with Boost'
item.3 'lin-rin with Boost and PGA'
}
}
control.33 {
iface MIXER
name 'Right Headphone Mux'
value lin1-rin1
comment {
access 'read write'
type ENUMERATED
count 1
item.0 lin1-rin1
item.1 lin2-rin2
item.2 'lin-rin with Boost'
item.3 'lin-rin with Boost and PGA'
}
}
control.34 {
iface MIXER
name 'Left Headphone Mixer LLIN Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.35 {
iface MIXER
name 'Left Headphone Mixer Left DAC Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.36 {
iface MIXER
name 'Right Headphone Mixer RLIN Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.37 {
iface MIXER
name 'Right Headphone Mixer Right DAC Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
}
state.hdmisound {
control.1 {
iface PCM
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access read
type INTEGER
count 8
range '0 - 36'
}
}
control.2 {
iface PCM
name 'IEC958 Playback Mask'
value ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
comment {
access read
type IEC958
count 1
}
}
control.3 {
iface PCM
name 'IEC958 Playback Default'
value '0400000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.4 {
iface PCM
name ELD
value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read volatile'
type BYTES
count 128
}
}
}
EOF
alsactl restore -f /storage/.config/asound.state