]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
Merge git://git.denx.de/u-boot-usb
authorTom Rini <trini@konsulko.com>
Thu, 5 Nov 2015 12:46:37 +0000 (07:46 -0500)
committerTom Rini <trini@konsulko.com>
Thu, 5 Nov 2015 12:46:37 +0000 (07:46 -0500)
common/usb_storage.c
drivers/dfu/dfu_sf.c
drivers/usb/dwc3/core.c
drivers/usb/dwc3/ep0.c
drivers/usb/dwc3/gadget.c
drivers/usb/dwc3/io.h
drivers/usb/gadget/f_thor.c
drivers/usb/gadget/udc/udc-core.c
drivers/usb/host/ohci-hcd.c
include/configs/dra7xx_evm.h

index 0ccaeb4a1402eb9d3a67fc45692bf08dda2efc73..4fa6538db58af627ffce1ae39b29e84ab2c6b510 100644 (file)
@@ -1177,25 +1177,9 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,
        struct usb_endpoint_descriptor *ep_desc;
        unsigned int flags = 0;
 
-       int protocol = 0;
-       int subclass = 0;
-
        /* let's examine the device now */
        iface = &dev->config.if_desc[ifnum];
 
-#if 0
-       /* this is the place to patch some storage devices */
-       debug("iVendor %X iProduct %X\n", dev->descriptor.idVendor,
-                       dev->descriptor.idProduct);
-
-       if ((dev->descriptor.idVendor) == 0x066b &&
-           (dev->descriptor.idProduct) == 0x0103) {
-               debug("patched for E-USB\n");
-               protocol = US_PR_CB;
-               subclass = US_SC_UFI;       /* an assumption */
-       }
-#endif
-
        if (dev->descriptor.bDeviceClass != 0 ||
                        iface->desc.bInterfaceClass != USB_CLASS_MASS_STORAGE ||
                        iface->desc.bInterfaceSubClass < US_SC_MIN ||
@@ -1215,17 +1199,8 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,
        ss->ifnum = ifnum;
        ss->pusb_dev = dev;
        ss->attention_done = 0;
-
-       /* If the device has subclass and protocol, then use that.  Otherwise,
-        * take data from the specific interface.
-        */
-       if (subclass) {
-               ss->subclass = subclass;
-               ss->protocol = protocol;
-       } else {
-               ss->subclass = iface->desc.bInterfaceSubClass;
-               ss->protocol = iface->desc.bInterfaceProtocol;
-       }
+       ss->subclass = iface->desc.bInterfaceSubClass;
+       ss->protocol = iface->desc.bInterfaceProtocol;
 
        /* set the handler pointers based on the protocol */
        debug("Transport: ");
index 7646c6b7270c1859a6cf10985f65670a3f818bdb..9702eeea202a97f87b9c24b152e335d792b4f49b 100644 (file)
@@ -115,8 +115,10 @@ static struct spi_flash *parse_dev(char *devstr)
 int dfu_fill_entity_sf(struct dfu_entity *dfu, char *devstr, char *s)
 {
        char *st;
+       char *devstr_bkup = strdup(devstr);
 
-       dfu->data.sf.dev = parse_dev(devstr);
+       dfu->data.sf.dev = parse_dev(devstr_bkup);
+       free(devstr_bkup);
        if (!dfu->data.sf.dev)
                return -ENODEV;
 
index ab3c94e51275764df2e8b965329de604cc3d32e7..0ae3de5c27b9dcd0611dafc42f9ada8a18be89d0 100644 (file)
@@ -281,7 +281,7 @@ static int dwc3_setup_scratch_buffers(struct dwc3 *dwc)
        return 0;
 
 err1:
-       dma_unmap_single((void *)dwc->scratch_addr, dwc->nr_scratch *
+       dma_unmap_single((void *)(uintptr_t)dwc->scratch_addr, dwc->nr_scratch *
                         DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL);
 
 err0:
@@ -296,7 +296,7 @@ static void dwc3_free_scratch_buffers(struct dwc3 *dwc)
        if (!dwc->nr_scratch)
                return;
 
-       dma_unmap_single((void *)dwc->scratch_addr, dwc->nr_scratch *
+       dma_unmap_single((void *)(uintptr_t)dwc->scratch_addr, dwc->nr_scratch *
                         DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL);
        kfree(dwc->scratchbuf);
 }
@@ -629,7 +629,8 @@ int dwc3_uboot_init(struct dwc3_device *dwc3_dev)
        dwc = PTR_ALIGN(mem, DWC3_ALIGN_MASK + 1);
        dwc->mem = mem;
 
-       dwc->regs       = (int *)(dwc3_dev->base + DWC3_GLOBALS_REGS_START);
+       dwc->regs = (void *)(uintptr_t)(dwc3_dev->base +
+                                       DWC3_GLOBALS_REGS_START);
 
        /* default to highest possible threshold */
        lpm_nyet_threshold = 0xff;
index aba614fb4e984011db4b24f09bd3404ded5770fb..12b133f93e178ee7b3d0c19017a2464c46642fbf 100644 (file)
@@ -81,8 +81,8 @@ static int dwc3_ep0_start_trans(struct dwc3 *dwc, u8 epnum, dma_addr_t buf_dma,
                trb->ctrl |= (DWC3_TRB_CTRL_IOC
                                | DWC3_TRB_CTRL_LST);
 
-       dwc3_flush_cache((int)buf_dma, len);
-       dwc3_flush_cache((int)trb, sizeof(*trb));
+       dwc3_flush_cache((long)buf_dma, len);
+       dwc3_flush_cache((long)trb, sizeof(*trb));
 
        if (chain)
                return 0;
@@ -790,7 +790,7 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
        if (!r)
                return;
 
-       dwc3_flush_cache((int)trb, sizeof(*trb));
+       dwc3_flush_cache((long)trb, sizeof(*trb));
 
        status = DWC3_TRB_SIZE_TRBSTS(trb->size);
        if (status == DWC3_TRBSTS_SETUP_PENDING) {
@@ -821,7 +821,7 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
                        ur->actual += transferred;
 
                        trb++;
-                       dwc3_flush_cache((int)trb, sizeof(*trb));
+                       dwc3_flush_cache((long)trb, sizeof(*trb));
                        length = trb->size & DWC3_TRB_SIZE_MASK;
 
                        ep0->free_slot = 0;
@@ -831,7 +831,7 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
                                        maxp);
                transferred = min_t(u32, ur->length - transferred,
                                    transfer_size - length);
-               dwc3_flush_cache((int)dwc->ep0_bounce, DWC3_EP0_BOUNCE_SIZE);
+               dwc3_flush_cache((long)dwc->ep0_bounce, DWC3_EP0_BOUNCE_SIZE);
                memcpy(buf, dwc->ep0_bounce, transferred);
        } else {
                transferred = ur->length - length;
index f3d649a5ee2f85d66bef3c4f5b1d2a5f55a26a6d..8ff949d241f6e9c13c13432d3a54db1bdfba44f2 100644 (file)
@@ -244,7 +244,7 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req,
 
        list_del(&req->list);
        req->trb = NULL;
-       dwc3_flush_cache((int)req->request.dma, req->request.length);
+       dwc3_flush_cache((long)req->request.dma, req->request.length);
 
        if (req->request.status == -EINPROGRESS)
                req->request.status = status;
@@ -771,8 +771,8 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
 
        trb->ctrl |= DWC3_TRB_CTRL_HWO;
 
-       dwc3_flush_cache((int)dma, length);
-       dwc3_flush_cache((int)trb, sizeof(*trb));
+       dwc3_flush_cache((long)dma, length);
+       dwc3_flush_cache((long)trb, sizeof(*trb));
 }
 
 /*
@@ -1769,7 +1769,7 @@ static int dwc3_cleanup_done_reqs(struct dwc3 *dwc, struct dwc3_ep *dep,
        slot %= DWC3_TRB_NUM;
        trb = &dep->trb_pool[slot];
 
-       dwc3_flush_cache((int)trb, sizeof(*trb));
+       dwc3_flush_cache((long)trb, sizeof(*trb));
        __dwc3_cleanup_done_trbs(dwc, dep, req, trb, event, status);
        dwc3_gadget_giveback(dep, req, status);
 
@@ -2670,7 +2670,7 @@ void dwc3_gadget_uboot_handle_interrupt(struct dwc3 *dwc)
 
                for (i = 0; i < dwc->num_event_buffers; i++) {
                        evt = dwc->ev_buffs[i];
-                       dwc3_flush_cache((int)evt->buf, evt->length);
+                       dwc3_flush_cache((long)evt->buf, evt->length);
                }
 
                dwc3_thread_interrupt(0, dwc);
index 5042a2419369416db4abe8b6dca2a7b66c0885f9..0d9fa220e922ed9009b8a6aca5cf3d9ffe383c0e 100644 (file)
@@ -23,7 +23,7 @@
 #define        CACHELINE_SIZE          CONFIG_SYS_CACHELINE_SIZE
 static inline u32 dwc3_readl(void __iomem *base, u32 offset)
 {
-       u32 offs = offset - DWC3_GLOBALS_REGS_START;
+       unsigned long offs = offset - DWC3_GLOBALS_REGS_START;
        u32 value;
 
        /*
@@ -38,7 +38,7 @@ static inline u32 dwc3_readl(void __iomem *base, u32 offset)
 
 static inline void dwc3_writel(void __iomem *base, u32 offset, u32 value)
 {
-       u32 offs = offset - DWC3_GLOBALS_REGS_START;
+       unsigned long offs = offset - DWC3_GLOBALS_REGS_START;
 
        /*
         * We requested the mem region starting from the Globals address
index ff1481ba372304f3f8f5af5be18ea2185a6d57b2..9ed0ce3d31328674f982e8b32a96643b8e77c361 100644 (file)
@@ -569,7 +569,7 @@ static void thor_tx_data(unsigned char *data, int len)
 
        dev->in_req->length = len;
 
-       debug("%s: dev->in_req->length:%d to_cpy:%d\n", __func__,
+       debug("%s: dev->in_req->length:%d to_cpy:%zd\n", __func__,
              dev->in_req->length, sizeof(data));
 
        status = usb_ep_queue(dev->in_ep, dev->in_req, 0);
index 875e998a82e395a8a89151bb4d3f54b8cfa0132b..326757b547fa85a0dcbc6d003cf253a2a48e223b 100644 (file)
@@ -65,7 +65,7 @@ void usb_gadget_unmap_request(struct usb_gadget *gadget,
        if (req->length == 0)
                return;
 
-       dma_unmap_single((void *)req->dma, req->length,
+       dma_unmap_single((void *)(uintptr_t)req->dma, req->length,
                         is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
 }
 EXPORT_SYMBOL_GPL(usb_gadget_unmap_request);
index 9bde2b252c03783356a83ffbb6d1769e4fbdb11d..ccbfc0265a362d8672ac56a6537013bc9413fd3b 100644 (file)
@@ -2205,6 +2205,7 @@ int ohci_register(struct udevice *dev, struct ohci_regs *regs)
        if (!ohci->hcca)
                return -ENOMEM;
        memset(ohci->hcca, 0, sizeof(struct ohci_hcca));
+       flush_dcache_hcca(ohci->hcca);
 
        if (hc_reset(ohci) < 0)
                return -EIO;
index 6e32de854619cf07172b5ae908e62942fd73a0b9..cb9544b49efba0b6d513ede33d36d73852ced135 100644 (file)
        "fdt ram 0x80f80000 0x80000;" \
        "ramdisk ram 0x81000000 0x4000000\0"
 
+#define DFU_ALT_INFO_QSPI \
+       "dfu_alt_info_qspi=" \
+       "MLO raw 0x0 0x010000;" \
+       "MLO.backup1 raw 0x010000 0x010000;" \
+       "MLO.backup2 raw 0x020000 0x010000;" \
+       "MLO.backup3 raw 0x030000 0x010000;" \
+       "u-boot.img raw 0x040000 0x0100000;" \
+       "u-boot-spl-os raw 0x140000 0x080000;" \
+       "u-boot-env raw 0x1C0000 0x010000;" \
+       "u-boot-env.backup raw 0x1D0000 0x010000;" \
+       "kernel raw 0x1E0000 0x800000\0"
+
 #define DFUARGS \
        "dfu_bufsiz=0x10000\0" \
        DFU_ALT_INFO_MMC \
        DFU_ALT_INFO_EMMC \
-       DFU_ALT_INFO_RAM
+       DFU_ALT_INFO_RAM \
+       DFU_ALT_INFO_QSPI
 
 /* Fastboot */
 #define CONFIG_USB_FUNCTION_FASTBOOT
 
 #define CONFIG_DFU_MMC
 #define CONFIG_DFU_RAM
+#define CONFIG_DFU_SF
 
 /* SATA */
 #define CONFIG_BOARD_LATE_INIT