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: |