Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0f75b77 authored by Sudheer Papothi's avatar Sudheer Papothi
Browse files

ASoC: bolero: check for port validation before configuration



Check for valid port before mux configuration.

Change-Id: Iaa32925f0c23305a2a3cedd0e476372aac380e0c
Signed-off-by: default avatarSudheer Papothi <spapothi@codeaurora.org>
parent 1fc4ce67
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -1810,14 +1810,23 @@ static int rx_macro_mux_put(struct snd_kcontrol *kcontrol,
			dev_err(rx_dev, "%s:AIF reset already\n", __func__);
			return 0;
		}
		if (aif_rst > RX_MACRO_AIF4_PB) {
			dev_err(rx_dev, "%s: Invalid AIF reset\n", __func__);
			return 0;
		}
	}
	rx_priv->rx_port_value[widget->shift] = rx_port_value;

	dev_dbg(rx_dev, "%s: mux input: %d, mux output: %d, aif_rst: %d\n",
		__func__, rx_port_value, widget->shift, aif_rst);

	switch (rx_port_value) {
	case 0:
		if (rx_priv->active_ch_cnt[aif_rst]) {
			clear_bit(widget->shift,
				&rx_priv->active_ch_mask[aif_rst]);
			rx_priv->active_ch_cnt[aif_rst]--;
		}
		break;
	case 1:
	case 2:
@@ -1829,7 +1838,8 @@ static int rx_macro_mux_put(struct snd_kcontrol *kcontrol,
		break;
	default:
		dev_err(component->dev,
			"%s:Invalid AIF_ID for RX_MACRO MUX\n", __func__);
			"%s:Invalid AIF_ID for RX_MACRO MUX %d\n",
			__func__, rx_port_value);
		goto err;
	}

+15 −4
Original line number Diff line number Diff line
@@ -2057,6 +2057,10 @@ static int wsa_macro_rx_mux_put(struct snd_kcontrol *kcontrol,
			dev_err(wsa_dev, "%s: AIF reset already\n", __func__);
			return 0;
		}
		if (aif_rst >= WSA_MACRO_RX_MAX) {
			dev_err(wsa_dev, "%s: Invalid AIF reset\n", __func__);
			return 0;
		}
	}
	wsa_priv->rx_port_value[widget->shift] = rx_port_value;

@@ -2064,11 +2068,17 @@ static int wsa_macro_rx_mux_put(struct snd_kcontrol *kcontrol,
	if (widget->shift >= WSA_MACRO_RX_MIX)
		bit_input %= WSA_MACRO_RX_MIX;

	dev_dbg(wsa_dev,
		"%s: mux input: %d, mux output: %d, bit: %d\n",
		__func__, rx_port_value, widget->shift, bit_input);

	switch (rx_port_value) {
	case 0:
		if (wsa_priv->active_ch_cnt[aif_rst]) {
			clear_bit(bit_input,
				  &wsa_priv->active_ch_mask[aif_rst]);
			wsa_priv->active_ch_cnt[aif_rst]--;
		}
		break;
	case 1:
	case 2:
@@ -2078,7 +2088,8 @@ static int wsa_macro_rx_mux_put(struct snd_kcontrol *kcontrol,
		break;
	default:
		dev_err(wsa_dev,
			"%s: Invalid AIF_ID for WSA RX MUX\n", __func__);
			"%s: Invalid AIF_ID for WSA RX MUX %d\n",
			__func__, rx_port_value);
		return -EINVAL;
	}