.. | .. |
---|
52 | 52 | static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(adc_vol_tlv, -9600, 50, 1); |
---|
53 | 53 | static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_max_gain_tlv, -650, 150, 0); |
---|
54 | 54 | 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 | + |
---|
56 | 61 | static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(hpmixer_gain_tlv, |
---|
57 | 62 | 0, 4, TLV_DB_SCALE_ITEM(-1200, 150, 0), |
---|
58 | 63 | 8, 11, TLV_DB_SCALE_ITEM(-450, 150, 0), |
---|
.. | .. |
---|
115 | 120 | alc_max_gain_tlv), |
---|
116 | 121 | SOC_SINGLE_TLV("ALC Capture Min Volume", ES8316_ADC_ALC2, 0, 28, 0, |
---|
117 | 122 | 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, |
---|
119 | 124 | alc_target_tlv), |
---|
120 | 125 | SOC_SINGLE("ALC Capture Hold Time", ES8316_ADC_ALC3, 0, 10, 0), |
---|
121 | 126 | SOC_SINGLE("ALC Capture Decay Time", ES8316_ADC_ALC4, 4, 10, 0), |
---|
.. | .. |
---|
148 | 153 | "dmic data at high level", |
---|
149 | 154 | "dmic data at low level", |
---|
150 | 155 | }; |
---|
151 | | -static const unsigned int es8316_dmic_values[] = { 0, 1, 2 }; |
---|
| 156 | +static const unsigned int es8316_dmic_values[] = { 0, 2, 3 }; |
---|
152 | 157 | static const struct soc_enum es8316_dmic_src_enum = |
---|
153 | 158 | SOC_VALUE_ENUM_SINGLE(ES8316_ADC_DMIC, 0, 3, |
---|
154 | 159 | ARRAY_SIZE(es8316_dmic_txt), |
---|
.. | .. |
---|
364 | 369 | int count = 0; |
---|
365 | 370 | |
---|
366 | 371 | es8316->sysclk = freq; |
---|
| 372 | + es8316->sysclk_constraints.list = NULL; |
---|
| 373 | + es8316->sysclk_constraints.count = 0; |
---|
367 | 374 | |
---|
368 | | - if (freq == 0) { |
---|
369 | | - es8316->sysclk_constraints.list = NULL; |
---|
370 | | - es8316->sysclk_constraints.count = 0; |
---|
371 | | - |
---|
| 375 | + if (freq == 0) |
---|
372 | 376 | return 0; |
---|
373 | | - } |
---|
374 | 377 | |
---|
375 | 378 | ret = clk_set_rate(es8316->mclk, freq); |
---|
376 | 379 | if (ret) |
---|
.. | .. |
---|
386 | 389 | es8316->allowed_rates[count++] = freq / ratio; |
---|
387 | 390 | } |
---|
388 | 391 | |
---|
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 | + } |
---|
391 | 396 | |
---|
392 | 397 | return 0; |
---|
393 | 398 | } |
---|
.. | .. |
---|
807 | 812 | es8316->irq = i2c_client->irq; |
---|
808 | 813 | mutex_init(&es8316->lock); |
---|
809 | 814 | |
---|
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 | + } |
---|
819 | 823 | } |
---|
820 | 824 | |
---|
821 | 825 | return devm_snd_soc_register_component(&i2c_client->dev, |
---|