|
|
@@ -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;
|