hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/sound/soc/codecs/es8316.c
....@@ -52,7 +52,12 @@
5252 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(adc_vol_tlv, -9600, 50, 1);
5353 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_max_gain_tlv, -650, 150, 0);
5454 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_min_gain_tlv, -1200, 150, 0);
55
-static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_target_tlv, -1650, 150, 0);
55
+
56
+static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(alc_target_tlv,
57
+ 0, 10, TLV_DB_SCALE_ITEM(-1650, 150, 0),
58
+ 11, 11, TLV_DB_SCALE_ITEM(-150, 0, 0),
59
+);
60
+
5661 static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(hpmixer_gain_tlv,
5762 0, 4, TLV_DB_SCALE_ITEM(-1200, 150, 0),
5863 8, 11, TLV_DB_SCALE_ITEM(-450, 150, 0),
....@@ -115,7 +120,7 @@
115120 alc_max_gain_tlv),
116121 SOC_SINGLE_TLV("ALC Capture Min Volume", ES8316_ADC_ALC2, 0, 28, 0,
117122 alc_min_gain_tlv),
118
- SOC_SINGLE_TLV("ALC Capture Target Volume", ES8316_ADC_ALC3, 4, 10, 0,
123
+ SOC_SINGLE_TLV("ALC Capture Target Volume", ES8316_ADC_ALC3, 4, 11, 0,
119124 alc_target_tlv),
120125 SOC_SINGLE("ALC Capture Hold Time", ES8316_ADC_ALC3, 0, 10, 0),
121126 SOC_SINGLE("ALC Capture Decay Time", ES8316_ADC_ALC4, 4, 10, 0),
....@@ -148,7 +153,7 @@
148153 "dmic data at high level",
149154 "dmic data at low level",
150155 };
151
-static const unsigned int es8316_dmic_values[] = { 0, 1, 2 };
156
+static const unsigned int es8316_dmic_values[] = { 0, 2, 3 };
152157 static const struct soc_enum es8316_dmic_src_enum =
153158 SOC_VALUE_ENUM_SINGLE(ES8316_ADC_DMIC, 0, 3,
154159 ARRAY_SIZE(es8316_dmic_txt),
....@@ -364,13 +369,11 @@
364369 int count = 0;
365370
366371 es8316->sysclk = freq;
372
+ es8316->sysclk_constraints.list = NULL;
373
+ es8316->sysclk_constraints.count = 0;
367374
368
- if (freq == 0) {
369
- es8316->sysclk_constraints.list = NULL;
370
- es8316->sysclk_constraints.count = 0;
371
-
375
+ if (freq == 0)
372376 return 0;
373
- }
374377
375378 ret = clk_set_rate(es8316->mclk, freq);
376379 if (ret)
....@@ -386,8 +389,10 @@
386389 es8316->allowed_rates[count++] = freq / ratio;
387390 }
388391
389
- es8316->sysclk_constraints.list = es8316->allowed_rates;
390
- es8316->sysclk_constraints.count = count;
392
+ if (count) {
393
+ es8316->sysclk_constraints.list = es8316->allowed_rates;
394
+ es8316->sysclk_constraints.count = count;
395
+ }
391396
392397 return 0;
393398 }
....@@ -807,15 +812,14 @@
807812 es8316->irq = i2c_client->irq;
808813 mutex_init(&es8316->lock);
809814
810
- ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
811
- IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
812
- "es8316", es8316);
813
- if (ret == 0) {
814
- /* Gets re-enabled by es8316_set_jack() */
815
- disable_irq(es8316->irq);
816
- } else {
817
- dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
818
- es8316->irq = -ENXIO;
815
+ if (es8316->irq > 0) {
816
+ ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
817
+ IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
818
+ "es8316", es8316);
819
+ if (ret) {
820
+ dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
821
+ es8316->irq = -ENXIO;
822
+ }
819823 }
820824
821825 return devm_snd_soc_register_component(&i2c_client->dev,