diff options
| author | Alexander Viro <viro@math.psu.edu> | 2002-09-21 02:41:51 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-09-21 02:41:51 -0700 |
| commit | 118ecb9e83b28d4dc3a50b10672d12408bcd531a (patch) | |
| tree | 158ed029be3581e2bf43d55c86b22c249512387f | |
| parent | 67cba4d411be75c9ada3067dc4b7e3337def1c51 (diff) | |
[PATCH] gendisk for pcd
pcd switched to use of gendisk
| -rw-r--r-- | drivers/block/paride/pcd.c | 17 |
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); } |
