Update for h616 hdmi audio

This commit is contained in:
orangepi-xunlong 2021-11-26 19:27:29 +08:00
parent b1526e13c9
commit 35223e0cd3
6 changed files with 440 additions and 18 deletions

View File

@ -2470,7 +2470,7 @@ CONFIG_MICREL_PHY=m
CONFIG_MICROCHIP_PHY=m
CONFIG_MICROCHIP_T1_PHY=m
# CONFIG_MICROSEMI_PHY is not set
CONFIG_MOTORCOMM_PHY=m
CONFIG_MOTORCOMM_PHY=y
CONFIG_NATIONAL_PHY=m
CONFIG_NXP_C45_TJA11XX_PHY=m
# CONFIG_NXP_TJA11XX_PHY is not set
@ -4832,7 +4832,7 @@ CONFIG_DRM_ANALOGIX_ANX7625=m
# CONFIG_DRM_CDNS_MHDP8546 is not set
CONFIG_DRM_DW_HDMI=y
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=y
CONFIG_DRM_DW_HDMI_CEC=m
# end of Display Interface Bridges
@ -5052,6 +5052,8 @@ CONFIG_SND_SUN50I_CODEC_ANALOG=m
CONFIG_SND_SUN4I_I2S=m
CONFIG_SND_SUN4I_SPDIF=m
CONFIG_SND_SUN8I_ADDA_PR_REGMAP=m
CONFIG_SND_SOC_SUN50I_AHUB=y
CONFIG_SND_SOC_SUN50I_HDMI=y
# end of Allwinner SoC Audio support
CONFIG_SND_SOC_XILINX_I2S=m
@ -5109,7 +5111,7 @@ CONFIG_SND_SOC_CS4341=m
# CONFIG_SND_SOC_CX2072X is not set
CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_HDMI_CODEC=m
CONFIG_SND_SOC_HDMI_CODEC=y
# CONFIG_SND_SOC_ES7134 is not set
CONFIG_SND_SOC_ES7241=m
# CONFIG_SND_SOC_ES8316 is not set
@ -6324,7 +6326,6 @@ CONFIG_LITEX_SUBREG_SIZE=4
CONFIG_SUNXI_MBUS=y
CONFIG_SUNXI_SRAM=y
CONFIG_SUNXI_SID=y
# CONFIG_SOC_TI is not set
#

View File

@ -50,29 +50,25 @@ family_tweaks_s()
chroot $SDCARD /bin/bash -c "apt-get -y -qq install rfkill bluetooth bluez bluez-tools" >/dev/null 2>&1
fi
if [[ -f $SDCARD/lib/systemd/system/hdmi-audio.service ]]; then
if [[ $BUILD_DESKTOP == yes ]]; then
chroot $SDCARD /bin/bash -c "systemctl --no-reload enable hdmi-audio.service >/dev/null 2>&1"
fi
sed -i "s/auto-profiles = yes/auto-profiles = no/" ${SDCARD}/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf
if [[ ${BRANCH} == legacy && ${BUILD_DESKTOP} == yes ]]; then
cp ${EXTER}/packages/blobs/sunxi/h616/pulseaudio/default.pa-${BOARD} ${SDCARD}/etc/pulse/default.pa
cp ${EXTER}/packages/blobs/sunxi/h616/pulseaudio/default.conf ${SDCARD}/usr/share/pulseaudio/alsa-mixer/profile-sets/
if [[ $BRANCH == legacy ]]; then
echo "load-module module-alsa-sink device=hw:0,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Audio Codec'\"" >> ${SDCARD}/etc/pulse/default.pa
echo "load-module module-alsa-sink device=hw:1,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa
elif [[ $BRANCH == current ]]; then
echo "load-module module-alsa-sink device=hw:2,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Audio Codec'\"" >> ${SDCARD}/etc/pulse/default.pa
echo "load-module module-alsa-sink device=hw:0,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa
fi
fi
}
family_tweaks_bsp()
{
install -m 755 $EXTER/packages/blobs/bt/hciattach/hciattach_opi_$ARCH $destination/usr/bin/hciattach_opi
if [[ ${BRANCH} == legacy ]]; then
install -m 755 $EXTER/packages/blobs/sunxi/h616/inithdmiaudio $destination/usr/bin/
cp $EXTER/packages/blobs/sunxi/h616/libtinyalsa.so $destination/usr/lib/
cp $EXTER/packages/bsp/sunxi/hdmi-audio.service $destination/lib/systemd/system/
fi
}
uboot_custom_postprocess()

