Update of /cvsroot/alsa/alsa-kernel/pci/rme9652
In directory sc8-pr-cvs1:/tmp/cvs-serv28241/alsa-kernel/pci/rme9652
Modified Files:
hdsp.c
Log Message:
- sync with the 2.6 tree (imajor, iminor)
- fixed firmware ioctls for sscape and hdsp drivers (ioctl out of range)
Index: hdsp.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/rme9652/hdsp.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- hdsp.c 12 Aug 2003 14:10:16 -0000 1.43
+++ hdsp.c 25 Sep 2003 18:55:43 -0000 1.44
@@ -3788,17 +3788,11 @@
static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int cmd,
unsigned long arg)
{
hdsp_t *hdsp = (hdsp_t *)hw->private_data;
- hdsp_peak_rms_t *peak_rms;
- hdsp_firmware_t *firmware;
- hdsp_mixer_t *mixer;
- hdsp_config_info_t info;
- hdsp_version_t hdsp_version;
- int i;
- int err;
- unsigned long flags;
switch (cmd) {
- case SNDRV_HDSP_IOCTL_GET_PEAK_RMS:
+ case SNDRV_HDSP_IOCTL_GET_PEAK_RMS: {
+ hdsp_peak_rms_t *peak_rms;
+
if (hdsp->io_type == H9652) {
snd_printk("hardware metering isn't supported yet for hdsp9652
cards\n");
return -EINVAL;
@@ -3824,7 +3818,12 @@
return -EFAULT;
}
break;
- case SNDRV_HDSP_IOCTL_GET_CONFIG_INFO:
+ }
+ case SNDRV_HDSP_IOCTL_GET_CONFIG_INFO: {
+ hdsp_config_info_t info;
+ unsigned long flags;
+ int i;
+
if (!(hdsp->state & HDSP_FirmwareLoaded)) {
snd_printk("Firmware needs to be uploaded to the card.\n");
return -EINVAL;
@@ -3854,7 +3853,11 @@
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
break;
- case SNDRV_HDSP_IOCTL_GET_VERSION:
+ }
+ case SNDRV_HDSP_IOCTL_GET_VERSION: {
+ hdsp_version_t hdsp_version;
+ int err;
+
if (hdsp->io_type == H9652) return -EINVAL;
if (hdsp->io_type == Undefined) {
if ((err = hdsp_get_iobox_version(hdsp)) < 0) {
@@ -3867,19 +3870,27 @@
return -EFAULT;
}
break;
- case SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE:
+ }
+ case SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE: {
+ hdsp_firmware_t *firmware;
+ unsigned long *firmware_data;
+ int err;
+
if (hdsp->io_type == H9652) return -EINVAL;
/* SNDRV_HDSP_IOCTL_GET_VERSION must have been called */
if (hdsp->io_type == Undefined) return -EINVAL;
snd_printk("initializing firmware upload\n");
firmware = (hdsp_firmware_t *)arg;
+ if (get_user(firmware_data, &firmware->firmware_data)) {
+ return -EFAULT;
+ }
if (hdsp_check_for_iobox (hdsp)) {
return -EIO;
}
- if (copy_from_user(hdsp->firmware_cache, firmware->firmware_data,
sizeof(unsigned long)*24413) != 0) {
+ if (copy_from_user(hdsp->firmware_cache, firmware_data,
sizeof(unsigned long)*24413) != 0) {
return -EFAULT;
}
@@ -3901,11 +3912,15 @@
}
}
break;
- case SNDRV_HDSP_IOCTL_GET_MIXER:
+ }
+ case SNDRV_HDSP_IOCTL_GET_MIXER: {
+ hdsp_mixer_t *mixer;
+
mixer = (hdsp_mixer_t *)arg;
if (copy_to_user(mixer->matrix, hdsp->mixer_matrix, sizeof(unsigned
short)*HDSP_MATRIX_MIXER_SIZE))
return -EFAULT;
break;
+ }
default:
return -EINVAL;
}
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog