diff options
Diffstat (limited to 'drivers/block/amiflop.c')
-rw-r--r-- | drivers/block/amiflop.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/block/amiflop.c b/drivers/block/amiflop.c index 0acbfff8ad28..cb2a545e57dc 100644 --- a/drivers/block/amiflop.c +++ b/drivers/block/amiflop.c | |||
@@ -1424,6 +1424,16 @@ static void do_fd_request(request_queue_t * q) | |||
1424 | redo_fd_request(); | 1424 | redo_fd_request(); |
1425 | } | 1425 | } |
1426 | 1426 | ||
1427 | static int fd_getgeo(struct block_device *bdev, struct hd_geometry *geo) | ||
1428 | { | ||
1429 | int drive = MINOR(bdev->bd_dev) & 3; | ||
1430 | |||
1431 | geo->heads = unit[drive].type->heads; | ||
1432 | geo->sectors = unit[drive].dtype->sects * unit[drive].type->sect_mult; | ||
1433 | geo->cylinders = unit[drive].type->tracks; | ||
1434 | return 0; | ||
1435 | } | ||
1436 | |||
1427 | static int fd_ioctl(struct inode *inode, struct file *filp, | 1437 | static int fd_ioctl(struct inode *inode, struct file *filp, |
1428 | unsigned int cmd, unsigned long param) | 1438 | unsigned int cmd, unsigned long param) |
1429 | { | 1439 | { |
@@ -1431,18 +1441,6 @@ static int fd_ioctl(struct inode *inode, struct file *filp, | |||
1431 | static struct floppy_struct getprm; | 1441 | static struct floppy_struct getprm; |
1432 | 1442 | ||
1433 | switch(cmd){ | 1443 | switch(cmd){ |
1434 | case HDIO_GETGEO: | ||
1435 | { | ||
1436 | struct hd_geometry loc; | ||
1437 | loc.heads = unit[drive].type->heads; | ||
1438 | loc.sectors = unit[drive].dtype->sects * unit[drive].type->sect_mult; | ||
1439 | loc.cylinders = unit[drive].type->tracks; | ||
1440 | loc.start = 0; | ||
1441 | if (copy_to_user((void *)param, (void *)&loc, | ||
1442 | sizeof(struct hd_geometry))) | ||
1443 | return -EFAULT; | ||
1444 | break; | ||
1445 | } | ||
1446 | case FDFMTBEG: | 1444 | case FDFMTBEG: |
1447 | get_fdc(drive); | 1445 | get_fdc(drive); |
1448 | if (fd_ref[drive] > 1) { | 1446 | if (fd_ref[drive] > 1) { |
@@ -1652,6 +1650,7 @@ static struct block_device_operations floppy_fops = { | |||
1652 | .open = floppy_open, | 1650 | .open = floppy_open, |
1653 | .release = floppy_release, | 1651 | .release = floppy_release, |
1654 | .ioctl = fd_ioctl, | 1652 | .ioctl = fd_ioctl, |
1653 | .getgeo = fd_getgeo, | ||
1655 | .media_changed = amiga_floppy_change, | 1654 | .media_changed = amiga_floppy_change, |
1656 | }; | 1655 | }; |
1657 | 1656 | ||