@@ -63,6 +63,7 @@ static const struct reg_sequence init_list[] = {
63
63
{RT5645_PR_BASE + 0x20 , 0x611f },
64
64
{RT5645_PR_BASE + 0x21 , 0x4040 },
65
65
{RT5645_PR_BASE + 0x23 , 0x0004 },
66
+ {RT5645_ASRC_4 , 0x0120 },
66
67
};
67
68
68
69
static const struct reg_sequence rt5650_init_list [] = {
@@ -157,7 +158,7 @@ static const struct reg_default rt5645_reg[] = {
157
158
{ 0x83 , 0x0000 },
158
159
{ 0x84 , 0x0000 },
159
160
{ 0x85 , 0x0000 },
160
- { 0x8a , 0x0000 },
161
+ { 0x8a , 0x0120 },
161
162
{ 0x8e , 0x0004 },
162
163
{ 0x8f , 0x1100 },
163
164
{ 0x90 , 0x0646 },
@@ -314,7 +315,7 @@ static const struct reg_default rt5650_reg[] = {
314
315
{ 0x83 , 0x0000 },
315
316
{ 0x84 , 0x0000 },
316
317
{ 0x85 , 0x0000 },
317
- { 0x8a , 0x0000 },
318
+ { 0x8a , 0x0120 },
318
319
{ 0x8e , 0x0004 },
319
320
{ 0x8f , 0x1100 },
320
321
{ 0x90 , 0x0646 },
@@ -741,6 +742,14 @@ static int rt5645_spk_put_volsw(struct snd_kcontrol *kcontrol,
741
742
return ret ;
742
743
}
743
744
745
+ static const char * const rt5645_dac1_vol_ctrl_mode_text [] = {
746
+ "immediately" , "zero crossing" , "soft ramp"
747
+ };
748
+
749
+ static SOC_ENUM_SINGLE_DECL (
750
+ rt5645_dac1_vol_ctrl_mode , RT5645_PR_BASE ,
751
+ RT5645_DA1_ZDET_SFT , rt5645_dac1_vol_ctrl_mode_text ) ;
752
+
744
753
static const struct snd_kcontrol_new rt5645_snd_controls [] = {
745
754
/* Speaker Output Volume */
746
755
SOC_DOUBLE ("Speaker Channel Switch" , RT5645_SPK_VOL ,
@@ -807,6 +816,9 @@ static const struct snd_kcontrol_new rt5645_snd_controls[] = {
807
816
SOC_SINGLE ("I2S2 Func Switch" , RT5645_GPIO_CTRL1 , RT5645_I2S2_SEL_SFT ,
808
817
1 , 1 ),
809
818
RT5645_HWEQ ("Speaker HWEQ" ),
819
+
820
+ /* Digital Soft Volume Control */
821
+ SOC_ENUM ("DAC1 Digital Volume Control Func" , rt5645_dac1_vol_ctrl_mode ),
810
822
};
811
823
812
824
/**
@@ -3532,6 +3544,7 @@ MODULE_DEVICE_TABLE(i2c, rt5645_i2c_id);
3532
3544
static const struct acpi_device_id rt5645_acpi_match [] = {
3533
3545
{ "10EC5645" , 0 },
3534
3546
{ "10EC5650" , 0 },
3547
+ { "10EC5640" , 0 },
3535
3548
{},
3536
3549
};
3537
3550
MODULE_DEVICE_TABLE (acpi , rt5645_acpi_match );
@@ -3562,6 +3575,12 @@ static const struct dmi_system_id dmi_platform_intel_braswell[] = {
3562
3575
DMI_MATCH (DMI_PRODUCT_NAME , "Setzer" ),
3563
3576
},
3564
3577
},
3578
+ {
3579
+ .ident = "Microsoft Surface 3" ,
3580
+ .matches = {
3581
+ DMI_MATCH (DMI_PRODUCT_NAME , "Surface 3" ),
3582
+ },
3583
+ },
3565
3584
{ }
3566
3585
};
3567
3586
0 commit comments