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

Commit 8766446f authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "asoc: add support for assigning SLIMbus device ID dynamically"

parents 83a370dc 4052afe2
Loading
Loading
Loading
Loading
+28 −16
Original line number Diff line number Diff line
@@ -2241,22 +2241,6 @@ static int msm_dai_q6_slim_bus_hw_params(struct snd_pcm_hw_params *params,
	dai_data->port_config.slim_sch.sample_rate = dai_data->rate;
	dai_data->port_config.slim_sch.num_channels = dai_data->channels;

	switch (dai->id) {
	case SLIMBUS_7_RX:
	case SLIMBUS_7_TX:
	case SLIMBUS_8_RX:
	case SLIMBUS_8_TX:
	case SLIMBUS_9_RX:
	case SLIMBUS_9_TX:
		dai_data->port_config.slim_sch.slimbus_dev_id =
			AFE_SLIMBUS_DEVICE_2;
		break;
	default:
		dai_data->port_config.slim_sch.slimbus_dev_id =
			AFE_SLIMBUS_DEVICE_1;
		break;
	}

	dev_dbg(dai->dev, "%s:slimbus_dev_id[%hu] bit_wd[%hu] format[%hu]\n"
		"num_channel %hu  shared_ch_mapping[0]  %hu\n"
		"slave_port_mapping[1]  %hu slave_port_mapping[2]  %hu\n"
@@ -3509,6 +3493,31 @@ static const struct snd_kcontrol_new avd_drift_config_controls[] = {
		.get	= msm_dai_q6_slim_rx_drift_get,
	},
};

static inline void msm_dai_q6_set_slim_dev_id(struct snd_soc_dai *dai)
{
	int rc = 0;
	int slim_dev_id = 0;
	const char *q6_slim_dev_id = "qcom,msm-dai-q6-slim-dev-id";
	struct msm_dai_q6_dai_data *dai_data = dev_get_drvdata(dai->dev);

	dai_data->port_config.slim_sch.slimbus_dev_id = AFE_SLIMBUS_DEVICE_1;

	rc = of_property_read_u32(dai->dev->of_node, q6_slim_dev_id,
				  &slim_dev_id);
	if (rc) {
		dev_dbg(dai->dev,
			"%s: missing %s in dt node\n", __func__, q6_slim_dev_id);
		return;
	}

	dev_dbg(dai->dev, "%s: slim_dev_id = %d\n", __func__, slim_dev_id);

	if (slim_dev_id >= AFE_SLIMBUS_DEVICE_1 &&
	    slim_dev_id <= AFE_SLIMBUS_DEVICE_2)
		dai_data->port_config.slim_sch.slimbus_dev_id = slim_dev_id;
}

static int msm_dai_q6_dai_probe(struct snd_soc_dai *dai)
{
	struct msm_dai_q6_dai_data *dai_data;
@@ -3532,6 +3541,9 @@ static int msm_dai_q6_dai_probe(struct snd_soc_dai *dai)

	msm_dai_q6_set_dai_id(dai);

	if ((dai->id >= SLIMBUS_0_RX) && (dai->id <= SLIMBUS_9_TX))
		msm_dai_q6_set_slim_dev_id(dai);

	switch (dai->id) {
	case SLIMBUS_4_TX:
		rc = snd_ctl_add(dai->component->card->snd_card,