2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-08 21:53:54 +08:00

scsi: mpi3mr: Add bios_param SCSI host template hook

Link: https://lore.kernel.org/r/20210520152545.2710479-13-kashyap.desai@broadcom.com
Cc: sathya.prakash@broadcom.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Kashyap Desai 2021-05-20 20:55:33 +05:30 committed by Martin K. Petersen
parent ff9561e910
commit 8f9c6173ca

View File

@ -2050,6 +2050,46 @@ static int mpi3mr_build_sg_scmd(struct mpi3mr_ioc *mrioc,
return ret;
}
/**
* mpi3mr_bios_param - BIOS param callback
* @sdev: SCSI device reference
* @bdev: Block device reference
* @capacity: Capacity in logical sectors
* @params: Parameter array
*
* Just the parameters with heads/secots/cylinders.
*
* Return: 0 always
*/
static int mpi3mr_bios_param(struct scsi_device *sdev,
struct block_device *bdev, sector_t capacity, int params[])
{
int heads;
int sectors;
sector_t cylinders;
ulong dummy;
heads = 64;
sectors = 32;
dummy = heads * sectors;
cylinders = capacity;
sector_div(cylinders, dummy);
if ((ulong)capacity >= 0x200000) {
heads = 255;
sectors = 63;
dummy = heads * sectors;
cylinders = capacity;
sector_div(cylinders, dummy);
}
params[0] = heads;
params[1] = sectors;
params[2] = cylinders;
return 0;
}
/**
* mpi3mr_map_queues - Map queues callback handler
* @shost: SCSI host reference
@ -2493,6 +2533,7 @@ static struct scsi_host_template mpi3mr_driver_template = {
.slave_destroy = mpi3mr_slave_destroy,
.scan_finished = mpi3mr_scan_finished,
.scan_start = mpi3mr_scan_start,
.bios_param = mpi3mr_bios_param,
.map_queues = mpi3mr_map_queues,
.no_write_same = 1,
.can_queue = 1,