summaryrefslogtreecommitdiffstats
path: root/drivers/block/ps2esdi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/ps2esdi.c')
-rw-r--r--drivers/block/ps2esdi.c30
1 files changed, 13 insertions, 17 deletions
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c
index bd4c5245a..9f68ebbfc 100644
--- a/drivers/block/ps2esdi.c
+++ b/drivers/block/ps2esdi.c
@@ -68,7 +68,7 @@ static void reset_ctrl(void);
int ps2esdi_init(void);
-static void ps2esdi_geninit(struct gendisk *ignored);
+static void ps2esdi_geninit(void);
static void do_ps2esdi_request(request_queue_t * q);
@@ -160,8 +160,6 @@ static struct gendisk ps2esdi_gendisk =
"ed", /* Major name */
6, /* Bits to shift to get real from partition */
1 << 6, /* Number of partitions per real disk */
- MAX_HD, /* maximum number of real disks */
- ps2esdi_geninit, /* init function */
ps2esdi, /* hd struct */
ps2esdi_sizes, /* block sizes */
0, /* number */
@@ -186,8 +184,8 @@ int __init ps2esdi_init(void)
/* some minor housekeeping - setup the global gendisk structure */
ps2esdi_gendisk.next = gendisk_head;
gendisk_head = &ps2esdi_gendisk;
+ ps2esdi_geninit();
return 0;
-
} /* ps2esdi_init */
#ifdef MODULE
@@ -291,7 +289,7 @@ static int ps2esdi_getinfo(char *buf, int slot, void *d)
}
/* ps2 esdi specific initialization - called thru the gendisk chain */
-static void __init ps2esdi_geninit(struct gendisk *ignored)
+static void __init ps2esdi_geninit(void)
{
/*
The first part contains the initialization code
@@ -414,21 +412,21 @@ static void __init ps2esdi_geninit(struct gendisk *ignored)
ps2esdi_gendisk.nr_real = ps2esdi_drives;
- for (i = 0; i < ps2esdi_drives; i++) {
- ps2esdi[i << 6].nr_sects =
- ps2esdi_info[i].head *
- ps2esdi_info[i].sect *
- ps2esdi_info[i].cyl;
- ps2esdi_valid[i] = 1;
- }
for (i = 0; i < (MAX_HD << 6); i++)
ps2esdi_blocksizes[i] = 1024;
request_dma(dma_arb_level, "ed");
request_region(io_base, 4, "ed");
blksize_size[MAJOR_NR] = ps2esdi_blocksizes;
-} /* ps2esdi_geninit */
+ for (i = 0; i < ps2esdi_drives; i++) {
+ register_disk(&ps2esdi_gendisk,MKDEV(MAJOR_NR,i<<6),1<<6,
+ &ps2esdi_fops,
+ ps2esdi_info[i].head * ps2esdi_info[i].sect *
+ ps2esdi_info[i].cyl);
+ ps2esdi_valid[i] = 1;
+ }
+}
static void __init ps2esdi_get_device_cfg(void)
{
@@ -1105,7 +1103,6 @@ static int ps2esdi_release(struct inode *inode, struct file *file)
int dev = DEVICE_NR(inode->i_rdev);
if (dev < ps2esdi_drives) {
- sync_dev(inode->i_rdev);
access_count[dev]--;
}
return 0;
@@ -1190,9 +1187,8 @@ static int ps2esdi_reread_partitions(kdev_t dev)
ps2esdi_gendisk.part[start + partition].nr_sects = 0;
}
- ps2esdi_gendisk.part[start].nr_sects = ps2esdi_info[target].head *
- ps2esdi_info[target].cyl * ps2esdi_info[target].sect;
- resetup_one_dev(&ps2esdi_gendisk, target);
+ grok_partitions(&ps2esdi_gendisk, target, 1<<6,
+ ps2esdi_info[target].head * ps2esdi_info[target].cyl * ps2esdi_info[target].sect);
ps2esdi_valid[target] = 1;
wake_up(&ps2esdi_wait_open);