View File

@ -1,3 +1,415 @@
state.sndahub {
control.1 {
iface MIXER
name 'I2S0IN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.2 {
iface MIXER
name 'I2S0OUT Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.3 {
iface MIXER
name 'I2S1IN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.4 {
iface MIXER
name 'I2S1OUT Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.5 {
iface MIXER
name 'I2S2IN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.6 {
iface MIXER
name 'I2S2OUT Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.7 {
iface MIXER
name 'I2S3IN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.8 {
iface MIXER
name 'I2S3OUT Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.9 {
iface MIXER
name 'DAM0IN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.10 {
iface MIXER
name 'DAM1IN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.11 {
iface MIXER
name 'DAM0OUT Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.12 {
iface MIXER
name 'DAM1OUT Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.13 {
iface MIXER
name 'APBIF0 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.14 {
iface MIXER
name 'APBIF1 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.15 {
iface MIXER
name 'APBIF2 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.16 {
iface MIXER
name 'I2S0 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.17 {
iface MIXER
name 'I2S1 Src Select'
value APBIF_TXDIF0
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.18 {
iface MIXER
name 'I2S2 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.19 {
iface MIXER
name 'I2S3 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.20 {
iface MIXER
name 'DAM0Chan0 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.21 {
iface MIXER
name 'DAM0Chan1 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.22 {
iface MIXER
name 'DAM0Chan2 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.23 {
iface MIXER
name 'DAM1Chan0 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.24 {
iface MIXER
name 'DAM1Chan1 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
control.25 {
iface MIXER
name 'DAM1Chan2 Src Select'
value NONE
comment {
access 'read write'
type ENUMERATED
count 1
item.0 NONE
item.1 APBIF_TXDIF0
item.2 APBIF_TXDIF1
item.3 APBIF_TXDIF2
item.4 I2S0_TXDIF
item.5 I2S1_TXDIF
item.6 I2S2_TXDIF
item.7 I2S3_TXDIF
item.8 DAM0_TXDIF
item.9 DAM1_TXDIF
}
}
}
state.allwinnerhdmi {
control.1 {
iface PCM
name 'Playback Channel Map'
value.0 3
value.1 4
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 ELD
value '100008006c1000010000000000000000410c1000323450464c333534332f5433090701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read volatile'
type BYTES
count 128
}
}
}
state.Codec {
control.1 {
iface MIXER

Binary file not shown.

View File

@ -88,6 +88,16 @@ prepare_board() {
# IRQ distribution based on $BOARDFAMILY and/or $BOARD_NAME
case ${BOARD} in
orangepizero2|orangepi3-lts)
if [[ $BRANCH == current ]]; then
# Initial hdmi audio
aplay /usr/share/sounds/alsa/audio.wav -D hw:0,0 > /dev/null 2>&1
aplay /usr/share/sounds/alsa/audio.wav -D hw:1,0 > /dev/null 2>&1
fi
if [[ $BRANCH == legacy ]]; then
aplay /usr/share/sounds/alsa/audio.wav -D hw:2,0 > /dev/null 2>&1
fi
rfkill unblock all
/usr/bin/hciattach_opi -n -s 1500000 /dev/ttyBT0 sprd &
;;

View File

@ -360,6 +360,9 @@ install_common()
# copy boot splash images
cp "${EXTER}"/packages/blobs/splash/orangepi-u-boot.bmp "${SDCARD}"/boot/boot.bmp
# copy audio.wav
cp "${EXTER}"/packages/blobs/audio_wav/audio.wav "${SDCARD}"/usr/share/sounds/alsa/
# execute $LINUXFAMILY-specific tweaks
[[ $(type -t family_tweaks) == function ]] && family_tweaks