diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/arm/aaci.c | 2 | ||||
-rw-r--r-- | sound/drivers/pcsp/pcsp.h | 1 | ||||
-rw-r--r-- | sound/oss/Kconfig | 2 | ||||
-rw-r--r-- | sound/oss/msnd.c | 2 | ||||
-rw-r--r-- | sound/oss/pas2_pcm.c | 2 | ||||
-rw-r--r-- | sound/oss/sh_dac_audio.c | 85 | ||||
-rw-r--r-- | sound/pci/aw2/aw2-saa7146.c | 2 | ||||
-rw-r--r-- | sound/pci/lx6464es/lx6464es.c | 2 | ||||
-rw-r--r-- | sound/pci/sis7019.h | 4 | ||||
-rw-r--r-- | sound/pci/vx222/vx222_ops.c | 2 | ||||
-rw-r--r-- | sound/soc/pxa/Kconfig | 7 | ||||
-rw-r--r-- | sound/soc/pxa/palm27x.c | 2 | ||||
-rw-r--r-- | sound/soc/s3c24xx/s3c2412-i2s.c | 1 | ||||
-rw-r--r-- | sound/soc/s3c24xx/s3c2443-ac97.c | 1 | ||||
-rw-r--r-- | sound/soc/s3c24xx/s3c24xx-i2s.c | 2 | ||||
-rw-r--r-- | sound/soc/s3c24xx/s3c24xx-pcm.c | 21 | ||||
-rw-r--r-- | sound/sound_core.c | 7 | ||||
-rw-r--r-- | sound/usb/usbmixer.c | 2 |
18 files changed, 66 insertions, 81 deletions
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c index 5c48e36038f2..dc78272fc39f 100644 --- a/sound/arm/aaci.c +++ b/sound/arm/aaci.c | |||
@@ -1089,7 +1089,7 @@ static int __devinit aaci_probe(struct amba_device *dev, struct amba_id *id) | |||
1089 | goto out; | 1089 | goto out; |
1090 | } | 1090 | } |
1091 | 1091 | ||
1092 | aaci->base = ioremap(dev->res.start, SZ_4K); | 1092 | aaci->base = ioremap(dev->res.start, resource_size(&dev->res)); |
1093 | if (!aaci->base) { | 1093 | if (!aaci->base) { |
1094 | ret = -ENOMEM; | 1094 | ret = -ENOMEM; |
1095 | goto out; | 1095 | goto out; |
diff --git a/sound/drivers/pcsp/pcsp.h b/sound/drivers/pcsp/pcsp.h index cdef2664218f..174dd2ff0f22 100644 --- a/sound/drivers/pcsp/pcsp.h +++ b/sound/drivers/pcsp/pcsp.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #define __PCSP_H__ | 10 | #define __PCSP_H__ |
11 | 11 | ||
12 | #include <linux/hrtimer.h> | 12 | #include <linux/hrtimer.h> |
13 | #include <linux/timex.h> | ||
13 | #if defined(CONFIG_MIPS) || defined(CONFIG_X86) | 14 | #if defined(CONFIG_MIPS) || defined(CONFIG_X86) |
14 | /* Use the global PIT lock ! */ | 15 | /* Use the global PIT lock ! */ |
15 | #include <asm/i8253.h> | 16 | #include <asm/i8253.h> |
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig index 1ca7427c4b6d..bcf2a0698d54 100644 --- a/sound/oss/Kconfig +++ b/sound/oss/Kconfig | |||
@@ -561,7 +561,7 @@ endif # SOUND_OSS | |||
561 | 561 | ||
562 | config SOUND_SH_DAC_AUDIO | 562 | config SOUND_SH_DAC_AUDIO |
563 | tristate "SuperH DAC audio support" | 563 | tristate "SuperH DAC audio support" |
564 | depends on CPU_SH3 | 564 | depends on CPU_SH3 && HIGH_RES_TIMERS |
565 | 565 | ||
566 | config SOUND_SH_DAC_AUDIO_CHANNEL | 566 | config SOUND_SH_DAC_AUDIO_CHANNEL |
567 | int "DAC channel" | 567 | int "DAC channel" |
diff --git a/sound/oss/msnd.c b/sound/oss/msnd.c index e4282d93a1aa..21eb6dce46df 100644 --- a/sound/oss/msnd.c +++ b/sound/oss/msnd.c | |||
@@ -100,7 +100,7 @@ void msnd_fifo_free(msnd_fifo *f) | |||
100 | int msnd_fifo_alloc(msnd_fifo *f, size_t n) | 100 | int msnd_fifo_alloc(msnd_fifo *f, size_t n) |
101 | { | 101 | { |
102 | msnd_fifo_free(f); | 102 | msnd_fifo_free(f); |
103 | f->data = (char *)vmalloc(n); | 103 | f->data = vmalloc(n); |
104 | f->n = n; | 104 | f->n = n; |
105 | f->tail = 0; | 105 | f->tail = 0; |
106 | f->head = 0; | 106 | f->head = 0; |
diff --git a/sound/oss/pas2_pcm.c b/sound/oss/pas2_pcm.c index 36c3ea62086b..8f7d175767a2 100644 --- a/sound/oss/pas2_pcm.c +++ b/sound/oss/pas2_pcm.c | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/spinlock.h> | 19 | #include <linux/spinlock.h> |
20 | #include <asm/timex.h> | 20 | #include <linux/timex.h> |
21 | #include "sound_config.h" | 21 | #include "sound_config.h" |
22 | 22 | ||
23 | #include "pas2.h" | 23 | #include "pas2.h" |
diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c index 78cfb66e4c59..b2ed8757542a 100644 --- a/sound/oss/sh_dac_audio.c +++ b/sound/oss/sh_dac_audio.c | |||
@@ -18,47 +18,36 @@ | |||
18 | #include <linux/sound.h> | 18 | #include <linux/sound.h> |
19 | #include <linux/soundcard.h> | 19 | #include <linux/soundcard.h> |
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/hrtimer.h> | ||
21 | #include <asm/io.h> | 22 | #include <asm/io.h> |
22 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
23 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
24 | #include <asm/delay.h> | 25 | #include <asm/delay.h> |
25 | #include <asm/clock.h> | 26 | #include <asm/clock.h> |
26 | #include <asm/cpu/dac.h> | 27 | #include <cpu/dac.h> |
27 | #include <asm/cpu/timer.h> | ||
28 | #include <asm/machvec.h> | 28 | #include <asm/machvec.h> |
29 | #include <mach/hp6xx.h> | 29 | #include <mach/hp6xx.h> |
30 | #include <asm/hd64461.h> | 30 | #include <asm/hd64461.h> |
31 | 31 | ||
32 | #define MODNAME "sh_dac_audio" | 32 | #define MODNAME "sh_dac_audio" |
33 | 33 | ||
34 | #define TMU_TOCR_INIT 0x00 | ||
35 | |||
36 | #define TMU1_TCR_INIT 0x0020 /* Clock/4, rising edge; interrupt on */ | ||
37 | #define TMU1_TSTR_INIT 0x02 /* Bit to turn on TMU1 */ | ||
38 | |||
39 | #define BUFFER_SIZE 48000 | 34 | #define BUFFER_SIZE 48000 |
40 | 35 | ||
41 | static int rate; | 36 | static int rate; |
42 | static int empty; | 37 | static int empty; |
43 | static char *data_buffer, *buffer_begin, *buffer_end; | 38 | static char *data_buffer, *buffer_begin, *buffer_end; |
44 | static int in_use, device_major; | 39 | static int in_use, device_major; |
40 | static struct hrtimer hrtimer; | ||
41 | static ktime_t wakeups_per_second; | ||
45 | 42 | ||
46 | static void dac_audio_start_timer(void) | 43 | static void dac_audio_start_timer(void) |
47 | { | 44 | { |
48 | u8 tstr; | 45 | hrtimer_start(&hrtimer, wakeups_per_second, HRTIMER_MODE_REL); |
49 | |||
50 | tstr = ctrl_inb(TMU_TSTR); | ||
51 | tstr |= TMU1_TSTR_INIT; | ||
52 | ctrl_outb(tstr, TMU_TSTR); | ||
53 | } | 46 | } |
54 | 47 | ||
55 | static void dac_audio_stop_timer(void) | 48 | static void dac_audio_stop_timer(void) |
56 | { | 49 | { |
57 | u8 tstr; | 50 | hrtimer_cancel(&hrtimer); |
58 | |||
59 | tstr = ctrl_inb(TMU_TSTR); | ||
60 | tstr &= ~TMU1_TSTR_INIT; | ||
61 | ctrl_outb(tstr, TMU_TSTR); | ||
62 | } | 51 | } |
63 | 52 | ||
64 | static void dac_audio_reset(void) | 53 | static void dac_audio_reset(void) |
@@ -77,38 +66,30 @@ static void dac_audio_sync(void) | |||
77 | static void dac_audio_start(void) | 66 | static void dac_audio_start(void) |
78 | { | 67 | { |
79 | if (mach_is_hp6xx()) { | 68 | if (mach_is_hp6xx()) { |
80 | u16 v = inw(HD64461_GPADR); | 69 | u16 v = __raw_readw(HD64461_GPADR); |
81 | v &= ~HD64461_GPADR_SPEAKER; | 70 | v &= ~HD64461_GPADR_SPEAKER; |
82 | outw(v, HD64461_GPADR); | 71 | __raw_writew(v, HD64461_GPADR); |
83 | } | 72 | } |
84 | 73 | ||
85 | sh_dac_enable(CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); | 74 | sh_dac_enable(CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); |
86 | ctrl_outw(TMU1_TCR_INIT, TMU1_TCR); | ||
87 | } | 75 | } |
88 | static void dac_audio_stop(void) | 76 | static void dac_audio_stop(void) |
89 | { | 77 | { |
90 | dac_audio_stop_timer(); | 78 | dac_audio_stop_timer(); |
91 | 79 | ||
92 | if (mach_is_hp6xx()) { | 80 | if (mach_is_hp6xx()) { |
93 | u16 v = inw(HD64461_GPADR); | 81 | u16 v = __raw_readw(HD64461_GPADR); |
94 | v |= HD64461_GPADR_SPEAKER; | 82 | v |= HD64461_GPADR_SPEAKER; |
95 | outw(v, HD64461_GPADR); | 83 | __raw_writew(v, HD64461_GPADR); |
96 | } | 84 | } |
97 | 85 | ||
98 | sh_dac_output(0, CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); | 86 | sh_dac_output(0, CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); |
99 | sh_dac_disable(CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); | 87 | sh_dac_disable(CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); |
100 | } | 88 | } |
101 | 89 | ||
102 | static void dac_audio_set_rate(void) | 90 | static void dac_audio_set_rate(void) |
103 | { | 91 | { |
104 | unsigned long interval; | 92 | wakeups_per_second = ktime_set(0, 1000000000 / rate); |
105 | struct clk *clk; | ||
106 | |||
107 | clk = clk_get(NULL, "module_clk"); | ||
108 | interval = (clk_get_rate(clk) / 4) / rate; | ||
109 | clk_put(clk); | ||
110 | ctrl_outl(interval, TMU1_TCOR); | ||
111 | ctrl_outl(interval, TMU1_TCNT); | ||
112 | } | 93 | } |
113 | 94 | ||
114 | static int dac_audio_ioctl(struct inode *inode, struct file *file, | 95 | static int dac_audio_ioctl(struct inode *inode, struct file *file, |
@@ -265,32 +246,26 @@ const struct file_operations dac_audio_fops = { | |||
265 | .release = dac_audio_release, | 246 | .release = dac_audio_release, |
266 | }; | 247 | }; |
267 | 248 | ||
268 | static irqreturn_t timer1_interrupt(int irq, void *dev) | 249 | static enum hrtimer_restart sh_dac_audio_timer(struct hrtimer *handle) |
269 | { | 250 | { |
270 | unsigned long timer_status; | ||
271 | |||
272 | timer_status = ctrl_inw(TMU1_TCR); | ||
273 | timer_status &= ~0x100; | ||
274 | ctrl_outw(timer_status, TMU1_TCR); | ||
275 | |||
276 | if (!empty) { | 251 | if (!empty) { |
277 | sh_dac_output(*buffer_begin, CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); | 252 | sh_dac_output(*buffer_begin, CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); |
278 | buffer_begin++; | 253 | buffer_begin++; |
279 | 254 | ||
280 | if (buffer_begin == data_buffer + BUFFER_SIZE) | 255 | if (buffer_begin == data_buffer + BUFFER_SIZE) |
281 | buffer_begin = data_buffer; | 256 | buffer_begin = data_buffer; |
282 | if (buffer_begin == buffer_end) { | 257 | if (buffer_begin == buffer_end) |
283 | empty = 1; | 258 | empty = 1; |
284 | dac_audio_stop_timer(); | ||
285 | } | ||
286 | } | 259 | } |
287 | return IRQ_HANDLED; | 260 | |
261 | if (!empty) | ||
262 | hrtimer_start(&hrtimer, wakeups_per_second, HRTIMER_MODE_REL); | ||
263 | |||
264 | return HRTIMER_NORESTART; | ||
288 | } | 265 | } |
289 | 266 | ||
290 | static int __init dac_audio_init(void) | 267 | static int __init dac_audio_init(void) |
291 | { | 268 | { |
292 | int retval; | ||
293 | |||
294 | if ((device_major = register_sound_dsp(&dac_audio_fops, -1)) < 0) { | 269 | if ((device_major = register_sound_dsp(&dac_audio_fops, -1)) < 0) { |
295 | printk(KERN_ERR "Cannot register dsp device"); | 270 | printk(KERN_ERR "Cannot register dsp device"); |
296 | return device_major; | 271 | return device_major; |
@@ -306,21 +281,25 @@ static int __init dac_audio_init(void) | |||
306 | rate = 8000; | 281 | rate = 8000; |
307 | dac_audio_set_rate(); | 282 | dac_audio_set_rate(); |
308 | 283 | ||
309 | retval = | 284 | /* Today: High Resolution Timer driven DAC playback. |
310 | request_irq(TIMER1_IRQ, timer1_interrupt, IRQF_DISABLED, MODNAME, 0); | 285 | * The timer callback gets called once per sample. Ouch. |
311 | if (retval < 0) { | 286 | * |
312 | printk(KERN_ERR "sh_dac_audio: IRQ %d request failed\n", | 287 | * Future: A much better approach would be to use the |
313 | TIMER1_IRQ); | 288 | * SH7720 CMT+DMAC+DAC hardware combination like this: |
314 | return retval; | 289 | * - Program sample rate using CMT0 or CMT1 |
315 | } | 290 | * - Program DMAC to use CMT for timing and output to DAC |
291 | * - Play sound using DMAC, let CPU sleep. | ||
292 | * - While at it, rewrite this driver to use ALSA. | ||
293 | */ | ||
294 | |||
295 | hrtimer_init(&hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); | ||
296 | hrtimer.function = sh_dac_audio_timer; | ||
316 | 297 | ||
317 | return 0; | 298 | return 0; |
318 | } | 299 | } |
319 | 300 | ||
320 | static void __exit dac_audio_exit(void) | 301 | static void __exit dac_audio_exit(void) |
321 | { | 302 | { |
322 | free_irq(TIMER1_IRQ, 0); | ||
323 | |||
324 | unregister_sound_dsp(device_major); | 303 | unregister_sound_dsp(device_major); |
325 | kfree((void *)data_buffer); | 304 | kfree((void *)data_buffer); |
326 | } | 305 | } |
diff --git a/sound/pci/aw2/aw2-saa7146.c b/sound/pci/aw2/aw2-saa7146.c index 6a3891ab69dd..296123ab74f7 100644 --- a/sound/pci/aw2/aw2-saa7146.c +++ b/sound/pci/aw2/aw2-saa7146.c | |||
@@ -108,7 +108,7 @@ void snd_aw2_saa7146_setup(struct snd_aw2_saa7146 *chip, | |||
108 | #endif | 108 | #endif |
109 | /* WS0_CTRL, WS0_SYNC: input TSL1, I2S */ | 109 | /* WS0_CTRL, WS0_SYNC: input TSL1, I2S */ |
110 | 110 | ||
111 | /* At initialization WS1 and WS2 are disbaled (configured as input */ | 111 | /* At initialization WS1 and WS2 are disabled (configured as input) */ |
112 | acon1 |= 0 * WS1_CTRL; | 112 | acon1 |= 0 * WS1_CTRL; |
113 | acon1 |= 0 * WS2_CTRL; | 113 | acon1 |= 0 * WS2_CTRL; |
114 | 114 | ||
diff --git a/sound/pci/lx6464es/lx6464es.c b/sound/pci/lx6464es/lx6464es.c index ccf1b38c88ea..18da2ef04d09 100644 --- a/sound/pci/lx6464es/lx6464es.c +++ b/sound/pci/lx6464es/lx6464es.c | |||
@@ -988,7 +988,7 @@ static int __devinit snd_lx6464es_create(struct snd_card *card, | |||
988 | pci_set_master(pci); | 988 | pci_set_master(pci); |
989 | 989 | ||
990 | /* check if we can restrict PCI DMA transfers to 32 bits */ | 990 | /* check if we can restrict PCI DMA transfers to 32 bits */ |
991 | err = pci_set_dma_mask(pci, DMA_32BIT_MASK); | 991 | err = pci_set_dma_mask(pci, DMA_BIT_MASK(32)); |
992 | if (err < 0) { | 992 | if (err < 0) { |
993 | snd_printk(KERN_ERR "architecture does not support " | 993 | snd_printk(KERN_ERR "architecture does not support " |
994 | "32bit PCI busmaster DMA\n"); | 994 | "32bit PCI busmaster DMA\n"); |
diff --git a/sound/pci/sis7019.h b/sound/pci/sis7019.h index 013b6739a742..bc8c76819408 100644 --- a/sound/pci/sis7019.h +++ b/sound/pci/sis7019.h | |||
@@ -203,7 +203,7 @@ | |||
203 | #define SIS_WEISR_B 0xac | 203 | #define SIS_WEISR_B 0xac |
204 | 204 | ||
205 | 205 | ||
206 | /* Playback DMA parameters (paramter RAM) */ | 206 | /* Playback DMA parameters (parameter RAM) */ |
207 | #define SIS_PLAY_DMA_OFFSET 0x0000 | 207 | #define SIS_PLAY_DMA_OFFSET 0x0000 |
208 | #define SIS_PLAY_DMA_SIZE 0x10 | 208 | #define SIS_PLAY_DMA_SIZE 0x10 |
209 | #define SIS_PLAY_DMA_ADDR(addr, num) \ | 209 | #define SIS_PLAY_DMA_ADDR(addr, num) \ |
@@ -228,7 +228,7 @@ | |||
228 | #define SIS_PLAY_DMA_SSO_MASK 0xffff0000 | 228 | #define SIS_PLAY_DMA_SSO_MASK 0xffff0000 |
229 | #define SIS_PLAY_DMA_ESO_MASK 0x0000ffff | 229 | #define SIS_PLAY_DMA_ESO_MASK 0x0000ffff |
230 | 230 | ||
231 | /* Capture DMA parameters (paramter RAM) */ | 231 | /* Capture DMA parameters (parameter RAM) */ |
232 | #define SIS_CAPTURE_DMA_OFFSET 0x0800 | 232 | #define SIS_CAPTURE_DMA_OFFSET 0x0800 |
233 | #define SIS_CAPTURE_DMA_SIZE 0x10 | 233 | #define SIS_CAPTURE_DMA_SIZE 0x10 |
234 | #define SIS_CAPTURE_DMA_ADDR(addr, num) \ | 234 | #define SIS_CAPTURE_DMA_ADDR(addr, num) \ |
diff --git a/sound/pci/vx222/vx222_ops.c b/sound/pci/vx222/vx222_ops.c index c0efe4491116..6416d3f0c7be 100644 --- a/sound/pci/vx222/vx222_ops.c +++ b/sound/pci/vx222/vx222_ops.c | |||
@@ -367,7 +367,7 @@ static int vx2_load_xilinx_binary(struct vx_core *chip, const struct firmware *x | |||
367 | unsigned int port; | 367 | unsigned int port; |
368 | const unsigned char *image; | 368 | const unsigned char *image; |
369 | 369 | ||
370 | /* XILINX reset (wait at least 1 milisecond between reset on and off). */ | 370 | /* XILINX reset (wait at least 1 millisecond between reset on and off). */ |
371 | vx_outl(chip, CNTRL, VX_CNTRL_REGISTER_VALUE | VX_XILINX_RESET_MASK); | 371 | vx_outl(chip, CNTRL, VX_CNTRL_REGISTER_VALUE | VX_XILINX_RESET_MASK); |
372 | vx_inl(chip, CNTRL); | 372 | vx_inl(chip, CNTRL); |
373 | msleep(10); | 373 | msleep(10); |
diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig index dcd163a4ee9a..6375b4ea525d 100644 --- a/sound/soc/pxa/Kconfig +++ b/sound/soc/pxa/Kconfig | |||
@@ -98,13 +98,14 @@ config SND_PXA2XX_SOC_EM_X270 | |||
98 | CompuLab EM-x270, eXeda and CM-X300 machines. | 98 | CompuLab EM-x270, eXeda and CM-X300 machines. |
99 | 99 | ||
100 | config SND_PXA2XX_SOC_PALM27X | 100 | config SND_PXA2XX_SOC_PALM27X |
101 | bool "SoC Audio support for Palm T|X, T5 and LifeDrive" | 101 | bool "SoC Audio support for Palm T|X, T5, E2 and LifeDrive" |
102 | depends on SND_PXA2XX_SOC && (MACH_PALMLD || MACH_PALMTX || MACH_PALMT5) | 102 | depends on SND_PXA2XX_SOC && (MACH_PALMLD || MACH_PALMTX || \ |
103 | MACH_PALMT5 || MACH_PALMTE2) | ||
103 | select SND_PXA2XX_SOC_AC97 | 104 | select SND_PXA2XX_SOC_AC97 |
104 | select SND_SOC_WM9712 | 105 | select SND_SOC_WM9712 |
105 | help | 106 | help |
106 | Say Y if you want to add support for SoC audio on | 107 | Say Y if you want to add support for SoC audio on |
107 | Palm T|X, T5 or LifeDrive handheld computer. | 108 | Palm T|X, T5, E2 or LifeDrive handheld computer. |
108 | 109 | ||
109 | config SND_SOC_ZYLONITE | 110 | config SND_SOC_ZYLONITE |
110 | tristate "SoC Audio support for Marvell Zylonite" | 111 | tristate "SoC Audio support for Marvell Zylonite" |
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c index 44fcc4e01e08..e6102fda0a7f 100644 --- a/sound/soc/pxa/palm27x.c +++ b/sound/soc/pxa/palm27x.c | |||
@@ -205,7 +205,7 @@ static int palm27x_asoc_probe(struct platform_device *pdev) | |||
205 | int ret; | 205 | int ret; |
206 | 206 | ||
207 | if (!(machine_is_palmtx() || machine_is_palmt5() || | 207 | if (!(machine_is_palmtx() || machine_is_palmt5() || |
208 | machine_is_palmld())) | 208 | machine_is_palmld() || machine_is_palmte2())) |
209 | return -ENODEV; | 209 | return -ENODEV; |
210 | 210 | ||
211 | if (pdev->dev.platform_data) | 211 | if (pdev->dev.platform_data) |
diff --git a/sound/soc/s3c24xx/s3c2412-i2s.c b/sound/soc/s3c24xx/s3c2412-i2s.c index 168a088ba761..a587ec40b449 100644 --- a/sound/soc/s3c24xx/s3c2412-i2s.c +++ b/sound/soc/s3c24xx/s3c2412-i2s.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/device.h> | 21 | #include <linux/device.h> |
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/clk.h> | 24 | #include <linux/clk.h> |
24 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
25 | #include <linux/io.h> | 26 | #include <linux/io.h> |
diff --git a/sound/soc/s3c24xx/s3c2443-ac97.c b/sound/soc/s3c24xx/s3c2443-ac97.c index 3698f707c44d..3f03d5ddfacd 100644 --- a/sound/soc/s3c24xx/s3c2443-ac97.c +++ b/sound/soc/s3c24xx/s3c2443-ac97.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/wait.h> | 20 | #include <linux/wait.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/gpio.h> | ||
22 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
23 | 24 | ||
24 | #include <sound/core.h> | 25 | #include <sound/core.h> |
diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c index cc066964dad6..556e35f0ab73 100644 --- a/sound/soc/s3c24xx/s3c24xx-i2s.c +++ b/sound/soc/s3c24xx/s3c24xx-i2s.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/clk.h> | 21 | #include <linux/clk.h> |
22 | #include <linux/jiffies.h> | 22 | #include <linux/jiffies.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/gpio.h> | ||
25 | |||
24 | #include <sound/core.h> | 26 | #include <sound/core.h> |
25 | #include <sound/pcm.h> | 27 | #include <sound/pcm.h> |
26 | #include <sound/pcm_params.h> | 28 | #include <sound/pcm_params.h> |
diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c index 169ddad31575..eecfa5eba06b 100644 --- a/sound/soc/s3c24xx/s3c24xx-pcm.c +++ b/sound/soc/s3c24xx/s3c24xx-pcm.c | |||
@@ -218,24 +218,17 @@ static int s3c24xx_pcm_prepare(struct snd_pcm_substream *substream) | |||
218 | * sync to pclk, half-word transfers to the IIS-FIFO. */ | 218 | * sync to pclk, half-word transfers to the IIS-FIFO. */ |
219 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { | 219 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { |
220 | s3c2410_dma_devconfig(prtd->params->channel, | 220 | s3c2410_dma_devconfig(prtd->params->channel, |
221 | S3C2410_DMASRC_MEM, S3C2410_DISRCC_INC | | 221 | S3C2410_DMASRC_MEM, |
222 | S3C2410_DISRCC_APB, prtd->params->dma_addr); | 222 | prtd->params->dma_addr); |
223 | |||
224 | s3c2410_dma_config(prtd->params->channel, | ||
225 | prtd->params->dma_size, | ||
226 | S3C2410_DCON_SYNC_PCLK | | ||
227 | S3C2410_DCON_HANDSHAKE); | ||
228 | } else { | 223 | } else { |
229 | s3c2410_dma_config(prtd->params->channel, | ||
230 | prtd->params->dma_size, | ||
231 | S3C2410_DCON_HANDSHAKE | | ||
232 | S3C2410_DCON_SYNC_PCLK); | ||
233 | |||
234 | s3c2410_dma_devconfig(prtd->params->channel, | 224 | s3c2410_dma_devconfig(prtd->params->channel, |
235 | S3C2410_DMASRC_HW, 0x3, | 225 | S3C2410_DMASRC_HW, |
236 | prtd->params->dma_addr); | 226 | prtd->params->dma_addr); |
237 | } | 227 | } |
238 | 228 | ||
229 | s3c2410_dma_config(prtd->params->channel, | ||
230 | prtd->params->dma_size); | ||
231 | |||
239 | /* flush the DMA channel */ | 232 | /* flush the DMA channel */ |
240 | s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_FLUSH); | 233 | s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_FLUSH); |
241 | prtd->dma_loaded = 0; | 234 | prtd->dma_loaded = 0; |
diff --git a/sound/sound_core.c b/sound/sound_core.c index 2b302bbffe73..12522e6913d9 100644 --- a/sound/sound_core.c +++ b/sound/sound_core.c | |||
@@ -27,6 +27,11 @@ MODULE_DESCRIPTION("Core sound module"); | |||
27 | MODULE_AUTHOR("Alan Cox"); | 27 | MODULE_AUTHOR("Alan Cox"); |
28 | MODULE_LICENSE("GPL"); | 28 | MODULE_LICENSE("GPL"); |
29 | 29 | ||
30 | static char *sound_nodename(struct device *dev) | ||
31 | { | ||
32 | return kasprintf(GFP_KERNEL, "snd/%s", dev_name(dev)); | ||
33 | } | ||
34 | |||
30 | static int __init init_soundcore(void) | 35 | static int __init init_soundcore(void) |
31 | { | 36 | { |
32 | int rc; | 37 | int rc; |
@@ -41,6 +46,8 @@ static int __init init_soundcore(void) | |||
41 | return PTR_ERR(sound_class); | 46 | return PTR_ERR(sound_class); |
42 | } | 47 | } |
43 | 48 | ||
49 | sound_class->nodename = sound_nodename; | ||
50 | |||
44 | return 0; | 51 | return 0; |
45 | } | 52 | } |
46 | 53 | ||
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c index ecb58e7a6245..4bd3a7a0edc1 100644 --- a/sound/usb/usbmixer.c +++ b/sound/usb/usbmixer.c | |||
@@ -423,7 +423,7 @@ static int set_ctl_value(struct usb_mixer_elem_info *cval, int request, int vali | |||
423 | value_set = convert_bytes_value(cval, value_set); | 423 | value_set = convert_bytes_value(cval, value_set); |
424 | buf[0] = value_set & 0xff; | 424 | buf[0] = value_set & 0xff; |
425 | buf[1] = (value_set >> 8) & 0xff; | 425 | buf[1] = (value_set >> 8) & 0xff; |
426 | while (timeout -- > 0) | 426 | while (timeout-- > 0) |
427 | if (snd_usb_ctl_msg(cval->mixer->chip->dev, | 427 | if (snd_usb_ctl_msg(cval->mixer->chip->dev, |
428 | usb_sndctrlpipe(cval->mixer->chip->dev, 0), | 428 | usb_sndctrlpipe(cval->mixer->chip->dev, 0), |
429 | request, | 429 | request, |