History

Merge tag 'sound-3.19-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai: "Nothing too exciting as a new year's start here: most of fixes are for ASoC, a boot crash fix on OMAP for deferred probe, a few driver specific fixes (Intel, dwc, rockchip, rt5677), in addition to typo fixes in kerneldoc comments for PCM" * tag 'sound-3.19-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: pcm: Fix kerneldoc for params_*() functions ASoC: rockchip: i2s: fix maxburst of dma data to 4 ASoC: rockchip: i2s: fix error defination of transmit data level ASoC: Intel: correct the fixed free block allocation ASoC: rt5677: fixed rt5677_dsp_vad_put rt5677_dsp_vad_get panic ASoC: Intel: Fix BYTCR machine driver MODULE_ALIAS ASoC: Intel: Fix BYTCR firmware name ASoC: dwc: Iterate over all channels ASoC: dwc: Ensure FIFOs are flushed to prevent channel swap ASoC: Intel: Add I2C dependency to two new machines ASoC: dapm: Remove snd_soc_of_parse_audio_routing() due to deferred probe

Linus Torvalds committed 11 years ago

Commit 6a4bfa72 parents d7e19bd 62f64a810 files · +57 −45Browse files

Unified · Split

10 files
  1. include/sound/pcm.h +5 −5
  2. sound/soc/codecs/rt5677.c +5 −4
  3. sound/soc/dwc/designware_i2s.c +30 −19
  4. sound/soc/intel/Kconfig +2 −2
  5. sound/soc/intel/bytcr_dpcm_rt5640.c +1 −1
  6. sound/soc/intel/sst-firmware.c +5 −1
  7. sound/soc/intel/sst/sst_acpi.c +1 −1
  8. sound/soc/rockchip/rockchip_i2s.c +2 −2
  9. sound/soc/rockchip/rockchip_i2s.h +1 −1
  10. sound/soc/soc-core.c +5 −9
