Commit 9fb5430c authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'topic/oss-fix' into for-linus

parents 4c5ecb7e e5bf4843
To configure the Crystal CS423x sound chip and activate its DSP functions,
modules may be loaded in this order:
modprobe sound
insmod ad1848
insmod uart401
insmod cs4232 io=* irq=* dma=* dma2=*
This is the meaning of the parameters:
io--I/O address of the Windows Sound System (normally 0x534)
irq--IRQ of this device
dma and dma2--DMA channels (DMA2 may be 0)
On some cards, the board attempts to do non-PnP setup, and fails. If you
have problems, use Linux' PnP facilities.
To get MIDI facilities add
insmod opl3 io=*
where "io" is the I/O address of the OPL3 synthesizer. This will be shown
in /proc/sys/pnp and is normally 0x388.
...@@ -80,7 +80,7 @@ Notes: ...@@ -80,7 +80,7 @@ Notes:
additional features. additional features.
2. The commercial OSS driver may be obtained from the site: 2. The commercial OSS driver may be obtained from the site:
http://www/opensound.com. This may be used for cards that http://www.opensound.com. This may be used for cards that
are unsupported by the kernel driver, or may be used are unsupported by the kernel driver, or may be used
by other operating systems. by other operating systems.
......
...@@ -280,7 +280,7 @@ static void wait_for_calibration(ad1848_info * devc) ...@@ -280,7 +280,7 @@ static void wait_for_calibration(ad1848_info * devc)
while (timeout > 0 && (ad_read(devc, 11) & 0x20)) while (timeout > 0 && (ad_read(devc, 11) & 0x20))
timeout--; timeout--;
if (ad_read(devc, 11) & 0x20) if (ad_read(devc, 11) & 0x20)
if ( (devc->model != MD_1845) || (devc->model != MD_1845_SSCAPE)) if ((devc->model != MD_1845) && (devc->model != MD_1845_SSCAPE))
printk(KERN_WARNING "ad1848: Auto calibration timed out(3).\n"); printk(KERN_WARNING "ad1848: Auto calibration timed out(3).\n");
} }
...@@ -2107,7 +2107,7 @@ int ad1848_control(int cmd, int arg) ...@@ -2107,7 +2107,7 @@ int ad1848_control(int cmd, int arg)
switch (cmd) switch (cmd)
{ {
case AD1848_SET_XTAL: /* Change clock frequency of AD1845 (only ) */ case AD1848_SET_XTAL: /* Change clock frequency of AD1845 (only ) */
if (devc->model != MD_1845 || devc->model != MD_1845_SSCAPE) if (devc->model != MD_1845 && devc->model != MD_1845_SSCAPE)
return -EINVAL; return -EINVAL;
spin_lock_irqsave(&devc->lock,flags); spin_lock_irqsave(&devc->lock,flags);
ad_enter_MCE(devc); ad_enter_MCE(devc);
......
...@@ -439,7 +439,7 @@ int DMAbuf_sync(int dev) ...@@ -439,7 +439,7 @@ int DMAbuf_sync(int dev)
DMAbuf_launch_output(dev, dmap); DMAbuf_launch_output(dev, dmap);
adev->dmap_out->flags |= DMA_SYNCING; adev->dmap_out->flags |= DMA_SYNCING;
adev->dmap_out->underrun_count = 0; adev->dmap_out->underrun_count = 0;
while (!signal_pending(current) && n++ <= adev->dmap_out->nbufs && while (!signal_pending(current) && n++ < adev->dmap_out->nbufs &&
adev->dmap_out->qlen && adev->dmap_out->underrun_count == 0) { adev->dmap_out->qlen && adev->dmap_out->underrun_count == 0) {
long t = dmabuf_timeout(dmap); long t = dmabuf_timeout(dmap);
spin_unlock_irqrestore(&dmap->lock,flags); spin_unlock_irqrestore(&dmap->lock,flags);
......
...@@ -156,9 +156,7 @@ static int __init config_pas_hw(struct address_info *hw_config) ...@@ -156,9 +156,7 @@ static int __init config_pas_hw(struct address_info *hw_config)
* 0x80 * 0x80
*/ , 0xB88); */ , 0xB88);
pas_write(0x80 pas_write(0x80 | (joystick ? 0x40 : 0), 0xF388);
| joystick?0x40:0
,0xF388);
if (pas_irq < 0 || pas_irq > 15) if (pas_irq < 0 || pas_irq > 15)
{ {
......
...@@ -457,10 +457,9 @@ static void pss_mixer_reset(pss_confdata *devc) ...@@ -457,10 +457,9 @@ static void pss_mixer_reset(pss_confdata *devc)
} }
} }
static int set_volume_mono(unsigned __user *p, int *aleft) static int set_volume_mono(unsigned __user *p, unsigned int *aleft)
{ {
int left; unsigned int left, volume;
unsigned volume;
if (get_user(volume, p)) if (get_user(volume, p))
return -EFAULT; return -EFAULT;
...@@ -471,10 +470,11 @@ static int set_volume_mono(unsigned __user *p, int *aleft) ...@@ -471,10 +470,11 @@ static int set_volume_mono(unsigned __user *p, int *aleft)
return 0; return 0;
} }
static int set_volume_stereo(unsigned __user *p, int *aleft, int *aright) static int set_volume_stereo(unsigned __user *p,
unsigned int *aleft,
unsigned int *aright)
{ {
int left, right; unsigned int left, right, volume;
unsigned volume;
if (get_user(volume, p)) if (get_user(volume, p))
return -EFAULT; return -EFAULT;
......
...@@ -212,7 +212,6 @@ int sequencer_write(int dev, struct file *file, const char __user *buf, int coun ...@@ -212,7 +212,6 @@ int sequencer_write(int dev, struct file *file, const char __user *buf, int coun
{ {
unsigned char event_rec[EV_SZ], ev_code; unsigned char event_rec[EV_SZ], ev_code;
int p = 0, c, ev_size; int p = 0, c, ev_size;
int err;
int mode = translate_mode(file); int mode = translate_mode(file);
dev = dev >> 4; dev = dev >> 4;
...@@ -285,7 +284,7 @@ int sequencer_write(int dev, struct file *file, const char __user *buf, int coun ...@@ -285,7 +284,7 @@ int sequencer_write(int dev, struct file *file, const char __user *buf, int coun
{ {
if (!midi_opened[event_rec[2]]) if (!midi_opened[event_rec[2]])
{ {
int mode; int err, mode;
int dev = event_rec[2]; int dev = event_rec[2];
if (dev >= max_mididev || midi_devs[dev]==NULL) if (dev >= max_mididev || midi_devs[dev]==NULL)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment