Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge existing fixes from asoc/for-5.19 into new branch

+67 -25
+2 -1
sound/soc/codecs/cs35l36.c
··· 444 444 } 445 445 } 446 446 447 - static DECLARE_TLV_DB_SCALE(dig_vol_tlv, -10200, 25, 0); 447 + static const DECLARE_TLV_DB_RANGE(dig_vol_tlv, 0, 912, 448 + TLV_DB_MINMAX_ITEM(-10200, 1200)); 448 449 static DECLARE_TLV_DB_SCALE(amp_gain_tlv, 0, 1, 1); 449 450 450 451 static const char * const cs35l36_pcm_sftramp_text[] = {
+1 -1
sound/soc/codecs/cs42l51.c
··· 143 143 0, 0xA0, 96, adc_att_tlv), 144 144 SOC_DOUBLE_R_SX_TLV("PGA Volume", 145 145 CS42L51_ALC_PGA_CTL, CS42L51_ALC_PGB_CTL, 146 - 0, 0x1A, 30, pga_tlv), 146 + 0, 0x19, 30, pga_tlv), 147 147 SOC_SINGLE("Playback Deemphasis Switch", CS42L51_DAC_CTL, 3, 1, 0), 148 148 SOC_SINGLE("Auto-Mute Switch", CS42L51_DAC_CTL, 2, 1, 0), 149 149 SOC_SINGLE("Soft Ramp Switch", CS42L51_DAC_CTL, 1, 1, 0),
+5 -3
sound/soc/codecs/cs42l52.c
··· 137 137 138 138 static DECLARE_TLV_DB_SCALE(pga_tlv, -600, 50, 0); 139 139 140 - static DECLARE_TLV_DB_SCALE(mix_tlv, -50, 50, 0); 140 + static DECLARE_TLV_DB_SCALE(pass_tlv, -6000, 50, 0); 141 + 142 + static DECLARE_TLV_DB_SCALE(mix_tlv, -5150, 50, 0); 141 143 142 144 static DECLARE_TLV_DB_SCALE(beep_tlv, -56, 200, 0); 143 145 ··· 353 351 CS42L52_SPKB_VOL, 0, 0x40, 0xC0, hl_tlv), 354 352 355 353 SOC_DOUBLE_R_SX_TLV("Bypass Volume", CS42L52_PASSTHRUA_VOL, 356 - CS42L52_PASSTHRUB_VOL, 0, 0x88, 0x90, pga_tlv), 354 + CS42L52_PASSTHRUB_VOL, 0, 0x88, 0x90, pass_tlv), 357 355 358 356 SOC_DOUBLE("Bypass Mute", CS42L52_MISC_CTL, 4, 5, 1, 0), 359 357 ··· 366 364 CS42L52_ADCB_VOL, 0, 0xA0, 0x78, ipd_tlv), 367 365 SOC_DOUBLE_R_SX_TLV("ADC Mixer Volume", 368 366 CS42L52_ADCA_MIXER_VOL, CS42L52_ADCB_MIXER_VOL, 369 - 0, 0x19, 0x7F, ipd_tlv), 367 + 0, 0x19, 0x7F, mix_tlv), 370 368 371 369 SOC_DOUBLE("ADC Switch", CS42L52_ADC_MISC_CTL, 0, 1, 1, 0), 372 370
+2 -2
sound/soc/codecs/cs42l56.c
··· 391 391 SOC_DOUBLE("ADC Boost Switch", CS42L56_GAIN_BIAS_CTL, 3, 2, 1, 1), 392 392 393 393 SOC_DOUBLE_R_SX_TLV("Headphone Volume", CS42L56_HPA_VOLUME, 394 - CS42L56_HPB_VOLUME, 0, 0x84, 0x48, hl_tlv), 394 + CS42L56_HPB_VOLUME, 0, 0x44, 0x48, hl_tlv), 395 395 SOC_DOUBLE_R_SX_TLV("LineOut Volume", CS42L56_LOA_VOLUME, 396 - CS42L56_LOB_VOLUME, 0, 0x84, 0x48, hl_tlv), 396 + CS42L56_LOB_VOLUME, 0, 0x44, 0x48, hl_tlv), 397 397 398 398 SOC_SINGLE_TLV("Bass Shelving Volume", CS42L56_TONE_CTL, 399 399 0, 0x00, 1, tone_tlv),
+8 -8
sound/soc/codecs/cs53l30.c
··· 348 348 SOC_ENUM("ADC2 NG Delay", adc2_ng_delay_enum), 349 349 350 350 SOC_SINGLE_SX_TLV("ADC1A PGA Volume", 351 - CS53L30_ADC1A_AFE_CTL, 0, 0x34, 0x18, pga_tlv), 351 + CS53L30_ADC1A_AFE_CTL, 0, 0x34, 0x24, pga_tlv), 352 352 SOC_SINGLE_SX_TLV("ADC1B PGA Volume", 353 - CS53L30_ADC1B_AFE_CTL, 0, 0x34, 0x18, pga_tlv), 353 + CS53L30_ADC1B_AFE_CTL, 0, 0x34, 0x24, pga_tlv), 354 354 SOC_SINGLE_SX_TLV("ADC2A PGA Volume", 355 - CS53L30_ADC2A_AFE_CTL, 0, 0x34, 0x18, pga_tlv), 355 + CS53L30_ADC2A_AFE_CTL, 0, 0x34, 0x24, pga_tlv), 356 356 SOC_SINGLE_SX_TLV("ADC2B PGA Volume", 357 - CS53L30_ADC2B_AFE_CTL, 0, 0x34, 0x18, pga_tlv), 357 + CS53L30_ADC2B_AFE_CTL, 0, 0x34, 0x24, pga_tlv), 358 358 359 359 SOC_SINGLE_SX_TLV("ADC1A Digital Volume", 360 - CS53L30_ADC1A_DIG_VOL, 0, 0xA0, 0x0C, dig_tlv), 360 + CS53L30_ADC1A_DIG_VOL, 0, 0xA0, 0x6C, dig_tlv), 361 361 SOC_SINGLE_SX_TLV("ADC1B Digital Volume", 362 - CS53L30_ADC1B_DIG_VOL, 0, 0xA0, 0x0C, dig_tlv), 362 + CS53L30_ADC1B_DIG_VOL, 0, 0xA0, 0x6C, dig_tlv), 363 363 SOC_SINGLE_SX_TLV("ADC2A Digital Volume", 364 - CS53L30_ADC2A_DIG_VOL, 0, 0xA0, 0x0C, dig_tlv), 364 + CS53L30_ADC2A_DIG_VOL, 0, 0xA0, 0x6C, dig_tlv), 365 365 SOC_SINGLE_SX_TLV("ADC2B Digital Volume", 366 - CS53L30_ADC2B_DIG_VOL, 0, 0xA0, 0x0C, dig_tlv), 366 + CS53L30_ADC2B_DIG_VOL, 0, 0xA0, 0x6C, dig_tlv), 367 367 }; 368 368 369 369 static const struct snd_soc_dapm_widget cs53l30_dapm_widgets[] = {
+4
sound/soc/codecs/nau8822.c
··· 741 741 pll_param->mclk_scaler, pll_param->pre_factor); 742 742 743 743 snd_soc_component_update_bits(component, 744 + NAU8822_REG_POWER_MANAGEMENT_1, NAU8822_PLL_EN_MASK, NAU8822_PLL_OFF); 745 + snd_soc_component_update_bits(component, 744 746 NAU8822_REG_PLL_N, NAU8822_PLLMCLK_DIV2 | NAU8822_PLLN_MASK, 745 747 (pll_param->pre_factor ? NAU8822_PLLMCLK_DIV2 : 0) | 746 748 pll_param->pll_int); ··· 759 757 pll_param->mclk_scaler << NAU8822_MCLKSEL_SFT); 760 758 snd_soc_component_update_bits(component, 761 759 NAU8822_REG_CLOCKING, NAU8822_CLKM_MASK, NAU8822_CLKM_PLL); 760 + snd_soc_component_update_bits(component, 761 + NAU8822_REG_POWER_MANAGEMENT_1, NAU8822_PLL_EN_MASK, NAU8822_PLL_ON); 762 762 763 763 return 0; 764 764 }
+3
sound/soc/codecs/nau8822.h
··· 90 90 #define NAU8822_REFIMP_3K 0x3 91 91 #define NAU8822_IOBUF_EN (0x1 << 2) 92 92 #define NAU8822_ABIAS_EN (0x1 << 3) 93 + #define NAU8822_PLL_EN_MASK (0x1 << 5) 94 + #define NAU8822_PLL_ON (0x1 << 5) 95 + #define NAU8822_PLL_OFF (0x0 << 5) 93 96 94 97 /* NAU8822_REG_AUDIO_INTERFACE (0x4) */ 95 98 #define NAU8822_AIFMT_MASK (0x3 << 3)
+41 -9
sound/soc/intel/boards/sof_cirrus_common.c
··· 54 54 }, 55 55 }; 56 56 57 + /* 58 + * Mapping between ACPI instance id and speaker position. 59 + * 60 + * Four speakers: 61 + * 0: Tweeter left, 1: Woofer left 62 + * 2: Tweeter right, 3: Woofer right 63 + */ 57 64 static struct snd_soc_codec_conf cs35l41_codec_conf[] = { 58 65 { 59 66 .dlc = COMP_CODEC_CONF(CS35L41_DEV0_NAME), 60 - .name_prefix = "WL", 61 - }, 62 - { 63 - .dlc = COMP_CODEC_CONF(CS35L41_DEV1_NAME), 64 - .name_prefix = "WR", 65 - }, 66 - { 67 - .dlc = COMP_CODEC_CONF(CS35L41_DEV2_NAME), 68 67 .name_prefix = "TL", 69 68 }, 70 69 { 71 - .dlc = COMP_CODEC_CONF(CS35L41_DEV3_NAME), 70 + .dlc = COMP_CODEC_CONF(CS35L41_DEV1_NAME), 71 + .name_prefix = "WL", 72 + }, 73 + { 74 + .dlc = COMP_CODEC_CONF(CS35L41_DEV2_NAME), 72 75 .name_prefix = "TR", 76 + }, 77 + { 78 + .dlc = COMP_CODEC_CONF(CS35L41_DEV3_NAME), 79 + .name_prefix = "WR", 73 80 }, 74 81 }; 75 82 ··· 108 101 return ret; 109 102 } 110 103 104 + /* 105 + * Channel map: 106 + * 107 + * TL/WL: ASPRX1 on slot 0, ASPRX2 on slot 1 (default) 108 + * TR/WR: ASPRX1 on slot 1, ASPRX2 on slot 0 109 + */ 110 + static const struct { 111 + unsigned int rx[2]; 112 + } cs35l41_channel_map[] = { 113 + {.rx = {0, 1}}, /* TL */ 114 + {.rx = {0, 1}}, /* WL */ 115 + {.rx = {1, 0}}, /* TR */ 116 + {.rx = {1, 0}}, /* WR */ 117 + }; 118 + 111 119 static int cs35l41_hw_params(struct snd_pcm_substream *substream, 112 120 struct snd_pcm_hw_params *params) 113 121 { ··· 153 131 clk_freq, SND_SOC_CLOCK_IN); 154 132 if (ret < 0) { 155 133 dev_err(codec_dai->dev, "fail to set component sysclk, ret %d\n", 134 + ret); 135 + return ret; 136 + } 137 + 138 + /* setup channel map */ 139 + ret = snd_soc_dai_set_channel_map(codec_dai, 0, NULL, 140 + ARRAY_SIZE(cs35l41_channel_map[i].rx), 141 + (unsigned int *)cs35l41_channel_map[i].rx); 142 + if (ret < 0) { 143 + dev_err(codec_dai->dev, "fail to set channel map, ret %d\n", 156 144 ret); 157 145 return ret; 158 146 }
+1 -1
sound/soc/qcom/lpass-platform.c
··· 898 898 struct snd_pcm_runtime *runtime = substream->runtime; 899 899 unsigned long size, offset; 900 900 901 - vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 901 + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); 902 902 size = vma->vm_end - vma->vm_start; 903 903 offset = vma->vm_pgoff << PAGE_SHIFT; 904 904 return io_remap_pfn_range(vma, vma->vm_start,