|
@@ -2042,6 +2042,20 @@ int ufshcd_change_queue_depth(struct scsi_device *sdev, int depth, int reason)
|
|
return depth;
|
|
return depth;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * ufshcd_slave_configure - adjust SCSI device configurations
|
|
|
|
+ * @sdev: pointer to SCSI device
|
|
|
|
+ */
|
|
|
|
+static int ufshcd_slave_configure(struct scsi_device *sdev)
|
|
|
|
+{
|
|
|
|
+ struct request_queue *q = sdev->request_queue;
|
|
|
|
+
|
|
|
|
+ blk_queue_update_dma_pad(q, PRDT_DATA_BYTE_COUNT_PAD - 1);
|
|
|
|
+ blk_queue_max_segment_size(q, PRDT_DATA_BYTE_COUNT_MAX);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* ufshcd_slave_destroy - remove SCSI device configurations
|
|
* ufshcd_slave_destroy - remove SCSI device configurations
|
|
* @sdev: pointer to SCSI device
|
|
* @sdev: pointer to SCSI device
|
|
@@ -3145,6 +3159,7 @@ static struct scsi_host_template ufshcd_driver_template = {
|
|
.proc_name = UFSHCD,
|
|
.proc_name = UFSHCD,
|
|
.queuecommand = ufshcd_queuecommand,
|
|
.queuecommand = ufshcd_queuecommand,
|
|
.slave_alloc = ufshcd_slave_alloc,
|
|
.slave_alloc = ufshcd_slave_alloc,
|
|
|
|
+ .slave_configure = ufshcd_slave_configure,
|
|
.slave_destroy = ufshcd_slave_destroy,
|
|
.slave_destroy = ufshcd_slave_destroy,
|
|
.change_queue_depth = ufshcd_change_queue_depth,
|
|
.change_queue_depth = ufshcd_change_queue_depth,
|
|
.eh_abort_handler = ufshcd_abort,
|
|
.eh_abort_handler = ufshcd_abort,
|