usb: musb: Fix platform code being unable to override ep access ops
authorHans de Goede <hdegoede@redhat.com>
Fri, 20 Mar 2015 19:11:14 +0000 (20:11 +0100)
committerFelipe Balbi <balbi@ti.com>
Tue, 26 May 2015 15:47:13 +0000 (10:47 -0500)
musb-core was setting the ops to the default indexed or flat handlers after
checking for platform overrides. Reverse the order of this so that platform
overrides actually work.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_core.c

index 575a1f8135aed8d694e7dd99fbc44fd81fb048ef..d878aee404bf0a5a56168ebce39819e568cfd5a1 100644 (file)
@@ -2032,13 +2032,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
        if (musb->ops->quirks)
                musb->io.quirks = musb->ops->quirks;
 
-       /* At least tusb6010 has it's own offsets.. */
-       if (musb->ops->ep_offset)
-               musb->io.ep_offset = musb->ops->ep_offset;
-       if (musb->ops->ep_select)
-               musb->io.ep_select = musb->ops->ep_select;
-
-       /* ..and some devices use indexed offset or flat offset */
+       /* Set default ep access to indexed offset or flat offset ops */
        if (musb->io.quirks & MUSB_INDEXED_EP) {
                musb->io.ep_offset = musb_indexed_ep_offset;
                musb->io.ep_select = musb_indexed_ep_select;
@@ -2046,6 +2040,11 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
                musb->io.ep_offset = musb_flat_ep_offset;
                musb->io.ep_select = musb_flat_ep_select;
        }
+       /* And override them with platform specific ops if specified. */
+       if (musb->ops->ep_offset)
+               musb->io.ep_offset = musb->ops->ep_offset;
+       if (musb->ops->ep_select)
+               musb->io.ep_select = musb->ops->ep_select;
 
        if (musb->ops->fifo_mode)
                fifo_mode = musb->ops->fifo_mode;