From 8b9920e3f4019313803419923b8c5c486fa82d84 Mon Sep 17 00:00:00 2001 From: Bo Shen Date: Mon, 9 Jun 2014 11:31:44 +0800 Subject: [PATCH 01/62] ASoC: wm8904: switch to CCF Enable WM8904 to support common clock framework. Signed-off-by: Bo Shen Signed-off-by: Mark Brown --- sound/soc/codecs/wm8904.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index f7c549949c542..da46c2ad05666 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include @@ -49,6 +50,7 @@ static const char *wm8904_supply_names[WM8904_NUM_SUPPLIES] = { /* codec private data */ struct wm8904_priv { struct regmap *regmap; + struct clk *mclk; enum wm8904_type devtype; @@ -1828,6 +1830,7 @@ static int wm8904_set_bias_level(struct snd_soc_codec *codec, switch (level) { case SND_SOC_BIAS_ON: + clk_prepare_enable(wm8904->mclk); break; case SND_SOC_BIAS_PREPARE: @@ -1894,6 +1897,7 @@ static int wm8904_set_bias_level(struct snd_soc_codec *codec, regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies); + clk_disable_unprepare(wm8904->mclk); break; } codec->dapm.bias_level = level; @@ -2110,6 +2114,13 @@ static int wm8904_i2c_probe(struct i2c_client *i2c, if (wm8904 == NULL) return -ENOMEM; + wm8904->mclk = devm_clk_get(&i2c->dev, "mclk"); + if (IS_ERR(wm8904->mclk)) { + ret = PTR_ERR(wm8904->mclk); + dev_err(&i2c->dev, "Failed to get MCLK\n"); + return ret; + } + wm8904->regmap = devm_regmap_init_i2c(i2c, &wm8904_regmap); if (IS_ERR(wm8904->regmap)) { ret = PTR_ERR(wm8904->regmap); From 8bfcab7c6b44038993fb1a7771ae0ce5d1bf6ea3 Mon Sep 17 00:00:00 2001 From: Bo Shen Date: Mon, 9 Jun 2014 11:31:45 +0800 Subject: [PATCH 02/62] dt: wm8904: add device tree binding document Signed-off-by: Bo Shen Signed-off-by: Mark Brown --- .../devicetree/bindings/sound/wm8904.txt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/wm8904.txt diff --git a/Documentation/devicetree/bindings/sound/wm8904.txt b/Documentation/devicetree/bindings/sound/wm8904.txt new file mode 100644 index 0000000000000..e99f4097c83c4 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/wm8904.txt @@ -0,0 +1,33 @@ +WM8904 audio CODEC + +This device supports I2C only. + +Required properties: + - compatible: "wlf,wm8904" + - reg: the I2C address of the device. + - clock-names: "mclk" + - clocks: reference to + + +Pins on the device (for linking into audio routes): + + * IN1L + * IN1R + * IN2L + * IN2R + * IN3L + * IN3R + * HPOUTL + * HPOUTR + * LINEOUTL + * LINEOUTR + * MICBIAS + +Examples: + +codec: wm8904@1a { + compatible = "wlf,wm8904"; + reg = <0x1a>; + clocks = <&pck0>; + clock-names = "mclk"; +}; From 5bca396919aed5fbed61197019824bd3ff9f127d Mon Sep 17 00:00:00 2001 From: Fabian Frederick Date: Tue, 27 May 2014 08:57:55 +0200 Subject: [PATCH 03/62] ASoC: wm0010.c: add static to local variable Also add const to array text data bss dec hex filename 10946 2904 3528 17378 43e2 sound/soc/codecs/wm0010.o-before 10891 2840 3512 17243 435b sound/soc/codecs/wm0010.o-after Signed-off-by: Fabian Frederick Signed-off-by: Mark Brown --- sound/soc/codecs/wm0010.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index 71ce3159a62e7..65d7c79716a04 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c @@ -144,7 +144,7 @@ static const struct snd_soc_dapm_route wm0010_dapm_routes[] = { static const char *wm0010_state_to_str(enum wm0010_state state) { - const char *state_to_str[] = { + static const char * const state_to_str[] = { "Power off", "Out of reset", "Boot ROM", From 2a11a10abe1b88b86e44480511262c72da97e55a Mon Sep 17 00:00:00 2001 From: Peter Ujfalusi Date: Thu, 26 Jun 2014 08:06:56 +0300 Subject: [PATCH 04/62] ASoC: tlv320aic3x: Add support for S24_LE format The codec need to be configured to 24bit mode in case of S24_LE format. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown --- sound/soc/codecs/tlv320aic3x.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 5360772bc1add..d275890a68279 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -880,6 +880,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream, data |= (0x01 << 4); break; case SNDRV_PCM_FORMAT_S24_3LE: + case SNDRV_PCM_FORMAT_S24_LE: data |= (0x02 << 4); break; case SNDRV_PCM_FORMAT_S32_LE: @@ -1194,7 +1195,8 @@ static int aic3x_set_bias_level(struct snd_soc_codec *codec, #define AIC3X_RATES SNDRV_PCM_RATE_8000_96000 #define AIC3X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ - SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE) + SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \ + SNDRV_PCM_FMTBIT_S32_LE) static const struct snd_soc_dai_ops aic3x_dai_ops = { .hw_params = aic3x_hw_params, From 0caf3eb7213a14b44977d1ca4b69d7f3d7fd474a Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:28:13 +0100 Subject: [PATCH 05/62] ASoC: 88pm860x: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/88pm860x-codec.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/88pm860x-codec.c b/sound/soc/codecs/88pm860x-codec.c index 3c4b10ff48c1c..922006dd0583c 100644 --- a/sound/soc/codecs/88pm860x-codec.c +++ b/sound/soc/codecs/88pm860x-codec.c @@ -945,11 +945,11 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream, unsigned char inf = 0, mask = 0; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: inf &= ~PCM_INF2_18WL; break; - case SNDRV_PCM_FORMAT_S18_3LE: + case 18: inf |= PCM_INF2_18WL; break; default: @@ -1044,11 +1044,11 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream, unsigned char inf; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: inf = 0; break; - case SNDRV_PCM_FORMAT_S18_3LE: + case 18: inf = PCM_INF2_18WL; break; default: From d2a9b1c1f4a339b8f4baf04669e63b094a255bed Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:28:24 +0100 Subject: [PATCH 06/62] ASoC: adau17x1: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Lars-Peter Clausen --- sound/soc/codecs/adau17x1.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/adau17x1.c b/sound/soc/codecs/adau17x1.c index 2961fae9670a5..0b659704e60c0 100644 --- a/sound/soc/codecs/adau17x1.c +++ b/sound/soc/codecs/adau17x1.c @@ -359,14 +359,14 @@ static int adau17x1_hw_params(struct snd_pcm_substream *substream, if (adau->dai_fmt != SND_SOC_DAIFMT_RIGHT_J) return 0; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: val = ADAU17X1_SERIAL_PORT1_DELAY16; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: val = ADAU17X1_SERIAL_PORT1_DELAY8; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: val = ADAU17X1_SERIAL_PORT1_DELAY0; break; default: From b05e16d21251e1ba45af58d4f662b0460c1bdc8c Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:31:44 +0100 Subject: [PATCH 07/62] ASoC: max98088: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/max98088.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c index 9134982807b5d..2cd3e5427441e 100644 --- a/sound/soc/codecs/max98088.c +++ b/sound/soc/codecs/max98088.c @@ -1299,12 +1299,12 @@ static int max98088_dai2_hw_params(struct snd_pcm_substream *substream, rate = params_rate(params); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: snd_soc_update_bits(codec, M98088_REG_1C_DAI2_FORMAT, M98088_DAI_WS, 0); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: snd_soc_update_bits(codec, M98088_REG_1C_DAI2_FORMAT, M98088_DAI_WS, M98088_DAI_WS); break; From 1ae1f3a20016c202f0570306ca73942d7b1871d6 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:31:56 +0100 Subject: [PATCH 08/62] ASoC: max98095: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/max98095.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/max98095.c b/sound/soc/codecs/max98095.c index 89ec00424880f..0ee6797d50839 100644 --- a/sound/soc/codecs/max98095.c +++ b/sound/soc/codecs/max98095.c @@ -1280,12 +1280,12 @@ static int max98095_dai2_hw_params(struct snd_pcm_substream *substream, rate = params_rate(params); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: snd_soc_update_bits(codec, M98095_034_DAI2_FORMAT, M98095_DAI_WS, 0); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: snd_soc_update_bits(codec, M98095_034_DAI2_FORMAT, M98095_DAI_WS, M98095_DAI_WS); break; @@ -1341,12 +1341,12 @@ static int max98095_dai3_hw_params(struct snd_pcm_substream *substream, rate = params_rate(params); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: snd_soc_update_bits(codec, M98095_03E_DAI3_FORMAT, M98095_DAI_WS, 0); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: snd_soc_update_bits(codec, M98095_03E_DAI3_FORMAT, M98095_DAI_WS, M98095_DAI_WS); break; From e6777ead100d92db92d1e00b5e5ea4a688391719 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:32:12 +0100 Subject: [PATCH 09/62] ASoC: rt5631: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/rt5631.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c index 30e2347085794..1ba27db660a60 100644 --- a/sound/soc/codecs/rt5631.c +++ b/sound/soc/codecs/rt5631.c @@ -1370,16 +1370,16 @@ static int rt5631_hifi_pcm_params(struct snd_pcm_substream *substream, return coeff; } - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= RT5631_SDP_I2S_DL_20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= RT5631_SDP_I2S_DL_24; break; - case SNDRV_PCM_FORMAT_S8: + case 8: iface |= RT5631_SDP_I2S_DL_8; break; default: From 794f33d2fb9823adbcd99d002ea3f9eb4379ae4d Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:33:41 +0100 Subject: [PATCH 10/62] ASoC: rt5651: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/rt5651.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c index ea4b1c652a26c..bb0a3ab5416cb 100644 --- a/sound/soc/codecs/rt5651.c +++ b/sound/soc/codecs/rt5651.c @@ -1366,16 +1366,16 @@ static int rt5651_hw_params(struct snd_pcm_substream *substream, dev_dbg(dai->dev, "bclk_ms is %d and pre_div is %d for iis %d\n", bclk_ms, pre_div, dai->id); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: val_len |= RT5651_I2S_DL_20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: val_len |= RT5651_I2S_DL_24; break; - case SNDRV_PCM_FORMAT_S8: + case 8: val_len |= RT5651_I2S_DL_8; break; default: From dacc2aefcc8bf019af0d559561339dfef8829a10 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:46:05 +0100 Subject: [PATCH 11/62] ASoC: sgtl5000: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/sgtl5000.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 3d39f0b5b4a8a..a0e1f9c67ab28 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -724,25 +724,25 @@ static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream, return ret; /* set i2s data format */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: if (sgtl5000->fmt == SND_SOC_DAIFMT_RIGHT_J) return -EINVAL; i2s_ctl |= SGTL5000_I2S_DLEN_16 << SGTL5000_I2S_DLEN_SHIFT; i2s_ctl |= SGTL5000_I2S_SCLKFREQ_32FS << SGTL5000_I2S_SCLKFREQ_SHIFT; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: i2s_ctl |= SGTL5000_I2S_DLEN_20 << SGTL5000_I2S_DLEN_SHIFT; i2s_ctl |= SGTL5000_I2S_SCLKFREQ_64FS << SGTL5000_I2S_SCLKFREQ_SHIFT; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: i2s_ctl |= SGTL5000_I2S_DLEN_24 << SGTL5000_I2S_DLEN_SHIFT; i2s_ctl |= SGTL5000_I2S_SCLKFREQ_64FS << SGTL5000_I2S_SCLKFREQ_SHIFT; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: if (sgtl5000->fmt == SND_SOC_DAIFMT_RIGHT_J) return -EINVAL; i2s_ctl |= SGTL5000_I2S_DLEN_32 << SGTL5000_I2S_DLEN_SHIFT; From 0a49f706be520e01cfb4dd17134358cd603d4d8a Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:46:36 +0100 Subject: [PATCH 12/62] ASoC: si476x: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/si476x.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/si476x.c b/sound/soc/codecs/si476x.c index f26befb0c297d..cdf882fa7716e 100644 --- a/sound/soc/codecs/si476x.c +++ b/sound/soc/codecs/si476x.c @@ -167,17 +167,17 @@ static int si476x_codec_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S8: + switch (params_width(params)) { + case 8: width = SI476X_PCM_FORMAT_S8; break; - case SNDRV_PCM_FORMAT_S16_LE: + case 16: width = SI476X_PCM_FORMAT_S16_LE; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: width = SI476X_PCM_FORMAT_S20_3LE; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: width = SI476X_PCM_FORMAT_S24_LE; break; default: From 9519dd4c1f6386943cb84ef71009b8d372edb3ac Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:46:50 +0100 Subject: [PATCH 13/62] ASoC: sn95031: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/sn95031.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/sn95031.c b/sound/soc/codecs/sn95031.c index 42dff26b3a2af..cf8fa40662f04 100644 --- a/sound/soc/codecs/sn95031.c +++ b/sound/soc/codecs/sn95031.c @@ -661,12 +661,12 @@ static int sn95031_pcm_hw_params(struct snd_pcm_substream *substream, { unsigned int format, rate; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: format = BIT(4)|BIT(5); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: format = 0; break; default: From 737e0f89ed830cc48115140f8e494f5fe9dd7abe Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:47:24 +0100 Subject: [PATCH 14/62] ASoC: sta32x: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/sta32x.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/sound/soc/codecs/sta32x.c b/sound/soc/codecs/sta32x.c index 0579d187135b1..48740855566d7 100644 --- a/sound/soc/codecs/sta32x.c +++ b/sound/soc/codecs/sta32x.c @@ -678,15 +678,11 @@ static int sta32x_hw_params(struct snd_pcm_substream *substream, confb = snd_soc_read(codec, STA32X_CONFB); confb &= ~(STA32X_CONFB_SAI_MASK | STA32X_CONFB_SAIFB); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S24_LE: - case SNDRV_PCM_FORMAT_S24_BE: - case SNDRV_PCM_FORMAT_S24_3LE: - case SNDRV_PCM_FORMAT_S24_3BE: + switch (params_width(params)) { + case 24: pr_debug("24bit\n"); /* fall through */ - case SNDRV_PCM_FORMAT_S32_LE: - case SNDRV_PCM_FORMAT_S32_BE: + case 32: pr_debug("24bit or 32bit\n"); switch (sta32x->format) { case SND_SOC_DAIFMT_I2S: @@ -701,8 +697,7 @@ static int sta32x_hw_params(struct snd_pcm_substream *substream, } break; - case SNDRV_PCM_FORMAT_S20_3LE: - case SNDRV_PCM_FORMAT_S20_3BE: + case 20: pr_debug("20bit\n"); switch (sta32x->format) { case SND_SOC_DAIFMT_I2S: @@ -717,8 +712,7 @@ static int sta32x_hw_params(struct snd_pcm_substream *substream, } break; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: + case 18: pr_debug("18bit\n"); switch (sta32x->format) { case SND_SOC_DAIFMT_I2S: @@ -733,8 +727,7 @@ static int sta32x_hw_params(struct snd_pcm_substream *substream, } break; - case SNDRV_PCM_FORMAT_S16_LE: - case SNDRV_PCM_FORMAT_S16_BE: + case 16: pr_debug("16bit\n"); switch (sta32x->format) { case SND_SOC_DAIFMT_I2S: From 1f9ffcb0be08f83006f2d3c7e841d8ba7cdd1a9b Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:47:32 +0100 Subject: [PATCH 15/62] ASoC: sta529: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/sta529.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/sta529.c b/sound/soc/codecs/sta529.c index a40c4b0196a3c..7ece89b246749 100644 --- a/sound/soc/codecs/sta529.c +++ b/sound/soc/codecs/sta529.c @@ -197,16 +197,16 @@ static int sta529_hw_params(struct snd_pcm_substream *substream, int pdata, play_freq_val, record_freq_val; int bclk_to_fs_ratio; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: pdata = 1; bclk_to_fs_ratio = 0; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: pdata = 2; bclk_to_fs_ratio = 1; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: pdata = 3; bclk_to_fs_ratio = 2; break; From 560cfb14c6d7f219904ba4b81c0a581ffd7870ea Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:47:05 +0100 Subject: [PATCH 16/62] ASoC: ssm2518: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Lars-Peter Clausen --- sound/soc/codecs/ssm2518.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/ssm2518.c b/sound/soc/codecs/ssm2518.c index 56adb3e2def9c..e8680bea5f863 100644 --- a/sound/soc/codecs/ssm2518.c +++ b/sound/soc/codecs/ssm2518.c @@ -361,11 +361,11 @@ static int ssm2518_hw_params(struct snd_pcm_substream *substream, return -EINVAL; if (ssm2518->right_j) { - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: ctrl1 |= SSM2518_SAI_CTRL1_FMT_RJ_16BIT; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: ctrl1 |= SSM2518_SAI_CTRL1_FMT_RJ_24BIT; break; default: From 00a37032a099572302ae89c893bd5c90b924c537 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:47:13 +0100 Subject: [PATCH 17/62] ASoC: ssm2602: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Lars-Peter Clausen --- sound/soc/codecs/ssm2602.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c index 97b0454eb346b..484b3bbe8624b 100644 --- a/sound/soc/codecs/ssm2602.c +++ b/sound/soc/codecs/ssm2602.c @@ -275,17 +275,17 @@ static int ssm2602_hw_params(struct snd_pcm_substream *substream, regmap_write(ssm2602->regmap, SSM2602_SRATE, srate); /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: iface = 0x0; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface = 0x4; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface = 0x8; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface = 0xc; break; default: From c665330c1951618d824b7789434b4de843681f07 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:47:45 +0100 Subject: [PATCH 18/62] ASoC: tas5086: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/tas5086.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c index d48491a4a19db..9871cf374055e 100644 --- a/sound/soc/codecs/tas5086.c +++ b/sound/soc/codecs/tas5086.c @@ -419,14 +419,14 @@ static int tas5086_hw_params(struct snd_pcm_substream *substream, } /* ... then add the offset for the sample bit depth. */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: val += 0; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: val += 1; break; - case SNDRV_PCM_FORMAT_S24_3LE: + case 24: val += 2; break; default: From 93d0ad8f374c59aa9f72493b8c5fcae303ca09ca Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:48:04 +0100 Subject: [PATCH 19/62] ASoC: tlv320aic26: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/tlv320aic26.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/tlv320aic26.c b/sound/soc/codecs/tlv320aic26.c index 43069de3d56ac..620ab9ea1ef0e 100644 --- a/sound/soc/codecs/tlv320aic26.c +++ b/sound/soc/codecs/tlv320aic26.c @@ -71,8 +71,8 @@ static int aic26_hw_params(struct snd_pcm_substream *substream, dev_dbg(&aic26->spi->dev, "aic26_hw_params(substream=%p, params=%p)\n", substream, params); - dev_dbg(&aic26->spi->dev, "rate=%i format=%i\n", params_rate(params), - params_format(params)); + dev_dbg(&aic26->spi->dev, "rate=%i width=%d\n", params_rate(params), + params_width(params)); switch (params_rate(params)) { case 8000: fsref = 48000; divisor = AIC26_DIV_6; break; @@ -89,11 +89,11 @@ static int aic26_hw_params(struct snd_pcm_substream *substream, } /* select data word length */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S8: wlen = AIC26_WLEN_16; break; - case SNDRV_PCM_FORMAT_S16_BE: wlen = AIC26_WLEN_16; break; - case SNDRV_PCM_FORMAT_S24_BE: wlen = AIC26_WLEN_24; break; - case SNDRV_PCM_FORMAT_S32_BE: wlen = AIC26_WLEN_32; break; + switch (params_width(params)) { + case 8: wlen = AIC26_WLEN_16; break; + case 16: wlen = AIC26_WLEN_16; break; + case 24: wlen = AIC26_WLEN_24; break; + case 32: wlen = AIC26_WLEN_32; break; default: dev_dbg(&aic26->spi->dev, "bad format\n"); return -EINVAL; } From 88be681b46216ef0eef9b82c35571185b95b6568 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:48:13 +0100 Subject: [PATCH 20/62] ASoC: tlv320aic31xx: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/tlv320aic31xx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/tlv320aic31xx.c b/sound/soc/codecs/tlv320aic31xx.c index 23419109ecac1..42f23f382c5d4 100644 --- a/sound/soc/codecs/tlv320aic31xx.c +++ b/sound/soc/codecs/tlv320aic31xx.c @@ -759,8 +759,8 @@ static int aic31xx_hw_params(struct snd_pcm_substream *substream, struct snd_soc_codec *codec = dai->codec; u8 data = 0; - dev_dbg(codec->dev, "## %s: format %d width %d rate %d\n", - __func__, params_format(params), params_width(params), + dev_dbg(codec->dev, "## %s: width %d rate %d\n", + __func__, params_width(params), params_rate(params)); switch (params_width(params)) { @@ -779,8 +779,8 @@ static int aic31xx_hw_params(struct snd_pcm_substream *substream, AIC31XX_IFACE1_DATALEN_SHIFT); break; default: - dev_err(codec->dev, "%s: Unsupported format %d\n", - __func__, params_format(params)); + dev_err(codec->dev, "%s: Unsupported width %d\n", + __func__, params_width(params)); return -EINVAL; } From bd8a571163368627013e9763b9b6d572ba4083b5 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:48:27 +0100 Subject: [PATCH 21/62] ASoC: tlv320aic32x4: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/tlv320aic32x4.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c index 1d9b117345a3a..5d618e50cbf1e 100644 --- a/sound/soc/codecs/tlv320aic32x4.c +++ b/sound/soc/codecs/tlv320aic32x4.c @@ -450,16 +450,16 @@ static int aic32x4_hw_params(struct snd_pcm_substream *substream, data = snd_soc_read(codec, AIC32X4_IFACE1); data = data & ~(3 << 4); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: data |= (AIC32X4_WORD_LEN_20BITS << AIC32X4_DOSRMSB_SHIFT); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: data |= (AIC32X4_WORD_LEN_24BITS << AIC32X4_DOSRMSB_SHIFT); break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: data |= (AIC32X4_WORD_LEN_32BITS << AIC32X4_DOSRMSB_SHIFT); break; } From c60f23cb0a4b12091d92c24d365234968025a08e Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:48:44 +0100 Subject: [PATCH 22/62] ASoC: tlv320dac33: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Peter Ujfalusi --- sound/soc/codecs/tlv320dac33.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c index df3a7506c023b..34f8ff886c33e 100644 --- a/sound/soc/codecs/tlv320dac33.c +++ b/sound/soc/codecs/tlv320dac33.c @@ -832,18 +832,18 @@ static int dac33_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: dac33->fifo_size = DAC33_FIFO_SIZE_16BIT; dac33->burst_rate = CALC_BURST_RATE(dac33->burst_bclkdiv, 32); break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: dac33->fifo_size = DAC33_FIFO_SIZE_24BIT; dac33->burst_rate = CALC_BURST_RATE(dac33->burst_bclkdiv, 64); break; default: - dev_err(codec->dev, "unsupported format %d\n", - params_format(params)); + dev_err(codec->dev, "unsupported width %d\n", + params_width(params)); return -EINVAL; } From 04f630d845d1deb2e1d6f39f7788ff30b686a389 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:49:12 +0100 Subject: [PATCH 23/62] ASoC: twl4030: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Peter Ujfalusi --- sound/soc/codecs/twl4030.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index 69e12a311ba20..6164a7e438964 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c @@ -1764,16 +1764,16 @@ static int twl4030_hw_params(struct snd_pcm_substream *substream, old_format = twl4030_read(codec, TWL4030_REG_AUDIO_IF); format = old_format; format &= ~TWL4030_DATA_WIDTH; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: format |= TWL4030_DATA_WIDTH_16S_16W; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: format |= TWL4030_DATA_WIDTH_32S_24W; break; default: - dev_err(codec->dev, "%s: unknown format %d\n", __func__, - params_format(params)); + dev_err(codec->dev, "%s: unsupported bits/sample %d\n", + __func__, params_width(params)); return -EINVAL; } From aa9ffad68a0a5aa00e7c475e28c9951432d701c4 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:49:26 +0100 Subject: [PATCH 24/62] ASoC: uda134x: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/uda134x.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c index edf27acc1d77d..ad145ba85cd5e 100644 --- a/sound/soc/codecs/uda134x.c +++ b/sound/soc/codecs/uda134x.c @@ -243,14 +243,14 @@ static int uda134x_hw_params(struct snd_pcm_substream *substream, case SND_SOC_DAIFMT_I2S: break; case SND_SOC_DAIFMT_RIGHT_J: - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: hw_params |= (1<<1); break; - case SNDRV_PCM_FORMAT_S18_3LE: + case 18: hw_params |= (1<<2); break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: hw_params |= ((1<<2) | (1<<1)); break; default: From 9630181aac6e709ff248e68474701f763b286c98 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:49:36 +0100 Subject: [PATCH 25/62] ASoC: wl1273: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/wl1273.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/wl1273.c b/sound/soc/codecs/wl1273.c index 4ead0dc02b874..34f64dc281ec6 100644 --- a/sound/soc/codecs/wl1273.c +++ b/sound/soc/codecs/wl1273.c @@ -341,8 +341,9 @@ static int wl1273_hw_params(struct snd_pcm_substream *substream, struct wl1273_core *core = wl1273->core; unsigned int rate, width, r; - if (params_format(params) != SNDRV_PCM_FORMAT_S16_LE) { - pr_err("Only SNDRV_PCM_FORMAT_S16_LE supported.\n"); + if (params_width(params) != 16) { + dev_err(dai->dev, "%d bits/sample not supported\n", + params_width(params)); return -EINVAL; } From 1e6453acda6718992373237a9f8fb36024d30040 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:49:48 +0100 Subject: [PATCH 26/62] ASoC: wm8350: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8350.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c index 392285edb5954..b3053a98db824 100644 --- a/sound/soc/codecs/wm8350.c +++ b/sound/soc/codecs/wm8350.c @@ -918,16 +918,16 @@ static int wm8350_pcm_hw_params(struct snd_pcm_substream *substream, ~WM8350_AIF_WL_MASK; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x1 << 10; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x2 << 10; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x3 << 10; break; } From 6fe12c2fbbb3bf66431fdf75fbdbdc57088f760c Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:49:53 +0100 Subject: [PATCH 27/62] ASoC: wm8400: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8400.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c index 06e913d3fea15..72471bef2e9a5 100644 --- a/sound/soc/codecs/wm8400.c +++ b/sound/soc/codecs/wm8400.c @@ -1095,16 +1095,16 @@ static int wm8400_hw_params(struct snd_pcm_substream *substream, audio1 &= ~WM8400_AIF_WL_MASK; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: audio1 |= WM8400_AIF_WL_20BITS; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: audio1 |= WM8400_AIF_WL_24BITS; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: audio1 |= WM8400_AIF_WL_32BITS; break; } From 19e4b7886bdf997746e53f7ae80a7e5dc9e04c4d Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:50:04 +0100 Subject: [PATCH 28/62] ASoC: wm8510: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8510.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c index 1c1e328feeb86..e11127f9069e9 100644 --- a/sound/soc/codecs/wm8510.c +++ b/sound/soc/codecs/wm8510.c @@ -449,16 +449,16 @@ static int wm8510_pcm_hw_params(struct snd_pcm_substream *substream, u16 adn = snd_soc_read(codec, WM8510_ADD) & 0x1f1; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0020; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0040; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x0060; break; } From 3fafcc8e61f55ab281dfbdb5d0121f090ecd3320 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:02 +0100 Subject: [PATCH 29/62] ASoC: wm8523: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8523.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8523.c b/sound/soc/codecs/wm8523.c index 601ee8178af1c..ec1f5740dbd0b 100644 --- a/sound/soc/codecs/wm8523.c +++ b/sound/soc/codecs/wm8523.c @@ -163,16 +163,16 @@ static int wm8523_hw_params(struct snd_pcm_substream *substream, aifctrl2 |= lrclk_ratios[i].value; aifctrl1 &= ~WM8523_WL_MASK; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: aifctrl1 |= 0x8; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: aifctrl1 |= 0x10; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: aifctrl1 |= 0x18; break; } From 993ba8e5954bc6aeb9d7bc0e4341e4e25edd9a32 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:10 +0100 Subject: [PATCH 30/62] ASoC: wm8580: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8580.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c index 7665ff6aea6de..911605ee25b07 100644 --- a/sound/soc/codecs/wm8580.c +++ b/sound/soc/codecs/wm8580.c @@ -511,19 +511,19 @@ static int wm8580_paif_hw_params(struct snd_pcm_substream *substream, int i, ratio, osr; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: paifa |= 0x8; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: paifa |= 0x0; paifb |= WM8580_AIF_LENGTH_20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: paifa |= 0x0; paifb |= WM8580_AIF_LENGTH_24; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: paifa |= 0x0; paifb |= WM8580_AIF_LENGTH_32; break; From b9abb5485667f05bf9590a31b0ff4d35bf0d91c1 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:18 +0100 Subject: [PATCH 31/62] ASoC: wm8711: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8711.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c index b0fbcb377bafa..32187e739b4f4 100644 --- a/sound/soc/codecs/wm8711.c +++ b/sound/soc/codecs/wm8711.c @@ -169,13 +169,13 @@ static int wm8711_hw_params(struct snd_pcm_substream *substream, snd_soc_write(codec, WM8711_SRATE, srate); /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0008; break; } From 9fbad31a9e3b461dc87b099efdbb7c90036e2260 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:26 +0100 Subject: [PATCH 32/62] ASoC: wm8728: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8728.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/wm8728.c b/sound/soc/codecs/wm8728.c index bac7fc28fe71b..38ff826f589a3 100644 --- a/sound/soc/codecs/wm8728.c +++ b/sound/soc/codecs/wm8728.c @@ -94,13 +94,13 @@ static int wm8728_hw_params(struct snd_pcm_substream *substream, dac &= ~0x18; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: dac |= 0x10; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: dac |= 0x08; break; default: From dfb6778e64c6aef0a763f42b93487ea578670008 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:32 +0100 Subject: [PATCH 33/62] ASoC: wm8731: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8731.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c index 5ada616113240..eebb3280bfad8 100644 --- a/sound/soc/codecs/wm8731.c +++ b/sound/soc/codecs/wm8731.c @@ -348,13 +348,13 @@ static int wm8731_hw_params(struct snd_pcm_substream *substream, snd_soc_write(codec, WM8731_SRATE, srate); /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0008; break; } From a5d0de23b203cc40df7196858b7a6ad546bb8408 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:39 +0100 Subject: [PATCH 34/62] ASoC: wm8737: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8737.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8737.c b/sound/soc/codecs/wm8737.c index b27f26cdc0493..744a422ecb055 100644 --- a/sound/soc/codecs/wm8737.c +++ b/sound/soc/codecs/wm8737.c @@ -367,16 +367,16 @@ static int wm8737_hw_params(struct snd_pcm_substream *substream, clocking |= coeff_div[i].usb | (coeff_div[i].sr << WM8737_SR_SHIFT); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: af |= 0x8; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: af |= 0x10; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: af |= 0x18; break; default: From 34967ad2426257761cb158128f8e819d3fb0c713 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:51:45 +0100 Subject: [PATCH 35/62] ASoC: wm8741: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8741.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/wm8741.c b/sound/soc/codecs/wm8741.c index b33542a046073..a237f1627f614 100644 --- a/sound/soc/codecs/wm8741.c +++ b/sound/soc/codecs/wm8741.c @@ -241,26 +241,26 @@ static int wm8741_hw_params(struct snd_pcm_substream *substream, } /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0001; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0002; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x0003; break; default: dev_dbg(codec->dev, "wm8741_hw_params: Unsupported bit size param = %d", - params_format(params)); + params_width(params)); return -EINVAL; } dev_dbg(codec->dev, "wm8741_hw_params: bit size param = %d", - params_format(params)); + params_width(params)); snd_soc_write(codec, WM8741_FORMAT_CONTROL, iface); return 0; From 7e322dff367bcdb7fe9d85d5afd470ce3c751d1b Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:52:02 +0100 Subject: [PATCH 36/62] ASoC: wm8750: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8750.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c index 33990b63d2142..67653a2db2238 100644 --- a/sound/soc/codecs/wm8750.c +++ b/sound/soc/codecs/wm8750.c @@ -586,16 +586,16 @@ static int wm8750_pcm_hw_params(struct snd_pcm_substream *substream, int coeff = get_coeff(wm8750->sysclk, params_rate(params)); /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0008; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x000c; break; } From f21b66043d52dde17e9ebb498df9b4b3883e3d5e Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:52:19 +0100 Subject: [PATCH 37/62] ASoC: wm8753: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8753.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c index 53e57b4049a8f..e54e097f4fcbb 100644 --- a/sound/soc/codecs/wm8753.c +++ b/sound/soc/codecs/wm8753.c @@ -937,16 +937,16 @@ static int wm8753_pcm_hw_params(struct snd_pcm_substream *substream, u16 srate = snd_soc_read(codec, WM8753_SRATE1) & 0x017f; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: voice |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: voice |= 0x0008; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: voice |= 0x000c; break; } @@ -1176,16 +1176,16 @@ static int wm8753_i2s_hw_params(struct snd_pcm_substream *substream, coeff_div[coeff].usb); /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: hifi |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: hifi |= 0x0008; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: hifi |= 0x000c; break; } From 18ce1da9da69b5fa53f896754a66a91b1ec30908 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:52:26 +0100 Subject: [PATCH 38/62] ASoC: wm8770: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8770.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8770.c b/sound/soc/codecs/wm8770.c index c61aeb38efb8a..180e7a0987261 100644 --- a/sound/soc/codecs/wm8770.c +++ b/sound/soc/codecs/wm8770.c @@ -426,16 +426,16 @@ static int wm8770_hw_params(struct snd_pcm_substream *substream, wm8770 = snd_soc_codec_get_drvdata(codec); iface = 0; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x10; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x20; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x30; break; } From 16cfd485401ab4dcf8a06a56c14b9a1a5544a1c9 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:52:37 +0100 Subject: [PATCH 39/62] ASoC: wm8804: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8804.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c index d96e5963ee352..0ea01dfcb6e16 100644 --- a/sound/soc/codecs/wm8804.c +++ b/sound/soc/codecs/wm8804.c @@ -270,19 +270,19 @@ static int wm8804_hw_params(struct snd_pcm_substream *substream, codec = dai->codec; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: blen = 0x0; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: blen = 0x1; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: blen = 0x2; break; default: dev_err(dai->dev, "Unsupported word length: %u\n", - params_format(params)); + params_width(params)); return -EINVAL; } From 0cd44891584628904108a6dcc4f44ee9425b47b7 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:52:44 +0100 Subject: [PATCH 40/62] ASoC: wm8900: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8900.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c index d09fdce57f5a8..44a5f1511f0f5 100644 --- a/sound/soc/codecs/wm8900.c +++ b/sound/soc/codecs/wm8900.c @@ -640,16 +640,16 @@ static int wm8900_hw_params(struct snd_pcm_substream *substream, reg = snd_soc_read(codec, WM8900_REG_AUDIO1) & ~0x60; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: reg |= 0x20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: reg |= 0x40; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: reg |= 0x60; break; default: From 6139ea270d64225f7820284da544ea6a59e42fad Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:52:53 +0100 Subject: [PATCH 41/62] ASoC: wm8903: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8903.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c index b84940c359a12..fa4bccf601e65 100644 --- a/sound/soc/codecs/wm8903.c +++ b/sound/soc/codecs/wm8903.c @@ -1477,19 +1477,19 @@ static int wm8903_hw_params(struct snd_pcm_substream *substream, aif1 &= ~WM8903_AIF_WL_MASK; bclk = 2 * fs; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: bclk *= 16; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: bclk *= 20; aif1 |= 0x4; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: bclk *= 24; aif1 |= 0x8; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: bclk *= 32; aif1 |= 0xc; break; From 2f44b0437aae1c5badb63a18fda0d95e51591e23 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:00 +0100 Subject: [PATCH 42/62] ASoC: wm8904: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8904.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index f7c549949c542..79b303a1f2a76 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c @@ -1290,16 +1290,16 @@ static int wm8904_hw_params(struct snd_pcm_substream *substream, wm8904->bclk = snd_soc_params_to_bclk(params); } - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: aif1 |= 0x40; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: aif1 |= 0x80; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: aif1 |= 0xc0; break; default: From 74b24c3866f4cbd129a21651a1e2dfe81a10b268 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:08 +0100 Subject: [PATCH 43/62] ASoC: wm8940: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8940.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c index fc6eec9ad66b1..52011043e54cc 100644 --- a/sound/soc/codecs/wm8940.c +++ b/sound/soc/codecs/wm8940.c @@ -430,19 +430,19 @@ static int wm8940_i2s_hw_params(struct snd_pcm_substream *substream, if (ret) goto error_ret; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S8: + switch (params_width(params)) { + case 8: companding = companding | (1 << 5); break; - case SNDRV_PCM_FORMAT_S16_LE: + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= (1 << 5); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= (2 << 5); break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= (3 << 5); break; } From 1df93ca37501f752add410f5994e1259ae714e17 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:16 +0100 Subject: [PATCH 44/62] ASoC: wm8955: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8955.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c index 2a35108f233de..09d91d9dc4ee8 100644 --- a/sound/soc/codecs/wm8955.c +++ b/sound/soc/codecs/wm8955.c @@ -597,17 +597,17 @@ static int wm8955_hw_params(struct snd_pcm_substream *substream, int ret; int wl; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: wl = 0; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: wl = 0x4; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: wl = 0x8; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: wl = 0xc; break; default: From 39e9cc46469e1d56522e6de45a6b2468d4d7eb60 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:23 +0100 Subject: [PATCH 45/62] ASoC: wm8960: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8960.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index a145d0431b63d..1916ac74fdc42 100644 --- a/sound/soc/codecs/wm8960.c +++ b/sound/soc/codecs/wm8960.c @@ -567,24 +567,21 @@ static int wm8960_hw_params(struct snd_pcm_substream *substream, struct snd_soc_codec *codec = dai->codec; struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); u16 iface = snd_soc_read(codec, WM8960_IFACE1) & 0xfff3; - snd_pcm_format_t format = params_format(params); int i; /* bit size */ - switch (format) { - case SNDRV_PCM_FORMAT_S16_LE: - case SNDRV_PCM_FORMAT_S16_BE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: - case SNDRV_PCM_FORMAT_S20_3BE: + case 20: iface |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: - case SNDRV_PCM_FORMAT_S24_BE: + case 24: iface |= 0x0008; break; default: - dev_err(codec->dev, "unsupported format %i\n", format); + dev_err(codec->dev, "unsupported width %d\n", + params_width(params)); return -EINVAL; } From 5d3aef91a49a6c2fb8d7714ac814c6befc9ae763 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:30 +0100 Subject: [PATCH 46/62] ASoC: wm8961: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8961.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8961.c b/sound/soc/codecs/wm8961.c index 9c88f04442b37..41d23e920ad53 100644 --- a/sound/soc/codecs/wm8961.c +++ b/sound/soc/codecs/wm8961.c @@ -565,16 +565,16 @@ static int wm8961_hw_params(struct snd_pcm_substream *substream, reg = snd_soc_read(codec, WM8961_AUDIO_INTERFACE_0); reg &= ~WM8961_WL_MASK; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: reg |= 1 << WM8961_WL_SHIFT; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: reg |= 2 << WM8961_WL_SHIFT; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: reg |= 3 << WM8961_WL_SHIFT; break; default: From ec4dc01eb41a7eb03675516975f704b355fe2fc1 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:36 +0100 Subject: [PATCH 47/62] ASoC: wm8962: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8962.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index ca2fda9d72be5..4be6f2afdbc4a 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c @@ -2586,16 +2586,16 @@ static int wm8962_hw_params(struct snd_pcm_substream *substream, if (wm8962->lrclk % 8000 == 0) adctl3 |= WM8962_SAMPLE_RATE_INT_MODE; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: aif0 |= 0x4; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: aif0 |= 0x8; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: aif0 |= 0xc; break; default: From d835e99a89b9e02b7e4837debff5ea049e293ba1 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:43 +0100 Subject: [PATCH 48/62] ASoC: wm8971: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8971.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8971.c b/sound/soc/codecs/wm8971.c index 09b7b42002210..0499cd4cfb712 100644 --- a/sound/soc/codecs/wm8971.c +++ b/sound/soc/codecs/wm8971.c @@ -517,16 +517,16 @@ static int wm8971_pcm_hw_params(struct snd_pcm_substream *substream, int coeff = get_coeff(wm8971->sysclk, params_rate(params)); /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0008; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x000c; break; } From 6afdc9a0e7062a804a47c4a21d775e29b864d367 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:50 +0100 Subject: [PATCH 49/62] ASoC: wm8974: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8974.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c index 0627c56fa44e5..682e9eda10194 100644 --- a/sound/soc/codecs/wm8974.c +++ b/sound/soc/codecs/wm8974.c @@ -445,16 +445,16 @@ static int wm8974_pcm_hw_params(struct snd_pcm_substream *substream, u16 adn = snd_soc_read(codec, WM8974_ADD) & 0x1f1; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0020; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0040; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x0060; break; } From a4c8261d0b1a4f0d95de9fb3b56d201ad941e7f1 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:53:57 +0100 Subject: [PATCH 50/62] ASoC: wm8978: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8978.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/wm8978.c b/sound/soc/codecs/wm8978.c index 28ef46c91f62f..ee2ba574952b5 100644 --- a/sound/soc/codecs/wm8978.c +++ b/sound/soc/codecs/wm8978.c @@ -736,16 +736,16 @@ static int wm8978_hw_params(struct snd_pcm_substream *substream, return -EINVAL; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface_ctl |= 0x20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface_ctl |= 0x40; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface_ctl |= 0x60; break; } @@ -817,8 +817,8 @@ static int wm8978_hw_params(struct snd_pcm_substream *substream, wm8978->sysclk == WM8978_MCLK ? ", consider using PLL" : ""); - dev_dbg(codec->dev, "%s: fmt %d, rate %u, MCLK divisor #%d\n", __func__, - params_format(params), params_rate(params), best); + dev_dbg(codec->dev, "%s: width %d, rate %u, MCLK divisor #%d\n", __func__, + params_width(params), params_rate(params), best); /* MCLK divisor mask = 0xe0 */ snd_soc_update_bits(codec, WM8978_CLOCKING, 0xe0, best << 5); From af8ff1469e66437954dd016713ae630f94e0d38c Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:09 +0100 Subject: [PATCH 51/62] ASoC: wm8983: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8983.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/wm8983.c b/sound/soc/codecs/wm8983.c index 19d5baa38f5c1..ac5defda88248 100644 --- a/sound/soc/codecs/wm8983.c +++ b/sound/soc/codecs/wm8983.c @@ -719,22 +719,22 @@ static int wm8983_hw_params(struct snd_pcm_substream *substream, wm8983->bclk = ret; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: blen = 0x0; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: blen = 0x1; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: blen = 0x2; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: blen = 0x3; break; default: dev_err(dai->dev, "Unsupported word length %u\n", - params_format(params)); + params_width(params)); return -EINVAL; } From c37642c728c21b37de76885d2203fcace256b011 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:16 +0100 Subject: [PATCH 52/62] ASoC: wm8985: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8985.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c index 0f5780c09f3a9..b0f643458e0aa 100644 --- a/sound/soc/codecs/wm8985.c +++ b/sound/soc/codecs/wm8985.c @@ -698,22 +698,22 @@ static int wm8985_hw_params(struct snd_pcm_substream *substream, if ((int)wm8985->bclk < 0) return wm8985->bclk; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: blen = 0x0; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: blen = 0x1; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: blen = 0x2; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: blen = 0x3; break; default: dev_err(dai->dev, "Unsupported word length %u\n", - params_format(params)); + params_width(params)); return -EINVAL; } From 8cd2ba092c71d06b0d8f10649022f663ff5d9f77 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:23 +0100 Subject: [PATCH 53/62] ASoC: wm8988: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8988.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8988.c b/sound/soc/codecs/wm8988.c index d3fea46d58e85..a5130d9651469 100644 --- a/sound/soc/codecs/wm8988.c +++ b/sound/soc/codecs/wm8988.c @@ -687,16 +687,16 @@ static int wm8988_pcm_hw_params(struct snd_pcm_substream *substream, } /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: iface |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: iface |= 0x0008; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: iface |= 0x000c; break; } From a351901d166ed17195c375f5de2edf48c5e9f327 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:30 +0100 Subject: [PATCH 54/62] ASoC: wm8990: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8990.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c index b5c1f0f070585..03e43e3f395e5 100644 --- a/sound/soc/codecs/wm8990.c +++ b/sound/soc/codecs/wm8990.c @@ -1073,16 +1073,16 @@ static int wm8990_hw_params(struct snd_pcm_substream *substream, audio1 &= ~WM8990_AIF_WL_MASK; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: audio1 |= WM8990_AIF_WL_20BITS; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: audio1 |= WM8990_AIF_WL_24BITS; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: audio1 |= WM8990_AIF_WL_32BITS; break; } From 20a77bbd27ff7c04166327cc463437c17c2185f8 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:38 +0100 Subject: [PATCH 55/62] ASoC: wm8991: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8991.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8991.c b/sound/soc/codecs/wm8991.c index b8fd284fc0c02..d0be89731cdbf 100644 --- a/sound/soc/codecs/wm8991.c +++ b/sound/soc/codecs/wm8991.c @@ -1081,16 +1081,16 @@ static int wm8991_hw_params(struct snd_pcm_substream *substream, audio1 &= ~WM8991_AIF_WL_MASK; /* bit size */ - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: audio1 |= WM8991_AIF_WL_20BITS; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: audio1 |= WM8991_AIF_WL_24BITS; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: audio1 |= WM8991_AIF_WL_32BITS; break; } From ae62ba67b39f9f6db3e85dde357540e87edfc45b Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:45 +0100 Subject: [PATCH 56/62] ASoC: wm8993: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8993.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index f825dc04ebe12..93b14eda355a5 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c @@ -1214,19 +1214,19 @@ static int wm8993_hw_params(struct snd_pcm_substream *substream, wm8993->tdm_slots, wm8993->tdm_width); wm8993->bclk *= wm8993->tdm_width * wm8993->tdm_slots; } else { - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: wm8993->bclk *= 16; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: wm8993->bclk *= 20; aif1 |= 0x8; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: wm8993->bclk *= 24; aif1 |= 0x10; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: wm8993->bclk *= 32; aif1 |= 0x18; break; From e29fe49699ddd9998dc46696331097941c1ae79b Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:54:58 +0100 Subject: [PATCH 57/62] ASoC: wm8994: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8994.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 247b39013fba6..e7dcaf3645db9 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -2815,19 +2815,19 @@ static int wm8994_hw_params(struct snd_pcm_substream *substream, } bclk_rate = params_rate(params); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: bclk_rate *= 16; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: bclk_rate *= 20; aif1 |= 0x20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: bclk_rate *= 24; aif1 |= 0x40; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: bclk_rate *= 32; aif1 |= 0x60; break; @@ -2966,16 +2966,16 @@ static int wm8994_aif3_hw_params(struct snd_pcm_substream *substream, return 0; } - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: aif1 |= 0x20; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: aif1 |= 0x40; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: aif1 |= 0x60; break; default: From f882728c978c8e6f78b4b63efe0f7880b8139327 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:55:03 +0100 Subject: [PATCH 58/62] ASoC: wm8995: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8995.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/wm8995.c b/sound/soc/codecs/wm8995.c index 863a2c38bcb59..cae4ac5a57306 100644 --- a/sound/soc/codecs/wm8995.c +++ b/sound/soc/codecs/wm8995.c @@ -1597,21 +1597,21 @@ static int wm8995_hw_params(struct snd_pcm_substream *substream, return bclk_rate; aif1 = 0; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: aif1 |= (0x1 << WM8995_AIF1_WL_SHIFT); break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: aif1 |= (0x2 << WM8995_AIF1_WL_SHIFT); break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: aif1 |= (0x3 << WM8995_AIF1_WL_SHIFT); break; default: dev_err(dai->dev, "Unsupported word length %u\n", - params_format(params)); + params_width(params)); return -EINVAL; } From 9572696ddb3f258d64cad9bc4ac3468d1285fdd1 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:55:10 +0100 Subject: [PATCH 59/62] ASoC: wm9081: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm9081.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c index 185eb97769e73..0cdc9e2184ab7 100644 --- a/sound/soc/codecs/wm9081.c +++ b/sound/soc/codecs/wm9081.c @@ -1029,19 +1029,19 @@ static int wm9081_hw_params(struct snd_pcm_substream *substream, /* Otherwise work out a BCLK from the sample size */ wm9081->bclk = 2 * wm9081->fs; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: wm9081->bclk *= 16; break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: wm9081->bclk *= 20; aif2 |= 0x4; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: wm9081->bclk *= 24; aif2 |= 0x8; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: wm9081->bclk *= 32; aif2 |= 0xc; break; From 563fe71fe76260e32aefc1a2c03f4634c4d5edf9 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:55:23 +0100 Subject: [PATCH 60/62] ASoC: wm9713: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm9713.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c index 2a9c6d11330cf..bddee30a4bc7c 100644 --- a/sound/soc/codecs/wm9713.c +++ b/sound/soc/codecs/wm9713.c @@ -953,16 +953,16 @@ static int wm9713_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_soc_codec *codec = dai->codec; u16 reg = ac97_read(codec, AC97_CENTER_LFE_MASTER) & 0xfff3; - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: reg |= 0x0004; break; - case SNDRV_PCM_FORMAT_S24_LE: + case 24: reg |= 0x0008; break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: reg |= 0x000c; break; } From d7821953cfe9803c593a682320468ce2de862803 Mon Sep 17 00:00:00 2001 From: Nicolin Chen Date: Tue, 29 Jul 2014 18:38:39 +0800 Subject: [PATCH 61/62] ASoC: wm8962: Let CODEC driver enable and disable its own MCLK snd_soc_open() will trigger pm_runtime resume() which will then enable the regulator and initialization. So we should make sure the MCLK is enabled before this resume(). Previously we let the machine driver get the clock and enable it in its probe(). However, considering about power saving, it'll be better to enable it when it's going to be used and disable it after using. So this patch just simply adds clk_get() and clk_enable() to WM8962 driver. Meanwhile, it marks clock pointer to NULL if no clock assigned to it so it will not break any current function. Signed-off-by: Nicolin Chen Signed-off-by: Mark Brown --- include/sound/wm8962.h | 1 + sound/soc/codecs/wm8962.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/sound/wm8962.h b/include/sound/wm8962.h index 79e6d427b8582..0af7c1674cbfd 100644 --- a/include/sound/wm8962.h +++ b/include/sound/wm8962.h @@ -37,6 +37,7 @@ #define WM8962_GPIO_FN_MICSCD 22 struct wm8962_pdata { + struct clk *mclk; int gpio_base; u32 gpio_init[WM8962_MAX_GPIO]; diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index ca2fda9d72be5..eac29031ae266 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -3541,6 +3542,8 @@ static int wm8962_set_pdata_from_of(struct i2c_client *i2c, pdata->gpio_init[i] = 0x0; } + pdata->mclk = devm_clk_get(&i2c->dev, NULL); + return 0; } @@ -3572,6 +3575,14 @@ static int wm8962_i2c_probe(struct i2c_client *i2c, return ret; } + /* Mark the mclk pointer to NULL if no mclk assigned */ + if (IS_ERR(wm8962->pdata.mclk)) { + /* But do not ignore the request for probe defer */ + if (PTR_ERR(wm8962->pdata.mclk) == -EPROBE_DEFER) + return -EPROBE_DEFER; + wm8962->pdata.mclk = NULL; + } + for (i = 0; i < ARRAY_SIZE(wm8962->supplies); i++) wm8962->supplies[i].supply = wm8962_supply_names[i]; @@ -3780,6 +3791,12 @@ static int wm8962_runtime_resume(struct device *dev) struct wm8962_priv *wm8962 = dev_get_drvdata(dev); int ret; + ret = clk_prepare_enable(wm8962->pdata.mclk); + if (ret) { + dev_err(dev, "Failed to enable MCLK: %d\n", ret); + return ret; + } + ret = regulator_bulk_enable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); if (ret != 0) { @@ -3839,6 +3856,8 @@ static int wm8962_runtime_suspend(struct device *dev) regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); + clk_disable_unprepare(wm8962->pdata.mclk); + return 0; } #endif From 3e3e2922c12f29b177b18acc15655186466a92f2 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 31 Jul 2014 12:48:36 +0100 Subject: [PATCH 62/62] ASoC: tlv320aic3x: Convert to params_width() The CODEC doesn't care how data is laid out in memory. Signed-off-by: Mark Brown --- sound/soc/codecs/tlv320aic3x.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index d275890a68279..00b127fe2b771 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -873,17 +873,16 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream, /* select data word length */ data = snd_soc_read(codec, AIC3X_ASD_INTF_CTRLB) & (~(0x3 << 4)); - switch (params_format(params)) { - case SNDRV_PCM_FORMAT_S16_LE: + switch (params_width(params)) { + case 16: break; - case SNDRV_PCM_FORMAT_S20_3LE: + case 20: data |= (0x01 << 4); break; - case SNDRV_PCM_FORMAT_S24_3LE: - case SNDRV_PCM_FORMAT_S24_LE: + case 24: data |= (0x02 << 4); break; - case SNDRV_PCM_FORMAT_S32_LE: + case 32: data |= (0x03 << 4); break; }