@@ -576,7 +576,7 @@ void CAESinkALSA::aml_configure_simple_control(std::string &device, const enum I
576
576
" Audio spdif_b format" , // set SPDIF-B codec format
577
577
" " ,
578
578
" " ,
579
- " Audio I2S to HDMITX Format" // set TDM-C codec format
579
+ " Audio I2S to HDMITX Format" // set TDM codec format
580
580
};
581
581
582
582
int cardNr = 0 ;
@@ -639,6 +639,17 @@ void CAESinkALSA::aml_configure_simple_control(std::string &device, const enum I
639
639
case AE_DEVTYPE_HDMI:
640
640
case AE_DEVTYPE_PCM:
641
641
switch (soc_id) {
642
+ case AML_S5:
643
+ switch (codec) {
644
+ case TRUEHD:
645
+ case _DTS_HD_MA:
646
+ spdif_id = HDMITX_SRC_TDM_B;
647
+ break ;
648
+ default :
649
+ spdif_id = HDMITX_SRC_SPDIF_B;
650
+ break ;
651
+ }
652
+ break ;
642
653
case AML_T7:
643
654
switch (codec) {
644
655
case TRUEHD:
@@ -1607,8 +1618,9 @@ void CAESinkALSA::EnumerateDevicesEx(AEDeviceInfoList &list, bool force)
1607
1618
1608
1619
AEDeviceType CAESinkALSA::AEDeviceTypeFromName (const std::string &name)
1609
1620
{
1621
+ bool mark_surround71_as_hdmi = (aml_get_cpufamily_id () == AML_S5 || aml_get_cpufamily_id () == AML_T7);
1610
1622
if (name.substr (0 , name.find (' :' )) == " hdmi" ||
1611
- (aml_get_cpufamily_id () == AML_T7 && name.substr (0 , name.find (' :' )) == " surround71" ))
1623
+ (mark_surround71_as_hdmi && name.substr (0 , name.find (' :' )) == " surround71" ))
1612
1624
return AE_DEVTYPE_HDMI;
1613
1625
else if (name.substr (0 , name.find (' :' )) == " iec958" || name.substr (0 , name.find (' :' )) == " spdif" )
1614
1626
return AE_DEVTYPE_IEC958;
@@ -1867,6 +1879,7 @@ void CAESinkALSA::EnumerateDevice(AEDeviceInfoList &list, const std::string &dev
1867
1879
1868
1880
if (GetAMLDeviceType (info.m_displayName ) != AML_NONE)
1869
1881
{
1882
+ bool use_surround71_as_lpcm = (aml_get_cpufamily_id () == AML_S5 || aml_get_cpufamily_id () == AML_T7);
1870
1883
if (info.m_deviceType == AE_DEVTYPE_IEC958)
1871
1884
info.m_displayNameExtra = " S/PDIF" ;
1872
1885
else if (info.m_deviceType != AE_DEVTYPE_HDMI)
@@ -1876,7 +1889,7 @@ void CAESinkALSA::EnumerateDevice(AEDeviceInfoList &list, const std::string &dev
1876
1889
else
1877
1890
info.m_displayNameExtra = " PCM" ;
1878
1891
}
1879
- else if (aml_get_cpufamily_id () == AML_T7 && info.m_deviceType == AE_DEVTYPE_HDMI)
1892
+ else if (use_surround71_as_lpcm && info.m_deviceType == AE_DEVTYPE_HDMI)
1880
1893
{
1881
1894
if (device.substr (0 , device.find (' :' )) == " surround71" )
1882
1895
info.m_displayNameExtra = " HDMI Multi Ch PCM" ;
@@ -1888,6 +1901,8 @@ void CAESinkALSA::EnumerateDevice(AEDeviceInfoList &list, const std::string &dev
1888
1901
{
1889
1902
switch (aml_get_cpufamily_id ())
1890
1903
{
1904
+ case AML_S5:
1905
+ [[fallthrough]];
1891
1906
case AML_T7:
1892
1907
{
1893
1908
if (device.substr (0 , device.find (' :' )) == " surround71" )
0 commit comments