[PATCH] kill cdrom ->dev_ioctl method
Since early 2.4.x all cdrom drivers implement the block_device methods themselves, so they can handle additional ioctls directly instead of going through the cdrom layer. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Jens Axboe <axboe@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
d2c5d4fc07
commit
6a2900b676
@@ -407,7 +407,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
|
||||
ENSURE(get_mcn, CDC_MCN);
|
||||
ENSURE(reset, CDC_RESET);
|
||||
ENSURE(audio_ioctl, CDC_PLAY_AUDIO);
|
||||
ENSURE(dev_ioctl, CDC_IOCTLS);
|
||||
ENSURE(generic_packet, CDC_GENERIC_PACKET);
|
||||
cdi->mc_flags = 0;
|
||||
cdo->n_minors = 0;
|
||||
@@ -2776,12 +2775,6 @@ int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi,
|
||||
return cdrom_ioctl_audioctl(cdi, cmd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Finally, do the device specific ioctls
|
||||
*/
|
||||
if (CDROM_CAN(CDC_IOCTLS))
|
||||
return cdi->ops->dev_ioctl(cdi, cmd, arg);
|
||||
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
|
@@ -2668,7 +2668,7 @@ static int scd_audio_ioctl(struct cdrom_device_info *cdi,
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int scd_dev_ioctl(struct cdrom_device_info *cdi,
|
||||
static int scd_read_audio(struct cdrom_device_info *cdi,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
void __user *argp = (void __user *)arg;
|
||||
@@ -2894,11 +2894,10 @@ static struct cdrom_device_ops scd_dops = {
|
||||
.get_mcn = scd_get_mcn,
|
||||
.reset = scd_reset,
|
||||
.audio_ioctl = scd_audio_ioctl,
|
||||
.dev_ioctl = scd_dev_ioctl,
|
||||
.capability = CDC_OPEN_TRAY | CDC_CLOSE_TRAY | CDC_LOCK |
|
||||
CDC_SELECT_SPEED | CDC_MULTI_SESSION |
|
||||
CDC_MCN | CDC_MEDIA_CHANGED | CDC_PLAY_AUDIO |
|
||||
CDC_RESET | CDC_IOCTLS | CDC_DRIVE_STATUS,
|
||||
CDC_RESET | CDC_DRIVE_STATUS,
|
||||
.n_minors = 1,
|
||||
};
|
||||
|
||||
@@ -2936,6 +2935,9 @@ static int scd_block_ioctl(struct inode *inode, struct file *file,
|
||||
case CDROMCLOSETRAY:
|
||||
retval = scd_tray_move(&scd_info, 0);
|
||||
break;
|
||||
case CDROMREADAUDIO:
|
||||
retval = scd_read_audio(&scd_info, CDROMREADAUDIO, arg);
|
||||
break;
|
||||
default:
|
||||
retval = cdrom_ioctl(file, &scd_info, inode, cmd, arg);
|
||||
}
|
||||
|
@@ -1157,32 +1157,6 @@ static int cm206_audio_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
|
||||
}
|
||||
}
|
||||
|
||||
/* Ioctl. These ioctls are specific to the cm206 driver. I have made
|
||||
some driver statistics accessible through ioctl calls.
|
||||
*/
|
||||
|
||||
static int cm206_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
#ifdef STATISTICS
|
||||
case CM206CTL_GET_STAT:
|
||||
if (arg >= NR_STATS)
|
||||
return -EINVAL;
|
||||
else
|
||||
return cd->stats[arg];
|
||||
case CM206CTL_GET_LAST_STAT:
|
||||
if (arg >= NR_STATS)
|
||||
return -EINVAL;
|
||||
else
|
||||
return cd->last_stat[arg];
|
||||
#endif
|
||||
default:
|
||||
debug(("Unknown ioctl call 0x%x\n", cmd));
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static int cm206_media_changed(struct cdrom_device_info *cdi, int disc_nr)
|
||||
{
|
||||
if (cd != NULL) {
|
||||
@@ -1321,11 +1295,10 @@ static struct cdrom_device_ops cm206_dops = {
|
||||
.get_mcn = cm206_get_upc,
|
||||
.reset = cm206_reset,
|
||||
.audio_ioctl = cm206_audio_ioctl,
|
||||
.dev_ioctl = cm206_ioctl,
|
||||
.capability = CDC_CLOSE_TRAY | CDC_OPEN_TRAY | CDC_LOCK |
|
||||
CDC_MULTI_SESSION | CDC_MEDIA_CHANGED |
|
||||
CDC_MCN | CDC_PLAY_AUDIO | CDC_SELECT_SPEED |
|
||||
CDC_IOCTLS | CDC_DRIVE_STATUS,
|
||||
CDC_DRIVE_STATUS,
|
||||
.n_minors = 1,
|
||||
};
|
||||
|
||||
@@ -1350,6 +1323,21 @@ static int cm206_block_release(struct inode *inode, struct file *file)
|
||||
static int cm206_block_ioctl(struct inode *inode, struct file *file,
|
||||
unsigned cmd, unsigned long arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
#ifdef STATISTICS
|
||||
case CM206CTL_GET_STAT:
|
||||
if (arg >= NR_STATS)
|
||||
return -EINVAL;
|
||||
return cd->stats[arg];
|
||||
case CM206CTL_GET_LAST_STAT:
|
||||
if (arg >= NR_STATS)
|
||||
return -EINVAL;
|
||||
return cd->last_stat[arg];
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return cdrom_ioctl(file, &cm206_info, inode, cmd, arg);
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -627,7 +627,7 @@ static struct cdrom_device_ops viocd_dops = {
|
||||
.media_changed = viocd_media_changed,
|
||||
.lock_door = viocd_lock_door,
|
||||
.generic_packet = viocd_packet,
|
||||
.capability = CDC_CLOSE_TRAY | CDC_OPEN_TRAY | CDC_LOCK | CDC_SELECT_SPEED | CDC_SELECT_DISC | CDC_MULTI_SESSION | CDC_MCN | CDC_MEDIA_CHANGED | CDC_PLAY_AUDIO | CDC_RESET | CDC_IOCTLS | CDC_DRIVE_STATUS | CDC_GENERIC_PACKET | CDC_CD_R | CDC_CD_RW | CDC_DVD | CDC_DVD_R | CDC_DVD_RAM | CDC_RAM
|
||||
.capability = CDC_CLOSE_TRAY | CDC_OPEN_TRAY | CDC_LOCK | CDC_SELECT_SPEED | CDC_SELECT_DISC | CDC_MULTI_SESSION | CDC_MCN | CDC_MEDIA_CHANGED | CDC_PLAY_AUDIO | CDC_RESET | CDC_DRIVE_STATUS | CDC_GENERIC_PACKET | CDC_CD_R | CDC_CD_RW | CDC_DVD | CDC_DVD_R | CDC_DVD_RAM | CDC_RAM
|
||||
};
|
||||
|
||||
static int __init find_capability(const char *type)
|
||||
|
Reference in New Issue
Block a user