|
@@ -172,7 +172,8 @@ module_param_array(drive3, int, NULL, 0);
|
|
|
static int pcd_open(struct cdrom_device_info *cdi, int purpose);
|
|
|
static void pcd_release(struct cdrom_device_info *cdi);
|
|
|
static int pcd_drive_status(struct cdrom_device_info *cdi, int slot_nr);
|
|
|
-static int pcd_media_changed(struct cdrom_device_info *cdi, int slot_nr);
|
|
|
+static unsigned int pcd_check_events(struct cdrom_device_info *cdi,
|
|
|
+ unsigned int clearing, int slot_nr);
|
|
|
static int pcd_tray_move(struct cdrom_device_info *cdi, int position);
|
|
|
static int pcd_lock_door(struct cdrom_device_info *cdi, int lock);
|
|
|
static int pcd_drive_reset(struct cdrom_device_info *cdi);
|
|
@@ -257,10 +258,11 @@ static int pcd_block_ioctl(struct block_device *bdev, fmode_t mode,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int pcd_block_media_changed(struct gendisk *disk)
|
|
|
+static unsigned int pcd_block_check_events(struct gendisk *disk,
|
|
|
+ unsigned int clearing)
|
|
|
{
|
|
|
struct pcd_unit *cd = disk->private_data;
|
|
|
- return cdrom_media_changed(&cd->info);
|
|
|
+ return cdrom_check_events(&cd->info, clearing);
|
|
|
}
|
|
|
|
|
|
static const struct block_device_operations pcd_bdops = {
|
|
@@ -268,14 +270,14 @@ static const struct block_device_operations pcd_bdops = {
|
|
|
.open = pcd_block_open,
|
|
|
.release = pcd_block_release,
|
|
|
.ioctl = pcd_block_ioctl,
|
|
|
- .media_changed = pcd_block_media_changed,
|
|
|
+ .check_events = pcd_block_check_events,
|
|
|
};
|
|
|
|
|
|
static struct cdrom_device_ops pcd_dops = {
|
|
|
.open = pcd_open,
|
|
|
.release = pcd_release,
|
|
|
.drive_status = pcd_drive_status,
|
|
|
- .media_changed = pcd_media_changed,
|
|
|
+ .check_events = pcd_check_events,
|
|
|
.tray_move = pcd_tray_move,
|
|
|
.lock_door = pcd_lock_door,
|
|
|
.get_mcn = pcd_get_mcn,
|
|
@@ -318,6 +320,7 @@ static void pcd_init_units(void)
|
|
|
disk->first_minor = unit;
|
|
|
strcpy(disk->disk_name, cd->name); /* umm... */
|
|
|
disk->fops = &pcd_bdops;
|
|
|
+ disk->events = DISK_EVENT_MEDIA_CHANGE;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -502,13 +505,14 @@ static int pcd_packet(struct cdrom_device_info *cdi, struct packet_command *cgc)
|
|
|
|
|
|
#define DBMSG(msg) ((verbose>1)?(msg):NULL)
|
|
|
|
|
|
-static int pcd_media_changed(struct cdrom_device_info *cdi, int slot_nr)
|
|
|
+static unsigned int pcd_check_events(struct cdrom_device_info *cdi,
|
|
|
+ unsigned int clearing, int slot_nr)
|
|
|
{
|
|
|
struct pcd_unit *cd = cdi->handle;
|
|
|
int res = cd->changed;
|
|
|
if (res)
|
|
|
cd->changed = 0;
|
|
|
- return res;
|
|
|
+ return res ? DISK_EVENT_MEDIA_CHANGE : 0;
|
|
|
}
|
|
|
|
|
|
static int pcd_lock_door(struct cdrom_device_info *cdi, int lock)
|