rockchip: Add NanoPi M5 board support to edge kernel (#8684)

* rockchip: Add NanoPi M5 board support to edge kernel

* rockchip64: enable Rockchip ASoC drivers and codecs in kernel config

* config: Fix audio Kconfig tristate hierarchy

Set CONFIG_SOUND, CONFIG_SND, and CONFIG_SND_SOC to built-in (y)
to allow Rockchip audio drivers to be built-in instead of being
silently downgraded to modules by olddefconfig.

* nanopi-m5: Add asound.state for audio configuration

* nanopi-m5: Fix SAI2 clock output
This commit is contained in:
SuperKali 2025-09-28 12:46:45 +02:00 committed by GitHub
parent a96702dec5
commit 412f67c20d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 2017 additions and 12 deletions

View File

@ -2,8 +2,9 @@
BOARD_NAME="NanoPi M5"
BOARDFAMILY="rk35xx"
BOOTCONFIG="nanopi-m5-rk3576_defconfig"
KERNEL_TARGET="vendor" # WIP: current, edge kernel
KERNEL_TARGET="vendor, edge" # WIP: current kernel
FULL_DESKTOP="yes"
ASOUND_STATE="asound.state.nanopi-m5"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="rockchip/rk3576-nanopi-m5.dtb"
BOOT_SCENARIO="spl-blobs"

View File

@ -2142,8 +2142,8 @@ CONFIG_BACKLIGHT_RAVE_SP=m
CONFIG_BACKLIGHT_LED=m
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
CONFIG_SOUND=y
CONFIG_SND=y
# CONFIG_SND_SUPPORT_OLD_API is not set
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
@ -2177,7 +2177,7 @@ CONFIG_SND_USB_POD=m
CONFIG_SND_USB_PODHD=m
CONFIG_SND_USB_TONEPORT=m
CONFIG_SND_USB_VARIAX=m
CONFIG_SND_SOC=m
CONFIG_SND_SOC=y
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
CONFIG_SND_SOC_ADI=m
CONFIG_SND_SOC_ADI_AXI_I2S=m
@ -2188,13 +2188,18 @@ CONFIG_SND_DESIGNWARE_I2S=m
CONFIG_SND_SOC_FSL_AUDMIX=m
CONFIG_SND_SOC_FSL_MICFIL=m
CONFIG_SND_SOC_FSL_XCVR=m
CONFIG_SND_SOC_ROCKCHIP=m
CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m
CONFIG_SND_SOC_ROCKCHIP_PDM=m
CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
CONFIG_SND_SOC_ROCKCHIP_MAX98090=m
CONFIG_SND_SOC_ROCKCHIP_RT5645=m
CONFIG_SND_SOC_ROCKCHIP_RT5651=m
CONFIG_SND_SOC_ROCKCHIP=y
CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y
CONFIG_SND_SOC_ROCKCHIP_PDM=y
CONFIG_SND_SOC_ROCKCHIP_PDM_V2=m
CONFIG_SND_SOC_ROCKCHIP_SAI=y
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
CONFIG_SND_SOC_ROCKCHIP_RT5651=y
CONFIG_SND_SOC_ROCKCHIP_HDMI=y
CONFIG_SND_SOC_DUMMY_CODEC=y
CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m
CONFIG_SND_SOC_RK3399_GRU_SOUND=m
CONFIG_SND_SOC_XILINX_I2S=m
@ -2243,7 +2248,7 @@ CONFIG_SND_SOC_PCM512x_SPI=m
CONFIG_SND_SOC_RK3308=m
CONFIG_SND_SOC_RK3328=m
CONFIG_SND_SOC_RK817=m
CONFIG_SND_SOC_RT5616=m
CONFIG_SND_SOC_RT5616=y
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_RT5659=m

View File

@ -0,0 +1,907 @@
state.realtekrt5616co {
control.1 {
iface CARD
name 'Headphones Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.2 {
iface MIXER
name 'SAI2 Receive Mono Slot Select'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 128'
dbmin 0
dbmax 16384
dbvalue.0 0
}
}
control.3 {
iface MIXER
name 'SAI2 Receive Mono Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.4 {
iface MIXER
name 'SAI2 Transmit Mono Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.5 {
iface MIXER
name 'SAI2 SDI3 Loopback I2S LR Channel Sel'
value 'L:MIC R:LP'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'L:MIC R:LP'
item.1 'L:LP R:MIC'
}
}
control.6 {
iface MIXER
name 'SAI2 SDI2 Loopback I2S LR Channel Sel'
value 'L:LP R:MIC'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'L:MIC R:LP'
item.1 'L:LP R:MIC'
}
}
control.7 {
iface MIXER
name 'SAI2 SDI1 Loopback I2S LR Channel Sel'
value 'L:MIC R:LP'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'L:MIC R:LP'
item.1 'L:LP R:MIC'
}
}
control.8 {
iface MIXER
name 'SAI2 SDI0 Loopback I2S LR Channel Sel'
value 'L:MIC R:LP'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'L:MIC R:LP'
item.1 'L:LP R:MIC'
}
}
control.9 {
iface MIXER
name 'SAI2 SDI3 Loopback I2S LR Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.10 {
iface MIXER
name 'SAI2 SDI2 Loopback I2S LR Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.11 {
iface MIXER
name 'SAI2 SDI1 Loopback I2S LR Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.12 {
iface MIXER
name 'SAI2 SDI0 Loopback I2S LR Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.13 {
iface MIXER
name 'SAI2 SDI3 Loopback Src Select'
value 'From SDO0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDO0'
item.1 'From SDO1'
item.2 'From SDO2'
item.3 'From SDO3'
}
}
control.14 {
iface MIXER
name 'SAI2 SDI2 Loopback Src Select'
value 'From SDO0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDO0'
item.1 'From SDO1'
item.2 'From SDO2'
item.3 'From SDO3'
}
}
control.15 {
iface MIXER
name 'SAI2 SDI1 Loopback Src Select'
value 'From SDO1'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDO0'
item.1 'From SDO1'
item.2 'From SDO2'
item.3 'From SDO3'
}
}
control.16 {
iface MIXER
name 'SAI2 SDI0 Loopback Src Select'
value 'From SDO0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDO0'
item.1 'From SDO1'
item.2 'From SDO2'
item.3 'From SDO3'
}
}
control.17 {
iface MIXER
name 'SAI2 SDI3 Loopback Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.18 {
iface MIXER
name 'SAI2 SDI2 Loopback Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.19 {
iface MIXER
name 'SAI2 SDI1 Loopback Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.20 {
iface MIXER
name 'SAI2 SDI0 Loopback Switch'
value Disable
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Disable
item.1 Enable
}
}
control.21 {
iface MIXER
name 'SAI2 Sync Out Switch'
value 'From CRU'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From CRU'
item.1 'From IO'
}
}
control.22 {
iface MIXER
name 'SAI2 Sync In Switch'
value 'From IO'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From IO'
item.1 'From Sync Port'
}
}
control.23 {
iface MIXER
name 'SAI2 Receive PATH3 Source Select'
value 'From SDI1'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDI0'
item.1 'From SDI1'
item.2 'From SDI2'
item.3 'From SDI3'
}
}
control.24 {
iface MIXER
name 'SAI2 Receive PATH2 Source Select'
value 'From SDI1'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDI0'
item.1 'From SDI1'
item.2 'From SDI2'
item.3 'From SDI3'
}
}
control.25 {
iface MIXER
name 'SAI2 Receive PATH1 Source Select'
value 'From SDI0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDI0'
item.1 'From SDI1'
item.2 'From SDI2'
item.3 'From SDI3'
}
}
control.26 {
iface MIXER
name 'SAI2 Receive PATH0 Source Select'
value 'From SDI0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From SDI0'
item.1 'From SDI1'
item.2 'From SDI2'
item.3 'From SDI3'
}
}
control.27 {
iface MIXER
name 'SAI2 Transmit SDO3 Source Select'
value 'From PATH0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From PATH0'
item.1 'From PATH1'
item.2 'From PATH2'
item.3 'From PATH3'
}
}
control.28 {
iface MIXER
name 'SAI2 Transmit SDO2 Source Select'
value 'From PATH0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From PATH0'
item.1 'From PATH1'
item.2 'From PATH2'
item.3 'From PATH3'
}
}
control.29 {
iface MIXER
name 'SAI2 Transmit SDO1 Source Select'
value 'From PATH1'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From PATH0'
item.1 'From PATH1'
item.2 'From PATH2'
item.3 'From PATH3'
}
}
control.30 {
iface MIXER
name 'SAI2 Transmit SDO0 Source Select'
value 'From PATH0'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'From PATH0'
item.1 'From PATH1'
item.2 'From PATH2'
item.3 'From PATH3'
}
}
control.31 {
iface PCM
name 'SAI2 PCM Read Wait Time MS'
value 10
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10000 (step 1)'
}
}
control.32 {
iface PCM
name 'SAI2 PCM Write Wait Time MS'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 10000 (step 1)'
}
}
control.33 {
iface MIXER
name 'HP Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.34 {
iface MIXER
name 'HPVOL Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.35 {
iface MIXER
name 'HP Playback Volume'
value.0 27
value.1 27
comment {
access 'read write'
type INTEGER
count 2
range '0 - 39'
dbmin -4650
dbmax 1200
dbvalue.0 -600
dbvalue.1 -600
}
}
control.36 {
iface MIXER
name 'OUT Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.37 {
iface MIXER
name 'OUT Channel Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.38 {
iface MIXER
name 'OUT Playback Volume'
value.0 39
value.1 39
comment {
access 'read write'
type INTEGER
count 2
range '0 - 39'
dbmin -4650
dbmax 1200
dbvalue.0 1200
dbvalue.1 1200
}
}
control.39 {
iface MIXER
name 'DAC1 Playback Volume'
value.0 170
value.1 170
comment {
access 'read write'
type INTEGER
count 2
range '0 - 175'
dbmin -65625
dbmax 0
dbvalue.0 -1875
dbvalue.1 -1875
}
}
control.40 {
iface MIXER
name 'IN1 Boost Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 8'
dbmin 0
dbmax 5200
dbvalue.0 0
}
}
control.41 {
iface MIXER
name 'IN2 Boost Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 8'
dbmin 0
dbmax 5200
dbvalue.0 0
}
}
control.42 {
iface MIXER
name 'IN Capture Volume'
value.0 23
value.1 23
comment {
access 'read write'
type INTEGER
count 2
range '0 - 31'
dbmin -3450
dbmax 1200
dbvalue.0 0
dbvalue.1 0
}
}
control.43 {
iface MIXER
name 'ADC Capture Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.44 {
iface MIXER
name 'ADC Capture Volume'
value.0 51
value.1 51
comment {
access 'read write'
type INTEGER
count 2
range '0 - 127'
dbmin -17625
dbmax 30000
dbvalue.0 1500
dbvalue.1 1500
}
}
control.45 {
iface MIXER
name 'ADC Boost Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 3'
dbmin 0
dbmax 3600
dbvalue.0 0
dbvalue.1 0
}
}
control.46 {
iface MIXER
name 'RECMIXL INL1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.47 {
iface MIXER
name 'RECMIXL BST2 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.48 {
iface MIXER
name 'RECMIXL BST1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.49 {
iface MIXER
name 'RECMIXR INR1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.50 {
iface MIXER
name 'RECMIXR BST2 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.51 {
iface MIXER
name 'RECMIXR BST1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.52 {
iface MIXER
name 'Stereo1 ADC MIXL ADC1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.53 {
iface MIXER
name 'Stereo1 ADC MIXR ADC1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.54 {
iface MIXER
name 'DAC MIXL Stereo ADC Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.55 {
iface MIXER
name 'DAC MIXL INF1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.56 {
iface MIXER
name 'DAC MIXR Stereo ADC Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.57 {
iface MIXER
name 'DAC MIXR INF1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.58 {
iface MIXER
name 'Stereo DAC MIXL DAC L1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.59 {
iface MIXER
name 'Stereo DAC MIXL DAC R1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.60 {
iface MIXER
name 'Stereo DAC MIXR DAC R1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.61 {
iface MIXER
name 'Stereo DAC MIXR DAC L1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.62 {
iface MIXER
name 'OUT MIXL BST1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.63 {
iface MIXER
name 'OUT MIXL BST2 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.64 {
iface MIXER
name 'OUT MIXL INL1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.65 {
iface MIXER
name 'OUT MIXL REC MIXL Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.66 {
iface MIXER
name 'OUT MIXL DAC L1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.67 {
iface MIXER
name 'OUT MIXR BST2 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.68 {
iface MIXER
name 'OUT MIXR BST1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.69 {
iface MIXER
name 'OUT MIXR INR1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.70 {
iface MIXER
name 'OUT MIXR REC MIXR Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.71 {
iface MIXER
name 'OUT MIXR DAC R1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.72 {
iface MIXER
name 'HPO MIX DAC1 Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.73 {
iface MIXER
name 'HPO MIX HPVOL Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.74 {
iface MIXER
name 'LOUT MIX DAC L1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.75 {
iface MIXER
name 'LOUT MIX DAC R1 Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.76 {
iface MIXER
name 'LOUT MIX OUTVOL L Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.77 {
iface MIXER
name 'LOUT MIX OUTVOL R Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
}

File diff suppressed because it is too large Load Diff