Unverified Commit fd660b1b authored by Amadeusz Sławiński's avatar Amadeusz Sławiński Committed by Mark Brown
Browse files

ASoC: Intel: avs: Fix route override

parent 97ab304e
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -1545,8 +1545,8 @@ static int avs_route_load(struct snd_soc_component *comp, int index,
{
	struct snd_soc_acpi_mach *mach = dev_get_platdata(comp->card->dev);
	size_t len = SNDRV_CTL_ELEM_ID_NAME_MAXLEN;
	char buf[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
	int ssp_port, tdm_slot;
	char *buf;

	/* See parse_link_formatted_string() for dynamic naming when(s). */
	if (!avs_mach_singular_ssp(mach))
@@ -1557,13 +1557,24 @@ static int avs_route_load(struct snd_soc_component *comp, int index,
		return 0;
	tdm_slot = avs_mach_ssp_tdm(mach, ssp_port);

	buf = devm_kzalloc(comp->card->dev, len, GFP_KERNEL);
	if (!buf)
		return -ENOMEM;
	avs_ssp_sprint(buf, len, route->source, ssp_port, tdm_slot);
	strscpy((char *)route->source, buf, len);
	route->source = buf;

	buf = devm_kzalloc(comp->card->dev, len, GFP_KERNEL);
	if (!buf)
		return -ENOMEM;
	avs_ssp_sprint(buf, len, route->sink, ssp_port, tdm_slot);
	strscpy((char *)route->sink, buf, len);
	route->sink = buf;

	if (route->control) {
		buf = devm_kzalloc(comp->card->dev, len, GFP_KERNEL);
		if (!buf)
			return -ENOMEM;
		avs_ssp_sprint(buf, len, route->control, ssp_port, tdm_slot);
		strscpy((char *)route->control, buf, len);
		route->control = buf;
	}

	return 0;