diff options
| -rw-r--r-- | Documentation/devicetree/bindings/sound/simple-card.txt | 3 | ||||
| -rw-r--r-- | sound/soc/codecs/sgtl5000.c | 75 | ||||
| -rw-r--r-- | sound/soc/codecs/sirf-audio-codec.c | 8 | ||||
| -rw-r--r-- | sound/soc/generic/simple-card.c | 39 | ||||
| -rw-r--r-- | sound/soc/samsung/i2s.c | 14 | ||||
| -rw-r--r-- | sound/soc/samsung/pcm.c | 4 | ||||
| -rw-r--r-- | sound/soc/samsung/s3c-i2s-v2.c | 8 | ||||
| -rw-r--r-- | sound/soc/samsung/s3c2412-i2s.c | 6 | ||||
| -rw-r--r-- | sound/soc/samsung/s3c24xx-i2s.c | 6 | ||||
| -rw-r--r-- | sound/soc/samsung/smdk_wm8580.c | 8 | ||||
| -rw-r--r-- | sound/soc/samsung/smdk_wm8994.c | 2 | ||||
| -rw-r--r-- | sound/soc/samsung/spdif.c | 4 |
12 files changed, 83 insertions, 94 deletions
diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt index 9b9df146fd1a..c2e9841dfce4 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.txt +++ b/Documentation/devicetree/bindings/sound/simple-card.txt | |||
| @@ -15,6 +15,9 @@ Optional properties: | |||
| 15 | Each entry is a pair of strings, the first being the | 15 | Each entry is a pair of strings, the first being the |
| 16 | connection's sink, the second being the connection's | 16 | connection's sink, the second being the connection's |
| 17 | source. | 17 | source. |
| 18 | - simple-audio-card,mclk-fs : Multiplication factor between stream rate and codec | ||
| 19 | mclk. | ||
| 20 | |||
| 18 | Optional subnodes: | 21 | Optional subnodes: |
| 19 | 22 | ||
| 20 | - simple-audio-card,dai-link : Container for dai-link level | 23 | - simple-audio-card,dai-link : Container for dai-link level |
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 9626ee0417cd..3d39f0b5b4a8 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
| @@ -36,18 +36,32 @@ | |||
| 36 | 36 | ||
| 37 | /* default value of sgtl5000 registers */ | 37 | /* default value of sgtl5000 registers */ |
| 38 | static const struct reg_default sgtl5000_reg_defaults[] = { | 38 | static const struct reg_default sgtl5000_reg_defaults[] = { |
| 39 | { SGTL5000_CHIP_DIG_POWER, 0x0000 }, | ||
| 39 | { SGTL5000_CHIP_CLK_CTRL, 0x0008 }, | 40 | { SGTL5000_CHIP_CLK_CTRL, 0x0008 }, |
| 40 | { SGTL5000_CHIP_I2S_CTRL, 0x0010 }, | 41 | { SGTL5000_CHIP_I2S_CTRL, 0x0010 }, |
| 41 | { SGTL5000_CHIP_SSS_CTRL, 0x0010 }, | 42 | { SGTL5000_CHIP_SSS_CTRL, 0x0010 }, |
| 43 | { SGTL5000_CHIP_ADCDAC_CTRL, 0x020c }, | ||
| 42 | { SGTL5000_CHIP_DAC_VOL, 0x3c3c }, | 44 | { SGTL5000_CHIP_DAC_VOL, 0x3c3c }, |
| 43 | { SGTL5000_CHIP_PAD_STRENGTH, 0x015f }, | 45 | { SGTL5000_CHIP_PAD_STRENGTH, 0x015f }, |
| 46 | { SGTL5000_CHIP_ANA_ADC_CTRL, 0x0000 }, | ||
| 44 | { SGTL5000_CHIP_ANA_HP_CTRL, 0x1818 }, | 47 | { SGTL5000_CHIP_ANA_HP_CTRL, 0x1818 }, |
| 45 | { SGTL5000_CHIP_ANA_CTRL, 0x0111 }, | 48 | { SGTL5000_CHIP_ANA_CTRL, 0x0111 }, |
| 49 | { SGTL5000_CHIP_LINREG_CTRL, 0x0000 }, | ||
| 50 | { SGTL5000_CHIP_REF_CTRL, 0x0000 }, | ||
| 51 | { SGTL5000_CHIP_MIC_CTRL, 0x0000 }, | ||
| 52 | { SGTL5000_CHIP_LINE_OUT_CTRL, 0x0000 }, | ||
| 46 | { SGTL5000_CHIP_LINE_OUT_VOL, 0x0404 }, | 53 | { SGTL5000_CHIP_LINE_OUT_VOL, 0x0404 }, |
| 47 | { SGTL5000_CHIP_ANA_POWER, 0x7060 }, | 54 | { SGTL5000_CHIP_ANA_POWER, 0x7060 }, |
| 48 | { SGTL5000_CHIP_PLL_CTRL, 0x5000 }, | 55 | { SGTL5000_CHIP_PLL_CTRL, 0x5000 }, |
| 56 | { SGTL5000_CHIP_CLK_TOP_CTRL, 0x0000 }, | ||
| 57 | { SGTL5000_CHIP_ANA_STATUS, 0x0000 }, | ||
| 58 | { SGTL5000_CHIP_SHORT_CTRL, 0x0000 }, | ||
| 59 | { SGTL5000_CHIP_ANA_TEST2, 0x0000 }, | ||
| 60 | { SGTL5000_DAP_CTRL, 0x0000 }, | ||
| 61 | { SGTL5000_DAP_PEQ, 0x0000 }, | ||
| 49 | { SGTL5000_DAP_BASS_ENHANCE, 0x0040 }, | 62 | { SGTL5000_DAP_BASS_ENHANCE, 0x0040 }, |
| 50 | { SGTL5000_DAP_BASS_ENHANCE_CTRL, 0x051f }, | 63 | { SGTL5000_DAP_BASS_ENHANCE_CTRL, 0x051f }, |
| 64 | { SGTL5000_DAP_AUDIO_EQ, 0x0000 }, | ||
| 51 | { SGTL5000_DAP_SURROUND, 0x0040 }, | 65 | { SGTL5000_DAP_SURROUND, 0x0040 }, |
| 52 | { SGTL5000_DAP_EQ_BASS_BAND0, 0x002f }, | 66 | { SGTL5000_DAP_EQ_BASS_BAND0, 0x002f }, |
| 53 | { SGTL5000_DAP_EQ_BASS_BAND1, 0x002f }, | 67 | { SGTL5000_DAP_EQ_BASS_BAND1, 0x002f }, |
| @@ -55,6 +69,7 @@ static const struct reg_default sgtl5000_reg_defaults[] = { | |||
| 55 | { SGTL5000_DAP_EQ_BASS_BAND3, 0x002f }, | 69 | { SGTL5000_DAP_EQ_BASS_BAND3, 0x002f }, |
| 56 | { SGTL5000_DAP_EQ_BASS_BAND4, 0x002f }, | 70 | { SGTL5000_DAP_EQ_BASS_BAND4, 0x002f }, |
| 57 | { SGTL5000_DAP_MAIN_CHAN, 0x8000 }, | 71 | { SGTL5000_DAP_MAIN_CHAN, 0x8000 }, |
| 72 | { SGTL5000_DAP_MIX_CHAN, 0x0000 }, | ||
| 58 | { SGTL5000_DAP_AVC_CTRL, 0x0510 }, | 73 | { SGTL5000_DAP_AVC_CTRL, 0x0510 }, |
| 59 | { SGTL5000_DAP_AVC_THRESHOLD, 0x1473 }, | 74 | { SGTL5000_DAP_AVC_THRESHOLD, 0x1473 }, |
| 60 | { SGTL5000_DAP_AVC_ATTACK, 0x0028 }, | 75 | { SGTL5000_DAP_AVC_ATTACK, 0x0028 }, |
| @@ -1068,71 +1083,11 @@ static int sgtl5000_suspend(struct snd_soc_codec *codec) | |||
| 1068 | return 0; | 1083 | return 0; |
| 1069 | } | 1084 | } |
| 1070 | 1085 | ||
| 1071 | /* | ||
| 1072 | * restore all sgtl5000 registers, | ||
| 1073 | * since a big hole between dap and regular registers, | ||
| 1074 | * we will restore them respectively. | ||
| 1075 | */ | ||
| 1076 | static int sgtl5000_restore_regs(struct snd_soc_codec *codec) | ||
| 1077 | { | ||
| 1078 | u16 *cache = codec->reg_cache; | ||
| 1079 | u16 reg; | ||
| 1080 | |||
| 1081 | /* restore regular registers */ | ||
| 1082 | for (reg = 0; reg <= SGTL5000_CHIP_SHORT_CTRL; reg += 2) { | ||
| 1083 | |||
| 1084 | /* These regs should restore in particular order */ | ||
| 1085 | if (reg == SGTL5000_CHIP_ANA_POWER || | ||
| 1086 | reg == SGTL5000_CHIP_CLK_CTRL || | ||
| 1087 | reg == SGTL5000_CHIP_LINREG_CTRL || | ||
| 1088 | reg == SGTL5000_CHIP_LINE_OUT_CTRL || | ||
| 1089 | reg == SGTL5000_CHIP_REF_CTRL) | ||
| 1090 | continue; | ||
| 1091 | |||
| 1092 | snd_soc_write(codec, reg, cache[reg]); | ||
| 1093 | } | ||
| 1094 | |||
| 1095 | /* restore dap registers */ | ||
| 1096 | for (reg = SGTL5000_DAP_REG_OFFSET; reg < SGTL5000_MAX_REG_OFFSET; reg += 2) | ||
| 1097 | snd_soc_write(codec, reg, cache[reg]); | ||
| 1098 | |||
| 1099 | /* | ||
| 1100 | * restore these regs according to the power setting sequence in | ||
| 1101 | * sgtl5000_set_power_regs() and clock setting sequence in | ||
| 1102 | * sgtl5000_set_clock(). | ||
| 1103 | * | ||
| 1104 | * The order of restore is: | ||
| 1105 | * 1. SGTL5000_CHIP_CLK_CTRL MCLK_FREQ bits (1:0) should be restore after | ||
| 1106 | * SGTL5000_CHIP_ANA_POWER PLL bits set | ||
| 1107 | * 2. SGTL5000_CHIP_LINREG_CTRL should be set before | ||
| 1108 | * SGTL5000_CHIP_ANA_POWER LINREG_D restored | ||
| 1109 | * 3. SGTL5000_CHIP_REF_CTRL controls Analog Ground Voltage, | ||
| 1110 | * prefer to resotre it after SGTL5000_CHIP_ANA_POWER restored | ||
| 1111 | */ | ||
| 1112 | snd_soc_write(codec, SGTL5000_CHIP_LINREG_CTRL, | ||
| 1113 | cache[SGTL5000_CHIP_LINREG_CTRL]); | ||
| 1114 | |||
| 1115 | snd_soc_write(codec, SGTL5000_CHIP_ANA_POWER, | ||
| 1116 | cache[SGTL5000_CHIP_ANA_POWER]); | ||
| 1117 | |||
| 1118 | snd_soc_write(codec, SGTL5000_CHIP_CLK_CTRL, | ||
| 1119 | cache[SGTL5000_CHIP_CLK_CTRL]); | ||
| 1120 | |||
| 1121 | snd_soc_write(codec, SGTL5000_CHIP_REF_CTRL, | ||
| 1122 | cache[SGTL5000_CHIP_REF_CTRL]); | ||
| 1123 | |||
| 1124 | snd_soc_write(codec, SGTL5000_CHIP_LINE_OUT_CTRL, | ||
| 1125 | cache[SGTL5000_CHIP_LINE_OUT_CTRL]); | ||
| 1126 | return 0; | ||
| 1127 | } | ||
| 1128 | |||
| 1129 | static int sgtl5000_resume(struct snd_soc_codec *codec) | 1086 | static int sgtl5000_resume(struct snd_soc_codec *codec) |
| 1130 | { | 1087 | { |
| 1131 | /* Bring the codec back up to standby to enable regulators */ | 1088 | /* Bring the codec back up to standby to enable regulators */ |
| 1132 | sgtl5000_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 1089 | sgtl5000_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
| 1133 | 1090 | ||
| 1134 | /* Restore registers by cached in memory */ | ||
| 1135 | sgtl5000_restore_regs(codec); | ||
| 1136 | return 0; | 1091 | return 0; |
| 1137 | } | 1092 | } |
| 1138 | #else | 1093 | #else |
diff --git a/sound/soc/codecs/sirf-audio-codec.c b/sound/soc/codecs/sirf-audio-codec.c index c5177bc5df82..d90cb0fafcb2 100644 --- a/sound/soc/codecs/sirf-audio-codec.c +++ b/sound/soc/codecs/sirf-audio-codec.c | |||
| @@ -109,7 +109,7 @@ static void enable_and_reset_codec(struct regmap *regmap, | |||
| 109 | { | 109 | { |
| 110 | regmap_update_bits(regmap, AUDIO_IC_CODEC_CTRL1, | 110 | regmap_update_bits(regmap, AUDIO_IC_CODEC_CTRL1, |
| 111 | codec_enable_bits | codec_reset_bits, | 111 | codec_enable_bits | codec_reset_bits, |
| 112 | codec_enable_bits | ~codec_reset_bits); | 112 | codec_enable_bits); |
| 113 | msleep(20); | 113 | msleep(20); |
| 114 | regmap_update_bits(regmap, AUDIO_IC_CODEC_CTRL1, | 114 | regmap_update_bits(regmap, AUDIO_IC_CODEC_CTRL1, |
| 115 | codec_reset_bits, codec_reset_bits); | 115 | codec_reset_bits, codec_reset_bits); |
| @@ -128,8 +128,7 @@ static int atlas6_codec_enable_and_reset_event(struct snd_soc_dapm_widget *w, | |||
| 128 | break; | 128 | break; |
| 129 | case SND_SOC_DAPM_POST_PMD: | 129 | case SND_SOC_DAPM_POST_PMD: |
| 130 | regmap_update_bits(sirf_audio_codec->regmap, | 130 | regmap_update_bits(sirf_audio_codec->regmap, |
| 131 | AUDIO_IC_CODEC_CTRL1, ATLAS6_CODEC_ENABLE_BITS, | 131 | AUDIO_IC_CODEC_CTRL1, ATLAS6_CODEC_ENABLE_BITS, 0); |
| 132 | ~ATLAS6_CODEC_ENABLE_BITS); | ||
| 133 | break; | 132 | break; |
| 134 | default: | 133 | default: |
| 135 | break; | 134 | break; |
| @@ -151,8 +150,7 @@ static int prima2_codec_enable_and_reset_event(struct snd_soc_dapm_widget *w, | |||
| 151 | break; | 150 | break; |
| 152 | case SND_SOC_DAPM_POST_PMD: | 151 | case SND_SOC_DAPM_POST_PMD: |
| 153 | regmap_update_bits(sirf_audio_codec->regmap, | 152 | regmap_update_bits(sirf_audio_codec->regmap, |
| 154 | AUDIO_IC_CODEC_CTRL1, PRIMA2_CODEC_ENABLE_BITS, | 153 | AUDIO_IC_CODEC_CTRL1, PRIMA2_CODEC_ENABLE_BITS, 0); |
| 155 | ~PRIMA2_CODEC_ENABLE_BITS); | ||
| 156 | break; | 154 | break; |
| 157 | default: | 155 | default: |
| 158 | break; | 156 | break; |
diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index 98f97e543c29..03a7fdcdf114 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c | |||
| @@ -24,9 +24,32 @@ struct simple_card_data { | |||
| 24 | struct asoc_simple_dai cpu_dai; | 24 | struct asoc_simple_dai cpu_dai; |
| 25 | struct asoc_simple_dai codec_dai; | 25 | struct asoc_simple_dai codec_dai; |
| 26 | } *dai_props; | 26 | } *dai_props; |
| 27 | unsigned int mclk_fs; | ||
| 27 | struct snd_soc_dai_link dai_link[]; /* dynamically allocated */ | 28 | struct snd_soc_dai_link dai_link[]; /* dynamically allocated */ |
| 28 | }; | 29 | }; |
| 29 | 30 | ||
| 31 | static int asoc_simple_card_hw_params(struct snd_pcm_substream *substream, | ||
| 32 | struct snd_pcm_hw_params *params) | ||
| 33 | { | ||
| 34 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | ||
| 35 | struct snd_soc_dai *codec_dai = rtd->codec_dai; | ||
| 36 | struct simple_card_data *priv = snd_soc_card_get_drvdata(rtd->card); | ||
| 37 | unsigned int mclk; | ||
| 38 | int ret = 0; | ||
| 39 | |||
| 40 | if (priv->mclk_fs) { | ||
| 41 | mclk = params_rate(params) * priv->mclk_fs; | ||
| 42 | ret = snd_soc_dai_set_sysclk(codec_dai, 0, mclk, | ||
| 43 | SND_SOC_CLOCK_IN); | ||
| 44 | } | ||
| 45 | |||
| 46 | return ret; | ||
| 47 | } | ||
| 48 | |||
| 49 | static struct snd_soc_ops asoc_simple_card_ops = { | ||
| 50 | .hw_params = asoc_simple_card_hw_params, | ||
| 51 | }; | ||
| 52 | |||
| 30 | static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, | 53 | static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, |
| 31 | struct asoc_simple_dai *set) | 54 | struct asoc_simple_dai *set) |
| 32 | { | 55 | { |
| @@ -144,7 +167,8 @@ asoc_simple_card_sub_parse_of(struct device_node *np, | |||
| 144 | static int simple_card_dai_link_of(struct device_node *node, | 167 | static int simple_card_dai_link_of(struct device_node *node, |
| 145 | struct device *dev, | 168 | struct device *dev, |
| 146 | struct snd_soc_dai_link *dai_link, | 169 | struct snd_soc_dai_link *dai_link, |
| 147 | struct simple_dai_props *dai_props) | 170 | struct simple_dai_props *dai_props, |
| 171 | bool is_top_level_node) | ||
| 148 | { | 172 | { |
| 149 | struct device_node *np = NULL; | 173 | struct device_node *np = NULL; |
| 150 | struct device_node *bitclkmaster = NULL; | 174 | struct device_node *bitclkmaster = NULL; |
| @@ -155,7 +179,8 @@ static int simple_card_dai_link_of(struct device_node *node, | |||
| 155 | char *prefix = ""; | 179 | char *prefix = ""; |
| 156 | int ret; | 180 | int ret; |
| 157 | 181 | ||
| 158 | prefix = "simple-audio-card,"; | 182 | if (is_top_level_node) |
| 183 | prefix = "simple-audio-card,"; | ||
| 159 | 184 | ||
| 160 | daifmt = snd_soc_of_parse_daifmt(node, prefix, | 185 | daifmt = snd_soc_of_parse_daifmt(node, prefix, |
| 161 | &bitclkmaster, &framemaster); | 186 | &bitclkmaster, &framemaster); |
| @@ -249,6 +274,7 @@ static int simple_card_dai_link_of(struct device_node *node, | |||
| 249 | sprintf(name, "%s-%s", dai_link->cpu_dai_name, | 274 | sprintf(name, "%s-%s", dai_link->cpu_dai_name, |
| 250 | dai_link->codec_dai_name); | 275 | dai_link->codec_dai_name); |
| 251 | dai_link->name = dai_link->stream_name = name; | 276 | dai_link->name = dai_link->stream_name = name; |
| 277 | dai_link->ops = &asoc_simple_card_ops; | ||
| 252 | 278 | ||
| 253 | dev_dbg(dev, "\tname : %s\n", dai_link->stream_name); | 279 | dev_dbg(dev, "\tname : %s\n", dai_link->stream_name); |
| 254 | dev_dbg(dev, "\tcpu : %s / %04x / %d\n", | 280 | dev_dbg(dev, "\tcpu : %s / %04x / %d\n", |
| @@ -298,6 +324,10 @@ static int asoc_simple_card_parse_of(struct device_node *node, | |||
| 298 | return ret; | 324 | return ret; |
| 299 | } | 325 | } |
| 300 | 326 | ||
| 327 | /* Factor to mclk, used in hw_params() */ | ||
| 328 | of_property_read_u32(node, "simple-audio-card,mclk-fs", | ||
| 329 | &priv->mclk_fs); | ||
| 330 | |||
| 301 | dev_dbg(dev, "New simple-card: %s\n", priv->snd_card.name ? | 331 | dev_dbg(dev, "New simple-card: %s\n", priv->snd_card.name ? |
| 302 | priv->snd_card.name : ""); | 332 | priv->snd_card.name : ""); |
| 303 | 333 | ||
| @@ -307,14 +337,15 @@ static int asoc_simple_card_parse_of(struct device_node *node, | |||
| 307 | for (i = 0; (np = of_get_next_child(node, np)); i++) { | 337 | for (i = 0; (np = of_get_next_child(node, np)); i++) { |
| 308 | dev_dbg(dev, "\tlink %d:\n", i); | 338 | dev_dbg(dev, "\tlink %d:\n", i); |
| 309 | ret = simple_card_dai_link_of(np, dev, dai_link + i, | 339 | ret = simple_card_dai_link_of(np, dev, dai_link + i, |
| 310 | dai_props + i); | 340 | dai_props + i, false); |
| 311 | if (ret < 0) { | 341 | if (ret < 0) { |
| 312 | of_node_put(np); | 342 | of_node_put(np); |
| 313 | return ret; | 343 | return ret; |
| 314 | } | 344 | } |
| 315 | } | 345 | } |
| 316 | } else { | 346 | } else { |
| 317 | ret = simple_card_dai_link_of(node, dev, dai_link, dai_props); | 347 | ret = simple_card_dai_link_of(node, dev, dai_link, dai_props, |
| 348 | true); | ||
| 318 | if (ret < 0) | 349 | if (ret < 0) |
| 319 | return ret; | 350 | return ret; |
| 320 | } | 351 | } |
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 07ff3e7cb890..2ac76fa3e742 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c | |||
| @@ -488,7 +488,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, | |||
| 488 | clk_id = 1; | 488 | clk_id = 1; |
| 489 | 489 | ||
| 490 | if (!any_active(i2s)) { | 490 | if (!any_active(i2s)) { |
| 491 | if (i2s->op_clk) { | 491 | if (i2s->op_clk && !IS_ERR(i2s->op_clk)) { |
| 492 | if ((clk_id && !(mod & MOD_IMS_SYSMUX)) || | 492 | if ((clk_id && !(mod & MOD_IMS_SYSMUX)) || |
| 493 | (!clk_id && (mod & MOD_IMS_SYSMUX))) { | 493 | (!clk_id && (mod & MOD_IMS_SYSMUX))) { |
| 494 | clk_disable_unprepare(i2s->op_clk); | 494 | clk_disable_unprepare(i2s->op_clk); |
| @@ -506,6 +506,10 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, | |||
| 506 | else | 506 | else |
| 507 | i2s->op_clk = clk_get(&i2s->pdev->dev, | 507 | i2s->op_clk = clk_get(&i2s->pdev->dev, |
| 508 | "i2s_opclk0"); | 508 | "i2s_opclk0"); |
| 509 | |||
| 510 | if (WARN_ON(IS_ERR(i2s->op_clk))) | ||
| 511 | return PTR_ERR(i2s->op_clk); | ||
| 512 | |||
| 509 | clk_prepare_enable(i2s->op_clk); | 513 | clk_prepare_enable(i2s->op_clk); |
| 510 | i2s->rclk_srcrate = clk_get_rate(i2s->op_clk); | 514 | i2s->rclk_srcrate = clk_get_rate(i2s->op_clk); |
| 511 | 515 | ||
| @@ -672,8 +676,8 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 672 | if (is_manager(i2s)) | 676 | if (is_manager(i2s)) |
| 673 | mod &= ~MOD_BLC_MASK; | 677 | mod &= ~MOD_BLC_MASK; |
| 674 | 678 | ||
| 675 | switch (params_format(params)) { | 679 | switch (params_width(params)) { |
| 676 | case SNDRV_PCM_FORMAT_S8: | 680 | case 8: |
| 677 | if (is_secondary(i2s)) | 681 | if (is_secondary(i2s)) |
| 678 | mod |= MOD_BLCS_8BIT; | 682 | mod |= MOD_BLCS_8BIT; |
| 679 | else | 683 | else |
| @@ -681,7 +685,7 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 681 | if (is_manager(i2s)) | 685 | if (is_manager(i2s)) |
| 682 | mod |= MOD_BLC_8BIT; | 686 | mod |= MOD_BLC_8BIT; |
| 683 | break; | 687 | break; |
| 684 | case SNDRV_PCM_FORMAT_S16_LE: | 688 | case 16: |
| 685 | if (is_secondary(i2s)) | 689 | if (is_secondary(i2s)) |
| 686 | mod |= MOD_BLCS_16BIT; | 690 | mod |= MOD_BLCS_16BIT; |
| 687 | else | 691 | else |
| @@ -689,7 +693,7 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 689 | if (is_manager(i2s)) | 693 | if (is_manager(i2s)) |
| 690 | mod |= MOD_BLC_16BIT; | 694 | mod |= MOD_BLC_16BIT; |
| 691 | break; | 695 | break; |
| 692 | case SNDRV_PCM_FORMAT_S24_LE: | 696 | case 24: |
| 693 | if (is_secondary(i2s)) | 697 | if (is_secondary(i2s)) |
| 694 | mod |= MOD_BLCS_24BIT; | 698 | mod |= MOD_BLCS_24BIT; |
| 695 | else | 699 | else |
diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c index a3c9c9cba3b0..4c5f97fe45c8 100644 --- a/sound/soc/samsung/pcm.c +++ b/sound/soc/samsung/pcm.c | |||
| @@ -283,8 +283,8 @@ static int s3c_pcm_hw_params(struct snd_pcm_substream *substream, | |||
| 283 | dev_dbg(pcm->dev, "Entered %s\n", __func__); | 283 | dev_dbg(pcm->dev, "Entered %s\n", __func__); |
| 284 | 284 | ||
| 285 | /* Strictly check for sample size */ | 285 | /* Strictly check for sample size */ |
| 286 | switch (params_format(params)) { | 286 | switch (params_width(params)) { |
| 287 | case SNDRV_PCM_FORMAT_S16_LE: | 287 | case 16: |
| 288 | break; | 288 | break; |
| 289 | default: | 289 | default: |
| 290 | return -EINVAL; | 290 | return -EINVAL; |
diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c index 77a2ae50dc94..0ff4bbe23af3 100644 --- a/sound/soc/samsung/s3c-i2s-v2.c +++ b/sound/soc/samsung/s3c-i2s-v2.c | |||
| @@ -322,13 +322,13 @@ static int s3c_i2sv2_hw_params(struct snd_pcm_substream *substream, | |||
| 322 | 322 | ||
| 323 | iismod &= ~S3C64XX_IISMOD_BLC_MASK; | 323 | iismod &= ~S3C64XX_IISMOD_BLC_MASK; |
| 324 | /* Sample size */ | 324 | /* Sample size */ |
| 325 | switch (params_format(params)) { | 325 | switch (params_width(params)) { |
| 326 | case SNDRV_PCM_FORMAT_S8: | 326 | case 8: |
| 327 | iismod |= S3C64XX_IISMOD_BLC_8BIT; | 327 | iismod |= S3C64XX_IISMOD_BLC_8BIT; |
| 328 | break; | 328 | break; |
| 329 | case SNDRV_PCM_FORMAT_S16_LE: | 329 | case 16: |
| 330 | break; | 330 | break; |
| 331 | case SNDRV_PCM_FORMAT_S24_LE: | 331 | case 24: |
| 332 | iismod |= S3C64XX_IISMOD_BLC_24BIT; | 332 | iismod |= S3C64XX_IISMOD_BLC_24BIT; |
| 333 | break; | 333 | break; |
| 334 | } | 334 | } |
diff --git a/sound/soc/samsung/s3c2412-i2s.c b/sound/soc/samsung/s3c2412-i2s.c index 843f315dcb3a..08c059be9104 100644 --- a/sound/soc/samsung/s3c2412-i2s.c +++ b/sound/soc/samsung/s3c2412-i2s.c | |||
| @@ -120,11 +120,11 @@ static int s3c2412_i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 120 | iismod = readl(i2s->regs + S3C2412_IISMOD); | 120 | iismod = readl(i2s->regs + S3C2412_IISMOD); |
| 121 | pr_debug("%s: r: IISMOD: %x\n", __func__, iismod); | 121 | pr_debug("%s: r: IISMOD: %x\n", __func__, iismod); |
| 122 | 122 | ||
| 123 | switch (params_format(params)) { | 123 | switch (params_width(params)) { |
| 124 | case SNDRV_PCM_FORMAT_S8: | 124 | case 8: |
| 125 | iismod |= S3C2412_IISMOD_8BIT; | 125 | iismod |= S3C2412_IISMOD_8BIT; |
| 126 | break; | 126 | break; |
| 127 | case SNDRV_PCM_FORMAT_S16_LE: | 127 | case 16: |
| 128 | iismod &= ~S3C2412_IISMOD_8BIT; | 128 | iismod &= ~S3C2412_IISMOD_8BIT; |
| 129 | break; | 129 | break; |
| 130 | } | 130 | } |
diff --git a/sound/soc/samsung/s3c24xx-i2s.c b/sound/soc/samsung/s3c24xx-i2s.c index 4a6d206db222..9aba9fb7df0e 100644 --- a/sound/soc/samsung/s3c24xx-i2s.c +++ b/sound/soc/samsung/s3c24xx-i2s.c | |||
| @@ -248,12 +248,12 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 248 | iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); | 248 | iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); |
| 249 | pr_debug("hw_params r: IISMOD: %x\n", iismod); | 249 | pr_debug("hw_params r: IISMOD: %x\n", iismod); |
| 250 | 250 | ||
| 251 | switch (params_format(params)) { | 251 | switch (params_width(params)) { |
| 252 | case SNDRV_PCM_FORMAT_S8: | 252 | case 8: |
| 253 | iismod &= ~S3C2410_IISMOD_16BIT; | 253 | iismod &= ~S3C2410_IISMOD_16BIT; |
| 254 | dma_data->dma_size = 1; | 254 | dma_data->dma_size = 1; |
| 255 | break; | 255 | break; |
| 256 | case SNDRV_PCM_FORMAT_S16_LE: | 256 | case 16: |
| 257 | iismod |= S3C2410_IISMOD_16BIT; | 257 | iismod |= S3C2410_IISMOD_16BIT; |
| 258 | dma_data->dma_size = 2; | 258 | dma_data->dma_size = 2; |
| 259 | break; | 259 | break; |
diff --git a/sound/soc/samsung/smdk_wm8580.c b/sound/soc/samsung/smdk_wm8580.c index 7a16b32ed673..b1a519f83b29 100644 --- a/sound/soc/samsung/smdk_wm8580.c +++ b/sound/soc/samsung/smdk_wm8580.c | |||
| @@ -37,13 +37,11 @@ static int smdk_hw_params(struct snd_pcm_substream *substream, | |||
| 37 | unsigned int pll_out; | 37 | unsigned int pll_out; |
| 38 | int bfs, rfs, ret; | 38 | int bfs, rfs, ret; |
| 39 | 39 | ||
| 40 | switch (params_format(params)) { | 40 | switch (params_width(params)) { |
| 41 | case SNDRV_PCM_FORMAT_U8: | 41 | case 8: |
| 42 | case SNDRV_PCM_FORMAT_S8: | ||
| 43 | bfs = 16; | 42 | bfs = 16; |
| 44 | break; | 43 | break; |
| 45 | case SNDRV_PCM_FORMAT_U16_LE: | 44 | case 16: |
| 46 | case SNDRV_PCM_FORMAT_S16_LE: | ||
| 47 | bfs = 32; | 45 | bfs = 32; |
| 48 | break; | 46 | break; |
| 49 | default: | 47 | default: |
diff --git a/sound/soc/samsung/smdk_wm8994.c b/sound/soc/samsung/smdk_wm8994.c index fc25cc00f0f2..3d6272a8cad2 100644 --- a/sound/soc/samsung/smdk_wm8994.c +++ b/sound/soc/samsung/smdk_wm8994.c | |||
| @@ -57,7 +57,7 @@ static int smdk_hw_params(struct snd_pcm_substream *substream, | |||
| 57 | int ret; | 57 | int ret; |
| 58 | 58 | ||
| 59 | /* AIF1CLK should be >=3MHz for optimal performance */ | 59 | /* AIF1CLK should be >=3MHz for optimal performance */ |
| 60 | if (params_format(params) == SNDRV_PCM_FORMAT_S24_LE) | 60 | if (params_width(params) == 24) |
| 61 | pll_out = params_rate(params) * 384; | 61 | pll_out = params_rate(params) * 384; |
| 62 | else if (params_rate(params) == 8000 || params_rate(params) == 11025) | 62 | else if (params_rate(params) == 8000 || params_rate(params) == 11025) |
| 63 | pll_out = params_rate(params) * 512; | 63 | pll_out = params_rate(params) * 512; |
diff --git a/sound/soc/samsung/spdif.c b/sound/soc/samsung/spdif.c index e93a93e296f4..d9ffc48fce5e 100644 --- a/sound/soc/samsung/spdif.c +++ b/sound/soc/samsung/spdif.c | |||
| @@ -211,8 +211,8 @@ static int spdif_hw_params(struct snd_pcm_substream *substream, | |||
| 211 | con |= CON_PCM_DATA; | 211 | con |= CON_PCM_DATA; |
| 212 | 212 | ||
| 213 | con &= ~CON_PCM_MASK; | 213 | con &= ~CON_PCM_MASK; |
| 214 | switch (params_format(params)) { | 214 | switch (params_width(params)) { |
| 215 | case SNDRV_PCM_FORMAT_S16_LE: | 215 | case 16: |
| 216 | con |= CON_PCM_16BIT; | 216 | con |= CON_PCM_16BIT; |
| 217 | break; | 217 | break; |
| 218 | default: | 218 | default: |
