Message ID | 20210419110156.1786882-13-kashyap.desai@broadcom.com |
---|---|
State | Superseded |
Headers | show |
Series | Introducing mpi3mr driver | expand |
> On Apr 19, 2021, at 6:01 AM, Kashyap Desai <kashyap.desai@broadcom.com> wrote: > > Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> > Reviewed-by: Hannes Reinecke <hare@suse.de> > Reviewed-by: Tomas Henzl <thenzl@redhat.com> > > Cc: sathya.prakash@broadcom.com > --- > drivers/scsi/mpi3mr/mpi3mr_os.c | 40 +++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c > index 39928e2997ba..946a62610b55 100644 > --- a/drivers/scsi/mpi3mr/mpi3mr_os.c > +++ b/drivers/scsi/mpi3mr/mpi3mr_os.c > @@ -2075,6 +2075,45 @@ 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 > @@ -2508,6 +2547,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, > -- > 2.18.1 > Looks Good Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> -- Himanshu Madhani Oracle Linux Engineering
diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c index 39928e2997ba..946a62610b55 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_os.c +++ b/drivers/scsi/mpi3mr/mpi3mr_os.c @@ -2075,6 +2075,45 @@ 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 @@ -2508,6 +2547,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,