diff options
Diffstat (limited to 'drivers/mmc/mmc_block.c')
| -rw-r--r-- | drivers/mmc/mmc_block.c | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c index 198561d21710..d5f28981596b 100644 --- a/drivers/mmc/mmc_block.c +++ b/drivers/mmc/mmc_block.c | |||
| @@ -113,31 +113,18 @@ static int mmc_blk_release(struct inode *inode, struct file *filp) | |||
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | static int | 115 | static int |
| 116 | mmc_blk_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) | 116 | mmc_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo) |
| 117 | { | 117 | { |
| 118 | struct block_device *bdev = inode->i_bdev; | 118 | geo->cylinders = get_capacity(bdev->bd_disk) / (4 * 16); |
| 119 | 119 | geo->heads = 4; | |
| 120 | if (cmd == HDIO_GETGEO) { | 120 | geo->sectors = 16; |
| 121 | struct hd_geometry geo; | 121 | return 0; |
| 122 | |||
| 123 | memset(&geo, 0, sizeof(struct hd_geometry)); | ||
| 124 | |||
| 125 | geo.cylinders = get_capacity(bdev->bd_disk) / (4 * 16); | ||
| 126 | geo.heads = 4; | ||
| 127 | geo.sectors = 16; | ||
| 128 | geo.start = get_start_sect(bdev); | ||
| 129 | |||
| 130 | return copy_to_user((void __user *)arg, &geo, sizeof(geo)) | ||
| 131 | ? -EFAULT : 0; | ||
| 132 | } | ||
| 133 | |||
| 134 | return -ENOTTY; | ||
| 135 | } | 122 | } |
| 136 | 123 | ||
| 137 | static struct block_device_operations mmc_bdops = { | 124 | static struct block_device_operations mmc_bdops = { |
| 138 | .open = mmc_blk_open, | 125 | .open = mmc_blk_open, |
| 139 | .release = mmc_blk_release, | 126 | .release = mmc_blk_release, |
| 140 | .ioctl = mmc_blk_ioctl, | 127 | .getgeo = mmc_blk_getgeo, |
| 141 | .owner = THIS_MODULE, | 128 | .owner = THIS_MODULE, |
| 142 | }; | 129 | }; |
| 143 | 130 | ||
