Lines Matching full:rx
653 "ZERO", "RX INT0_1 MIX1",
657 "ZERO", "RX INT1_1 MIX1",
661 "ZERO", "RX INT2_1 MIX1",
665 "ZERO", "RX INT0_2 MUX",
669 "ZERO", "RX INT1_2 MUX",
673 "ZERO", "RX INT2_2 MUX",
771 SOC_DAPM_ENUM("RX MIX TX1_MUX Mux", rx_mix_tx1_mux_enum);
773 SOC_DAPM_ENUM("RX MIX TX2_MUX Mux", rx_mix_tx2_mux_enum);
833 SOC_DAPM_ENUM("RX MIX TX0_MUX Mux", rx_mix_tx0_mux_enum);
836 /* RX Macro */
1140 /* Update volatile list for rx/tx macros */ in rx_is_volatile_register()
1547 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_set_prim_interpolator_rate() local
1549 for_each_set_bit(port, &rx->active_ch_mask[dai->id], RX_MACRO_PORTS_MAX) { in rx_macro_set_prim_interpolator_rate()
1554 * to which interpolator input, the rx port in rx_macro_set_prim_interpolator_rate()
1592 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_set_mix_interpolator_rate() local
1594 for_each_set_bit(port, &rx->active_ch_mask[dai->id], RX_MACRO_PORTS_MAX) { in rx_macro_set_mix_interpolator_rate()
1638 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_hw_params() local
1649 rx->bit_width[dai->id] = params_width(params); in rx_macro_hw_params()
1662 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_get_channel_map() local
1670 for_each_set_bit(temp, &rx->active_ch_mask[dai->id], in rx_macro_get_channel_map()
1691 *rx_num = rx->active_ch_cnt[dai->id]; in rx_macro_get_channel_map()
1854 static void rx_macro_mclk_enable(struct rx_macro *rx, bool mclk_enable) in rx_macro_mclk_enable() argument
1856 struct regmap *regmap = rx->regmap; in rx_macro_mclk_enable()
1859 if (rx->rx_mclk_users == 0) { in rx_macro_mclk_enable()
1873 rx->rx_mclk_users++; in rx_macro_mclk_enable()
1875 if (rx->rx_mclk_users <= 0) { in rx_macro_mclk_enable()
1876 dev_err(rx->dev, "%s: clock already disabled\n", __func__); in rx_macro_mclk_enable()
1877 rx->rx_mclk_users = 0; in rx_macro_mclk_enable()
1880 rx->rx_mclk_users--; in rx_macro_mclk_enable()
1881 if (rx->rx_mclk_users == 0) { in rx_macro_mclk_enable()
1898 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_mclk_event() local
1903 rx_macro_mclk_enable(rx, true); in rx_macro_mclk_event()
1906 rx_macro_mclk_enable(rx, false); in rx_macro_mclk_event()
1985 struct rx_macro *rx, in rx_macro_config_compander() argument
2011 if (!rx->comp_enabled[comp]) in rx_macro_config_compander()
2041 struct rx_macro *rx, in rx_macro_load_compander_coeff() argument
2052 if (!rx->comp_enabled[comp]) in rx_macro_load_compander_coeff()
2066 hph_pwr_mode = rx->hph_pwr_mode; in rx_macro_load_compander_coeff()
2082 struct rx_macro *rx, bool enable) in rx_macro_enable_softclip_clk() argument
2085 if (rx->softclip_clk_users == 0) in rx_macro_enable_softclip_clk()
2088 rx->softclip_clk_users++; in rx_macro_enable_softclip_clk()
2090 rx->softclip_clk_users--; in rx_macro_enable_softclip_clk()
2091 if (rx->softclip_clk_users == 0) in rx_macro_enable_softclip_clk()
2098 struct rx_macro *rx, int event) in rx_macro_config_softclip() argument
2101 if (!rx->is_softclip_on) in rx_macro_config_softclip()
2106 rx_macro_enable_softclip_clk(component, rx, true); in rx_macro_config_softclip()
2115 rx_macro_enable_softclip_clk(component, rx, false); in rx_macro_config_softclip()
2122 struct rx_macro *rx, int event) in rx_macro_config_aux_hpf() argument
2126 if (!rx->is_aux_hpf_on) in rx_macro_config_aux_hpf()
2140 static inline void rx_macro_enable_clsh_block(struct rx_macro *rx, bool enable) in rx_macro_enable_clsh_block() argument
2142 if ((enable && ++rx->clsh_users == 1) || (!enable && --rx->clsh_users == 0)) in rx_macro_enable_clsh_block()
2143 snd_soc_component_update_bits(rx->component, CDC_RX_CLSH_CRC, in rx_macro_enable_clsh_block()
2145 if (rx->clsh_users < 0) in rx_macro_enable_clsh_block()
2146 rx->clsh_users = 0; in rx_macro_enable_clsh_block()
2150 struct rx_macro *rx, in rx_macro_config_classh() argument
2154 rx_macro_enable_clsh_block(rx, false); in rx_macro_config_classh()
2161 rx_macro_enable_clsh_block(rx, true); in rx_macro_config_classh()
2174 if (rx->is_ear_mode_on) in rx_macro_config_classh()
2190 if (rx->is_ear_mode_on) in rx_macro_config_classh()
2255 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_get_compander() local
2257 ucontrol->value.integer.value[0] = rx->comp_enabled[comp]; in rx_macro_get_compander()
2267 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_set_compander() local
2269 rx->comp_enabled[comp] = value; in rx_macro_set_compander()
2279 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_mux_get() local
2282 rx->rx_port_value[widget->shift]; in rx_macro_mux_get()
2295 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_mux_put() local
2297 aif_rst = rx->rx_port_value[widget->shift]; in rx_macro_mux_put()
2306 rx->rx_port_value[widget->shift] = rx_port_value; in rx_macro_mux_put()
2310 if (rx->active_ch_cnt[aif_rst]) { in rx_macro_mux_put()
2312 &rx->active_ch_mask[aif_rst]); in rx_macro_mux_put()
2313 rx->active_ch_cnt[aif_rst]--; in rx_macro_mux_put()
2321 &rx->active_ch_mask[rx_port_value]); in rx_macro_mux_put()
2322 rx->active_ch_cnt[rx_port_value]++; in rx_macro_mux_put()
2361 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_get_ear_mode() local
2363 ucontrol->value.integer.value[0] = rx->is_ear_mode_on; in rx_macro_get_ear_mode()
2371 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_put_ear_mode() local
2373 rx->is_ear_mode_on = (!ucontrol->value.integer.value[0] ? false : true); in rx_macro_put_ear_mode()
2381 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_get_hph_hd2_mode() local
2383 ucontrol->value.integer.value[0] = rx->hph_hd2_mode; in rx_macro_get_hph_hd2_mode()
2391 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_put_hph_hd2_mode() local
2393 rx->hph_hd2_mode = ucontrol->value.integer.value[0]; in rx_macro_put_hph_hd2_mode()
2401 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_get_hph_pwr_mode() local
2403 ucontrol->value.enumerated.item[0] = rx->hph_pwr_mode; in rx_macro_get_hph_pwr_mode()
2411 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_put_hph_pwr_mode() local
2413 rx->hph_pwr_mode = ucontrol->value.enumerated.item[0]; in rx_macro_put_hph_pwr_mode()
2421 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_soft_clip_enable_get() local
2423 ucontrol->value.integer.value[0] = rx->is_softclip_on; in rx_macro_soft_clip_enable_get()
2432 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_soft_clip_enable_put() local
2434 rx->is_softclip_on = ucontrol->value.integer.value[0]; in rx_macro_soft_clip_enable_put()
2443 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_aux_hpf_mode_get() local
2445 ucontrol->value.integer.value[0] = rx->is_aux_hpf_on; in rx_macro_aux_hpf_mode_get()
2454 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_aux_hpf_mode_put() local
2456 rx->is_aux_hpf_on = ucontrol->value.integer.value[0]; in rx_macro_aux_hpf_mode_put()
2462 struct rx_macro *rx, in rx_macro_hphdelay_lutbypass() argument
2483 if (rx->is_ear_mode_on) in rx_macro_hphdelay_lutbypass()
2495 if (rx->hph_pwr_mode) in rx_macro_hphdelay_lutbypass()
2517 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_enable_interp_clk() local
2526 if (rx->main_clk_users[interp_idx] == 0) { in rx_macro_enable_interp_clk()
2534 rx_macro_load_compander_coeff(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2535 if (rx->hph_hd2_mode) in rx_macro_enable_interp_clk()
2537 rx_macro_hphdelay_lutbypass(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2538 rx_macro_config_compander(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2540 rx_macro_config_softclip(component, rx, event); in rx_macro_enable_interp_clk()
2541 rx_macro_config_aux_hpf(component, rx, event); in rx_macro_enable_interp_clk()
2543 rx_macro_config_classh(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2545 rx->main_clk_users[interp_idx]++; in rx_macro_enable_interp_clk()
2549 rx->main_clk_users[interp_idx]--; in rx_macro_enable_interp_clk()
2550 if (rx->main_clk_users[interp_idx] <= 0) { in rx_macro_enable_interp_clk()
2551 rx->main_clk_users[interp_idx] = 0; in rx_macro_enable_interp_clk()
2571 rx_macro_config_classh(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2572 rx_macro_config_compander(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2574 rx_macro_config_softclip(component, rx, event); in rx_macro_enable_interp_clk()
2575 rx_macro_config_aux_hpf(component, rx, event); in rx_macro_enable_interp_clk()
2577 rx_macro_hphdelay_lutbypass(component, rx, interp_idx, event); in rx_macro_enable_interp_clk()
2578 if (rx->hph_hd2_mode) in rx_macro_enable_interp_clk()
2583 return rx->main_clk_users[interp_idx]; in rx_macro_enable_interp_clk()
2909 if (!(strcmp(w->name, "RX MIX TX0 MUX"))) in rx_macro_enable_echo()
2911 else if (!(strcmp(w->name, "RX MIX TX1 MUX"))) in rx_macro_enable_echo()
2916 if (!(strcmp(w->name, "RX MIX TX2 MUX"))) in rx_macro_enable_echo()
2936 SND_SOC_DAPM_AIF_IN("RX AIF1 PB", "RX_MACRO_AIF1 Playback", 0,
2939 SND_SOC_DAPM_AIF_IN("RX AIF2 PB", "RX_MACRO_AIF2 Playback", 0,
2942 SND_SOC_DAPM_AIF_IN("RX AIF3 PB", "RX_MACRO_AIF3 Playback", 0,
2945 SND_SOC_DAPM_AIF_IN("RX AIF4 PB", "RX_MACRO_AIF4 Playback", 0,
2948 SND_SOC_DAPM_AIF_OUT("RX AIF_ECHO", "RX_AIF_ECHO Capture", 0,
2980 SND_SOC_DAPM_MUX_E("RX MIX TX0 MUX", SND_SOC_NOPM,
2984 SND_SOC_DAPM_MUX_E("RX MIX TX1 MUX", SND_SOC_NOPM,
2988 SND_SOC_DAPM_MUX_E("RX MIX TX2 MUX", SND_SOC_NOPM,
3004 SND_SOC_DAPM_MUX("RX INT0 DEM MUX", SND_SOC_NOPM, 0, 0,
3006 SND_SOC_DAPM_MUX("RX INT1 DEM MUX", SND_SOC_NOPM, 0, 0,
3009 SND_SOC_DAPM_MUX_E("RX INT0_2 MUX", SND_SOC_NOPM, INTERP_HPHL, 0,
3013 SND_SOC_DAPM_MUX_E("RX INT1_2 MUX", SND_SOC_NOPM, INTERP_HPHR, 0,
3017 SND_SOC_DAPM_MUX_E("RX INT2_2 MUX", SND_SOC_NOPM, INTERP_AUX, 0,
3022 SND_SOC_DAPM_MUX("RX INT0_1 MIX1 INP0", SND_SOC_NOPM, 0, 0, &rx_int0_1_mix_inp0_mux),
3023 SND_SOC_DAPM_MUX("RX INT0_1 MIX1 INP1", SND_SOC_NOPM, 0, 0, &rx_int0_1_mix_inp1_mux),
3024 SND_SOC_DAPM_MUX("RX INT0_1 MIX1 INP2", SND_SOC_NOPM, 0, 0, &rx_int0_1_mix_inp2_mux),
3025 SND_SOC_DAPM_MUX("RX INT1_1 MIX1 INP0", SND_SOC_NOPM, 0, 0, &rx_int1_1_mix_inp0_mux),
3026 SND_SOC_DAPM_MUX("RX INT1_1 MIX1 INP1", SND_SOC_NOPM, 0, 0, &rx_int1_1_mix_inp1_mux),
3027 SND_SOC_DAPM_MUX("RX INT1_1 MIX1 INP2", SND_SOC_NOPM, 0, 0, &rx_int1_1_mix_inp2_mux),
3028 SND_SOC_DAPM_MUX("RX INT2_1 MIX1 INP0", SND_SOC_NOPM, 0, 0, &rx_int2_1_mix_inp0_mux),
3029 SND_SOC_DAPM_MUX("RX INT2_1 MIX1 INP1", SND_SOC_NOPM, 0, 0, &rx_int2_1_mix_inp1_mux),
3030 SND_SOC_DAPM_MUX("RX INT2_1 MIX1 INP2", SND_SOC_NOPM, 0, 0, &rx_int2_1_mix_inp2_mux),
3032 SND_SOC_DAPM_MUX_E("RX INT0_1 INTERP", SND_SOC_NOPM, INTERP_HPHL, 0,
3036 SND_SOC_DAPM_MUX_E("RX INT1_1 INTERP", SND_SOC_NOPM, INTERP_HPHR, 0,
3040 SND_SOC_DAPM_MUX_E("RX INT2_1 INTERP", SND_SOC_NOPM, INTERP_AUX, 0,
3045 SND_SOC_DAPM_MUX("RX INT0_2 INTERP", SND_SOC_NOPM, 0, 0,
3047 SND_SOC_DAPM_MUX("RX INT1_2 INTERP", SND_SOC_NOPM, 0, 0,
3049 SND_SOC_DAPM_MUX("RX INT2_2 INTERP", SND_SOC_NOPM, 0, 0,
3052 SND_SOC_DAPM_MIXER("RX INT0_1 MIX1", SND_SOC_NOPM, 0, 0, NULL, 0),
3053 SND_SOC_DAPM_MIXER("RX INT0 SEC MIX", SND_SOC_NOPM, 0, 0, NULL, 0),
3054 SND_SOC_DAPM_MIXER("RX INT1_1 MIX1", SND_SOC_NOPM, 0, 0, NULL, 0),
3055 SND_SOC_DAPM_MIXER("RX INT1 SEC MIX", SND_SOC_NOPM, 0, 0, NULL, 0),
3056 SND_SOC_DAPM_MIXER("RX INT2_1 MIX1", SND_SOC_NOPM, 0, 0, NULL, 0),
3057 SND_SOC_DAPM_MIXER("RX INT2 SEC MIX", SND_SOC_NOPM, 0, 0, NULL, 0),
3059 SND_SOC_DAPM_MUX_E("RX INT0 MIX2 INP", SND_SOC_NOPM, INTERP_HPHL,
3062 SND_SOC_DAPM_MUX_E("RX INT1 MIX2 INP", SND_SOC_NOPM, INTERP_HPHR,
3065 SND_SOC_DAPM_MUX_E("RX INT2 MIX2 INP", SND_SOC_NOPM, INTERP_AUX,
3069 SND_SOC_DAPM_MIXER("RX INT0 MIX2", SND_SOC_NOPM, 0, 0, NULL, 0),
3070 SND_SOC_DAPM_MIXER("RX INT1 MIX2", SND_SOC_NOPM, 0, 0, NULL, 0),
3071 SND_SOC_DAPM_MIXER("RX INT2 MIX2", SND_SOC_NOPM, 0, 0, NULL, 0),
3087 {"RX AIF1 PB", NULL, "RX_MCLK"},
3088 {"RX AIF2 PB", NULL, "RX_MCLK"},
3089 {"RX AIF3 PB", NULL, "RX_MCLK"},
3090 {"RX AIF4 PB", NULL, "RX_MCLK"},
3092 {"RX_MACRO RX0 MUX", "AIF1_PB", "RX AIF1 PB"},
3093 {"RX_MACRO RX1 MUX", "AIF1_PB", "RX AIF1 PB"},
3094 {"RX_MACRO RX2 MUX", "AIF1_PB", "RX AIF1 PB"},
3095 {"RX_MACRO RX3 MUX", "AIF1_PB", "RX AIF1 PB"},
3096 {"RX_MACRO RX4 MUX", "AIF1_PB", "RX AIF1 PB"},
3097 {"RX_MACRO RX5 MUX", "AIF1_PB", "RX AIF1 PB"},
3099 {"RX_MACRO RX0 MUX", "AIF2_PB", "RX AIF2 PB"},
3100 {"RX_MACRO RX1 MUX", "AIF2_PB", "RX AIF2 PB"},
3101 {"RX_MACRO RX2 MUX", "AIF2_PB", "RX AIF2 PB"},
3102 {"RX_MACRO RX3 MUX", "AIF2_PB", "RX AIF2 PB"},
3103 {"RX_MACRO RX4 MUX", "AIF2_PB", "RX AIF2 PB"},
3104 {"RX_MACRO RX5 MUX", "AIF2_PB", "RX AIF2 PB"},
3106 {"RX_MACRO RX0 MUX", "AIF3_PB", "RX AIF3 PB"},
3107 {"RX_MACRO RX1 MUX", "AIF3_PB", "RX AIF3 PB"},
3108 {"RX_MACRO RX2 MUX", "AIF3_PB", "RX AIF3 PB"},
3109 {"RX_MACRO RX3 MUX", "AIF3_PB", "RX AIF3 PB"},
3110 {"RX_MACRO RX4 MUX", "AIF3_PB", "RX AIF3 PB"},
3111 {"RX_MACRO RX5 MUX", "AIF3_PB", "RX AIF3 PB"},
3113 {"RX_MACRO RX0 MUX", "AIF4_PB", "RX AIF4 PB"},
3114 {"RX_MACRO RX1 MUX", "AIF4_PB", "RX AIF4 PB"},
3115 {"RX_MACRO RX2 MUX", "AIF4_PB", "RX AIF4 PB"},
3116 {"RX_MACRO RX3 MUX", "AIF4_PB", "RX AIF4 PB"},
3117 {"RX_MACRO RX4 MUX", "AIF4_PB", "RX AIF4 PB"},
3118 {"RX_MACRO RX5 MUX", "AIF4_PB", "RX AIF4 PB"},
3127 {"RX INT0_1 MIX1 INP0", "RX0", "RX_RX0"},
3128 {"RX INT0_1 MIX1 INP0", "RX1", "RX_RX1"},
3129 {"RX INT0_1 MIX1 INP0", "RX2", "RX_RX2"},
3130 {"RX INT0_1 MIX1 INP0", "RX3", "RX_RX3"},
3131 {"RX INT0_1 MIX1 INP0", "RX4", "RX_RX4"},
3132 {"RX INT0_1 MIX1 INP0", "RX5", "RX_RX5"},
3133 {"RX INT0_1 MIX1 INP0", "IIR0", "IIR0"},
3134 {"RX INT0_1 MIX1 INP0", "IIR1", "IIR1"},
3135 {"RX INT0_1 MIX1 INP0", "DEC0", "RX_TX DEC0_INP"},
3136 {"RX INT0_1 MIX1 INP0", "DEC1", "RX_TX DEC1_INP"},
3137 {"RX INT0_1 MIX1 INP1", "RX0", "RX_RX0"},
3138 {"RX INT0_1 MIX1 INP1", "RX1", "RX_RX1"},
3139 {"RX INT0_1 MIX1 INP1", "RX2", "RX_RX2"},
3140 {"RX INT0_1 MIX1 INP1", "RX3", "RX_RX3"},
3141 {"RX INT0_1 MIX1 INP1", "RX4", "RX_RX4"},
3142 {"RX INT0_1 MIX1 INP1", "RX5", "RX_RX5"},
3143 {"RX INT0_1 MIX1 INP1", "IIR0", "IIR0"},
3144 {"RX INT0_1 MIX1 INP1", "IIR1", "IIR1"},
3145 {"RX INT0_1 MIX1 INP1", "DEC0", "RX_TX DEC0_INP"},
3146 {"RX INT0_1 MIX1 INP1", "DEC1", "RX_TX DEC1_INP"},
3147 {"RX INT0_1 MIX1 INP2", "RX0", "RX_RX0"},
3148 {"RX INT0_1 MIX1 INP2", "RX1", "RX_RX1"},
3149 {"RX INT0_1 MIX1 INP2", "RX2", "RX_RX2"},
3150 {"RX INT0_1 MIX1 INP2", "RX3", "RX_RX3"},
3151 {"RX INT0_1 MIX1 INP2", "RX4", "RX_RX4"},
3152 {"RX INT0_1 MIX1 INP2", "RX5", "RX_RX5"},
3153 {"RX INT0_1 MIX1 INP2", "IIR0", "IIR0"},
3154 {"RX INT0_1 MIX1 INP2", "IIR1", "IIR1"},
3155 {"RX INT0_1 MIX1 INP2", "DEC0", "RX_TX DEC0_INP"},
3156 {"RX INT0_1 MIX1 INP2", "DEC1", "RX_TX DEC1_INP"},
3158 {"RX INT1_1 MIX1 INP0", "RX0", "RX_RX0"},
3159 {"RX INT1_1 MIX1 INP0", "RX1", "RX_RX1"},
3160 {"RX INT1_1 MIX1 INP0", "RX2", "RX_RX2"},
3161 {"RX INT1_1 MIX1 INP0", "RX3", "RX_RX3"},
3162 {"RX INT1_1 MIX1 INP0", "RX4", "RX_RX4"},
3163 {"RX INT1_1 MIX1 INP0", "RX5", "RX_RX5"},
3164 {"RX INT1_1 MIX1 INP0", "IIR0", "IIR0"},
3165 {"RX INT1_1 MIX1 INP0", "IIR1", "IIR1"},
3166 {"RX INT1_1 MIX1 INP0", "DEC0", "RX_TX DEC0_INP"},
3167 {"RX INT1_1 MIX1 INP0", "DEC1", "RX_TX DEC1_INP"},
3168 {"RX INT1_1 MIX1 INP1", "RX0", "RX_RX0"},
3169 {"RX INT1_1 MIX1 INP1", "RX1", "RX_RX1"},
3170 {"RX INT1_1 MIX1 INP1", "RX2", "RX_RX2"},
3171 {"RX INT1_1 MIX1 INP1", "RX3", "RX_RX3"},
3172 {"RX INT1_1 MIX1 INP1", "RX4", "RX_RX4"},
3173 {"RX INT1_1 MIX1 INP1", "RX5", "RX_RX5"},
3174 {"RX INT1_1 MIX1 INP1", "IIR0", "IIR0"},
3175 {"RX INT1_1 MIX1 INP1", "IIR1", "IIR1"},
3176 {"RX INT1_1 MIX1 INP1", "DEC0", "RX_TX DEC0_INP"},
3177 {"RX INT1_1 MIX1 INP1", "DEC1", "RX_TX DEC1_INP"},
3178 {"RX INT1_1 MIX1 INP2", "RX0", "RX_RX0"},
3179 {"RX INT1_1 MIX1 INP2", "RX1", "RX_RX1"},
3180 {"RX INT1_1 MIX1 INP2", "RX2", "RX_RX2"},
3181 {"RX INT1_1 MIX1 INP2", "RX3", "RX_RX3"},
3182 {"RX INT1_1 MIX1 INP2", "RX4", "RX_RX4"},
3183 {"RX INT1_1 MIX1 INP2", "RX5", "RX_RX5"},
3184 {"RX INT1_1 MIX1 INP2", "IIR0", "IIR0"},
3185 {"RX INT1_1 MIX1 INP2", "IIR1", "IIR1"},
3186 {"RX INT1_1 MIX1 INP2", "DEC0", "RX_TX DEC0_INP"},
3187 {"RX INT1_1 MIX1 INP2", "DEC1", "RX_TX DEC1_INP"},
3189 {"RX INT2_1 MIX1 INP0", "RX0", "RX_RX0"},
3190 {"RX INT2_1 MIX1 INP0", "RX1", "RX_RX1"},
3191 {"RX INT2_1 MIX1 INP0", "RX2", "RX_RX2"},
3192 {"RX INT2_1 MIX1 INP0", "RX3", "RX_RX3"},
3193 {"RX INT2_1 MIX1 INP0", "RX4", "RX_RX4"},
3194 {"RX INT2_1 MIX1 INP0", "RX5", "RX_RX5"},
3195 {"RX INT2_1 MIX1 INP0", "IIR0", "IIR0"},
3196 {"RX INT2_1 MIX1 INP0", "IIR1", "IIR1"},
3197 {"RX INT2_1 MIX1 INP0", "DEC0", "RX_TX DEC0_INP"},
3198 {"RX INT2_1 MIX1 INP0", "DEC1", "RX_TX DEC1_INP"},
3199 {"RX INT2_1 MIX1 INP1", "RX0", "RX_RX0"},
3200 {"RX INT2_1 MIX1 INP1", "RX1", "RX_RX1"},
3201 {"RX INT2_1 MIX1 INP1", "RX2", "RX_RX2"},
3202 {"RX INT2_1 MIX1 INP1", "RX3", "RX_RX3"},
3203 {"RX INT2_1 MIX1 INP1", "RX4", "RX_RX4"},
3204 {"RX INT2_1 MIX1 INP1", "RX5", "RX_RX5"},
3205 {"RX INT2_1 MIX1 INP1", "IIR0", "IIR0"},
3206 {"RX INT2_1 MIX1 INP1", "IIR1", "IIR1"},
3207 {"RX INT2_1 MIX1 INP1", "DEC0", "RX_TX DEC0_INP"},
3208 {"RX INT2_1 MIX1 INP1", "DEC1", "RX_TX DEC1_INP"},
3209 {"RX INT2_1 MIX1 INP2", "RX0", "RX_RX0"},
3210 {"RX INT2_1 MIX1 INP2", "RX1", "RX_RX1"},
3211 {"RX INT2_1 MIX1 INP2", "RX2", "RX_RX2"},
3212 {"RX INT2_1 MIX1 INP2", "RX3", "RX_RX3"},
3213 {"RX INT2_1 MIX1 INP2", "RX4", "RX_RX4"},
3214 {"RX INT2_1 MIX1 INP2", "RX5", "RX_RX5"},
3215 {"RX INT2_1 MIX1 INP2", "IIR0", "IIR0"},
3216 {"RX INT2_1 MIX1 INP2", "IIR1", "IIR1"},
3217 {"RX INT2_1 MIX1 INP2", "DEC0", "RX_TX DEC0_INP"},
3218 {"RX INT2_1 MIX1 INP2", "DEC1", "RX_TX DEC1_INP"},
3220 {"RX INT0_1 MIX1", NULL, "RX INT0_1 MIX1 INP0"},
3221 {"RX INT0_1 MIX1", NULL, "RX INT0_1 MIX1 INP1"},
3222 {"RX INT0_1 MIX1", NULL, "RX INT0_1 MIX1 INP2"},
3223 {"RX INT1_1 MIX1", NULL, "RX INT1_1 MIX1 INP0"},
3224 {"RX INT1_1 MIX1", NULL, "RX INT1_1 MIX1 INP1"},
3225 {"RX INT1_1 MIX1", NULL, "RX INT1_1 MIX1 INP2"},
3226 {"RX INT2_1 MIX1", NULL, "RX INT2_1 MIX1 INP0"},
3227 {"RX INT2_1 MIX1", NULL, "RX INT2_1 MIX1 INP1"},
3228 {"RX INT2_1 MIX1", NULL, "RX INT2_1 MIX1 INP2"},
3230 {"RX MIX TX0 MUX", "RX_MIX0", "RX INT0 SEC MIX"},
3231 {"RX MIX TX0 MUX", "RX_MIX1", "RX INT1 SEC MIX"},
3232 {"RX MIX TX0 MUX", "RX_MIX2", "RX INT2 SEC MIX"},
3233 {"RX MIX TX1 MUX", "RX_MIX0", "RX INT0 SEC MIX"},
3234 {"RX MIX TX1 MUX", "RX_MIX1", "RX INT1 SEC MIX"},
3235 {"RX MIX TX1 MUX", "RX_MIX2", "RX INT2 SEC MIX"},
3236 {"RX MIX TX2 MUX", "RX_MIX0", "RX INT0 SEC MIX"},
3237 {"RX MIX TX2 MUX", "RX_MIX1", "RX INT1 SEC MIX"},
3238 {"RX MIX TX2 MUX", "RX_MIX2", "RX INT2 SEC MIX"},
3239 {"RX AIF_ECHO", NULL, "RX MIX TX0 MUX"},
3240 {"RX AIF_ECHO", NULL, "RX MIX TX1 MUX"},
3241 {"RX AIF_ECHO", NULL, "RX MIX TX2 MUX"},
3242 {"RX AIF_ECHO", NULL, "RX_MCLK"},
3245 {"RX INT0_2 MUX", "RX0", "RX_RX0"},
3246 {"RX INT0_2 MUX", "RX1", "RX_RX1"},
3247 {"RX INT0_2 MUX", "RX2", "RX_RX2"},
3248 {"RX INT0_2 MUX", "RX3", "RX_RX3"},
3249 {"RX INT0_2 MUX", "RX4", "RX_RX4"},
3250 {"RX INT0_2 MUX", "RX5", "RX_RX5"},
3251 {"RX INT0_2 INTERP", NULL, "RX INT0_2 MUX"},
3252 {"RX INT0 SEC MIX", NULL, "RX INT0_2 INTERP"},
3255 {"RX INT1_2 MUX", "RX0", "RX_RX0"},
3256 {"RX INT1_2 MUX", "RX1", "RX_RX1"},
3257 {"RX INT1_2 MUX", "RX2", "RX_RX2"},
3258 {"RX INT1_2 MUX", "RX3", "RX_RX3"},
3259 {"RX INT1_2 MUX", "RX4", "RX_RX4"},
3260 {"RX INT1_2 MUX", "RX5", "RX_RX5"},
3261 {"RX INT1_2 INTERP", NULL, "RX INT1_2 MUX"},
3262 {"RX INT1 SEC MIX", NULL, "RX INT1_2 INTERP"},
3265 {"RX INT2_2 MUX", "RX0", "RX_RX0"},
3266 {"RX INT2_2 MUX", "RX1", "RX_RX1"},
3267 {"RX INT2_2 MUX", "RX2", "RX_RX2"},
3268 {"RX INT2_2 MUX", "RX3", "RX_RX3"},
3269 {"RX INT2_2 MUX", "RX4", "RX_RX4"},
3270 {"RX INT2_2 MUX", "RX5", "RX_RX5"},
3271 {"RX INT2_2 INTERP", NULL, "RX INT2_2 MUX"},
3272 {"RX INT2 SEC MIX", NULL, "RX INT2_2 INTERP"},
3274 {"RX INT0_1 INTERP", NULL, "RX INT0_1 MIX1"},
3275 {"RX INT0 SEC MIX", NULL, "RX INT0_1 INTERP"},
3276 {"RX INT0 MIX2", NULL, "RX INT0 SEC MIX"},
3277 {"RX INT0 MIX2", NULL, "RX INT0 MIX2 INP"},
3278 {"RX INT0 DEM MUX", "CLSH_DSM_OUT", "RX INT0 MIX2"},
3279 {"HPHL_OUT", NULL, "RX INT0 DEM MUX"},
3282 {"RX INT1_1 INTERP", NULL, "RX INT1_1 MIX1"},
3283 {"RX INT1 SEC MIX", NULL, "RX INT1_1 INTERP"},
3284 {"RX INT1 MIX2", NULL, "RX INT1 SEC MIX"},
3285 {"RX INT1 MIX2", NULL, "RX INT1 MIX2 INP"},
3286 {"RX INT1 DEM MUX", "CLSH_DSM_OUT", "RX INT1 MIX2"},
3287 {"HPHR_OUT", NULL, "RX INT1 DEM MUX"},
3290 {"RX INT2_1 INTERP", NULL, "RX INT2_1 MIX1"},
3292 {"RX INT2 SEC MIX", NULL, "RX INT2_1 INTERP"},
3293 {"RX INT2 MIX2", NULL, "RX INT2 SEC MIX"},
3294 {"RX INT2 MIX2", NULL, "RX INT2 MIX2 INP"},
3295 {"AUX_OUT", NULL, "RX INT2 MIX2"},
3392 {"RX INT0 MIX2 INP", "SRC0", "SRC0"},
3393 {"RX INT0 MIX2 INP", "SRC1", "SRC1"},
3394 {"RX INT1 MIX2 INP", "SRC0", "SRC0"},
3395 {"RX INT1 MIX2 INP", "SRC1", "SRC1"},
3396 {"RX INT2 MIX2 INP", "SRC0", "SRC0"},
3397 {"RX INT2 MIX2 INP", "SRC1", "SRC1"},
3402 struct rx_macro *rx = snd_soc_component_get_drvdata(component); in rx_macro_component_probe() local
3404 snd_soc_component_init_regmap(component, rx->regmap); in rx_macro_component_probe()
3425 rx->component = component; in rx_macro_component_probe()
3432 struct rx_macro *rx = to_rx_macro(hw); in swclk_gate_enable() local
3435 ret = clk_prepare_enable(rx->mclk); in swclk_gate_enable()
3437 dev_err(rx->dev, "unable to prepare mclk\n"); in swclk_gate_enable()
3441 rx_macro_mclk_enable(rx, true); in swclk_gate_enable()
3443 regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL, in swclk_gate_enable()
3451 struct rx_macro *rx = to_rx_macro(hw); in swclk_gate_disable() local
3453 regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL, in swclk_gate_disable()
3456 rx_macro_mclk_enable(rx, false); in swclk_gate_disable()
3457 clk_disable_unprepare(rx->mclk); in swclk_gate_disable()
3462 struct rx_macro *rx = to_rx_macro(hw); in swclk_gate_is_enabled() local
3465 regmap_read(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL, &val); in swclk_gate_is_enabled()
3485 static int rx_macro_register_mclk_output(struct rx_macro *rx) in rx_macro_register_mclk_output() argument
3487 struct device *dev = rx->dev; in rx_macro_register_mclk_output()
3489 const char *clk_name = "lpass-rx-mclk"; in rx_macro_register_mclk_output()
3494 if (rx->npl) in rx_macro_register_mclk_output()
3495 parent_clk_name = __clk_get_name(rx->npl); in rx_macro_register_mclk_output()
3497 parent_clk_name = __clk_get_name(rx->mclk); in rx_macro_register_mclk_output()
3504 rx->hw.init = &init; in rx_macro_register_mclk_output()
3505 hw = &rx->hw; in rx_macro_register_mclk_output()
3506 ret = devm_clk_hw_register(rx->dev, hw); in rx_macro_register_mclk_output()
3514 .name = "RX-MACRO",
3528 struct rx_macro *rx; in rx_macro_probe() local
3534 rx = devm_kzalloc(dev, sizeof(*rx), GFP_KERNEL); in rx_macro_probe()
3535 if (!rx) in rx_macro_probe()
3538 rx->macro = devm_clk_get_optional(dev, "macro"); in rx_macro_probe()
3539 if (IS_ERR(rx->macro)) in rx_macro_probe()
3540 return dev_err_probe(dev, PTR_ERR(rx->macro), "unable to get macro clock\n"); in rx_macro_probe()
3542 rx->dcodec = devm_clk_get_optional(dev, "dcodec"); in rx_macro_probe()
3543 if (IS_ERR(rx->dcodec)) in rx_macro_probe()
3544 return dev_err_probe(dev, PTR_ERR(rx->dcodec), "unable to get dcodec clock\n"); in rx_macro_probe()
3546 rx->mclk = devm_clk_get(dev, "mclk"); in rx_macro_probe()
3547 if (IS_ERR(rx->mclk)) in rx_macro_probe()
3548 return dev_err_probe(dev, PTR_ERR(rx->mclk), "unable to get mclk clock\n"); in rx_macro_probe()
3551 rx->npl = devm_clk_get(dev, "npl"); in rx_macro_probe()
3552 if (IS_ERR(rx->npl)) in rx_macro_probe()
3553 return dev_err_probe(dev, PTR_ERR(rx->npl), "unable to get npl clock\n"); in rx_macro_probe()
3556 rx->fsgen = devm_clk_get(dev, "fsgen"); in rx_macro_probe()
3557 if (IS_ERR(rx->fsgen)) in rx_macro_probe()
3558 return dev_err_probe(dev, PTR_ERR(rx->fsgen), "unable to get fsgen clock\n"); in rx_macro_probe()
3560 rx->pds = lpass_macro_pds_init(dev); in rx_macro_probe()
3561 if (IS_ERR(rx->pds)) in rx_macro_probe()
3562 return PTR_ERR(rx->pds); in rx_macro_probe()
3570 rx->regmap = devm_regmap_init_mmio(dev, base, &rx_regmap_config); in rx_macro_probe()
3571 if (IS_ERR(rx->regmap)) { in rx_macro_probe()
3572 ret = PTR_ERR(rx->regmap); in rx_macro_probe()
3576 dev_set_drvdata(dev, rx); in rx_macro_probe()
3578 rx->dev = dev; in rx_macro_probe()
3581 clk_set_rate(rx->mclk, MCLK_FREQ); in rx_macro_probe()
3582 clk_set_rate(rx->npl, MCLK_FREQ); in rx_macro_probe()
3584 ret = clk_prepare_enable(rx->macro); in rx_macro_probe()
3588 ret = clk_prepare_enable(rx->dcodec); in rx_macro_probe()
3592 ret = clk_prepare_enable(rx->mclk); in rx_macro_probe()
3596 ret = clk_prepare_enable(rx->npl); in rx_macro_probe()
3600 ret = clk_prepare_enable(rx->fsgen); in rx_macro_probe()
3605 regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL, in rx_macro_probe()
3609 regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL, in rx_macro_probe()
3612 regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL, in rx_macro_probe()
3628 ret = rx_macro_register_mclk_output(rx); in rx_macro_probe()
3635 clk_disable_unprepare(rx->fsgen); in rx_macro_probe()
3637 clk_disable_unprepare(rx->npl); in rx_macro_probe()
3639 clk_disable_unprepare(rx->mclk); in rx_macro_probe()
3641 clk_disable_unprepare(rx->dcodec); in rx_macro_probe()
3643 clk_disable_unprepare(rx->macro); in rx_macro_probe()
3645 lpass_macro_pds_exit(rx->pds); in rx_macro_probe()
3652 struct rx_macro *rx = dev_get_drvdata(&pdev->dev); in rx_macro_remove() local
3654 clk_disable_unprepare(rx->mclk); in rx_macro_remove()
3655 clk_disable_unprepare(rx->npl); in rx_macro_remove()
3656 clk_disable_unprepare(rx->fsgen); in rx_macro_remove()
3657 clk_disable_unprepare(rx->macro); in rx_macro_remove()
3658 clk_disable_unprepare(rx->dcodec); in rx_macro_remove()
3660 lpass_macro_pds_exit(rx->pds); in rx_macro_remove()
3665 .compatible = "qcom,sc7280-lpass-rx-macro",
3669 .compatible = "qcom,sm8250-lpass-rx-macro",
3672 .compatible = "qcom,sm8450-lpass-rx-macro",
3675 .compatible = "qcom,sm8550-lpass-rx-macro",
3677 .compatible = "qcom,sc8280xp-lpass-rx-macro",
3686 struct rx_macro *rx = dev_get_drvdata(dev); in rx_macro_runtime_suspend() local
3688 regcache_cache_only(rx->regmap, true); in rx_macro_runtime_suspend()
3689 regcache_mark_dirty(rx->regmap); in rx_macro_runtime_suspend()
3691 clk_disable_unprepare(rx->fsgen); in rx_macro_runtime_suspend()
3692 clk_disable_unprepare(rx->npl); in rx_macro_runtime_suspend()
3693 clk_disable_unprepare(rx->mclk); in rx_macro_runtime_suspend()
3700 struct rx_macro *rx = dev_get_drvdata(dev); in rx_macro_runtime_resume() local
3703 ret = clk_prepare_enable(rx->mclk); in rx_macro_runtime_resume()
3709 ret = clk_prepare_enable(rx->npl); in rx_macro_runtime_resume()
3715 ret = clk_prepare_enable(rx->fsgen); in rx_macro_runtime_resume()
3720 regcache_cache_only(rx->regmap, false); in rx_macro_runtime_resume()
3721 regcache_sync(rx->regmap); in rx_macro_runtime_resume()
3725 clk_disable_unprepare(rx->npl); in rx_macro_runtime_resume()
3727 clk_disable_unprepare(rx->mclk); in rx_macro_runtime_resume()
3749 MODULE_DESCRIPTION("RX macro driver");