static int max98505_dai_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { struct snd_soc_codec *codec = dai->codec; struct max98505_priv *max98505 = snd_soc_codec_get_drvdata(codec); struct max98505_cdata *cdata; unsigned int rate; msg_maxim("enter"); cdata = &max98505->dai[0]; rate = params_rate(params); switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: msg_maxim("set SNDRV_PCM_FORMAT_S16_LE"); regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, MAX98505_DAI_CHANSZ_MASK, MAX98505_DAI_CHANSZ_16); break; case SNDRV_PCM_FORMAT_S24_LE: msg_maxim("set SNDRV_PCM_FORMAT_S24_LE"); regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, MAX98505_DAI_CHANSZ_MASK, MAX98505_DAI_CHANSZ_32); msg_maxim("(really set to 32 bits)"); break; case SNDRV_PCM_FORMAT_S32_LE: msg_maxim("set SNDRV_PCM_FORMAT_S32_LE"); regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, MAX98505_DAI_CHANSZ_MASK, MAX98505_DAI_CHANSZ_32); break; default: msg_maxim("format unsupported %d", params_format(params)); return -EINVAL; } return max98505_set_clock(max98505, rate); }
static int max98505_dai_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { struct snd_soc_codec *codec = dai->codec; struct max98505_priv *max98505 = snd_soc_codec_get_drvdata(codec); struct max98505_cdata *cdata; unsigned int rate; pr_info("%s: enter\n", __func__); cdata = &max98505->dai[0]; rate = params_rate(params); switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: pr_info("%s: set SNDRV_PCM_FORMAT_S16_LE\n", __func__); regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, M98505_DAI_CHANSZ_MASK, M98505_DAI_CHANSZ_16); break; case SNDRV_PCM_FORMAT_S24_LE: pr_info("%s: set SNDRV_PCM_FORMAT_S24_LE\n", __func__); #ifdef RIVER regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, M98505_DAI_CHANSZ_MASK, M98505_DAI_CHANSZ_32); pr_info("%s: (really set to 32 bits)\n", __func__); #else regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, M98505_DAI_CHANSZ_MASK, M98505_DAI_CHANSZ_24); #endif break; case SNDRV_PCM_FORMAT_S32_LE: pr_info("%s: set SNDRV_PCM_FORMAT_S32_LE\n", __func__); regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, M98505_DAI_CHANSZ_MASK, M98505_DAI_CHANSZ_32); break; default: pr_info("%s: format unsupported %d but skip", __func__, params_format(params)); regmap_update_bits(max98505->regmap, MAX98505_R020_FORMAT, M98505_DAI_CHANSZ_MASK, M98505_DAI_CHANSZ_16); } return max98505_set_clock(max98505, rate); }