patch-2.4.19 linux-2.4.19/drivers/ide/ide-cd.c
Next file: linux-2.4.19/drivers/ide/ide-cd.h
Previous file: linux-2.4.19/drivers/ide/hptraid.c
Back to the patch index
Back to the overall index
- Lines: 95
- Date:
Fri Aug 2 17:39:44 2002
- Orig file:
linux-2.4.18/drivers/ide/ide-cd.c
- Orig date:
Mon Feb 25 11:37:57 2002
diff -urN linux-2.4.18/drivers/ide/ide-cd.c linux-2.4.19/drivers/ide/ide-cd.c
@@ -2536,8 +2536,8 @@
devinfo->dev = MKDEV (HWIF(drive)->major, minor);
devinfo->ops = &ide_cdrom_dops;
devinfo->mask = 0;
- *(int *)&devinfo->speed = CDROM_STATE_FLAGS (drive)->current_speed;
- *(int *)&devinfo->capacity = nslots;
+ devinfo->speed = CDROM_STATE_FLAGS (drive)->current_speed;
+ devinfo->capacity = nslots;
devinfo->handle = (void *) drive;
strcpy(devinfo->name, drive->name);
@@ -2644,7 +2644,9 @@
* but they do support reading TOC & audio datas
*/
if (strcmp (drive->id->model, "MATSHITADVD-ROM SR-8187") == 0 ||
- strcmp (drive->id->model, "MATSHITADVD-ROM SR-8186") == 0)
+ strcmp (drive->id->model, "MATSHITADVD-ROM SR-8186") == 0 ||
+ strcmp (drive->id->model, "MATSHITADVD-ROM SR-8176") == 0 ||
+ strcmp (drive->id->model, "MATSHITADVD-ROM SR-8174") == 0)
CDROM_CONFIG_FLAGS (drive)->audio_play = 1;
#if ! STANDARD_ATAPI
@@ -2961,11 +2963,7 @@
return 0;
}
-static
-int ide_cdrom_reinit (ide_drive_t *drive)
-{
- return 0;
-}
+int ide_cdrom_reinit (ide_drive_t *drive);
static ide_driver_t ide_cdrom_driver = {
name: "ide-cdrom",
@@ -2975,6 +2973,8 @@
supports_dma: 1,
supports_dsc_overlap: 1,
cleanup: ide_cdrom_cleanup,
+ standby: NULL,
+ flushcache: NULL,
do_request: ide_do_rw_cdrom,
end_request: NULL,
ioctl: ide_cdrom_ioctl,
@@ -2986,7 +2986,9 @@
capacity: ide_cdrom_capacity,
special: NULL,
proc: NULL,
- driver_reinit: ide_cdrom_reinit,
+ reinit: ide_cdrom_reinit,
+ ata_prebuilder: NULL,
+ atapi_prebuilder: NULL,
};
int ide_cdrom_init(void);
@@ -3003,6 +3005,39 @@
MODULE_PARM(ignore, "s");
MODULE_DESCRIPTION("ATAPI CD-ROM Driver");
+int ide_cdrom_reinit (ide_drive_t *drive)
+{
+ struct cdrom_info *info;
+ int failed = 0;
+
+ MOD_INC_USE_COUNT;
+ info = (struct cdrom_info *) kmalloc (sizeof (struct cdrom_info), GFP_KERNEL);
+ if (info == NULL) {
+ printk ("%s: Can't allocate a cdrom structure\n", drive->name);
+ return 1;
+ }
+ if (ide_register_subdriver (drive, &ide_cdrom_driver, IDE_SUBDRIVER_VERSION)) {
+ printk ("%s: Failed to register the driver with ide.c\n", drive->name);
+ kfree (info);
+ return 1;
+ }
+ memset (info, 0, sizeof (struct cdrom_info));
+ drive->driver_data = info;
+ DRIVER(drive)->busy++;
+ if (ide_cdrom_setup (drive)) {
+ DRIVER(drive)->busy--;
+ if (ide_cdrom_cleanup (drive))
+ printk ("%s: ide_cdrom_cleanup failed in ide_cdrom_init\n", drive->name);
+ return 1;
+ }
+ DRIVER(drive)->busy--;
+ failed--;
+
+ ide_register_module(&ide_cdrom_module);
+ MOD_DEC_USE_COUNT;
+ return 0;
+}
+
static void __exit ide_cdrom_exit(void)
{
ide_drive_t *drive;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)