diff options
author | Ondrej Zary <linux@rainbow-software.org> | 2015-02-06 23:11:42 +0100 |
---|---|---|
committer | James Bottomley <JBottomley@Odin.com> | 2015-04-09 18:08:10 -0700 |
commit | 17787a09fdfcb07ccc361758737af0dfa1ea4214 (patch) | |
tree | b8e1f3d4a35800439aa1746b6eea2c111e1eb378 /drivers/scsi | |
parent | f71429ab535d90806a35bc346adcdebfc8996008 (diff) | |
download | lwn-17787a09fdfcb07ccc361758737af0dfa1ea4214.tar.gz lwn-17787a09fdfcb07ccc361758737af0dfa1ea4214.zip |
aha1542: Simplify aha1542_biosparam
Simplify aha1542_biosparam, use sector_div, remove unused BIOS_TRANSLATION_1632.
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/aha1542.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c index d15191324b06..161586545804 100644 --- a/drivers/scsi/aha1542.c +++ b/drivers/scsi/aha1542.c @@ -78,7 +78,6 @@ static int dma_speed[MAXBOARDS] = { -1, -1, -1, -1 }; module_param_array(dma_speed, int, NULL, 0); MODULE_PARM_DESC(dma_speed, "DMA speed [MB/s] (5,6,7,8,10, default=-1 [by jumper])"); -#define BIOS_TRANSLATION_1632 0 /* Used by some old 1542A boards */ #define BIOS_TRANSLATION_6432 1 /* Default case these days */ #define BIOS_TRANSLATION_25563 2 /* Big disk case */ @@ -1048,24 +1047,20 @@ static int aha1542_host_reset(Scsi_Cmnd *SCpnt) } static int aha1542_biosparam(struct scsi_device *sdev, - struct block_device *bdev, sector_t capacity, int *ip) + struct block_device *bdev, sector_t capacity, int geom[]) { struct aha1542_hostdata *aha1542 = shost_priv(sdev->host); - int translation_algorithm; - int size = capacity; - translation_algorithm = aha1542->bios_translation; - - if ((size >> 11) > 1024 && translation_algorithm == BIOS_TRANSLATION_25563) { + if (capacity >= 0x200000 && + aha1542->bios_translation == BIOS_TRANSLATION_25563) { /* Please verify that this is the same as what DOS returns */ - ip[0] = 255; - ip[1] = 63; - ip[2] = size / 255 / 63; + geom[0] = 255; /* heads */ + geom[1] = 63; /* sectors */ } else { - ip[0] = 64; - ip[1] = 32; - ip[2] = size >> 11; + geom[0] = 64; /* heads */ + geom[1] = 32; /* sectors */ } + geom[2] = sector_div(capacity, geom[0] * geom[1]); /* cylinders */ return 0; } |