include/sound/pcm.h+5−5
@@ -857,7 +857,7 @@ static inline unsigned int params_channels(const struct snd_pcm_hw_params *p) · 856 unmodified lines
857857 }
858858
859859 /**
860− * params_channels - Get the sample rate from the hw params
860+ * params_rate - Get the sample rate from the hw params
861861 * @p: hw params
862862 */
863863 static inline unsigned int params_rate(const struct snd_pcm_hw_params *p)
@@ -866,7 +866,7 @@ static inline unsigned int params_rate(const struct snd_pcm_hw_params *p) · 2 unmodified lines
866866 }
867867
868868 /**
869− * params_channels - Get the period size (in frames) from the hw params
869+ * params_period_size - Get the period size (in frames) from the hw params
870870 * @p: hw params
871871 */
872872 static inline unsigned int params_period_size(const struct snd_pcm_hw_params *p)
@@ -875,7 +875,7 @@ static inline unsigned int params_period_size(const struct snd_pcm_hw_params *p) · 2 unmodified lines
875875 }
876876
877877 /**
878− * params_channels - Get the number of periods from the hw params
878+ * params_periods - Get the number of periods from the hw params
879879 * @p: hw params
880880 */
881881 static inline unsigned int params_periods(const struct snd_pcm_hw_params *p)
@@ -884,7 +884,7 @@ static inline unsigned int params_periods(const struct snd_pcm_hw_params *p) · 2 unmodified lines
884884 }
885885
886886 /**
887− * params_channels - Get the buffer size (in frames) from the hw params
887+ * params_buffer_size - Get the buffer size (in frames) from the hw params
888888 * @p: hw params
889889 */
890890 static inline unsigned int params_buffer_size(const struct snd_pcm_hw_params *p)
@@ -893,7 +893,7 @@ static inline unsigned int params_buffer_size(const struct snd_pcm_hw_params *p) · 2 unmodified lines
893893 }
894894
895895 /**
896− * params_channels - Get the buffer size (in bytes) from the hw params
896+ * params_buffer_bytes - Get the buffer size (in bytes) from the hw params
897897 * @p: hw params
898898 */
899899 static inline unsigned int params_buffer_bytes(const struct snd_pcm_hw_params *p)
sound/soc/codecs/rt5677.c+5−4
@@ -784,8 +784,8 @@ static unsigned int bst_tlv[] = { · 783 unmodified lines
784784 static int rt5677_dsp_vad_get(struct snd_kcontrol *kcontrol,
785785 struct snd_ctl_elem_value *ucontrol)
786786 {
787− struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
788− struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec);
787+ struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
788+ struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component);
789789
790790 ucontrol->value.integer.value[0] = rt5677->dsp_vad_en;
791791
@@ -795,8 +795,9 @@ static int rt5677_dsp_vad_get(struct snd_kcontrol *kcontrol, · 3 unmodified lines
795795 static int rt5677_dsp_vad_put(struct snd_kcontrol *kcontrol,
796796 struct snd_ctl_elem_value *ucontrol)
797797 {
798− struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
799− struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec);
798+ struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
799+ struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component);
800+ struct snd_soc_codec *codec = snd_soc_component_to_codec(component);
800801
801802 rt5677->dsp_vad_en = !!ucontrol->value.integer.value[0];
802803
sound/soc/dwc/designware_i2s.c+30−19
@@ -209,16 +209,9 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream, · 208 unmodified lines
209209
210210 switch (config->chan_nr) {
211211 case EIGHT_CHANNEL_SUPPORT:
212− ch_reg = 3;
213− break;
214212 case SIX_CHANNEL_SUPPORT:
215− ch_reg = 2;
216− break;
217213 case FOUR_CHANNEL_SUPPORT:
218− ch_reg = 1;
219− break;
220214 case TWO_CHANNEL_SUPPORT:
221− ch_reg = 0;
222215 break;
223216 default:
224217 dev_err(dev->dev, "channel not supported\n");
@@ -227,18 +220,22 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream, · 2 unmodified lines
227220
228221 i2s_disable_channels(dev, substream->stream);
229222
230− if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
231− i2s_write_reg(dev->i2s_base, TCR(ch_reg), xfer_resolution);
232− i2s_write_reg(dev->i2s_base, TFCR(ch_reg), 0x02);
233− irq = i2s_read_reg(dev->i2s_base, IMR(ch_reg));
234− i2s_write_reg(dev->i2s_base, IMR(ch_reg), irq & ~0x30);
235− i2s_write_reg(dev->i2s_base, TER(ch_reg), 1);
236− } else {
237− i2s_write_reg(dev->i2s_base, RCR(ch_reg), xfer_resolution);
238− i2s_write_reg(dev->i2s_base, RFCR(ch_reg), 0x07);
239− irq = i2s_read_reg(dev->i2s_base, IMR(ch_reg));
240− i2s_write_reg(dev->i2s_base, IMR(ch_reg), irq & ~0x03);
241− i2s_write_reg(dev->i2s_base, RER(ch_reg), 1);
223+ for (ch_reg = 0; ch_reg < (config->chan_nr / 2); ch_reg++) {
224+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
225+ i2s_write_reg(dev->i2s_base, TCR(ch_reg),
226+ xfer_resolution);
227+ i2s_write_reg(dev->i2s_base, TFCR(ch_reg), 0x02);
228+ irq = i2s_read_reg(dev->i2s_base, IMR(ch_reg));
229+ i2s_write_reg(dev->i2s_base, IMR(ch_reg), irq & ~0x30);
230+ i2s_write_reg(dev->i2s_base, TER(ch_reg), 1);
231+ } else {
232+ i2s_write_reg(dev->i2s_base, RCR(ch_reg),
233+ xfer_resolution);
234+ i2s_write_reg(dev->i2s_base, RFCR(ch_reg), 0x07);
235+ irq = i2s_read_reg(dev->i2s_base, IMR(ch_reg));
236+ i2s_write_reg(dev->i2s_base, IMR(ch_reg), irq & ~0x03);
237+ i2s_write_reg(dev->i2s_base, RER(ch_reg), 1);
238+ }
242239 }
243240
244241 i2s_write_reg(dev->i2s_base, CCR, ccr);
@@ -263,6 +260,19 @@ static void dw_i2s_shutdown(struct snd_pcm_substream *substream, · 18 unmodified lines
263260 snd_soc_dai_set_dma_data(dai, substream, NULL);
264261 }
265262
263+static int dw_i2s_prepare(struct snd_pcm_substream *substream,
264+ struct snd_soc_dai *dai)
265+{
266+ struct dw_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
267+
268+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
269+ i2s_write_reg(dev->i2s_base, TXFFR, 1);
270+ else
271+ i2s_write_reg(dev->i2s_base, RXFFR, 1);
272+
273+ return 0;
274+}
275+
266276 static int dw_i2s_trigger(struct snd_pcm_substream *substream,
267277 int cmd, struct snd_soc_dai *dai)
268278 {
@@ -294,6 +304,7 @@ static struct snd_soc_dai_ops dw_i2s_dai_ops = { · 25 unmodified lines
294304 .startup = dw_i2s_startup,
295305 .shutdown = dw_i2s_shutdown,
296306 .hw_params = dw_i2s_hw_params,
307+ .prepare = dw_i2s_prepare,
297308 .trigger = dw_i2s_trigger,
298309 };
299310
sound/soc/intel/Kconfig+2−2
@@ -89,7 +89,7 @@ config SND_SOC_INTEL_BROADWELL_MACH · 88 unmodified lines
8989
9090 config SND_SOC_INTEL_BYTCR_RT5640_MACH
9191 tristate "ASoC Audio DSP Support for MID BYT Platform"
92− depends on X86
92+ depends on X86 && I2C
9393 select SND_SOC_RT5640
9494 select SND_SST_MFLD_PLATFORM
9595 select SND_SST_IPC_ACPI
@@ -101,7 +101,7 @@ config SND_SOC_INTEL_BYTCR_RT5640_MACH · 5 unmodified lines
101101
102102 config SND_SOC_INTEL_CHT_BSW_RT5672_MACH
103103 tristate "ASoC Audio driver for Intel Cherrytrail & Braswell with RT5672 codec"
104− depends on X86_INTEL_LPSS
104+ depends on X86_INTEL_LPSS && I2C
105105 select SND_SOC_RT5670
106106 select SND_SST_MFLD_PLATFORM
107107 select SND_SST_IPC_ACPI
sound/soc/intel/bytcr_dpcm_rt5640.c+1−1
@@ -227,4 +227,4 @@ module_platform_driver(snd_byt_mc_driver); · 226 unmodified lines
227227 MODULE_DESCRIPTION("ASoC Intel(R) Baytrail CR Machine driver");
228228 MODULE_AUTHOR("Subhransu S. Prusty <subhransu.s.prusty@intel.com>");
229229 MODULE_LICENSE("GPL v2");
230−MODULE_ALIAS("platform:bytrt5640-audio");
230+MODULE_ALIAS("platform:bytt100_rt5640");
sound/soc/intel/sst-firmware.c+5−1
@@ -763,8 +763,12 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba · 762 unmodified lines
763763 /* does block span more than 1 section */
764764 if (ba->offset >= block->offset && ba->offset < block_end) {
765765
766+ /* add block */
767+ list_move(&block->list, &dsp->used_block_list);
768+ list_add(&block->module_list, block_list);
766769 /* align ba to block boundary */
767− ba->offset = block->offset;
770+ ba->size -= block_end - ba->offset;
771+ ba->offset = block_end;
768772
769773 err = block_alloc_contiguous(dsp, ba, block_list);
770774 if (err < 0)
sound/soc/intel/sst/sst_acpi.c+1−1
@@ -343,7 +343,7 @@ int sst_acpi_remove(struct platform_device *pdev) · 342 unmodified lines
343343 }
344344
345345 static struct sst_machines sst_acpi_bytcr[] = {
346− {"10EC5640", "T100", "bytt100_rt5640", NULL, "fw_sst_0f28.bin",
346+ {"10EC5640", "T100", "bytt100_rt5640", NULL, "intel/fw_sst_0f28.bin",
347347 &byt_rvp_platform_data },
348348 {},
349349 };
sound/soc/rockchip/rockchip_i2s.c+2−2
@@ -454,11 +454,11 @@ static int rockchip_i2s_probe(struct platform_device *pdev) · 453 unmodified lines
454454
455455 i2s->playback_dma_data.addr = res->start + I2S_TXDR;
456456 i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
457− i2s->playback_dma_data.maxburst = 16;
457+ i2s->playback_dma_data.maxburst = 4;
458458
459459 i2s->capture_dma_data.addr = res->start + I2S_RXDR;
460460 i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
461− i2s->capture_dma_data.maxburst = 16;
461+ i2s->capture_dma_data.maxburst = 4;
462462
463463 i2s->dev = &pdev->dev;
464464 dev_set_drvdata(&pdev->dev, i2s);
sound/soc/rockchip/rockchip_i2s.h+1−1
@@ -127,7 +127,7 @@ · 126 unmodified lines
127127 #define I2S_DMACR_TDE_DISABLE (0 << I2S_DMACR_TDE_SHIFT)
128128 #define I2S_DMACR_TDE_ENABLE (1 << I2S_DMACR_TDE_SHIFT)
129129 #define I2S_DMACR_TDL_SHIFT 0
130−#define I2S_DMACR_TDL(x) ((x - 1) << I2S_DMACR_TDL_SHIFT)
130+#define I2S_DMACR_TDL(x) ((x) << I2S_DMACR_TDL_SHIFT)
131131 #define I2S_DMACR_TDL_MASK (0x1f << I2S_DMACR_TDL_SHIFT)
132132
133133 /*
sound/soc/soc-core.c+5−9
@@ -3230,7 +3230,7 @@ int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, · 3229 unmodified lines
32303230 const char *propname)
32313231 {
32323232 struct device_node *np = card->dev->of_node;
3233− int num_routes, old_routes;
3233+ int num_routes;
32343234 struct snd_soc_dapm_route *routes;
32353235 int i, ret;
32363236
@@ -3248,9 +3248,7 @@ int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, · 11 unmodified lines
32483248 return -EINVAL;
32493249 }
32503250
3251− old_routes = card->num_dapm_routes;
3252− routes = devm_kzalloc(card->dev,
3253− (old_routes + num_routes) * sizeof(*routes),
3251+ routes = devm_kzalloc(card->dev, num_routes * sizeof(*routes),
32543252 GFP_KERNEL);
32553253 if (!routes) {
32563254 dev_err(card->dev,
@@ -3258,11 +3256,9 @@ int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, · 1 unmodified line
32583256 return -EINVAL;
32593257 }
32603258
3261− memcpy(routes, card->dapm_routes, old_routes * sizeof(*routes));
3262−
32633259 for (i = 0; i < num_routes; i++) {
32643260 ret = of_property_read_string_index(np, propname,
3265− 2 * i, &routes[old_routes + i].sink);
3261+ 2 * i, &routes[i].sink);
32663262 if (ret) {
32673263 dev_err(card->dev,
32683264 "ASoC: Property '%s' index %d could not be read: %d\n",
@@ -3270,7 +3266,7 @@ int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, · 1 unmodified line
32703266 return -EINVAL;
32713267 }
32723268 ret = of_property_read_string_index(np, propname,
3273− (2 * i) + 1, &routes[old_routes + i].source);
3269+ (2 * i) + 1, &routes[i].source);
32743270 if (ret) {
32753271 dev_err(card->dev,
32763272 "ASoC: Property '%s' index %d could not be read: %d\n",
@@ -3279,7 +3275,7 @@ int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, · 2 unmodified lines
32793275 }
32803276 }
32813277
3282− card->num_dapm_routes += num_routes;
3278+ card->num_dapm_routes = num_routes;
32833279 card->dapm_routes = routes;
32843280
32853281 return 0;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t