Skip to content

Commit 527f464

Browse files
hwithahearttiwai
authored andcommitted
ALSA: hda/realtek - Add HW8326 support
Added the support of new Huawei codec HW8326. The HW8326 is developed by Huawei with Realtek's IP Core, and it's compatible with ALC256. Signed-off-by: huangwenhui <huangwenhuia@uniontech.com> Link: https://lore.kernel.org/r/20220608082357.26898-1-huangwenhuia@uniontech.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent 53ee5d7 commit 527f464

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

sound/hda/hdac_device.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,7 @@ static const struct hda_vendor_id hda_vendor_ids[] = {
660660
{ 0x14f1, "Conexant" },
661661
{ 0x17e8, "Chrontel" },
662662
{ 0x1854, "LG" },
663+
{ 0x19e5, "Huawei" },
663664
{ 0x1aec, "Wolfson Microelectronics" },
664665
{ 0x1af4, "QEMU" },
665666
{ 0x434d, "C-Media" },

sound/pci/hda/patch_realtek.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ static void alc_fill_eapd_coef(struct hda_codec *codec)
443443
case 0x10ec0245:
444444
case 0x10ec0255:
445445
case 0x10ec0256:
446+
case 0x19e58326:
446447
case 0x10ec0257:
447448
case 0x10ec0282:
448449
case 0x10ec0283:
@@ -580,6 +581,7 @@ static void alc_shutup_pins(struct hda_codec *codec)
580581
switch (codec->core.vendor_id) {
581582
case 0x10ec0236:
582583
case 0x10ec0256:
584+
case 0x19e58326:
583585
case 0x10ec0283:
584586
case 0x10ec0286:
585587
case 0x10ec0288:
@@ -3247,6 +3249,7 @@ static void alc_disable_headset_jack_key(struct hda_codec *codec)
32473249
case 0x10ec0230:
32483250
case 0x10ec0236:
32493251
case 0x10ec0256:
3252+
case 0x19e58326:
32503253
alc_write_coef_idx(codec, 0x48, 0x0);
32513254
alc_update_coef_idx(codec, 0x49, 0x0045, 0x0);
32523255
break;
@@ -3275,6 +3278,7 @@ static void alc_enable_headset_jack_key(struct hda_codec *codec)
32753278
case 0x10ec0230:
32763279
case 0x10ec0236:
32773280
case 0x10ec0256:
3281+
case 0x19e58326:
32783282
alc_write_coef_idx(codec, 0x48, 0xd011);
32793283
alc_update_coef_idx(codec, 0x49, 0x007f, 0x0045);
32803284
break;
@@ -4910,6 +4914,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
49104914
case 0x10ec0230:
49114915
case 0x10ec0236:
49124916
case 0x10ec0256:
4917+
case 0x19e58326:
49134918
alc_process_coef_fw(codec, coef0256);
49144919
break;
49154920
case 0x10ec0234:
@@ -5025,6 +5030,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
50255030
case 0x10ec0230:
50265031
case 0x10ec0236:
50275032
case 0x10ec0256:
5033+
case 0x19e58326:
50285034
alc_write_coef_idx(codec, 0x45, 0xc489);
50295035
snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
50305036
alc_process_coef_fw(codec, coef0256);
@@ -5175,6 +5181,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
51755181
case 0x10ec0230:
51765182
case 0x10ec0236:
51775183
case 0x10ec0256:
5184+
case 0x19e58326:
51785185
alc_write_coef_idx(codec, 0x1b, 0x0e4b);
51795186
alc_write_coef_idx(codec, 0x45, 0xc089);
51805187
msleep(50);
@@ -5274,6 +5281,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
52745281
case 0x10ec0230:
52755282
case 0x10ec0236:
52765283
case 0x10ec0256:
5284+
case 0x19e58326:
52775285
alc_process_coef_fw(codec, coef0256);
52785286
break;
52795287
case 0x10ec0234:
@@ -5388,6 +5396,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
53885396
case 0x10ec0230:
53895397
case 0x10ec0236:
53905398
case 0x10ec0256:
5399+
case 0x19e58326:
53915400
alc_process_coef_fw(codec, coef0256);
53925401
break;
53935402
case 0x10ec0234:
@@ -5489,6 +5498,7 @@ static void alc_determine_headset_type(struct hda_codec *codec)
54895498
case 0x10ec0230:
54905499
case 0x10ec0236:
54915500
case 0x10ec0256:
5501+
case 0x19e58326:
54925502
alc_write_coef_idx(codec, 0x1b, 0x0e4b);
54935503
alc_write_coef_idx(codec, 0x06, 0x6104);
54945504
alc_write_coefex_idx(codec, 0x57, 0x3, 0x09a3);
@@ -5783,6 +5793,7 @@ static void alc255_set_default_jack_type(struct hda_codec *codec)
57835793
case 0x10ec0230:
57845794
case 0x10ec0236:
57855795
case 0x10ec0256:
5796+
case 0x19e58326:
57865797
alc_process_coef_fw(codec, alc256fw);
57875798
break;
57885799
}
@@ -6385,6 +6396,7 @@ static void alc_combo_jack_hp_jd_restart(struct hda_codec *codec)
63856396
case 0x10ec0236:
63866397
case 0x10ec0255:
63876398
case 0x10ec0256:
6399+
case 0x19e58326:
63886400
alc_update_coef_idx(codec, 0x1b, 0x8000, 1 << 15); /* Reset HP JD */
63896401
alc_update_coef_idx(codec, 0x1b, 0x8000, 0 << 15);
63906402
break;
@@ -10096,6 +10108,7 @@ static int patch_alc269(struct hda_codec *codec)
1009610108
case 0x10ec0230:
1009710109
case 0x10ec0236:
1009810110
case 0x10ec0256:
10111+
case 0x19e58326:
1009910112
spec->codec_variant = ALC269_TYPE_ALC256;
1010010113
spec->shutup = alc256_shutup;
1010110114
spec->init_hook = alc256_init;
@@ -11546,6 +11559,7 @@ static const struct hda_device_id snd_hda_id_realtek[] = {
1154611559
HDA_CODEC_ENTRY(0x10ec0b00, "ALCS1200A", patch_alc882),
1154711560
HDA_CODEC_ENTRY(0x10ec1168, "ALC1220", patch_alc882),
1154811561
HDA_CODEC_ENTRY(0x10ec1220, "ALC1220", patch_alc882),
11562+
HDA_CODEC_ENTRY(0x19e58326, "HW8326", patch_alc269),
1154911563
{} /* terminator */
1155011564
};
1155111565
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_realtek);

0 commit comments

Comments
 (0)