Skip to content

Commit e72bdf5

Browse files
leoliu-ocopsiff
authored andcommitted
ALSA: HDA: Add Zhaoxin HDMI Controller and Codec support
mainline inclusion from linux-next-v6.15-rc1 commit f28aa37 category: feature ------------------- Add newer Zhaoxin HD Audio PCI IDs, and HDMI codec vendor IDs. Because Zhaoxin hardware limitation, set BDL position to 128 to increase interrupt interval. To fix response write request not synced to memory when handle HDAC interrupt, set bus->polling_mode = 1. Signed-off-by: Joanne Bao <[email protected]> Signed-off-by: Tony W Wang-oc <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Takashi Iwai <[email protected]> Signed-off-by: leoliu-oc <[email protected]>
1 parent 09c9253 commit e72bdf5

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

sound/pci/hda/hda_intel.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ enum {
238238
AZX_DRIVER_CTHDA,
239239
AZX_DRIVER_CMEDIA,
240240
AZX_DRIVER_ZHAOXIN,
241+
AZX_DRIVER_ZHAOXINHDMI,
241242
AZX_DRIVER_LOONGSON,
242243
AZX_DRIVER_HYGON,
243244
AZX_DRIVER_GENERIC,
@@ -351,6 +352,7 @@ static const char * const driver_short_names[] = {
351352
[AZX_DRIVER_CTHDA] = "HDA Creative",
352353
[AZX_DRIVER_CMEDIA] = "HDA C-Media",
353354
[AZX_DRIVER_ZHAOXIN] = "HDA Zhaoxin",
355+
[AZX_DRIVER_ZHAOXINHDMI] = "HDA Zhaoxin HDMI",
354356
[AZX_DRIVER_LOONGSON] = "HDA Loongson",
355357
[AZX_DRIVER_HYGON] = "HDA Hygon",
356358
[AZX_DRIVER_GENERIC] = "HD-Audio Generic",
@@ -1850,6 +1852,8 @@ static int default_bdl_pos_adj(struct azx *chip)
18501852
case AZX_DRIVER_ICH:
18511853
case AZX_DRIVER_PCH:
18521854
return 1;
1855+
case AZX_DRIVER_ZHAOXINHDMI:
1856+
return 128;
18531857
default:
18541858
return 32;
18551859
}
@@ -1986,6 +1990,9 @@ static int azx_first_init(struct azx *chip)
19861990
chip->pci->device == PCI_DEVICE_ID_HYGON_18H_M05H_HDA)
19871991
bus->hygon_dword_access = 1;
19881992

1993+
if (chip->driver_type == AZX_DRIVER_ZHAOXINHDMI)
1994+
bus->polling_mode = 1;
1995+
19891996
err = pcim_iomap_regions(pci, 1 << 0, "ICH HD audio");
19901997
if (err < 0)
19911998
return err;
@@ -2087,6 +2094,7 @@ static int azx_first_init(struct azx *chip)
20872094
chip->capture_streams = ATIHDMI_NUM_CAPTURE;
20882095
break;
20892096
case AZX_DRIVER_GFHDMI:
2097+
case AZX_DRIVER_ZHAOXINHDMI:
20902098
case AZX_DRIVER_GENERIC:
20912099
default:
20922100
chip->playback_streams = ICH6_NUM_PLAYBACK;
@@ -2891,6 +2899,21 @@ static const struct pci_device_id azx_ids[] = {
28912899
.driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_HDMI },
28922900
/* Zhaoxin */
28932901
{ PCI_VDEVICE(ZHAOXIN, 0x3288), .driver_data = AZX_DRIVER_ZHAOXIN },
2902+
{ PCI_VDEVICE(ZHAOXIN, 0x9141),
2903+
.driver_data = AZX_DRIVER_ZHAOXINHDMI | AZX_DCAPS_POSFIX_LPIB |
2904+
AZX_DCAPS_NO_MSI | AZX_DCAPS_NO_64BIT },
2905+
{ PCI_VDEVICE(ZHAOXIN, 0x9142),
2906+
.driver_data = AZX_DRIVER_ZHAOXINHDMI | AZX_DCAPS_POSFIX_LPIB |
2907+
AZX_DCAPS_NO_MSI | AZX_DCAPS_NO_64BIT },
2908+
{ PCI_VDEVICE(ZHAOXIN, 0x9144),
2909+
.driver_data = AZX_DRIVER_ZHAOXINHDMI | AZX_DCAPS_POSFIX_LPIB |
2910+
AZX_DCAPS_NO_MSI | AZX_DCAPS_NO_64BIT },
2911+
{ PCI_VDEVICE(ZHAOXIN, 0x9145),
2912+
.driver_data = AZX_DRIVER_ZHAOXINHDMI | AZX_DCAPS_POSFIX_LPIB |
2913+
AZX_DCAPS_NO_MSI | AZX_DCAPS_NO_64BIT },
2914+
{ PCI_VDEVICE(ZHAOXIN, 0x9146),
2915+
.driver_data = AZX_DRIVER_ZHAOXINHDMI | AZX_DCAPS_POSFIX_LPIB |
2916+
AZX_DCAPS_NO_MSI | AZX_DCAPS_NO_64BIT },
28942917
/* Loongson HDAudio*/
28952918
{ PCI_VDEVICE(LOONGSON, PCI_DEVICE_ID_LOONGSON_HDA),
28962919
.driver_data = AZX_DRIVER_LOONGSON | AZX_DCAPS_NO_TCSEL },

sound/pci/hda/patch_hdmi.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4641,6 +4641,17 @@ HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP", patch_via_hdmi),
46414641
HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP", patch_via_hdmi),
46424642
HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP", patch_generic_hdmi),
46434643
HDA_CODEC_ENTRY(0x11069f85, "VX11 HDMI/DP", patch_generic_hdmi),
4644+
HDA_CODEC_ENTRY(0x1d179f86, "ZX-100S HDMI/DP", patch_gf_hdmi),
4645+
HDA_CODEC_ENTRY(0x1d179f87, "ZX-100S HDMI/DP", patch_gf_hdmi),
4646+
HDA_CODEC_ENTRY(0x1d179f88, "KX-5000 HDMI/DP", patch_gf_hdmi),
4647+
HDA_CODEC_ENTRY(0x1d179f89, "KX-5000 HDMI/DP", patch_gf_hdmi),
4648+
HDA_CODEC_ENTRY(0x1d179f8a, "KX-6000 HDMI/DP", patch_gf_hdmi),
4649+
HDA_CODEC_ENTRY(0x1d179f8b, "KX-6000 HDMI/DP", patch_gf_hdmi),
4650+
HDA_CODEC_ENTRY(0x1d179f8c, "KX-6000G HDMI/DP", patch_gf_hdmi),
4651+
HDA_CODEC_ENTRY(0x1d179f8d, "KX-6000G HDMI/DP", patch_gf_hdmi),
4652+
HDA_CODEC_ENTRY(0x1d179f8e, "KX-7000 HDMI/DP", patch_gf_hdmi),
4653+
HDA_CODEC_ENTRY(0x1d179f8f, "KX-7000 HDMI/DP", patch_gf_hdmi),
4654+
HDA_CODEC_ENTRY(0x1d179f90, "KX-7000 HDMI/DP", patch_gf_hdmi),
46444655
HDA_CODEC_ENTRY(0x80860054, "IbexPeak HDMI", patch_i915_cpt_hdmi),
46454656
HDA_CODEC_ENTRY(0x80862800, "Geminilake HDMI", patch_i915_glk_hdmi),
46464657
HDA_CODEC_ENTRY(0x80862801, "Bearlake HDMI", patch_generic_hdmi),

0 commit comments

Comments
 (0)