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

Commit 6846e18a authored by Rasmus Villemoes's avatar Rasmus Villemoes Committed by Mark Brown
Browse files

ASoC: Intel: mrfld: simplify sst_fill_widget_module_info



Some tiny improvements, cutting 180 bytes off the generated code.

- use strchr() for single-character needle

- compute index using pointer subtraction instead of two strlen()
  calls

- factor out the common check for whether the initial part of
  kctl->id.name (before the space) is identical to w->name.

Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
Tested-by: default avatarFang, Yang A <yang.a.fang@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent fd35e375
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -1401,36 +1401,32 @@ static int sst_fill_widget_module_info(struct snd_soc_dapm_widget *w,
	down_read(&card->controls_rwsem);

	list_for_each_entry(kctl, &card->controls, list) {
		idx = strstr(kctl->id.name, " ");
		idx = strchr(kctl->id.name, ' ');
		if (idx == NULL)
			continue;
		index  = strlen(kctl->id.name) - strlen(idx);
		index = idx - (char*)kctl->id.name;
		if (strncmp(kctl->id.name, w->name, index))
			continue;

		if (strstr(kctl->id.name, "Volume") &&
		    !strncmp(kctl->id.name, w->name, index))
		if (strstr(kctl->id.name, "Volume"))
			ret = sst_fill_module_list(kctl, w, SST_MODULE_GAIN);

		else if (strstr(kctl->id.name, "params") &&
			 !strncmp(kctl->id.name, w->name, index))
		else if (strstr(kctl->id.name, "params"))
			ret = sst_fill_module_list(kctl, w, SST_MODULE_ALGO);

		else if (strstr(kctl->id.name, "Switch") &&
			 !strncmp(kctl->id.name, w->name, index) &&
			 strstr(kctl->id.name, "Gain")) {
			struct sst_gain_mixer_control *mc =
						(void *)kctl->private_value;

			mc->w = w;

		} else if (strstr(kctl->id.name, "interleaver") &&
			 !strncmp(kctl->id.name, w->name, index)) {
		} else if (strstr(kctl->id.name, "interleaver")) {
			struct sst_enum *e = (void *)kctl->private_value;

			e->w = w;

		} else if (strstr(kctl->id.name, "deinterleaver") &&
			 !strncmp(kctl->id.name, w->name, index)) {

		} else if (strstr(kctl->id.name, "deinterleaver")) {
			struct sst_enum *e = (void *)kctl->private_value;

			e->w = w;