patch-2.2.11 linux/drivers/sbus/audio/audio.c
Next file: linux/drivers/sbus/audio/cs4231.c
Previous file: linux/drivers/pci/pci.c
Back to the patch index
Back to the overall index
- Lines: 60
- Date:
Mon Aug 9 12:05:13 1999
- Orig file:
v2.2.10/linux/drivers/sbus/audio/audio.c
- Orig date:
Thu Apr 22 19:24:51 1999
diff -u --recursive --new-file v2.2.10/linux/drivers/sbus/audio/audio.c linux/drivers/sbus/audio/audio.c
@@ -117,6 +117,13 @@
* TODO: Make number of input/output buffers tunable parameters
*/
+#if defined (LINUX_VERSION_CODE) && LINUX_VERSION_CODE > 0x202ff
+ init_waitqueue_head(&drv->open_wait);
+ init_waitqueue_head(&drv->output_write_wait);
+ init_waitqueue_head(&drv->output_drain_wait);
+ init_waitqueue_head(&drv->input_read_wait);
+#endif
+
drv->num_output_buffers = 8;
drv->output_buffer_size = (4096 * 2);
drv->playing_count = 0;
@@ -264,6 +271,7 @@
* If status & 2, a buffer was claimed for DMA and is still in use.
*
* The playing_count for non-DMA hardware should never be non-zero.
+ * Value of status for non-DMA hardware should always be 1.
*/
if (status & 1) {
if (drv->playing_count)
@@ -300,8 +308,9 @@
/* If we got back a buffer, see if anyone wants to write to it */
if ((status & 1) || ((drv->output_count + drv->playing_count)
- < drv->num_output_buffers))
+ < drv->num_output_buffers)) {
wake_up_interruptible(&drv->output_write_wait);
+ }
/* If the output queue is empty, shut down the driver. */
if ((drv->output_count < 1) && (drv->playing_count < 1)) {
@@ -664,7 +673,7 @@
case SOUND_MIXER_WRITE_CD:
case SOUND_MIXER_WRITE_LINE:
case SOUND_MIXER_WRITE_IMIX:
- if(get_user(k, arg))
+ if(COPY_IN(arg, k))
return -EFAULT;
tprintk(("setting input volume (0x%x)", k));
if (drv->ops->get_input_channels)
@@ -695,7 +704,7 @@
case SOUND_MIXER_WRITE_PCM:
case SOUND_MIXER_WRITE_VOLUME:
case SOUND_MIXER_WRITE_SPEAKER:
- if(get_user(k, arg))
+ if(COPY_IN(arg, k))
return -EFAULT;
tprintk(("setting output volume (0x%x)", k));
if (drv->ops->get_output_channels)
@@ -736,7 +745,7 @@
case SOUND_MIXER_WRITE_RECSRC:
if (!drv->ops->set_input_port)
return -EINVAL;
- if(get_user(k, arg))
+ if(COPY_IN(arg, k))
return -EFAULT;
/* only one should ever be selected */
if (k & SOUND_MASK_IMIX) j = AUDIO_ANALOG_LOOPBACK;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)