On Thu, Jul 27, 2023 at 06:43:53PM +0800, Brent Lu wrote: > Implement a helper function to get number of codecs from ACPI > subsystem to remove the need of quirk flag in machine driver. ... > static int max_98390_hw_params(struct snd_pcm_substream *substream, > struct snd_pcm_hw_params *params) > { > struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); > struct snd_soc_dai *codec_dai; > + int i, ret = 0; Redundant assignment. > for_each_rtd_codec_dais(rtd, i, codec_dai) { > + if (i >= ARRAY_SIZE(max_98390_tdm_mask)) { > dev_err(codec_dai->dev, "invalid codec index %d\n", i); > return -ENODEV; > } > > + ret = snd_soc_dai_set_tdm_slot(codec_dai, max_98390_tdm_mask[i].tx, > + max_98390_tdm_mask[i].rx, 4, > + params_width(params)); > + if (ret < 0) { > + dev_err(codec_dai->dev, "fail to set tdm slot, ret %d\n", > + ret); > + return ret; > } > } > return 0; > } ... > + case 2: > + /* add regular speakers dapm route */ > + ret = snd_soc_dapm_add_routes(&card->dapm, max_98390_dapm_routes, > + ARRAY_SIZE(max_98390_dapm_routes)); > + if (ret) { > + dev_err(rtd->dev, "unable to add dapm routes, ret %d\n", > + ret); > + return ret; > + } > + break; > + default: > + dev_err(rtd->dev, "invalid codec number %d\n", num_codecs); > + ret = -EINVAL; > + break; You can return -EINVAL; > } > + > return ret; ... > +#define MAX_98390_ACPI_HID "MX98390" > +#define MAX_98390_DEV0_NAME "i2c-MX98390:00" > +#define MAX_98390_DEV1_NAME "i2c-MX98390:01" > +#define MAX_98390_DEV2_NAME "i2c-MX98390:02" > +#define MAX_98390_DEV3_NAME "i2c-MX98390:03" Maybe (maybe, don't know subsystem preferences) #define MAX_98390_DEV0_NAME "i2c-" MAX_98390_ACPI_HID ":00" #define MAX_98390_DEV1_NAME "i2c-" MAX_98390_ACPI_HID ":01" #define MAX_98390_DEV2_NAME "i2c-" MAX_98390_ACPI_HID ":02" #define MAX_98390_DEV3_NAME "i2c-" MAX_98390_ACPI_HID ":03" -- With Best Regards, Andy Shevchenko