| .. | .. |
|---|
| 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, |
|---|