From: Ming Lei <tom.leiming@xxxxxxxxx> This patch uses native read_fifo/write_fifo for each hw glue driver. Musb core can always use musb->ops->*_fifo to do PIO, also removes some ugly ifdef for musb_read_fifo/musb_write_fifo. Signed-off-by: Ming Lei <tom.leiming@xxxxxxxxx> --- drivers/usb/musb/am35x.c | 5 ++++- drivers/usb/musb/blackfin.c | 7 +++++-- drivers/usb/musb/da8xx.c | 3 +++ drivers/usb/musb/davinci.c | 3 +++ drivers/usb/musb/musb_core.c | 11 +---------- drivers/usb/musb/musb_gadget.c | 4 ++-- drivers/usb/musb/musb_gadget_ep0.c | 8 ++++---- drivers/usb/musb/musb_host.c | 10 +++++----- drivers/usb/musb/omap2430.c | 3 +++ drivers/usb/musb/tusb6010.c | 6 ++++-- drivers/usb/musb/tusb6010_omap.c | 4 ++-- 11 files changed, 36 insertions(+), 28 deletions(-) diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c index d5a3da3..6ab6ed2 100644 --- a/drivers/usb/musb/am35x.c +++ b/drivers/usb/musb/am35x.c @@ -412,7 +412,7 @@ static int am35x_musb_exit(struct musb *musb) } /* AM35x supports only 32bit read operation */ -void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) +static void am35x_musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) { void __iomem *fifo = hw_ep->fifo; u32 val; @@ -452,6 +452,9 @@ static const struct musb_platform_ops am35x_ops = { .try_idle = am35x_musb_try_idle, .set_vbus = am35x_musb_set_vbus, + + .read_fifo = am35x_musb_read_fifo, + .write_fifo = musb_write_fifo, }; static u64 am35x_dmamask = DMA_BIT_MASK(32); diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c index c6d3818..6d61349 100644 --- a/drivers/usb/musb/blackfin.c +++ b/drivers/usb/musb/blackfin.c @@ -32,7 +32,7 @@ struct bfin_glue { /* * Load an endpoint's FIFO */ -void musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *src) +static void bfin_musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *src) { void __iomem *fifo = hw_ep->fifo; void __iomem *epio = hw_ep->regs; @@ -95,7 +95,7 @@ void musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *src) /* * Unload an endpoint's FIFO */ -void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) +static void bfin_musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) { void __iomem *fifo = hw_ep->fifo; u8 epnum = hw_ep->epnum; @@ -427,6 +427,9 @@ static const struct musb_platform_ops bfin_ops = { .vbus_status = bfin_musb_vbus_status, .set_vbus = bfin_musb_set_vbus, + + .read_fifo = bfin_musb_read_fifo, + .write_fifo = bfin_musb_write_fifo, }; static u64 bfin_dmamask = DMA_BIT_MASK(32); diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index e0ef584..616da28 100644 --- a/drivers/usb/musb/da8xx.c +++ b/drivers/usb/musb/da8xx.c @@ -480,6 +480,9 @@ static const struct musb_platform_ops da8xx_ops = { .try_idle = da8xx_musb_try_idle, .set_vbus = da8xx_musb_set_vbus, + + .read_fifo = musb_read_fifo, + .write_fifo = musb_write_fifo, }; static u64 da8xx_dmamask = DMA_BIT_MASK(32); diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c index e6de097..6987899 100644 --- a/drivers/usb/musb/davinci.c +++ b/drivers/usb/musb/davinci.c @@ -514,6 +514,9 @@ static const struct musb_platform_ops davinci_ops = { .set_mode = davinci_musb_set_mode, .set_vbus = davinci_musb_set_vbus, + + .read_fifo = musb_read_fifo, + .write_fifo = musb_write_fifo, }; static u64 davinci_dmamask = DMA_BIT_MASK(32); diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 070725f..fc3ba1e 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -229,10 +229,6 @@ static struct otg_io_access_ops musb_ulpi_access = { .write = musb_ulpi_write, }; -/*-------------------------------------------------------------------------*/ - -#if !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_BLACKFIN) - /* * Load an endpoint's FIFO */ @@ -274,7 +270,6 @@ void musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *src) } EXPORT_SYMBOL(musb_write_fifo); -#if !defined(CONFIG_USB_MUSB_AM35X) /* * Unload an endpoint's FIFO */ @@ -313,10 +308,6 @@ void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) } } EXPORT_SYMBOL(musb_read_fifo); -#endif - -#endif /* normal PIO */ - /*-------------------------------------------------------------------------*/ @@ -345,7 +336,7 @@ void musb_load_testpacket(struct musb *musb) void __iomem *regs = musb->endpoints[0].regs; musb_ep_select(musb->mregs, 0); - musb_write_fifo(musb->control_ep, + musb->ops->write_fifo(musb->control_ep, sizeof(musb_test_packet), musb_test_packet); musb_writew(regs, MUSB_CSR0, MUSB_CSR0_TXPKTRDY); } diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index 9b162df..14d0a9a 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c @@ -439,7 +439,7 @@ static void txstate(struct musb *musb, struct musb_request *req) if (is_dma_capable() && musb_ep->dma) unmap_dma_buffer(req, musb); - musb_write_fifo(musb_ep->hw_ep, fifo_count, + musb->ops->write_fifo(musb_ep->hw_ep, fifo_count, (u8 *) (request->buf + request->actual)); request->actual += fifo_count; csr |= MUSB_TXCSR_TXPKTRDY; @@ -773,7 +773,7 @@ static void rxstate(struct musb *musb, struct musb_request *req) musb_writew(epio, MUSB_RXCSR, csr); } - musb_read_fifo(musb_ep->hw_ep, fifo_count, (u8 *) + musb->ops->read_fifo(musb_ep->hw_ep, fifo_count, (u8 *) (request->buf + request->actual)); request->actual += fifo_count; diff --git a/drivers/usb/musb/musb_gadget_ep0.c b/drivers/usb/musb/musb_gadget_ep0.c index 6dd03f4..bcadd96 100644 --- a/drivers/usb/musb/musb_gadget_ep0.c +++ b/drivers/usb/musb/musb_gadget_ep0.c @@ -154,7 +154,7 @@ static int service_tx_status_request( if (len > 2) len = 2; - musb_write_fifo(&musb->endpoints[0], len, result); + musb->ops->write_fifo(&musb->endpoints[0], len, result); } return handled; @@ -509,7 +509,7 @@ static void ep0_rxstate(struct musb *musb) req->status = -EOVERFLOW; count = len; } - musb_read_fifo(&musb->endpoints[0], count, buf); + musb->ops->read_fifo(&musb->endpoints[0], count, buf); req->actual += count; csr = MUSB_CSR0_P_SVDRXPKTRDY; if (count < 64 || req->actual == req->length) { @@ -559,7 +559,7 @@ static void ep0_txstate(struct musb *musb) fifo_src = (u8 *) request->buf + request->actual; fifo_count = min((unsigned) MUSB_EP0_FIFOSIZE, request->length - request->actual); - musb_write_fifo(&musb->endpoints[0], fifo_count, fifo_src); + musb->ops->write_fifo(&musb->endpoints[0], fifo_count, fifo_src); request->actual += fifo_count; /* update the flags */ @@ -601,7 +601,7 @@ musb_read_setup(struct musb *musb, struct usb_ctrlrequest *req) struct usb_request *r; void __iomem *regs = musb->control_ep->regs; - musb_read_fifo(&musb->endpoints[0], sizeof *req, (u8 *)req); + musb->ops->read_fifo(&musb->endpoints[0], sizeof *req, (u8 *)req); /* NOTE: earlier 2.6 versions changed setup packets to host * order, but now USB packets always stay in USB byte order. diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index 4d5bcb4..63f1a10 100644 --- a/drivers/usb/musb/musb_host.c +++ b/drivers/usb/musb/musb_host.c @@ -530,7 +530,7 @@ musb_host_packet_rx(struct musb *musb, struct urb *urb, u8 epnum, u8 iso_err) urb->status = -EREMOTEIO; } - musb_read_fifo(hw_ep, length, buf); + musb->ops->read_fifo(hw_ep, length, buf); csr = musb_readw(epio, MUSB_RXCSR); csr |= MUSB_RXCSR_H_WZC_BITS; @@ -813,7 +813,7 @@ static void musb_ep_program(struct musb *musb, u8 epnum, if (load_count) { /* PIO to load FIFO */ qh->segsize = load_count; - musb_write_fifo(hw_ep, load_count, buf); + musb->ops->write_fifo(hw_ep, load_count, buf); } /* re-enable interrupt */ @@ -909,7 +909,7 @@ static bool musb_h_ep0_continue(struct musb *musb, u16 len, struct urb *urb) if (fifo_count < len) urb->status = -EOVERFLOW; - musb_read_fifo(hw_ep, fifo_count, fifo_dest); + musb->ops->read_fifo(hw_ep, fifo_count, fifo_dest); urb->actual_length += fifo_count; if (len < qh->maxpacket) { @@ -948,7 +948,7 @@ static bool musb_h_ep0_continue(struct musb *musb, u16 len, struct urb *urb) fifo_count, (fifo_count == 1) ? "" : "s", fifo_dest); - musb_write_fifo(hw_ep, fifo_count, fifo_dest); + musb->ops->write_fifo(hw_ep, fifo_count, fifo_dest); urb->actual_length += fifo_count; more = true; @@ -1337,7 +1337,7 @@ void musb_host_tx(struct musb *musb, u8 epnum) length = qh->maxpacket; /* Unmap the buffer so that CPU can use it */ unmap_urb_for_dma(musb_to_hcd(musb), urb); - musb_write_fifo(hw_ep, length, urb->transfer_buffer + offset); + musb->ops->write_fifo(hw_ep, length, urb->transfer_buffer + offset); qh->segsize = length; musb_ep_select(mbase, epnum); diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index de39fa0..09a9d57 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -290,6 +290,9 @@ static const struct musb_platform_ops omap2430_ops = { .try_idle = omap2430_musb_try_idle, .set_vbus = omap2430_musb_set_vbus, + + .read_fifo = musb_read_fifo, + .write_fifo = musb_write_fifo, }; static u64 omap2430_dmamask = DMA_BIT_MASK(32); diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c index b29ecd8..3427298 100644 --- a/drivers/usb/musb/tusb6010.c +++ b/drivers/usb/musb/tusb6010.c @@ -170,7 +170,7 @@ static inline void tusb_fifo_read_unaligned(void __iomem *fifo, } } -void musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *buf) +static void tusb_musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *buf) { void __iomem *ep_conf = hw_ep->conf; void __iomem *fifo = hw_ep->fifo; @@ -219,7 +219,7 @@ void musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *buf) tusb_fifo_write_unaligned(fifo, buf, len); } -void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *buf) +static void tusb_musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *buf) { void __iomem *ep_conf = hw_ep->conf; void __iomem *fifo = hw_ep->fifo; @@ -1177,6 +1177,8 @@ static const struct musb_platform_ops tusb_ops = { .vbus_status = tusb_musb_vbus_status, .set_vbus = tusb_musb_set_vbus, + .read_fifo = tusb_musb_read_fifo, + .write_fifo = tusb_musb_write_fifo, }; static u64 tusb_dmamask = DMA_BIT_MASK(32); diff --git a/drivers/usb/musb/tusb6010_omap.c b/drivers/usb/musb/tusb6010_omap.c index 7403bfd..0133e66 100644 --- a/drivers/usb/musb/tusb6010_omap.c +++ b/drivers/usb/musb/tusb6010_omap.c @@ -177,12 +177,12 @@ static void tusb_omap_dma_cb(int lch, u16 ch_status, void *data) dma_unmap_single(dev, chdat->dma_addr, chdat->transfer_len, DMA_TO_DEVICE); - musb_write_fifo(hw_ep, pio, buf); + musb->ops->write_fifo(hw_ep, pio, buf); } else { dma_unmap_single(dev, chdat->dma_addr, chdat->transfer_len, DMA_FROM_DEVICE); - musb_read_fifo(hw_ep, pio, buf); + musb->ops->read_fifo(hw_ep, pio, buf); } channel->actual_len += pio; } -- 1.7.3 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html