
On 03/18/2016 02:50 PM, Purna Chandra Mandal wrote:
This driver adds support of PIC32 MUSB OTG controller as dual role device. It implements platform specific glue to reuse musb core.
Signed-off-by: Cristian Birsan cristian.birsan@microchip.com Signed-off-by: Purna Chandra Mandal purna.mandal@microchip.com
Changes in v4:
- add support to handle multiple MUSB controllers.
- remove unaligned buffer handling in musb_read_fifo
- update comment and error prints
Nice, thanks.
Changes in v3: None Changes in v2: None
drivers/usb/musb-new/Kconfig | 7 + drivers/usb/musb-new/Makefile | 1 + drivers/usb/musb-new/musb_core.c | 2 +- drivers/usb/musb-new/pic32.c | 288 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 297 insertions(+), 1 deletion(-) create mode 100644 drivers/usb/musb-new/pic32.c
[...]
+static irqreturn_t pic32_interrupt(int irq, void *hci) +{
- struct musb *musb = hci;
- irqreturn_t ret = IRQ_NONE;
- u32 epintr, usbintr;
- /* ack usb core interrupts */
- musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB);
- if (musb->int_usb)
musb_writeb(musb->mregs, MUSB_INTRUSB, musb->int_usb);
- /* ack endpoint interrupts */
- musb->int_rx = musb_readw(musb->mregs, MUSB_INTRRX) & PIC32_RX_EP_MASK;
- if (musb->int_rx)
musb_writew(musb->mregs, MUSB_INTRRX, musb->int_rx);
- musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX) & PIC32_TX_EP_MASK;
- if (musb->int_tx)
musb_writew(musb->mregs, MUSB_INTRTX, musb->int_tx);
- /* drop spurious RX and TX if device is disconnected */
- if (musb->int_usb & MUSB_INTR_DISCONNECT) {
musb->int_tx = 0;
musb->int_rx = 0;
- }
- if (musb->int_tx || musb->int_rx || musb->int_usb)
ret |= musb_interrupt(musb);
Use ret = , don't ORR the return value as that's wrong and can produce completely mangled return value.
- return ret;
+}
[...]
The rest is good, thanks for persevering :) Please drop me a V5 so I can apply the series.