@@ -4700,6 +4700,48 @@ static void alc236_fixup_hp_mute_led_micmute_vref(struct hda_codec *codec,
4700
4700
alc236_fixup_hp_micmute_led_vref (codec , fix , action );
4701
4701
}
4702
4702
4703
+ static inline void alc298_samsung_write_coef_pack (struct hda_codec * codec ,
4704
+ const unsigned short coefs [2 ])
4705
+ {
4706
+ alc_write_coef_idx (codec , 0x23 , coefs [0 ]);
4707
+ alc_write_coef_idx (codec , 0x25 , coefs [1 ]);
4708
+ alc_write_coef_idx (codec , 0x26 , 0xb011 );
4709
+ }
4710
+
4711
+ struct alc298_samsung_amp_desc {
4712
+ unsigned char nid ;
4713
+ unsigned short init_seq [2 ][2 ];
4714
+ };
4715
+
4716
+ static void alc298_fixup_samsung_amp (struct hda_codec * codec ,
4717
+ const struct hda_fixup * fix , int action )
4718
+ {
4719
+ int i , j ;
4720
+ static const unsigned short init_seq [][2 ] = {
4721
+ { 0x19 , 0x00 }, { 0x20 , 0xc0 }, { 0x22 , 0x44 }, { 0x23 , 0x08 },
4722
+ { 0x24 , 0x85 }, { 0x25 , 0x41 }, { 0x35 , 0x40 }, { 0x36 , 0x01 },
4723
+ { 0x38 , 0x81 }, { 0x3a , 0x03 }, { 0x3b , 0x81 }, { 0x40 , 0x3e },
4724
+ { 0x41 , 0x07 }, { 0x400 , 0x1 }
4725
+ };
4726
+ static const struct alc298_samsung_amp_desc amps [] = {
4727
+ { 0x3a , { { 0x18 , 0x1 }, { 0x26 , 0x0 } } },
4728
+ { 0x39 , { { 0x18 , 0x2 }, { 0x26 , 0x1 } } }
4729
+ };
4730
+
4731
+ if (action != HDA_FIXUP_ACT_INIT )
4732
+ return ;
4733
+
4734
+ for (i = 0 ; i < ARRAY_SIZE (amps ); i ++ ) {
4735
+ alc_write_coef_idx (codec , 0x22 , amps [i ].nid );
4736
+
4737
+ for (j = 0 ; j < ARRAY_SIZE (amps [i ].init_seq ); j ++ )
4738
+ alc298_samsung_write_coef_pack (codec , amps [i ].init_seq [j ]);
4739
+
4740
+ for (j = 0 ; j < ARRAY_SIZE (init_seq ); j ++ )
4741
+ alc298_samsung_write_coef_pack (codec , init_seq [j ]);
4742
+ }
4743
+ }
4744
+
4703
4745
#if IS_REACHABLE (CONFIG_INPUT )
4704
4746
static void gpio2_mic_hotkey_event (struct hda_codec * codec ,
4705
4747
struct hda_jack_callback * event )
@@ -7030,6 +7072,7 @@ enum {
7030
7072
ALC236_FIXUP_HP_GPIO_LED ,
7031
7073
ALC236_FIXUP_HP_MUTE_LED ,
7032
7074
ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF ,
7075
+ ALC298_FIXUP_SAMSUNG_AMP ,
7033
7076
ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ,
7034
7077
ALC256_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ,
7035
7078
ALC295_FIXUP_ASUS_MIC_NO_PRESENCE ,
@@ -8396,6 +8439,12 @@ static const struct hda_fixup alc269_fixups[] = {
8396
8439
.type = HDA_FIXUP_FUNC ,
8397
8440
.v .func = alc236_fixup_hp_mute_led_micmute_vref ,
8398
8441
},
8442
+ [ALC298_FIXUP_SAMSUNG_AMP ] = {
8443
+ .type = HDA_FIXUP_FUNC ,
8444
+ .v .func = alc298_fixup_samsung_amp ,
8445
+ .chained = true,
8446
+ .chain_id = ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET
8447
+ },
8399
8448
[ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ] = {
8400
8449
.type = HDA_FIXUP_VERBS ,
8401
8450
.v .verbs = (const struct hda_verb []) {
@@ -9342,13 +9391,13 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
9342
9391
SND_PCI_QUIRK (0x10ec , 0x1254 , "Intel Reference board" , ALC295_FIXUP_CHROME_BOOK ),
9343
9392
SND_PCI_QUIRK (0x10f7 , 0x8338 , "Panasonic CF-SZ6" , ALC269_FIXUP_HEADSET_MODE ),
9344
9393
SND_PCI_QUIRK (0x144d , 0xc109 , "Samsung Ativ book 9 (NP900X3G)" , ALC269_FIXUP_INV_DMIC ),
9345
- SND_PCI_QUIRK (0x144d , 0xc169 , "Samsung Notebook 9 Pen (NP930SBE-K01US)" , ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9346
- SND_PCI_QUIRK (0x144d , 0xc176 , "Samsung Notebook 9 Pro (NP930MBE-K04US)" , ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9347
- SND_PCI_QUIRK (0x144d , 0xc189 , "Samsung Galaxy Flex Book (NT950QCG-X716)" , ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9348
- SND_PCI_QUIRK (0x144d , 0xc18a , "Samsung Galaxy Book Ion (NP930XCJ-K01US)" , ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9394
+ SND_PCI_QUIRK (0x144d , 0xc169 , "Samsung Notebook 9 Pen (NP930SBE-K01US)" , ALC298_FIXUP_SAMSUNG_AMP ),
9395
+ SND_PCI_QUIRK (0x144d , 0xc176 , "Samsung Notebook 9 Pro (NP930MBE-K04US)" , ALC298_FIXUP_SAMSUNG_AMP ),
9396
+ SND_PCI_QUIRK (0x144d , 0xc189 , "Samsung Galaxy Flex Book (NT950QCG-X716)" , ALC298_FIXUP_SAMSUNG_AMP ),
9397
+ SND_PCI_QUIRK (0x144d , 0xc18a , "Samsung Galaxy Book Ion (NP930XCJ-K01US)" , ALC298_FIXUP_SAMSUNG_AMP ),
9349
9398
SND_PCI_QUIRK (0x144d , 0xc740 , "Samsung Ativ book 8 (NP870Z5G)" , ALC269_FIXUP_ATIV_BOOK_8 ),
9350
- SND_PCI_QUIRK (0x144d , 0xc812 , "Samsung Notebook Pen S (NT950SBE-X58)" , ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9351
- SND_PCI_QUIRK (0x144d , 0xc830 , "Samsung Galaxy Book Ion (NT950XCJ-X716A)" , ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9399
+ SND_PCI_QUIRK (0x144d , 0xc812 , "Samsung Notebook Pen S (NT950SBE-X58)" , ALC298_FIXUP_SAMSUNG_AMP ),
9400
+ SND_PCI_QUIRK (0x144d , 0xc830 , "Samsung Galaxy Book Ion (NT950XCJ-X716A)" , ALC298_FIXUP_SAMSUNG_AMP ),
9352
9401
SND_PCI_QUIRK (0x144d , 0xc832 , "Samsung Galaxy Book Flex Alpha (NP730QCJ)" , ALC256_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET ),
9353
9402
SND_PCI_QUIRK (0x1458 , 0xfa53 , "Gigabyte BXBT-2807" , ALC283_FIXUP_HEADSET_MIC ),
9354
9403
SND_PCI_QUIRK (0x1462 , 0xb120 , "MSI Cubi MS-B120" , ALC283_FIXUP_HEADSET_MIC ),
@@ -9716,7 +9765,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
9716
9765
{.id = ALC299_FIXUP_PREDATOR_SPK , .name = "predator-spk" },
9717
9766
{.id = ALC298_FIXUP_HUAWEI_MBX_STEREO , .name = "huawei-mbx-stereo" },
9718
9767
{.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE , .name = "alc256-medion-headset" },
9719
- {.id = ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET , .name = "alc298-samsung-headphone " },
9768
+ {.id = ALC298_FIXUP_SAMSUNG_AMP , .name = "alc298-samsung-amp " },
9720
9769
{.id = ALC256_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET , .name = "alc256-samsung-headphone" },
9721
9770
{.id = ALC255_FIXUP_XIAOMI_HEADSET_MIC , .name = "alc255-xiaomi-headset" },
9722
9771
{.id = ALC274_FIXUP_HP_MIC , .name = "alc274-hp-mic-detect" },
0 commit comments