aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/sound/simple-card.txt3
-rw-r--r--sound/soc/codecs/sgtl5000.c75
-rw-r--r--sound/soc/codecs/sirf-audio-codec.c8
-rw-r--r--sound/soc/generic/simple-card.c39
-rw-r--r--sound/soc/samsung/i2s.c14
-rw-r--r--sound/soc/samsung/pcm.c4
-rw-r--r--sound/soc/samsung/s3c-i2s-v2.c8
-rw-r--r--sound/soc/samsung/s3c2412-i2s.c6
-rw-r--r--sound/soc/samsung/s3c24xx-i2s.c6
-rw-r--r--sound/soc/samsung/smdk_wm8580.c8
-rw-r--r--sound/soc/samsung/smdk_wm8994.c2
-rw-r--r--sound/soc/samsung/spdif.c4
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
18Optional subnodes: 21Optional 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 */
38static const struct reg_default sgtl5000_reg_defaults[] = { 38static 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 */
1076static 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
1129static int sgtl5000_resume(struct snd_soc_codec *codec) 1086static 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
31static 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
49static struct snd_soc_ops asoc_simple_card_ops = {
50 .hw_params = asoc_simple_card_hw_params,
51};
52
30static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, 53static 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,
144static int simple_card_dai_link_of(struct device_node *node, 167static 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: