scsi: Move pccb buffer initalization directly to scsi_detect_dev
authorMichal Simek <michal.simek@xilinx.com>
Fri, 18 Nov 2016 15:14:24 +0000 (16:14 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 2 Dec 2016 13:37:21 +0000 (14:37 +0100)
pccb is pointer to temporary buffer which is used only for sending
command. Make it local as is done in scsi_read/scsi_write.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/scsi.c

index e8f102a8a4b5bf412577b5f381639e83a5a1238d..5a925bafda2860809c3ba983b85ccbcc952ea5ae 100644 (file)
@@ -480,10 +480,11 @@ static void scsi_init_dev_desc(struct blk_desc *dev_desc, int devnum)
 #endif
 }
 
+
 /**
  * scsi_detect_dev - Detect scsi device
  *
- * @pccb: pointer to temporary SCSI command block
+ * @target: target id
  * @dev_desc: block device description
  *
  * The scsi_detect_dev detects and fills a dev_desc structure when the device is
@@ -491,12 +492,14 @@ static void scsi_init_dev_desc(struct blk_desc *dev_desc, int devnum)
  *
  * Return: 0 on success, error value otherwise
  */
-static int scsi_detect_dev(ccb *pccb, struct blk_desc *dev_desc)
+static int scsi_detect_dev(int target, struct blk_desc *dev_desc)
 {
        unsigned char perq, modi;
        lbaint_t capacity;
        unsigned long blksz;
+       ccb *pccb = (ccb *)&tempccb;
 
+       pccb->target = target;
        pccb->lun = dev_desc->lun;
        pccb->pdata = (unsigned char *)&tempbuff;
        pccb->datalen = 512;
@@ -561,7 +564,6 @@ void scsi_scan(int mode)
 {
        unsigned char i, lun;
        int ret;
-       ccb *pccb = (ccb *)&tempccb;
 
        if (mode == 1)
                printf("scanning bus for devices...\n");
@@ -570,11 +572,9 @@ void scsi_scan(int mode)
 
        scsi_max_devs = 0;
        for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
-               pccb->target = i;
                for (lun = 0; lun < CONFIG_SYS_SCSI_MAX_LUN; lun++) {
                        scsi_dev_desc[scsi_max_devs].lun = lun;
-                       ret = scsi_detect_dev(pccb,
-                                             &scsi_dev_desc[scsi_max_devs]);
+                       ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs]);
                        if (ret)
                                continue;