Kconfig: USB: Migrate CONFIG_USB_EHCI to CONFIG_USB_EHCI_HCD
[platform/kernel/u-boot.git] / common / usb_storage.c
index 1472824..03171f7 100644 (file)
@@ -100,7 +100,7 @@ struct us_data {
        trans_cmnd      transport;              /* transport routine */
 };
 
-#ifdef CONFIG_USB_EHCI
+#ifdef CONFIG_USB_EHCI_HCD
 /*
  * The U-Boot EHCI driver can handle any transfer length as long as there is
  * enough free heap space left, but the SCSI READ(10) and WRITE(10) commands are
@@ -136,23 +136,6 @@ static unsigned long usb_stor_write(struct blk_desc *block_dev, lbaint_t blknr,
 #endif
 void uhci_show_temp_int_td(void);
 
-#ifdef CONFIG_PARTITIONS
-struct blk_desc *usb_stor_get_dev(int index)
-{
-#ifdef CONFIG_BLK
-       struct udevice *dev;
-       int ret;
-
-       ret = blk_get_device(IF_TYPE_USB, index, &dev);
-       if (ret)
-               return NULL;
-       return dev_get_uclass_platdata(dev);
-#else
-       return (index < usb_max_devs) ? &usb_dev_desc[index] : NULL;
-#endif
-}
-#endif
-
 static void usb_show_progress(void)
 {
        debug(".");
@@ -193,7 +176,7 @@ int usb_stor_info(void)
                return 1;
        }
 
-       return 1;
+       return 0;
 }
 
 static unsigned int usb_get_max_lun(struct us_data *us)
@@ -217,7 +200,6 @@ static int usb_stor_probe_device(struct usb_device *udev)
 
 #ifdef CONFIG_BLK
        struct us_data *data;
-       char dev_name[30], *str;
        int ret;
 #else
        int start;
@@ -240,14 +222,12 @@ static int usb_stor_probe_device(struct usb_device *udev)
        for (lun = 0; lun <= max_lun; lun++) {
                struct blk_desc *blkdev;
                struct udevice *dev;
+               char str[10];
 
-               snprintf(dev_name, sizeof(dev_name), "%s.lun%d",
-                        udev->dev->name, lun);
-               str = strdup(dev_name);
-               if (!str)
-                       return -ENOMEM;
-               ret = blk_create_device(udev->dev, "usb_storage_blk", str,
-                               IF_TYPE_USB, usb_max_devs, 512, 0, &dev);
+               snprintf(str, sizeof(str), "lun%d", lun);
+               ret = blk_create_devicef(udev->dev, "usb_storage_blk", str,
+                                        IF_TYPE_USB, usb_max_devs, 512, 0,
+                                        &dev);
                if (ret) {
                        debug("Cannot bind driver\n");
                        return ret;
@@ -323,7 +303,6 @@ void usb_stor_reset(void)
        usb_max_devs = 0;
 }
 
-#ifndef CONFIG_DM_USB
 /*******************************************************************************
  * scan the usb and reports device info
  * to the user if mode = 1
@@ -331,11 +310,12 @@ void usb_stor_reset(void)
  */
 int usb_stor_scan(int mode)
 {
-       unsigned char i;
-
        if (mode == 1)
                printf("       scanning usb for storage devices... ");
 
+#ifndef CONFIG_DM_USB
+       unsigned char i;
+
        usb_disable_asynch(1); /* asynch transfer not allowed */
 
        usb_stor_reset();
@@ -349,12 +329,12 @@ int usb_stor_scan(int mode)
        } /* for */
 
        usb_disable_asynch(0); /* asynch transfer allowed */
+#endif
        printf("%d Storage Device(s) found\n", usb_max_devs);
        if (usb_max_devs > 0)
                return 0;
        return -1;
 }
-#endif
 
 static int usb_stor_irq(struct usb_device *dev)
 {
@@ -697,7 +677,7 @@ static int usb_stor_CBI_get_status(ccb *srb, struct us_data *us)
                us->ip_wanted = 0;
                return USB_STOR_TRANSPORT_ERROR;
        }
-       debug("Got interrupt data 0x%x, transfered %d status 0x%lX\n",
+       debug("Got interrupt data 0x%x, transferred %d status 0x%lX\n",
              us->ip_data, us->pusb_dev->irq_act_len,
              us->pusb_dev->irq_status);
        /* UFI gives us ASC and ASCQ, like a request sense */
@@ -728,13 +708,10 @@ static int usb_stor_CBI_get_status(ccb *srb, struct us_data *us)
 /* clear a stall on an endpoint - special for BBB devices */
 static int usb_stor_BBB_clear_endpt_stall(struct us_data *us, __u8 endpt)
 {
-       int result;
-
        /* ENDPOINT_HALT = 0, so set value to 0 */
-       result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0),
-                               USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT,
-                               0, endpt, NULL, 0, USB_CNTL_TIMEOUT * 5);
-       return result;
+       return usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0),
+                              USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT, 0,
+                              endpt, NULL, 0, USB_CNTL_TIMEOUT * 5);
 }
 
 static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)
@@ -1463,10 +1440,8 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,
                       "   Request Sense returned %02X %02X %02X\n",
                       pccb->sense_buf[2], pccb->sense_buf[12],
                       pccb->sense_buf[13]);
-               if (dev_desc->removable == 1) {
+               if (dev_desc->removable == 1)
                        dev_desc->type = perq;
-                       return 1;
-               }
                return 0;
        }
        pccb->pdata = (unsigned char *)cap;
@@ -1555,4 +1530,11 @@ U_BOOT_DRIVER(usb_storage_blk) = {
        .id             = UCLASS_BLK,
        .ops            = &usb_storage_ops,
 };
+#else
+U_BOOT_LEGACY_BLK(usb) = {
+       .if_typename    = "usb",
+       .if_type        = IF_TYPE_USB,
+       .max_devs       = USB_MAX_STOR_DEV,
+       .desc           = usb_dev_desc,
+};
 #endif