summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Viro <viro@math.psu.edu>2002-09-21 02:41:51 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-09-21 02:41:51 -0700
commit118ecb9e83b28d4dc3a50b10672d12408bcd531a (patch)
tree158ed029be3581e2bf43d55c86b22c249512387f
parent67cba4d411be75c9ada3067dc4b7e3337def1c51 (diff)
[PATCH] gendisk for pcd
pcd switched to use of gendisk
-rw-r--r--drivers/block/paride/pcd.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c
index de78fa2198b8..508c081966c6 100644
--- a/drivers/block/paride/pcd.c
+++ b/drivers/block/paride/pcd.c
@@ -224,6 +224,7 @@ struct pcd_unit {
int present; /* does this unit exist ? */
char *name; /* pcd0, pcd1, etc */
struct cdrom_device_info info; /* uniform cdrom interface */
+ struct gendisk disk;
};
struct pcd_unit pcd[PCD_UNITS];
@@ -282,6 +283,7 @@ static void pcd_init_units(void)
pcd_drive_count = 0;
for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
+ struct gendisk *disk = &cd->disk;
cd->pi = &cd->pia;
cd->present = 0;
cd->last_sense = 0;
@@ -298,6 +300,11 @@ static void pcd_init_units(void)
cd->info.speed = 0;
cd->info.capacity = 1;
cd->info.mask = 0;
+ disk->major = major;
+ disk->first_minor = unit;
+ disk->minor_shift = 0;
+ disk->major_name = cd->name;
+ disk->fops = &pcd_bdops;
}
}
@@ -925,8 +932,15 @@ static int __init pcd_init(void)
for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
if (cd->present) {
+ struct gendisk *disk = &cd->disk;
register_cdrom(&cd->info);
- devfs_plain_cdrom(&cd->info, &pcd_bdops);
+ devfs_plain_cdrom(&cd->info, disk->fops);
+ add_gendisk(disk);
+ register_disk(disk,
+ mk_kdev(disk->major,disk->first_minor),
+ 1<<disk->minor_shift,
+ disk->fops,
+ 0);
}
}
@@ -942,6 +956,7 @@ static void __exit pcd_exit(void)
for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
if (cd->present) {
+ del_gendisk(&cd->disk);
pi_release(cd->pi);
unregister_cdrom(&cd->info);
}