From 1c84cc6e3badb31e55bdf05ff2d3f8f058a5da47 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 00:54:16 +0100 Subject: [PATCH 01/27] usb: s3c-otg: Rename regs-otg.h to s3c_udc_otg_regs.h Rename the header file, so it's obvious which driver it's part of. No functional change. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 2 +- drivers/usb/gadget/s3c_udc_otg_phy.c | 2 +- drivers/usb/gadget/{regs-otg.h => s3c_udc_otg_regs.h} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename drivers/usb/gadget/{regs-otg.h => s3c_udc_otg_regs.h} (100%) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 7a2d1e7d88..184ff4ef18 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -32,7 +32,7 @@ #include -#include "regs-otg.h" +#include "s3c_udc_otg_regs.h" #include /***********************************************************/ diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/s3c_udc_otg_phy.c index f13cb8910a..963b61721d 100644 --- a/drivers/usb/gadget/s3c_udc_otg_phy.c +++ b/drivers/usb/gadget/s3c_udc_otg_phy.c @@ -32,7 +32,7 @@ #include -#include "regs-otg.h" +#include "s3c_udc_otg_regs.h" #include #include diff --git a/drivers/usb/gadget/regs-otg.h b/drivers/usb/gadget/s3c_udc_otg_regs.h similarity index 100% rename from drivers/usb/gadget/regs-otg.h rename to drivers/usb/gadget/s3c_udc_otg_regs.h From b4d5cf0bc8f9d39c0674c87c610d95d3445a3434 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 00:57:58 +0100 Subject: [PATCH 02/27] usb: s3c-otg: Rename struct s3c_udc to dwc2_udc The driver is actually for the Designware DWC2 controller. This patch renames struct s3c_udc to struct dwc2_udc to make things more obvious and clear. Signed-off-by: Marek Vasut --- drivers/usb/gadget/bcm_udc_otg_phy.c | 4 +- drivers/usb/gadget/s3c_udc_otg.c | 46 +++++++++++------------ drivers/usb/gadget/s3c_udc_otg_phy.c | 4 +- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 38 +++++++++---------- include/usb/s3c_udc.h | 10 ++--- 5 files changed, 51 insertions(+), 51 deletions(-) diff --git a/drivers/usb/gadget/bcm_udc_otg_phy.c b/drivers/usb/gadget/bcm_udc_otg_phy.c index f8690b034c..936247e94a 100644 --- a/drivers/usb/gadget/bcm_udc_otg_phy.c +++ b/drivers/usb/gadget/bcm_udc_otg_phy.c @@ -12,7 +12,7 @@ #include #include "bcm_udc_otg.h" -void otg_phy_init(struct s3c_udc *dev) +void otg_phy_init(struct dwc2_udc *dev) { /* set Phy to driving mode */ wfld_clear(HSOTG_CTRL_BASE_ADDR + HSOTG_CTRL_PHY_P1CTL_OFFSET, @@ -37,7 +37,7 @@ void otg_phy_init(struct s3c_udc *dev) HSOTG_CTRL_PHY_P1CTL_SOFT_RESET_MASK); } -void otg_phy_off(struct s3c_udc *dev) +void otg_phy_off(struct dwc2_udc *dev) { /* Soft Disconnect */ wfld_set(HSOTG_BASE_ADDR + HSOTG_DCTL_OFFSET, diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 184ff4ef18..eb7f77e07e 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -65,7 +65,7 @@ static char *state_names[] = { #define DRIVER_DESC "S3C HS USB OTG Device Driver, (c) Samsung Electronics" #define DRIVER_VERSION "15 March 2009" -struct s3c_udc *the_controller; +struct dwc2_udc *the_controller; static const char driver_name[] = "s3c-udc"; static const char driver_desc[] = DRIVER_DESC; @@ -94,18 +94,18 @@ static int s3c_queue(struct usb_ep *ep, struct usb_request *, gfp_t gfp_flags); static int s3c_dequeue(struct usb_ep *ep, struct usb_request *); static int s3c_fifo_status(struct usb_ep *ep); static void s3c_fifo_flush(struct usb_ep *ep); -static void s3c_ep0_read(struct s3c_udc *dev); -static void s3c_ep0_kick(struct s3c_udc *dev, struct s3c_ep *ep); -static void s3c_handle_ep0(struct s3c_udc *dev); -static int s3c_ep0_write(struct s3c_udc *dev); +static void s3c_ep0_read(struct dwc2_udc *dev); +static void s3c_ep0_kick(struct dwc2_udc *dev, struct s3c_ep *ep); +static void s3c_handle_ep0(struct dwc2_udc *dev); +static int s3c_ep0_write(struct dwc2_udc *dev); static int write_fifo_ep0(struct s3c_ep *ep, struct s3c_request *req); static void done(struct s3c_ep *ep, struct s3c_request *req, int status); -static void stop_activity(struct s3c_udc *dev, +static void stop_activity(struct dwc2_udc *dev, struct usb_gadget_driver *driver); -static int udc_enable(struct s3c_udc *dev); -static void udc_set_address(struct s3c_udc *dev, unsigned char address); -static void reconfig_usbd(struct s3c_udc *dev); -static void set_max_pktsize(struct s3c_udc *dev, enum usb_device_speed speed); +static int udc_enable(struct dwc2_udc *dev); +static void udc_set_address(struct dwc2_udc *dev, unsigned char address); +static void reconfig_usbd(struct dwc2_udc *dev); +static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed); static void nuke(struct s3c_ep *ep, int status); static int s3c_udc_set_halt(struct usb_ep *_ep, int value); static void s3c_udc_set_nak(struct s3c_ep *ep); @@ -151,8 +151,8 @@ bool dfu_usb_get_reset(void) return !!(readl(®->gintsts) & INT_RESET); } -__weak void otg_phy_init(struct s3c_udc *dev) {} -__weak void otg_phy_off(struct s3c_udc *dev) {} +__weak void otg_phy_init(struct dwc2_udc *dev) {} +__weak void otg_phy_off(struct dwc2_udc *dev) {} /***********************************************************/ @@ -161,7 +161,7 @@ __weak void otg_phy_off(struct s3c_udc *dev) {} /* * udc_disable - disable USB device controller */ -static void udc_disable(struct s3c_udc *dev) +static void udc_disable(struct dwc2_udc *dev) { debug_cond(DEBUG_SETUP != 0, "%s: %p\n", __func__, dev); @@ -177,7 +177,7 @@ static void udc_disable(struct s3c_udc *dev) /* * udc_reinit - initialize software state */ -static void udc_reinit(struct s3c_udc *dev) +static void udc_reinit(struct dwc2_udc *dev) { unsigned int i; @@ -210,7 +210,7 @@ static void udc_reinit(struct s3c_udc *dev) /* until it's enabled, this UDC should be completely invisible * to any USB host. */ -static int udc_enable(struct s3c_udc *dev) +static int udc_enable(struct dwc2_udc *dev) { debug_cond(DEBUG_SETUP != 0, "%s: %p\n", __func__, dev); @@ -231,7 +231,7 @@ static int udc_enable(struct s3c_udc *dev) */ int usb_gadget_register_driver(struct usb_gadget_driver *driver) { - struct s3c_udc *dev = the_controller; + struct dwc2_udc *dev = the_controller; int retval = 0; unsigned long flags = 0; @@ -280,7 +280,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) */ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) { - struct s3c_udc *dev = the_controller; + struct dwc2_udc *dev = the_controller; unsigned long flags = 0; if (!dev) @@ -368,7 +368,7 @@ static void nuke(struct s3c_ep *ep, int status) } } -static void stop_activity(struct s3c_udc *dev, +static void stop_activity(struct dwc2_udc *dev, struct usb_gadget_driver *driver) { int i; @@ -396,7 +396,7 @@ static void stop_activity(struct s3c_udc *dev, udc_reinit(dev); } -static void reconfig_usbd(struct s3c_udc *dev) +static void reconfig_usbd(struct dwc2_udc *dev) { /* 2. Soft-reset OTG Core and then unreset again. */ int i; @@ -496,7 +496,7 @@ static void reconfig_usbd(struct s3c_udc *dev) writel(GAHBCFG_INIT, ®->gahbcfg); } -static void set_max_pktsize(struct s3c_udc *dev, enum usb_device_speed speed) +static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed) { unsigned int ep_ctrl; int i; @@ -530,7 +530,7 @@ static int s3c_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) { struct s3c_ep *ep; - struct s3c_udc *dev; + struct dwc2_udc *dev; unsigned long flags = 0; debug("%s: %p\n", __func__, _ep); @@ -722,7 +722,7 @@ static const struct usb_gadget_ops s3c_udc_ops = { /* current versions must always be self-powered */ }; -static struct s3c_udc memory = { +static struct dwc2_udc memory = { .usb_address = 0, .gadget = { .ops = &s3c_udc_ops, @@ -798,7 +798,7 @@ static struct s3c_udc memory = { int s3c_udc_probe(struct s3c_plat_otg_data *pdata) { - struct s3c_udc *dev = &memory; + struct dwc2_udc *dev = &memory; int retval = 0; debug("%s: %p\n", __func__, pdata); diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/s3c_udc_otg_phy.c index 963b61721d..ffc930c911 100644 --- a/drivers/usb/gadget/s3c_udc_otg_phy.c +++ b/drivers/usb/gadget/s3c_udc_otg_phy.c @@ -37,7 +37,7 @@ #include -void otg_phy_init(struct s3c_udc *dev) +void otg_phy_init(struct dwc2_udc *dev) { unsigned int usb_phy_ctrl = dev->pdata->usb_phy_ctrl; struct s3c_usbotg_phy *phy = @@ -75,7 +75,7 @@ void otg_phy_init(struct s3c_udc *dev) udelay(10); } -void otg_phy_off(struct s3c_udc *dev) +void otg_phy_off(struct dwc2_udc *dev) { unsigned int usb_phy_ctrl = dev->pdata->usb_phy_ctrl; struct s3c_usbotg_phy *phy = diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index 7e7a2c2d90..6695444945 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -25,7 +25,7 @@ int clear_feature_flag; #define GET_MAX_LUN_REQUEST 0xFE #define BOT_RESET_REQUEST 0xFF -static inline void s3c_udc_ep0_zlp(struct s3c_udc *dev) +static inline void s3c_udc_ep0_zlp(struct dwc2_udc *dev) { u32 ep_ctrl; @@ -186,7 +186,7 @@ int setdma_tx(struct s3c_ep *ep, struct s3c_request *req) return length; } -static void complete_rx(struct s3c_udc *dev, u8 ep_num) +static void complete_rx(struct dwc2_udc *dev, u8 ep_num) { struct s3c_ep *ep = &dev->ep[ep_num]; struct s3c_request *req = NULL; @@ -259,7 +259,7 @@ static void complete_rx(struct s3c_udc *dev, u8 ep_num) setdma_rx(ep, req); } -static void complete_tx(struct s3c_udc *dev, u8 ep_num) +static void complete_tx(struct dwc2_udc *dev, u8 ep_num) { struct s3c_ep *ep = &dev->ep[ep_num]; struct s3c_request *req; @@ -335,7 +335,7 @@ static void complete_tx(struct s3c_udc *dev, u8 ep_num) } } -static inline void s3c_udc_check_tx_queue(struct s3c_udc *dev, u8 ep_num) +static inline void s3c_udc_check_tx_queue(struct dwc2_udc *dev, u8 ep_num) { struct s3c_ep *ep = &dev->ep[ep_num]; struct s3c_request *req; @@ -362,7 +362,7 @@ static inline void s3c_udc_check_tx_queue(struct s3c_udc *dev, u8 ep_num) } -static void process_ep_in_intr(struct s3c_udc *dev) +static void process_ep_in_intr(struct dwc2_udc *dev) { u32 ep_intr, ep_intr_status; u8 ep_num = 0; @@ -409,7 +409,7 @@ static void process_ep_in_intr(struct s3c_udc *dev) } } -static void process_ep_out_intr(struct s3c_udc *dev) +static void process_ep_out_intr(struct dwc2_udc *dev) { u32 ep_intr, ep_intr_status; u8 ep_num = 0; @@ -463,7 +463,7 @@ static void process_ep_out_intr(struct s3c_udc *dev) */ static int s3c_udc_irq(int irq, void *_dev) { - struct s3c_udc *dev = _dev; + struct dwc2_udc *dev = _dev; u32 intr_status; u32 usb_status, gintmsk; unsigned long flags = 0; @@ -584,7 +584,7 @@ static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, { struct s3c_request *req; struct s3c_ep *ep; - struct s3c_udc *dev; + struct dwc2_udc *dev; unsigned long flags = 0; u32 ep_num, gintsts; @@ -737,7 +737,7 @@ int s3c_fifo_read(struct s3c_ep *ep, u32 *cp, int max) * Called from control endpoint function * after it decodes a set address setup packet. */ -static void udc_set_address(struct s3c_udc *dev, unsigned char address) +static void udc_set_address(struct dwc2_udc *dev, unsigned char address) { u32 ctrl = readl(®->dcfg); writel(DEVICE_ADDRESS(address) | ctrl, ®->dcfg); @@ -753,7 +753,7 @@ static void udc_set_address(struct s3c_udc *dev, unsigned char address) static inline void s3c_udc_ep0_set_stall(struct s3c_ep *ep) { - struct s3c_udc *dev; + struct dwc2_udc *dev; u32 ep_ctrl = 0; dev = ep->dev; @@ -779,7 +779,7 @@ static inline void s3c_udc_ep0_set_stall(struct s3c_ep *ep) s3c_udc_pre_setup(); } -static void s3c_ep0_read(struct s3c_udc *dev) +static void s3c_ep0_read(struct dwc2_udc *dev) { struct s3c_request *req; struct s3c_ep *ep = &dev->ep[0]; @@ -816,7 +816,7 @@ static void s3c_ep0_read(struct s3c_udc *dev) /* * DATA_STATE_XMIT */ -static int s3c_ep0_write(struct s3c_udc *dev) +static int s3c_ep0_write(struct dwc2_udc *dev) { struct s3c_request *req; struct s3c_ep *ep = &dev->ep[0]; @@ -859,7 +859,7 @@ static int s3c_ep0_write(struct s3c_udc *dev) return 1; } -int s3c_udc_get_status(struct s3c_udc *dev, +int s3c_udc_get_status(struct dwc2_udc *dev, struct usb_ctrlrequest *crq) { u8 ep_num = crq->wIndex & 0x7F; @@ -1032,7 +1032,7 @@ void s3c_udc_ep_clear_stall(struct s3c_ep *ep) static int s3c_udc_set_halt(struct usb_ep *_ep, int value) { struct s3c_ep *ep; - struct s3c_udc *dev; + struct dwc2_udc *dev; unsigned long flags = 0; u8 ep_num; @@ -1125,7 +1125,7 @@ void s3c_udc_ep_activate(struct s3c_ep *ep) static int s3c_udc_clear_feature(struct usb_ep *_ep) { - struct s3c_udc *dev; + struct dwc2_udc *dev; struct s3c_ep *ep; u8 ep_num; @@ -1189,7 +1189,7 @@ static int s3c_udc_clear_feature(struct usb_ep *_ep) static int s3c_udc_set_feature(struct usb_ep *_ep) { - struct s3c_udc *dev; + struct dwc2_udc *dev; struct s3c_ep *ep; u8 ep_num; @@ -1262,7 +1262,7 @@ static int s3c_udc_set_feature(struct usb_ep *_ep) /* * WAIT_FOR_SETUP (OUT_PKT_RDY) */ -void s3c_ep0_setup(struct s3c_udc *dev) +void s3c_ep0_setup(struct dwc2_udc *dev) { struct s3c_ep *ep = &dev->ep[0]; int i; @@ -1451,7 +1451,7 @@ void s3c_ep0_setup(struct s3c_udc *dev) /* * handle ep0 interrupt */ -static void s3c_handle_ep0(struct s3c_udc *dev) +static void s3c_handle_ep0(struct dwc2_udc *dev) { if (dev->ep0state == WAIT_FOR_SETUP) { debug_cond(DEBUG_OUT_EP != 0, @@ -1465,7 +1465,7 @@ static void s3c_handle_ep0(struct s3c_udc *dev) } } -static void s3c_ep0_kick(struct s3c_udc *dev, struct s3c_ep *ep) +static void s3c_ep0_kick(struct dwc2_udc *dev, struct s3c_ep *ep) { debug_cond(DEBUG_EP0 != 0, "%s: ep_is_in = %d\n", __func__, ep_is_in(ep)); diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h index 7f49a4e2d5..f6c3a8693c 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/s3c_udc.h @@ -55,7 +55,7 @@ enum ep_type { struct s3c_ep { struct usb_ep ep; - struct s3c_udc *dev; + struct dwc2_udc *dev; const struct usb_endpoint_descriptor *desc; struct list_head queue; @@ -76,7 +76,7 @@ struct s3c_request { struct list_head queue; }; -struct s3c_udc { +struct dwc2_udc { struct usb_gadget gadget; struct usb_gadget_driver *driver; @@ -90,14 +90,14 @@ struct s3c_udc { unsigned req_pending:1, req_std:1; }; -extern struct s3c_udc *the_controller; +extern struct dwc2_udc *the_controller; #define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN) == USB_DIR_IN) #define ep_index(EP) ((EP)->bEndpointAddress&0xF) #define ep_maxpacket(EP) ((EP)->ep.maxpacket) -extern void otg_phy_init(struct s3c_udc *dev); -extern void otg_phy_off(struct s3c_udc *dev); +extern void otg_phy_init(struct dwc2_udc *dev); +extern void otg_phy_off(struct dwc2_udc *dev); extern void s3c_udc_ep_set_stall(struct s3c_ep *ep); extern int s3c_udc_probe(struct s3c_plat_otg_data *pdata); From 014728133a0867440d570784ced76a413f46d824 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:11:45 +0100 Subject: [PATCH 03/27] usb: s3c-otg: Rename struct s3c_usbotg_reg to dwc2_usbotg_reg The driver is actually for the Designware DWC2 controller. This patch renames struct s3c_usbotg_reg to struct dwc2_usbotg_reg to make things more obvious and clear. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 4 ++-- drivers/usb/gadget/s3c_udc_otg_regs.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index eb7f77e07e..00d03f32cd 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -144,7 +144,7 @@ static struct usb_ep_ops s3c_ep_ops = { /***********************************************************/ void __iomem *regs_otg; -struct s3c_usbotg_reg *reg; +struct dwc2_usbotg_reg *reg; bool dfu_usb_get_reset(void) { @@ -805,7 +805,7 @@ int s3c_udc_probe(struct s3c_plat_otg_data *pdata) dev->pdata = pdata; - reg = (struct s3c_usbotg_reg *)pdata->regs_otg; + reg = (struct dwc2_usbotg_reg *)pdata->regs_otg; /* regs_otg = (void *)pdata->regs_otg; */ diff --git a/drivers/usb/gadget/s3c_udc_otg_regs.h b/drivers/usb/gadget/s3c_udc_otg_regs.h index ac5d11213d..c8da803d85 100644 --- a/drivers/usb/gadget/s3c_udc_otg_regs.h +++ b/drivers/usb/gadget/s3c_udc_otg_regs.h @@ -48,7 +48,7 @@ struct ep_fifo { }; /* USB2.0 OTG Controller register */ -struct s3c_usbotg_reg { +struct dwc2_usbotg_reg { /* Core Global Registers */ u32 gotgctl; /* OTG Control & Status */ u32 gotgint; /* OTG Interrupt */ From 2c12ff039ca6e36c8c2025befcda3d91fbf47dcd Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:36:36 +0100 Subject: [PATCH 04/27] usb: s3c-otg: Split private bits from s3c_udc.h Most of the functions are local to the s3c_udc driver, remove them from the s3c_udc.h header to stop those bits from propagating all over the place. Instead, move all the private stuff into new private s3c_udc_otg_priv.h header. Signed-off-by: Marek Vasut --- drivers/usb/gadget/bcm_udc_otg_phy.c | 2 +- drivers/usb/gadget/s3c_udc_otg.c | 1 + drivers/usb/gadget/s3c_udc_otg_phy.c | 1 + drivers/usb/gadget/s3c_udc_otg_priv.h | 102 ++++++++++++++++++++++++++ include/usb/s3c_udc.h | 94 +----------------------- 5 files changed, 108 insertions(+), 92 deletions(-) create mode 100644 drivers/usb/gadget/s3c_udc_otg_priv.h diff --git a/drivers/usb/gadget/bcm_udc_otg_phy.c b/drivers/usb/gadget/bcm_udc_otg_phy.c index 936247e94a..c58388c639 100644 --- a/drivers/usb/gadget/bcm_udc_otg_phy.c +++ b/drivers/usb/gadget/bcm_udc_otg_phy.c @@ -9,7 +9,7 @@ #include #include -#include +#include "s3c_udc_otg_priv.h" #include "bcm_udc_otg.h" void otg_phy_init(struct dwc2_udc *dev) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 00d03f32cd..99c6a1b1a7 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -33,6 +33,7 @@ #include #include "s3c_udc_otg_regs.h" +#include "s3c_udc_otg_priv.h" #include /***********************************************************/ diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/s3c_udc_otg_phy.c index ffc930c911..169f8e4dbb 100644 --- a/drivers/usb/gadget/s3c_udc_otg_phy.c +++ b/drivers/usb/gadget/s3c_udc_otg_phy.c @@ -33,6 +33,7 @@ #include #include "s3c_udc_otg_regs.h" +#include "s3c_udc_otg_priv.h" #include #include diff --git a/drivers/usb/gadget/s3c_udc_otg_priv.h b/drivers/usb/gadget/s3c_udc_otg_priv.h new file mode 100644 index 0000000000..567fb4e263 --- /dev/null +++ b/drivers/usb/gadget/s3c_udc_otg_priv.h @@ -0,0 +1,102 @@ +/* + * Samsung S3C on-chip full/high speed USB device controllers + * Copyright (C) 2005 for Samsung Electronics + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __S3C_UDC_OTG_PRIV__ +#define __S3C_UDC_OTG_PRIV__ + +#include +#include +#include +#include +#include +#include +#include + +/*-------------------------------------------------------------------------*/ +/* DMA bounce buffer size, 16K is enough even for mass storage */ +#define DMA_BUFFER_SIZE (16*SZ_1K) + +#define EP0_FIFO_SIZE 64 +#define EP_FIFO_SIZE 512 +#define EP_FIFO_SIZE2 1024 +/* ep0-control, ep1in-bulk, ep2out-bulk, ep3in-int */ +#define S3C_MAX_ENDPOINTS 4 +#define S3C_MAX_HW_ENDPOINTS 16 + +#define WAIT_FOR_SETUP 0 +#define DATA_STATE_XMIT 1 +#define DATA_STATE_NEED_ZLP 2 +#define WAIT_FOR_OUT_STATUS 3 +#define DATA_STATE_RECV 4 +#define WAIT_FOR_COMPLETE 5 +#define WAIT_FOR_OUT_COMPLETE 6 +#define WAIT_FOR_IN_COMPLETE 7 +#define WAIT_FOR_NULL_COMPLETE 8 + +#define TEST_J_SEL 0x1 +#define TEST_K_SEL 0x2 +#define TEST_SE0_NAK_SEL 0x3 +#define TEST_PACKET_SEL 0x4 +#define TEST_FORCE_ENABLE_SEL 0x5 + +/* ************************************************************************* */ +/* IO + */ + +enum ep_type { + ep_control, ep_bulk_in, ep_bulk_out, ep_interrupt +}; + +struct s3c_ep { + struct usb_ep ep; + struct dwc2_udc *dev; + + const struct usb_endpoint_descriptor *desc; + struct list_head queue; + unsigned long pio_irqs; + int len; + void *dma_buf; + + u8 stopped; + u8 bEndpointAddress; + u8 bmAttributes; + + enum ep_type ep_type; + int fifo_num; +}; + +struct s3c_request { + struct usb_request req; + struct list_head queue; +}; + +struct dwc2_udc { + struct usb_gadget gadget; + struct usb_gadget_driver *driver; + + struct s3c_plat_otg_data *pdata; + + int ep0state; + struct s3c_ep ep[S3C_MAX_ENDPOINTS]; + + unsigned char usb_address; + + unsigned req_pending:1, req_std:1; +}; + +extern struct dwc2_udc *the_controller; + +#define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN) == USB_DIR_IN) +#define ep_index(EP) ((EP)->bEndpointAddress&0xF) +#define ep_maxpacket(EP) ((EP)->ep.maxpacket) + +extern void otg_phy_init(struct dwc2_udc *dev); +extern void otg_phy_off(struct dwc2_udc *dev); + +extern void s3c_udc_ep_set_stall(struct s3c_ep *ep); + +#endif /* __S3C_UDC_OTG_PRIV__ */ diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h index f6c3a8693c..67c3e9112d 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/s3c_udc.h @@ -9,99 +9,8 @@ #ifndef __S3C_USB_GADGET #define __S3C_USB_GADGET -#include -#include -#include -#include -#include -#include - #define PHY0_SLEEP (1 << 5) -/*-------------------------------------------------------------------------*/ -/* DMA bounce buffer size, 16K is enough even for mass storage */ -#define DMA_BUFFER_SIZE (16*SZ_1K) - -#define EP0_FIFO_SIZE 64 -#define EP_FIFO_SIZE 512 -#define EP_FIFO_SIZE2 1024 -/* ep0-control, ep1in-bulk, ep2out-bulk, ep3in-int */ -#define S3C_MAX_ENDPOINTS 4 -#define S3C_MAX_HW_ENDPOINTS 16 - -#define WAIT_FOR_SETUP 0 -#define DATA_STATE_XMIT 1 -#define DATA_STATE_NEED_ZLP 2 -#define WAIT_FOR_OUT_STATUS 3 -#define DATA_STATE_RECV 4 -#define WAIT_FOR_COMPLETE 5 -#define WAIT_FOR_OUT_COMPLETE 6 -#define WAIT_FOR_IN_COMPLETE 7 -#define WAIT_FOR_NULL_COMPLETE 8 - -#define TEST_J_SEL 0x1 -#define TEST_K_SEL 0x2 -#define TEST_SE0_NAK_SEL 0x3 -#define TEST_PACKET_SEL 0x4 -#define TEST_FORCE_ENABLE_SEL 0x5 - -/* ************************************************************************* */ -/* IO - */ - -enum ep_type { - ep_control, ep_bulk_in, ep_bulk_out, ep_interrupt -}; - -struct s3c_ep { - struct usb_ep ep; - struct dwc2_udc *dev; - - const struct usb_endpoint_descriptor *desc; - struct list_head queue; - unsigned long pio_irqs; - int len; - void *dma_buf; - - u8 stopped; - u8 bEndpointAddress; - u8 bmAttributes; - - enum ep_type ep_type; - int fifo_num; -}; - -struct s3c_request { - struct usb_request req; - struct list_head queue; -}; - -struct dwc2_udc { - struct usb_gadget gadget; - struct usb_gadget_driver *driver; - - struct s3c_plat_otg_data *pdata; - - int ep0state; - struct s3c_ep ep[S3C_MAX_ENDPOINTS]; - - unsigned char usb_address; - - unsigned req_pending:1, req_std:1; -}; - -extern struct dwc2_udc *the_controller; - -#define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN) == USB_DIR_IN) -#define ep_index(EP) ((EP)->bEndpointAddress&0xF) -#define ep_maxpacket(EP) ((EP)->ep.maxpacket) - -extern void otg_phy_init(struct dwc2_udc *dev); -extern void otg_phy_off(struct dwc2_udc *dev); - -extern void s3c_udc_ep_set_stall(struct s3c_ep *ep); -extern int s3c_udc_probe(struct s3c_plat_otg_data *pdata); - struct s3c_plat_otg_data { int (*phy_control)(int on); unsigned int regs_phy; @@ -110,4 +19,7 @@ struct s3c_plat_otg_data { unsigned int usb_flags; unsigned int usb_gusbcfg; }; + +extern int s3c_udc_probe(struct s3c_plat_otg_data *pdata); + #endif From 1f99ab5c9286148360c2021da39f67a9c6d79db0 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:44:41 +0100 Subject: [PATCH 05/27] usb: s3c-otg: Rename struct s3c_usbotg_phy to dwc2_usbotg_phy The driver is actually for the Designware DWC2 controller. This patch renames struct s3c_usbotg_phy to struct dwc2_usbotg_phy to make things more obvious and clear. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg_phy.c | 8 ++++---- drivers/usb/gadget/s3c_udc_otg_regs.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/s3c_udc_otg_phy.c index 169f8e4dbb..a761b43b12 100644 --- a/drivers/usb/gadget/s3c_udc_otg_phy.c +++ b/drivers/usb/gadget/s3c_udc_otg_phy.c @@ -41,8 +41,8 @@ void otg_phy_init(struct dwc2_udc *dev) { unsigned int usb_phy_ctrl = dev->pdata->usb_phy_ctrl; - struct s3c_usbotg_phy *phy = - (struct s3c_usbotg_phy *)dev->pdata->regs_phy; + struct dwc2_usbotg_phy *phy = + (struct dwc2_usbotg_phy *)dev->pdata->regs_phy; dev->pdata->phy_control(1); @@ -79,8 +79,8 @@ void otg_phy_init(struct dwc2_udc *dev) void otg_phy_off(struct dwc2_udc *dev) { unsigned int usb_phy_ctrl = dev->pdata->usb_phy_ctrl; - struct s3c_usbotg_phy *phy = - (struct s3c_usbotg_phy *)dev->pdata->regs_phy; + struct dwc2_usbotg_phy *phy = + (struct dwc2_usbotg_phy *)dev->pdata->regs_phy; /* reset controller just in case */ writel(PHY_SW_RST0, &phy->rstcon); diff --git a/drivers/usb/gadget/s3c_udc_otg_regs.h b/drivers/usb/gadget/s3c_udc_otg_regs.h index c8da803d85..e5115ddef1 100644 --- a/drivers/usb/gadget/s3c_udc_otg_regs.h +++ b/drivers/usb/gadget/s3c_udc_otg_regs.h @@ -12,7 +12,7 @@ #define __ASM_ARCH_REGS_USB_OTG_HS_H /* USB2.0 OTG Controller register */ -struct s3c_usbotg_phy { +struct dwc2_usbotg_phy { u32 phypwr; u32 phyclk; u32 rstcon; From 5f3a562a3ba145b2fb62ddb77f59bac5c4ab3ff6 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:46:15 +0100 Subject: [PATCH 06/27] usb: s3c-otg: Rename struct s3c_dev_*_ep The driver is actually for the Designware DWC2 controller. This patch renames struct s3c_dev_*_ep to reflect this. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg_regs.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg_regs.h b/drivers/usb/gadget/s3c_udc_otg_regs.h index e5115ddef1..57affcb2a3 100644 --- a/drivers/usb/gadget/s3c_udc_otg_regs.h +++ b/drivers/usb/gadget/s3c_udc_otg_regs.h @@ -19,7 +19,7 @@ struct dwc2_usbotg_phy { }; /* Device Logical IN Endpoint-Specific Registers */ -struct s3c_dev_in_endp { +struct dwc2_dev_in_endp { u32 diepctl; u8 res1[4]; u32 diepint; @@ -31,7 +31,7 @@ struct s3c_dev_in_endp { }; /* Device Logical OUT Endpoint-Specific Registers */ -struct s3c_dev_out_endp { +struct dwc2_dev_out_endp { u32 doepctl; u8 res1[4]; u32 doepint; @@ -74,8 +74,8 @@ struct dwc2_usbotg_reg { u32 daint; /* Device All Endpoints Interrupt */ u32 daintmsk; /* Device All Endpoints Interrupt Mask */ u8 res4[224]; - struct s3c_dev_in_endp in_endp[16]; - struct s3c_dev_out_endp out_endp[16]; + struct dwc2_dev_in_endp in_endp[16]; + struct dwc2_dev_out_endp out_endp[16]; u8 res5[768]; struct ep_fifo ep[16]; }; From 627d929826af5a356ab3ad7198f2a13ce516512b Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:48:57 +0100 Subject: [PATCH 07/27] usb: s3c-otg: Rename struct s3c_ep The driver is actually for the Designware DWC2 controller. This patch renames struct s3c_ep to reflect this. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 38 +++++++++--------- drivers/usb/gadget/s3c_udc_otg_priv.h | 6 +-- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 48 +++++++++++------------ 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 99c6a1b1a7..4caa390773 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -96,20 +96,20 @@ static int s3c_dequeue(struct usb_ep *ep, struct usb_request *); static int s3c_fifo_status(struct usb_ep *ep); static void s3c_fifo_flush(struct usb_ep *ep); static void s3c_ep0_read(struct dwc2_udc *dev); -static void s3c_ep0_kick(struct dwc2_udc *dev, struct s3c_ep *ep); +static void s3c_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep); static void s3c_handle_ep0(struct dwc2_udc *dev); static int s3c_ep0_write(struct dwc2_udc *dev); -static int write_fifo_ep0(struct s3c_ep *ep, struct s3c_request *req); -static void done(struct s3c_ep *ep, struct s3c_request *req, int status); +static int write_fifo_ep0(struct dwc2_ep *ep, struct s3c_request *req); +static void done(struct dwc2_ep *ep, struct s3c_request *req, int status); static void stop_activity(struct dwc2_udc *dev, struct usb_gadget_driver *driver); static int udc_enable(struct dwc2_udc *dev); static void udc_set_address(struct dwc2_udc *dev, unsigned char address); static void reconfig_usbd(struct dwc2_udc *dev); static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed); -static void nuke(struct s3c_ep *ep, int status); +static void nuke(struct dwc2_ep *ep, int status); static int s3c_udc_set_halt(struct usb_ep *_ep, int value); -static void s3c_udc_set_nak(struct s3c_ep *ep); +static void s3c_udc_set_nak(struct dwc2_ep *ep); void set_udc_gadget_private_data(void *p) { @@ -191,7 +191,7 @@ static void udc_reinit(struct dwc2_udc *dev) /* basic endpoint records init */ for (i = 0; i < S3C_MAX_ENDPOINTS; i++) { - struct s3c_ep *ep = &dev->ep[i]; + struct dwc2_ep *ep = &dev->ep[i]; if (i != 0) list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list); @@ -305,7 +305,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) /* * done - retire a request; caller blocked irqs */ -static void done(struct s3c_ep *ep, struct s3c_request *req, int status) +static void done(struct dwc2_ep *ep, struct s3c_request *req, int status) { unsigned int stopped = ep->stopped; @@ -356,7 +356,7 @@ static void done(struct s3c_ep *ep, struct s3c_request *req, int status) /* * nuke - dequeue ALL requests */ -static void nuke(struct s3c_ep *ep, int status) +static void nuke(struct dwc2_ep *ep, int status) { struct s3c_request *req; @@ -381,7 +381,7 @@ static void stop_activity(struct dwc2_udc *dev, /* prevent new request submissions, kill any outstanding requests */ for (i = 0; i < S3C_MAX_ENDPOINTS; i++) { - struct s3c_ep *ep = &dev->ep[i]; + struct dwc2_ep *ep = &dev->ep[i]; ep->stopped = 1; nuke(ep, -ESHUTDOWN); } @@ -530,13 +530,13 @@ static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed) static int s3c_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) { - struct s3c_ep *ep; + struct dwc2_ep *ep; struct dwc2_udc *dev; unsigned long flags = 0; debug("%s: %p\n", __func__, _ep); - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); if (!_ep || !desc || ep->desc || _ep->name == ep0name || desc->bDescriptorType != USB_DT_ENDPOINT || ep->bEndpointAddress != desc->bEndpointAddress @@ -595,12 +595,12 @@ static int s3c_ep_enable(struct usb_ep *_ep, */ static int s3c_ep_disable(struct usb_ep *_ep) { - struct s3c_ep *ep; + struct dwc2_ep *ep; unsigned long flags = 0; debug("%s: %p\n", __func__, _ep); - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); if (!_ep || !ep->desc) { debug("%s: %s not enabled\n", __func__, _ep ? ep->ep.name : NULL); @@ -652,13 +652,13 @@ static void s3c_free_request(struct usb_ep *ep, struct usb_request *_req) /* dequeue JUST ONE request */ static int s3c_dequeue(struct usb_ep *_ep, struct usb_request *_req) { - struct s3c_ep *ep; + struct dwc2_ep *ep; struct s3c_request *req; unsigned long flags = 0; debug("%s: %p\n", __func__, _ep); - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); if (!_ep || ep->ep.name == ep0name) return -EINVAL; @@ -686,9 +686,9 @@ static int s3c_dequeue(struct usb_ep *_ep, struct usb_request *_req) static int s3c_fifo_status(struct usb_ep *_ep) { int count = 0; - struct s3c_ep *ep; + struct dwc2_ep *ep; - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); if (!_ep) { debug("%s: bad ep\n", __func__); return -ENODEV; @@ -708,9 +708,9 @@ static int s3c_fifo_status(struct usb_ep *_ep) */ static void s3c_fifo_flush(struct usb_ep *_ep) { - struct s3c_ep *ep; + struct dwc2_ep *ep; - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); if (unlikely(!_ep || (!ep->desc && ep->ep.name != ep0name))) { debug("%s: bad ep\n", __func__); return; diff --git a/drivers/usb/gadget/s3c_udc_otg_priv.h b/drivers/usb/gadget/s3c_udc_otg_priv.h index 567fb4e263..a9b696902c 100644 --- a/drivers/usb/gadget/s3c_udc_otg_priv.h +++ b/drivers/usb/gadget/s3c_udc_otg_priv.h @@ -51,7 +51,7 @@ enum ep_type { ep_control, ep_bulk_in, ep_bulk_out, ep_interrupt }; -struct s3c_ep { +struct dwc2_ep { struct usb_ep ep; struct dwc2_udc *dev; @@ -81,7 +81,7 @@ struct dwc2_udc { struct s3c_plat_otg_data *pdata; int ep0state; - struct s3c_ep ep[S3C_MAX_ENDPOINTS]; + struct dwc2_ep ep[S3C_MAX_ENDPOINTS]; unsigned char usb_address; @@ -97,6 +97,6 @@ extern struct dwc2_udc *the_controller; extern void otg_phy_init(struct dwc2_udc *dev); extern void otg_phy_off(struct dwc2_udc *dev); -extern void s3c_udc_ep_set_stall(struct s3c_ep *ep); +extern void s3c_udc_ep_set_stall(struct dwc2_ep *ep); #endif /* __S3C_UDC_OTG_PRIV__ */ diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index 6695444945..53c9d4e8b2 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -90,7 +90,7 @@ static inline void s3c_ep0_complete_out(void) } -static int setdma_rx(struct s3c_ep *ep, struct s3c_request *req) +static int setdma_rx(struct dwc2_ep *ep, struct s3c_request *req) { u32 *buf, ctrl; u32 length, pktcnt; @@ -128,7 +128,7 @@ static int setdma_rx(struct s3c_ep *ep, struct s3c_request *req) } -int setdma_tx(struct s3c_ep *ep, struct s3c_request *req) +int setdma_tx(struct dwc2_ep *ep, struct s3c_request *req) { u32 *buf, ctrl = 0; u32 length, pktcnt; @@ -188,7 +188,7 @@ int setdma_tx(struct s3c_ep *ep, struct s3c_request *req) static void complete_rx(struct dwc2_udc *dev, u8 ep_num) { - struct s3c_ep *ep = &dev->ep[ep_num]; + struct dwc2_ep *ep = &dev->ep[ep_num]; struct s3c_request *req = NULL; u32 ep_tsr = 0, xfer_size = 0, is_short = 0; @@ -261,7 +261,7 @@ static void complete_rx(struct dwc2_udc *dev, u8 ep_num) static void complete_tx(struct dwc2_udc *dev, u8 ep_num) { - struct s3c_ep *ep = &dev->ep[ep_num]; + struct dwc2_ep *ep = &dev->ep[ep_num]; struct s3c_request *req; u32 ep_tsr = 0, xfer_size = 0, is_short = 0; u32 last; @@ -337,7 +337,7 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) static inline void s3c_udc_check_tx_queue(struct dwc2_udc *dev, u8 ep_num) { - struct s3c_ep *ep = &dev->ep[ep_num]; + struct dwc2_ep *ep = &dev->ep[ep_num]; struct s3c_request *req; debug_cond(DEBUG_IN_EP, @@ -583,7 +583,7 @@ static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags) { struct s3c_request *req; - struct s3c_ep *ep; + struct dwc2_ep *ep; struct dwc2_udc *dev; unsigned long flags = 0; u32 ep_num, gintsts; @@ -596,7 +596,7 @@ static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, return -EINVAL; } - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); if (unlikely(!_ep || (!ep->desc && ep->ep.name != ep0name))) { @@ -680,7 +680,7 @@ static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, /****************************************************************/ /* return: 0 = still running, 1 = completed, negative = errno */ -static int write_fifo_ep0(struct s3c_ep *ep, struct s3c_request *req) +static int write_fifo_ep0(struct dwc2_ep *ep, struct s3c_request *req) { u32 max; unsigned count; @@ -718,7 +718,7 @@ static int write_fifo_ep0(struct s3c_ep *ep, struct s3c_request *req) return 0; } -int s3c_fifo_read(struct s3c_ep *ep, u32 *cp, int max) +int s3c_fifo_read(struct dwc2_ep *ep, u32 *cp, int max) { invalidate_dcache_range((unsigned long)cp, (unsigned long)cp + ROUND(max, CONFIG_SYS_CACHELINE_SIZE)); @@ -751,7 +751,7 @@ static void udc_set_address(struct dwc2_udc *dev, unsigned char address) dev->usb_address = address; } -static inline void s3c_udc_ep0_set_stall(struct s3c_ep *ep) +static inline void s3c_udc_ep0_set_stall(struct dwc2_ep *ep) { struct dwc2_udc *dev; u32 ep_ctrl = 0; @@ -782,7 +782,7 @@ static inline void s3c_udc_ep0_set_stall(struct s3c_ep *ep) static void s3c_ep0_read(struct dwc2_udc *dev) { struct s3c_request *req; - struct s3c_ep *ep = &dev->ep[0]; + struct dwc2_ep *ep = &dev->ep[0]; if (!list_empty(&ep->queue)) { req = list_entry(ep->queue.next, struct s3c_request, queue); @@ -819,7 +819,7 @@ static void s3c_ep0_read(struct dwc2_udc *dev) static int s3c_ep0_write(struct dwc2_udc *dev) { struct s3c_request *req; - struct s3c_ep *ep = &dev->ep[0]; + struct dwc2_ep *ep = &dev->ep[0]; int ret, need_zlp = 0; if (list_empty(&ep->queue)) @@ -920,7 +920,7 @@ int s3c_udc_get_status(struct dwc2_udc *dev, return 0; } -static void s3c_udc_set_nak(struct s3c_ep *ep) +static void s3c_udc_set_nak(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -946,7 +946,7 @@ static void s3c_udc_set_nak(struct s3c_ep *ep) } -void s3c_udc_ep_set_stall(struct s3c_ep *ep) +void s3c_udc_ep_set_stall(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -981,7 +981,7 @@ void s3c_udc_ep_set_stall(struct s3c_ep *ep) return; } -void s3c_udc_ep_clear_stall(struct s3c_ep *ep) +void s3c_udc_ep_clear_stall(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -1031,12 +1031,12 @@ void s3c_udc_ep_clear_stall(struct s3c_ep *ep) static int s3c_udc_set_halt(struct usb_ep *_ep, int value) { - struct s3c_ep *ep; + struct dwc2_ep *ep; struct dwc2_udc *dev; unsigned long flags = 0; u8 ep_num; - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); ep_num = ep_index(ep); if (unlikely(!_ep || !ep->desc || ep_num == EP0_CON || @@ -1076,7 +1076,7 @@ static int s3c_udc_set_halt(struct usb_ep *_ep, int value) return 0; } -void s3c_udc_ep_activate(struct s3c_ep *ep) +void s3c_udc_ep_activate(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0, daintmsk = 0; @@ -1126,10 +1126,10 @@ void s3c_udc_ep_activate(struct s3c_ep *ep) static int s3c_udc_clear_feature(struct usb_ep *_ep) { struct dwc2_udc *dev; - struct s3c_ep *ep; + struct dwc2_ep *ep; u8 ep_num; - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); ep_num = ep_index(ep); dev = ep->dev; @@ -1190,10 +1190,10 @@ static int s3c_udc_clear_feature(struct usb_ep *_ep) static int s3c_udc_set_feature(struct usb_ep *_ep) { struct dwc2_udc *dev; - struct s3c_ep *ep; + struct dwc2_ep *ep; u8 ep_num; - ep = container_of(_ep, struct s3c_ep, ep); + ep = container_of(_ep, struct dwc2_ep, ep); ep_num = ep_index(ep); dev = ep->dev; @@ -1264,7 +1264,7 @@ static int s3c_udc_set_feature(struct usb_ep *_ep) */ void s3c_ep0_setup(struct dwc2_udc *dev) { - struct s3c_ep *ep = &dev->ep[0]; + struct dwc2_ep *ep = &dev->ep[0]; int i; u8 ep_num; @@ -1465,7 +1465,7 @@ static void s3c_handle_ep0(struct dwc2_udc *dev) } } -static void s3c_ep0_kick(struct dwc2_udc *dev, struct s3c_ep *ep) +static void s3c_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep) { debug_cond(DEBUG_EP0 != 0, "%s: ep_is_in = %d\n", __func__, ep_is_in(ep)); From c056c52bbd8125d1745cc73505b55843b6a28f78 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:51:07 +0100 Subject: [PATCH 08/27] usb: s3c-otg: Rename struct s3c_request The driver is actually for the Designware DWC2 controller. This patch renames struct s3c_request to reflect this. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 18 ++++++------ drivers/usb/gadget/s3c_udc_otg_priv.h | 2 +- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 36 +++++++++++------------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 4caa390773..22b9518cbd 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -99,8 +99,8 @@ static void s3c_ep0_read(struct dwc2_udc *dev); static void s3c_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep); static void s3c_handle_ep0(struct dwc2_udc *dev); static int s3c_ep0_write(struct dwc2_udc *dev); -static int write_fifo_ep0(struct dwc2_ep *ep, struct s3c_request *req); -static void done(struct dwc2_ep *ep, struct s3c_request *req, int status); +static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req); +static void done(struct dwc2_ep *ep, struct dwc2_request *req, int status); static void stop_activity(struct dwc2_udc *dev, struct usb_gadget_driver *driver); static int udc_enable(struct dwc2_udc *dev); @@ -305,7 +305,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) /* * done - retire a request; caller blocked irqs */ -static void done(struct dwc2_ep *ep, struct s3c_request *req, int status) +static void done(struct dwc2_ep *ep, struct dwc2_request *req, int status) { unsigned int stopped = ep->stopped; @@ -358,13 +358,13 @@ static void done(struct dwc2_ep *ep, struct s3c_request *req, int status) */ static void nuke(struct dwc2_ep *ep, int status) { - struct s3c_request *req; + struct dwc2_request *req; debug("%s: %s %p\n", __func__, ep->ep.name, ep); /* called with irqs blocked */ while (!list_empty(&ep->queue)) { - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); done(ep, req, status); } } @@ -624,7 +624,7 @@ static int s3c_ep_disable(struct usb_ep *_ep) static struct usb_request *s3c_alloc_request(struct usb_ep *ep, gfp_t gfp_flags) { - struct s3c_request *req; + struct dwc2_request *req; debug("%s: %s %p\n", __func__, ep->name, ep); @@ -640,11 +640,11 @@ static struct usb_request *s3c_alloc_request(struct usb_ep *ep, static void s3c_free_request(struct usb_ep *ep, struct usb_request *_req) { - struct s3c_request *req; + struct dwc2_request *req; debug("%s: %p\n", __func__, ep); - req = container_of(_req, struct s3c_request, req); + req = container_of(_req, struct dwc2_request, req); WARN_ON(!list_empty(&req->queue)); kfree(req); } @@ -653,7 +653,7 @@ static void s3c_free_request(struct usb_ep *ep, struct usb_request *_req) static int s3c_dequeue(struct usb_ep *_ep, struct usb_request *_req) { struct dwc2_ep *ep; - struct s3c_request *req; + struct dwc2_request *req; unsigned long flags = 0; debug("%s: %p\n", __func__, _ep); diff --git a/drivers/usb/gadget/s3c_udc_otg_priv.h b/drivers/usb/gadget/s3c_udc_otg_priv.h index a9b696902c..68bac699cf 100644 --- a/drivers/usb/gadget/s3c_udc_otg_priv.h +++ b/drivers/usb/gadget/s3c_udc_otg_priv.h @@ -69,7 +69,7 @@ struct dwc2_ep { int fifo_num; }; -struct s3c_request { +struct dwc2_request { struct usb_request req; struct list_head queue; }; diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index 53c9d4e8b2..0288d44aa0 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -90,7 +90,7 @@ static inline void s3c_ep0_complete_out(void) } -static int setdma_rx(struct dwc2_ep *ep, struct s3c_request *req) +static int setdma_rx(struct dwc2_ep *ep, struct dwc2_request *req) { u32 *buf, ctrl; u32 length, pktcnt; @@ -128,7 +128,7 @@ static int setdma_rx(struct dwc2_ep *ep, struct s3c_request *req) } -int setdma_tx(struct dwc2_ep *ep, struct s3c_request *req) +int setdma_tx(struct dwc2_ep *ep, struct dwc2_request *req) { u32 *buf, ctrl = 0; u32 length, pktcnt; @@ -189,7 +189,7 @@ int setdma_tx(struct dwc2_ep *ep, struct s3c_request *req) static void complete_rx(struct dwc2_udc *dev, u8 ep_num) { struct dwc2_ep *ep = &dev->ep[ep_num]; - struct s3c_request *req = NULL; + struct dwc2_request *req = NULL; u32 ep_tsr = 0, xfer_size = 0, is_short = 0; if (list_empty(&ep->queue)) { @@ -200,7 +200,7 @@ static void complete_rx(struct dwc2_udc *dev, u8 ep_num) } - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); ep_tsr = readl(®->out_endp[ep_num].doeptsiz); if (ep_num == EP0_CON) @@ -248,7 +248,7 @@ static void complete_rx(struct dwc2_udc *dev, u8 ep_num) if (!list_empty(&ep->queue)) { req = list_entry(ep->queue.next, - struct s3c_request, queue); + struct dwc2_request, queue); debug_cond(DEBUG_OUT_EP != 0, "%s: Next Rx request start...\n", __func__); @@ -262,7 +262,7 @@ static void complete_rx(struct dwc2_udc *dev, u8 ep_num) static void complete_tx(struct dwc2_udc *dev, u8 ep_num) { struct dwc2_ep *ep = &dev->ep[ep_num]; - struct s3c_request *req; + struct dwc2_request *req; u32 ep_tsr = 0, xfer_size = 0, is_short = 0; u32 last; @@ -280,7 +280,7 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) } - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); ep_tsr = readl(®->in_endp[ep_num].dieptsiz); @@ -328,7 +328,7 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) done(ep, req, 0); if (!list_empty(&ep->queue)) { - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); debug_cond(DEBUG_IN_EP, "%s: Next Tx request start...\n", __func__); setdma_tx(ep, req); @@ -338,13 +338,13 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) static inline void s3c_udc_check_tx_queue(struct dwc2_udc *dev, u8 ep_num) { struct dwc2_ep *ep = &dev->ep[ep_num]; - struct s3c_request *req; + struct dwc2_request *req; debug_cond(DEBUG_IN_EP, "%s: Check queue, ep_num = %d\n", __func__, ep_num); if (!list_empty(&ep->queue)) { - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); debug_cond(DEBUG_IN_EP, "%s: Next Tx request(0x%p) start...\n", __func__, req); @@ -582,13 +582,13 @@ static int s3c_udc_irq(int irq, void *_dev) static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags) { - struct s3c_request *req; + struct dwc2_request *req; struct dwc2_ep *ep; struct dwc2_udc *dev; unsigned long flags = 0; u32 ep_num, gintsts; - req = container_of(_req, struct s3c_request, req); + req = container_of(_req, struct dwc2_request, req); if (unlikely(!_req || !_req->complete || !_req->buf || !list_empty(&req->queue))) { @@ -680,7 +680,7 @@ static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, /****************************************************************/ /* return: 0 = still running, 1 = completed, negative = errno */ -static int write_fifo_ep0(struct dwc2_ep *ep, struct s3c_request *req) +static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req) { u32 max; unsigned count; @@ -781,11 +781,11 @@ static inline void s3c_udc_ep0_set_stall(struct dwc2_ep *ep) static void s3c_ep0_read(struct dwc2_udc *dev) { - struct s3c_request *req; + struct dwc2_request *req; struct dwc2_ep *ep = &dev->ep[0]; if (!list_empty(&ep->queue)) { - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); } else { debug("%s: ---> BUG\n", __func__); @@ -818,14 +818,14 @@ static void s3c_ep0_read(struct dwc2_udc *dev) */ static int s3c_ep0_write(struct dwc2_udc *dev) { - struct s3c_request *req; + struct dwc2_request *req; struct dwc2_ep *ep = &dev->ep[0]; int ret, need_zlp = 0; if (list_empty(&ep->queue)) req = 0; else - req = list_entry(ep->queue.next, struct s3c_request, queue); + req = list_entry(ep->queue.next, struct dwc2_request, queue); if (!req) { debug_cond(DEBUG_EP0 != 0, "%s: NULL REQ\n", __func__); @@ -1050,7 +1050,7 @@ static int s3c_udc_set_halt(struct usb_ep *_ep, int value) if (value && ep_is_in(ep) && !list_empty(&ep->queue)) { debug("%s: %s queue not empty, req = %p\n", __func__, ep->ep.name, - list_entry(ep->queue.next, struct s3c_request, queue)); + list_entry(ep->queue.next, struct dwc2_request, queue)); return -EAGAIN; } From 2f6560a14669c260665ae78c316326359310f923 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:52:03 +0100 Subject: [PATCH 09/27] usb: s3c-otg: Staticize s3c_udc_ep_set_stall This function is local to s3c_udc_otg_xfer_dma.c , staticize it. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg_priv.h | 2 -- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg_priv.h b/drivers/usb/gadget/s3c_udc_otg_priv.h index 68bac699cf..cc10704046 100644 --- a/drivers/usb/gadget/s3c_udc_otg_priv.h +++ b/drivers/usb/gadget/s3c_udc_otg_priv.h @@ -97,6 +97,4 @@ extern struct dwc2_udc *the_controller; extern void otg_phy_init(struct dwc2_udc *dev); extern void otg_phy_off(struct dwc2_udc *dev); -extern void s3c_udc_ep_set_stall(struct dwc2_ep *ep); - #endif /* __S3C_UDC_OTG_PRIV__ */ diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index 0288d44aa0..1390239e53 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -946,7 +946,7 @@ static void s3c_udc_set_nak(struct dwc2_ep *ep) } -void s3c_udc_ep_set_stall(struct dwc2_ep *ep) +static void s3c_udc_ep_set_stall(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; From de578e22d4f70e383eb4a978f6c69e36b9d0d334 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:56:30 +0100 Subject: [PATCH 10/27] usb: s3c-otg: Staticize functions in s3c_udc_otg_xfer_dma.c Just staticize the functions, they are not used outside of the file. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index 1390239e53..a8237d4ca3 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -41,7 +41,7 @@ static inline void s3c_udc_ep0_zlp(struct dwc2_udc *dev) dev->ep0state = WAIT_FOR_IN_COMPLETE; } -void s3c_udc_pre_setup(void) +static void s3c_udc_pre_setup(void) { u32 ep_ctrl; @@ -128,7 +128,7 @@ static int setdma_rx(struct dwc2_ep *ep, struct dwc2_request *req) } -int setdma_tx(struct dwc2_ep *ep, struct dwc2_request *req) +static int setdma_tx(struct dwc2_ep *ep, struct dwc2_request *req) { u32 *buf, ctrl = 0; u32 length, pktcnt; @@ -718,7 +718,7 @@ static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req) return 0; } -int s3c_fifo_read(struct dwc2_ep *ep, u32 *cp, int max) +static int s3c_fifo_read(struct dwc2_ep *ep, u32 *cp, int max) { invalidate_dcache_range((unsigned long)cp, (unsigned long)cp + ROUND(max, CONFIG_SYS_CACHELINE_SIZE)); @@ -859,7 +859,7 @@ static int s3c_ep0_write(struct dwc2_udc *dev) return 1; } -int s3c_udc_get_status(struct dwc2_udc *dev, +static int s3c_udc_get_status(struct dwc2_udc *dev, struct usb_ctrlrequest *crq) { u8 ep_num = crq->wIndex & 0x7F; @@ -981,7 +981,7 @@ static void s3c_udc_ep_set_stall(struct dwc2_ep *ep) return; } -void s3c_udc_ep_clear_stall(struct dwc2_ep *ep) +static void s3c_udc_ep_clear_stall(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -1076,7 +1076,7 @@ static int s3c_udc_set_halt(struct usb_ep *_ep, int value) return 0; } -void s3c_udc_ep_activate(struct dwc2_ep *ep) +static void s3c_udc_ep_activate(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0, daintmsk = 0; @@ -1262,7 +1262,7 @@ static int s3c_udc_set_feature(struct usb_ep *_ep) /* * WAIT_FOR_SETUP (OUT_PKT_RDY) */ -void s3c_ep0_setup(struct dwc2_udc *dev) +static void s3c_ep0_setup(struct dwc2_udc *dev) { struct dwc2_ep *ep = &dev->ep[0]; int i; From 28b9774808faf220702c238796941e15d097049c Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 01:59:12 +0100 Subject: [PATCH 11/27] usb: s3c-otg: Rename s3c_ep0_*() functions The driver is actually for the Designware DWC2 controller. This patch renames the s3c_ep0_*() functions to reflect this. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 6 +++--- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 22b9518cbd..a5091dcec6 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -95,10 +95,10 @@ static int s3c_queue(struct usb_ep *ep, struct usb_request *, gfp_t gfp_flags); static int s3c_dequeue(struct usb_ep *ep, struct usb_request *); static int s3c_fifo_status(struct usb_ep *ep); static void s3c_fifo_flush(struct usb_ep *ep); -static void s3c_ep0_read(struct dwc2_udc *dev); -static void s3c_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep); +static void dwc2_ep0_read(struct dwc2_udc *dev); +static void dwc2_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep); static void s3c_handle_ep0(struct dwc2_udc *dev); -static int s3c_ep0_write(struct dwc2_udc *dev); +static int dwc2_ep0_write(struct dwc2_udc *dev); static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req); static void done(struct dwc2_ep *ep, struct dwc2_request *req, int status); static void stop_activity(struct dwc2_udc *dev, diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index a8237d4ca3..aa506395f4 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -62,7 +62,7 @@ static void s3c_udc_pre_setup(void) } -static inline void s3c_ep0_complete_out(void) +static inline void dwc2_ep0_complete_out(void) { u32 ep_ctrl; @@ -268,7 +268,7 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) if (dev->ep0state == WAIT_FOR_NULL_COMPLETE) { dev->ep0state = WAIT_FOR_OUT_COMPLETE; - s3c_ep0_complete_out(); + dwc2_ep0_complete_out(); return; } @@ -315,7 +315,7 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) __func__, ep_num); done(ep, req, 0); dev->ep0state = WAIT_FOR_OUT_COMPLETE; - s3c_ep0_complete_out(); + dwc2_ep0_complete_out(); } else { debug_cond(DEBUG_IN_EP, "%s: ep_num = %d, invalid ep state\n", @@ -646,7 +646,7 @@ static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, if (ep_num == 0) { /* EP0 */ list_add_tail(&req->queue, &ep->queue); - s3c_ep0_kick(dev, ep); + dwc2_ep0_kick(dev, ep); req = 0; } else if (ep_is_in(ep)) { @@ -779,7 +779,7 @@ static inline void s3c_udc_ep0_set_stall(struct dwc2_ep *ep) s3c_udc_pre_setup(); } -static void s3c_ep0_read(struct dwc2_udc *dev) +static void dwc2_ep0_read(struct dwc2_udc *dev) { struct dwc2_request *req; struct dwc2_ep *ep = &dev->ep[0]; @@ -816,7 +816,7 @@ static void s3c_ep0_read(struct dwc2_udc *dev) /* * DATA_STATE_XMIT */ -static int s3c_ep0_write(struct dwc2_udc *dev) +static int dwc2_ep0_write(struct dwc2_udc *dev) { struct dwc2_request *req; struct dwc2_ep *ep = &dev->ep[0]; @@ -1262,7 +1262,7 @@ static int s3c_udc_set_feature(struct usb_ep *_ep) /* * WAIT_FOR_SETUP (OUT_PKT_RDY) */ -static void s3c_ep0_setup(struct dwc2_udc *dev) +static void dwc2_ep0_setup(struct dwc2_udc *dev) { struct dwc2_ep *ep = &dev->ep[0]; int i; @@ -1456,7 +1456,7 @@ static void s3c_handle_ep0(struct dwc2_udc *dev) if (dev->ep0state == WAIT_FOR_SETUP) { debug_cond(DEBUG_OUT_EP != 0, "%s: WAIT_FOR_SETUP\n", __func__); - s3c_ep0_setup(dev); + dwc2_ep0_setup(dev); } else { debug_cond(DEBUG_OUT_EP != 0, @@ -1465,16 +1465,16 @@ static void s3c_handle_ep0(struct dwc2_udc *dev) } } -static void s3c_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep) +static void dwc2_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep) { debug_cond(DEBUG_EP0 != 0, "%s: ep_is_in = %d\n", __func__, ep_is_in(ep)); if (ep_is_in(ep)) { dev->ep0state = DATA_STATE_XMIT; - s3c_ep0_write(dev); + dwc2_ep0_write(dev); } else { dev->ep0state = DATA_STATE_RECV; - s3c_ep0_read(dev); + dwc2_ep0_read(dev); } } From ae1f2f0c4a04f448d65fa18e913b4421c374e622 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:13:42 +0100 Subject: [PATCH 12/27] usb: s3c-otg: Rename s3c_ep_*() functions The driver is actually for the Designware DWC2 controller. This patch renames the s3c_ep_*() functions to reflect this. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index a5091dcec6..0b75f26d77 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -84,9 +84,9 @@ static dma_addr_t usb_ctrl_dma_addr; /* Local declarations. */ -static int s3c_ep_enable(struct usb_ep *ep, +static int dwc2_ep_enable(struct usb_ep *ep, const struct usb_endpoint_descriptor *); -static int s3c_ep_disable(struct usb_ep *ep); +static int dwc2_ep_disable(struct usb_ep *ep); static struct usb_request *s3c_alloc_request(struct usb_ep *ep, gfp_t gfp_flags); static void s3c_free_request(struct usb_ep *ep, struct usb_request *); @@ -124,9 +124,9 @@ void *get_udc_gadget_private_data(struct usb_gadget *gadget) return gadget->dev.device_data; } -static struct usb_ep_ops s3c_ep_ops = { - .enable = s3c_ep_enable, - .disable = s3c_ep_disable, +static struct usb_ep_ops dwc2_ep_ops = { + .enable = dwc2_ep_enable, + .disable = dwc2_ep_disable, .alloc_request = s3c_alloc_request, .free_request = s3c_free_request, @@ -527,7 +527,7 @@ static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed) writel(ep_ctrl|(0<<0), ®->out_endp[EP0_CON].doepctl); } -static int s3c_ep_enable(struct usb_ep *_ep, +static int dwc2_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) { struct dwc2_ep *ep; @@ -593,7 +593,7 @@ static int s3c_ep_enable(struct usb_ep *_ep, /* * Disable EP */ -static int s3c_ep_disable(struct usb_ep *_ep) +static int dwc2_ep_disable(struct usb_ep *_ep) { struct dwc2_ep *ep; unsigned long flags = 0; @@ -735,7 +735,7 @@ static struct dwc2_udc memory = { .ep[0] = { .ep = { .name = ep0name, - .ops = &s3c_ep_ops, + .ops = &dwc2_ep_ops, .maxpacket = EP0_FIFO_SIZE, }, .dev = &memory, @@ -750,7 +750,7 @@ static struct dwc2_udc memory = { .ep[1] = { .ep = { .name = "ep1in-bulk", - .ops = &s3c_ep_ops, + .ops = &dwc2_ep_ops, .maxpacket = EP_FIFO_SIZE, }, .dev = &memory, @@ -765,7 +765,7 @@ static struct dwc2_udc memory = { .ep[2] = { .ep = { .name = "ep2out-bulk", - .ops = &s3c_ep_ops, + .ops = &dwc2_ep_ops, .maxpacket = EP_FIFO_SIZE, }, .dev = &memory, @@ -780,7 +780,7 @@ static struct dwc2_udc memory = { .ep[3] = { .ep = { .name = "ep3in-int", - .ops = &s3c_ep_ops, + .ops = &dwc2_ep_ops, .maxpacket = EP_FIFO_SIZE, }, .dev = &memory, From f52dd802cc385d669a2403ecee907f9c947e7f80 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:03:45 +0100 Subject: [PATCH 13/27] usb: s3c-otg: Rename s3c_udc_*() functions The driver is actually for the Designware DWC2 controller. This patch renames the s3c_ep_*() functions to reflect this. The function s3c_udc_probe() is a special case and is not renamed by this patch yet. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 18 +++--- drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 76 +++++++++++------------ 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 0b75f26d77..4cf82e246c 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -108,8 +108,8 @@ static void udc_set_address(struct dwc2_udc *dev, unsigned char address); static void reconfig_usbd(struct dwc2_udc *dev); static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed); static void nuke(struct dwc2_ep *ep, int status); -static int s3c_udc_set_halt(struct usb_ep *_ep, int value); -static void s3c_udc_set_nak(struct dwc2_ep *ep); +static int dwc2_udc_set_halt(struct usb_ep *_ep, int value); +static void dwc2_udc_set_nak(struct dwc2_ep *ep); void set_udc_gadget_private_data(void *p) { @@ -134,7 +134,7 @@ static struct usb_ep_ops dwc2_ep_ops = { .queue = s3c_queue, .dequeue = s3c_dequeue, - .set_halt = s3c_udc_set_halt, + .set_halt = dwc2_udc_set_halt, .fifo_status = s3c_fifo_status, .fifo_flush = s3c_fifo_flush, }; @@ -578,11 +578,11 @@ static int dwc2_ep_enable(struct usb_ep *_ep, ep->ep.maxpacket = le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)); /* Reset halt state */ - s3c_udc_set_nak(ep); - s3c_udc_set_halt(_ep, 0); + dwc2_udc_set_nak(ep); + dwc2_udc_set_halt(_ep, 0); spin_lock_irqsave(&ep->dev->lock, flags); - s3c_udc_ep_activate(ep); + dwc2_udc_ep_activate(ep); spin_unlock_irqrestore(&ep->dev->lock, flags); debug("%s: enabled %s, stopped = %d, maxpacket = %d\n", @@ -719,14 +719,14 @@ static void s3c_fifo_flush(struct usb_ep *_ep) debug("%s: %d\n", __func__, ep_index(ep)); } -static const struct usb_gadget_ops s3c_udc_ops = { +static const struct usb_gadget_ops dwc2_udc_ops = { /* current versions must always be self-powered */ }; static struct dwc2_udc memory = { .usb_address = 0, .gadget = { - .ops = &s3c_udc_ops, + .ops = &dwc2_udc_ops, .ep0 = &memory.ep[0].ep, .name = driver_name, }, @@ -840,6 +840,6 @@ int usb_gadget_handle_interrupts(int index) u32 gintmsk = readl(®->gintmsk); if (intr_status & gintmsk) - return s3c_udc_irq(1, (void *)the_controller); + return dwc2_udc_irq(1, (void *)the_controller); return 0; } diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index aa506395f4..e93d6027e8 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -25,7 +25,7 @@ int clear_feature_flag; #define GET_MAX_LUN_REQUEST 0xFE #define BOT_RESET_REQUEST 0xFF -static inline void s3c_udc_ep0_zlp(struct dwc2_udc *dev) +static inline void dwc2_udc_ep0_zlp(struct dwc2_udc *dev) { u32 ep_ctrl; @@ -41,7 +41,7 @@ static inline void s3c_udc_ep0_zlp(struct dwc2_udc *dev) dev->ep0state = WAIT_FOR_IN_COMPLETE; } -static void s3c_udc_pre_setup(void) +static void dwc2_udc_pre_setup(void) { u32 ep_ctrl; @@ -240,7 +240,7 @@ static void complete_rx(struct dwc2_udc *dev, u8 ep_num) if (is_short || req->req.actual == req->req.length) { if (ep_num == EP0_CON && dev->ep0state == DATA_STATE_RECV) { debug_cond(DEBUG_OUT_EP != 0, " => Send ZLP\n"); - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); /* packet will be completed in complete_tx() */ dev->ep0state = WAIT_FOR_IN_COMPLETE; } else { @@ -335,7 +335,7 @@ static void complete_tx(struct dwc2_udc *dev, u8 ep_num) } } -static inline void s3c_udc_check_tx_queue(struct dwc2_udc *dev, u8 ep_num) +static inline void dwc2_udc_check_tx_queue(struct dwc2_udc *dev, u8 ep_num) { struct dwc2_ep *ep = &dev->ep[ep_num]; struct dwc2_request *req; @@ -392,12 +392,12 @@ static void process_ep_in_intr(struct dwc2_udc *dev) dev->ep0state = WAIT_FOR_SETUP; if (dev->ep0state == WAIT_FOR_SETUP) - s3c_udc_pre_setup(); + dwc2_udc_pre_setup(); /* continue transfer after set_clear_halt for DMA mode */ if (clear_feature_flag == 1) { - s3c_udc_check_tx_queue(dev, + dwc2_udc_check_tx_queue(dev, clear_feature_num); clear_feature_flag = 0; } @@ -438,7 +438,7 @@ static void process_ep_out_intr(struct dwc2_udc *dev) complete_rx(dev, ep_num); else { dev->ep0state = WAIT_FOR_SETUP; - s3c_udc_pre_setup(); + dwc2_udc_pre_setup(); } } @@ -461,7 +461,7 @@ static void process_ep_out_intr(struct dwc2_udc *dev) /* * usb client interrupt handler. */ -static int s3c_udc_irq(int irq, void *_dev) +static int dwc2_udc_irq(int irq, void *_dev) { struct dwc2_udc *dev = _dev; u32 intr_status; @@ -554,7 +554,7 @@ static int s3c_udc_irq(int irq, void *_dev) reconfig_usbd(dev); dev->ep0state = WAIT_FOR_SETUP; reset_available = 0; - s3c_udc_pre_setup(); + dwc2_udc_pre_setup(); } else reset_available = 1; @@ -742,7 +742,7 @@ static void udc_set_address(struct dwc2_udc *dev, unsigned char address) u32 ctrl = readl(®->dcfg); writel(DEVICE_ADDRESS(address) | ctrl, ®->dcfg); - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); debug_cond(DEBUG_EP0 != 0, "%s: USB OTG 2.0 Device address=%d, DCFG=0x%x\n", @@ -751,7 +751,7 @@ static void udc_set_address(struct dwc2_udc *dev, unsigned char address) dev->usb_address = address; } -static inline void s3c_udc_ep0_set_stall(struct dwc2_ep *ep) +static inline void dwc2_udc_ep0_set_stall(struct dwc2_ep *ep) { struct dwc2_udc *dev; u32 ep_ctrl = 0; @@ -776,7 +776,7 @@ static inline void s3c_udc_ep0_set_stall(struct dwc2_ep *ep) */ dev->ep0state = WAIT_FOR_SETUP; - s3c_udc_pre_setup(); + dwc2_udc_pre_setup(); } static void dwc2_ep0_read(struct dwc2_udc *dev) @@ -802,7 +802,7 @@ static void dwc2_ep0_read(struct dwc2_udc *dev) * or Bulk-Only mass storge reset */ ep->len = 0; - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); debug_cond(DEBUG_EP0 != 0, "%s: req.length = 0, bRequest = %d\n", @@ -859,7 +859,7 @@ static int dwc2_ep0_write(struct dwc2_udc *dev) return 1; } -static int s3c_udc_get_status(struct dwc2_udc *dev, +static int dwc2_udc_get_status(struct dwc2_udc *dev, struct usb_ctrlrequest *crq) { u8 ep_num = crq->wIndex & 0x7F; @@ -920,7 +920,7 @@ static int s3c_udc_get_status(struct dwc2_udc *dev, return 0; } -static void s3c_udc_set_nak(struct dwc2_ep *ep) +static void dwc2_udc_set_nak(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -946,7 +946,7 @@ static void s3c_udc_set_nak(struct dwc2_ep *ep) } -static void s3c_udc_ep_set_stall(struct dwc2_ep *ep) +static void dwc2_udc_ep_set_stall(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -981,7 +981,7 @@ static void s3c_udc_ep_set_stall(struct dwc2_ep *ep) return; } -static void s3c_udc_ep_clear_stall(struct dwc2_ep *ep) +static void dwc2_udc_ep_clear_stall(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0; @@ -1029,7 +1029,7 @@ static void s3c_udc_ep_clear_stall(struct dwc2_ep *ep) return; } -static int s3c_udc_set_halt(struct usb_ep *_ep, int value) +static int dwc2_udc_set_halt(struct usb_ep *_ep, int value) { struct dwc2_ep *ep; struct dwc2_udc *dev; @@ -1062,13 +1062,13 @@ static int s3c_udc_set_halt(struct usb_ep *_ep, int value) if (value == 0) { ep->stopped = 0; - s3c_udc_ep_clear_stall(ep); + dwc2_udc_ep_clear_stall(ep); } else { if (ep_num == 0) dev->ep0state = WAIT_FOR_SETUP; ep->stopped = 1; - s3c_udc_ep_set_stall(ep); + dwc2_udc_ep_set_stall(ep); } spin_unlock_irqrestore(&dev->lock, flags); @@ -1076,7 +1076,7 @@ static int s3c_udc_set_halt(struct usb_ep *_ep, int value) return 0; } -static void s3c_udc_ep_activate(struct dwc2_ep *ep) +static void dwc2_udc_ep_activate(struct dwc2_ep *ep) { u8 ep_num; u32 ep_ctrl = 0, daintmsk = 0; @@ -1123,7 +1123,7 @@ static void s3c_udc_ep_activate(struct dwc2_ep *ep) } -static int s3c_udc_clear_feature(struct usb_ep *_ep) +static int dwc2_udc_clear_feature(struct usb_ep *_ep) { struct dwc2_udc *dev; struct dwc2_ep *ep; @@ -1158,7 +1158,7 @@ static int s3c_udc_clear_feature(struct usb_ep *_ep) break; } - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); break; case USB_RECIP_ENDPOINT: @@ -1168,14 +1168,14 @@ static int s3c_udc_clear_feature(struct usb_ep *_ep) if (usb_ctrl->wValue == USB_ENDPOINT_HALT) { if (ep_num == 0) { - s3c_udc_ep0_set_stall(ep); + dwc2_udc_ep0_set_stall(ep); return 0; } - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); - s3c_udc_ep_clear_stall(ep); - s3c_udc_ep_activate(ep); + dwc2_udc_ep_clear_stall(ep); + dwc2_udc_ep_activate(ep); ep->stopped = 0; clear_feature_num = ep_num; @@ -1187,7 +1187,7 @@ static int s3c_udc_clear_feature(struct usb_ep *_ep) return 0; } -static int s3c_udc_set_feature(struct usb_ep *_ep) +static int dwc2_udc_set_feature(struct usb_ep *_ep) { struct dwc2_udc *dev; struct dwc2_ep *ep; @@ -1232,7 +1232,7 @@ static int s3c_udc_set_feature(struct usb_ep *_ep) break; } - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); return 0; case USB_RECIP_INTERFACE: @@ -1245,14 +1245,14 @@ static int s3c_udc_set_feature(struct usb_ep *_ep) "\tSET_FEATURE: USB_RECIP_ENDPOINT\n"); if (usb_ctrl->wValue == USB_ENDPOINT_HALT) { if (ep_num == 0) { - s3c_udc_ep0_set_stall(ep); + dwc2_udc_ep0_set_stall(ep); return 0; } ep->stopped = 1; - s3c_udc_ep_set_stall(ep); + dwc2_udc_ep_set_stall(ep); } - s3c_udc_ep0_zlp(dev); + dwc2_udc_ep0_zlp(dev); return 0; } @@ -1306,7 +1306,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) "wLength = %d, setup returned\n", usb_ctrl->wLength); - s3c_udc_ep0_set_stall(ep); + dwc2_udc_ep0_set_stall(ep); dev->ep0state = WAIT_FOR_SETUP; return; @@ -1317,7 +1317,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) "%s:BOT Rest:invalid wLength =%d, setup returned\n", __func__, usb_ctrl->wLength); - s3c_udc_ep0_set_stall(ep); + dwc2_udc_ep0_set_stall(ep); dev->ep0state = WAIT_FOR_SETUP; return; @@ -1384,7 +1384,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) break; case USB_REQ_GET_STATUS: - if (!s3c_udc_get_status(dev, usb_ctrl)) + if (!dwc2_udc_get_status(dev, usb_ctrl)) return; break; @@ -1392,7 +1392,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) case USB_REQ_CLEAR_FEATURE: ep_num = usb_ctrl->wIndex & 0x7f; - if (!s3c_udc_clear_feature(&dev->ep[ep_num].ep)) + if (!dwc2_udc_clear_feature(&dev->ep[ep_num].ep)) return; break; @@ -1400,7 +1400,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) case USB_REQ_SET_FEATURE: ep_num = usb_ctrl->wIndex & 0x7f; - if (!s3c_udc_set_feature(&dev->ep[ep_num].ep)) + if (!dwc2_udc_set_feature(&dev->ep[ep_num].ep)) return; break; @@ -1427,7 +1427,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) if (i < 0) { /* setup processing failed, force stall */ - s3c_udc_ep0_set_stall(ep); + dwc2_udc_ep0_set_stall(ep); dev->ep0state = WAIT_FOR_SETUP; debug_cond(DEBUG_SETUP != 0, From 155e740f73b75c34a5f97f57a2d25d069c0f9375 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:17:40 +0100 Subject: [PATCH 14/27] usb: s3c-otg: Rename remaining local s3c_*() functions The driver is actually for the Designware DWC2 controller. This patch renames the remaining local s3c_*() functions to reflect this. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 36 +++++++++++------------ drivers/usb/gadget/s3c_udc_otg_xfer_dma.c | 10 +++---- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 4cf82e246c..a960eff954 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -87,17 +87,17 @@ static dma_addr_t usb_ctrl_dma_addr; static int dwc2_ep_enable(struct usb_ep *ep, const struct usb_endpoint_descriptor *); static int dwc2_ep_disable(struct usb_ep *ep); -static struct usb_request *s3c_alloc_request(struct usb_ep *ep, +static struct usb_request *dwc2_alloc_request(struct usb_ep *ep, gfp_t gfp_flags); -static void s3c_free_request(struct usb_ep *ep, struct usb_request *); +static void dwc2_free_request(struct usb_ep *ep, struct usb_request *); -static int s3c_queue(struct usb_ep *ep, struct usb_request *, gfp_t gfp_flags); -static int s3c_dequeue(struct usb_ep *ep, struct usb_request *); -static int s3c_fifo_status(struct usb_ep *ep); -static void s3c_fifo_flush(struct usb_ep *ep); +static int dwc2_queue(struct usb_ep *ep, struct usb_request *, gfp_t gfp_flags); +static int dwc2_dequeue(struct usb_ep *ep, struct usb_request *); +static int dwc2_fifo_status(struct usb_ep *ep); +static void dwc2_fifo_flush(struct usb_ep *ep); static void dwc2_ep0_read(struct dwc2_udc *dev); static void dwc2_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep); -static void s3c_handle_ep0(struct dwc2_udc *dev); +static void dwc2_handle_ep0(struct dwc2_udc *dev); static int dwc2_ep0_write(struct dwc2_udc *dev); static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req); static void done(struct dwc2_ep *ep, struct dwc2_request *req, int status); @@ -128,15 +128,15 @@ static struct usb_ep_ops dwc2_ep_ops = { .enable = dwc2_ep_enable, .disable = dwc2_ep_disable, - .alloc_request = s3c_alloc_request, - .free_request = s3c_free_request, + .alloc_request = dwc2_alloc_request, + .free_request = dwc2_free_request, - .queue = s3c_queue, - .dequeue = s3c_dequeue, + .queue = dwc2_queue, + .dequeue = dwc2_dequeue, .set_halt = dwc2_udc_set_halt, - .fifo_status = s3c_fifo_status, - .fifo_flush = s3c_fifo_flush, + .fifo_status = dwc2_fifo_status, + .fifo_flush = dwc2_fifo_flush, }; #define create_proc_files() do {} while (0) @@ -621,7 +621,7 @@ static int dwc2_ep_disable(struct usb_ep *_ep) return 0; } -static struct usb_request *s3c_alloc_request(struct usb_ep *ep, +static struct usb_request *dwc2_alloc_request(struct usb_ep *ep, gfp_t gfp_flags) { struct dwc2_request *req; @@ -638,7 +638,7 @@ static struct usb_request *s3c_alloc_request(struct usb_ep *ep, return &req->req; } -static void s3c_free_request(struct usb_ep *ep, struct usb_request *_req) +static void dwc2_free_request(struct usb_ep *ep, struct usb_request *_req) { struct dwc2_request *req; @@ -650,7 +650,7 @@ static void s3c_free_request(struct usb_ep *ep, struct usb_request *_req) } /* dequeue JUST ONE request */ -static int s3c_dequeue(struct usb_ep *_ep, struct usb_request *_req) +static int dwc2_dequeue(struct usb_ep *_ep, struct usb_request *_req) { struct dwc2_ep *ep; struct dwc2_request *req; @@ -683,7 +683,7 @@ static int s3c_dequeue(struct usb_ep *_ep, struct usb_request *_req) /* * Return bytes in EP FIFO */ -static int s3c_fifo_status(struct usb_ep *_ep) +static int dwc2_fifo_status(struct usb_ep *_ep) { int count = 0; struct dwc2_ep *ep; @@ -706,7 +706,7 @@ static int s3c_fifo_status(struct usb_ep *_ep) /* * Flush EP FIFO */ -static void s3c_fifo_flush(struct usb_ep *_ep) +static void dwc2_fifo_flush(struct usb_ep *_ep) { struct dwc2_ep *ep; diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index e93d6027e8..b8b270304a 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c @@ -446,7 +446,7 @@ static void process_ep_out_intr(struct dwc2_udc *dev) CTRL_OUT_EP_SETUP_PHASE_DONE) { debug_cond(DEBUG_OUT_EP != 0, "SETUP packet arrived\n"); - s3c_handle_ep0(dev); + dwc2_handle_ep0(dev); } } else { if (ep_intr_status & TRANSFER_DONE) @@ -579,7 +579,7 @@ static int dwc2_udc_irq(int irq, void *_dev) /** Queue one request * Kickstart transfer if needed */ -static int s3c_queue(struct usb_ep *_ep, struct usb_request *_req, +static int dwc2_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags) { struct dwc2_request *req; @@ -718,7 +718,7 @@ static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req) return 0; } -static int s3c_fifo_read(struct dwc2_ep *ep, u32 *cp, int max) +static int dwc2_fifo_read(struct dwc2_ep *ep, u32 *cp, int max) { invalidate_dcache_range((unsigned long)cp, (unsigned long)cp + ROUND(max, CONFIG_SYS_CACHELINE_SIZE)); @@ -1272,7 +1272,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) nuke(ep, -EPROTO); /* read control req from fifo (8 bytes) */ - s3c_fifo_read(ep, (u32 *)usb_ctrl, 8); + dwc2_fifo_read(ep, (u32 *)usb_ctrl, 8); debug_cond(DEBUG_SETUP != 0, "%s: bRequestType = 0x%x(%s), bRequest = 0x%x" @@ -1451,7 +1451,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev) /* * handle ep0 interrupt */ -static void s3c_handle_ep0(struct dwc2_udc *dev) +static void dwc2_handle_ep0(struct dwc2_udc *dev) { if (dev->ep0state == WAIT_FOR_SETUP) { debug_cond(DEBUG_OUT_EP != 0, From 193979e2fe7cf75cb7434341562b1da7153750f7 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:21:41 +0100 Subject: [PATCH 15/27] usb: s3c-otg: Zap useless externs The extern statements are useless, remove them. Also remove the extern ... controller, which is completely useless. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg_priv.h | 6 ++---- include/usb/s3c_udc.h | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg_priv.h b/drivers/usb/gadget/s3c_udc_otg_priv.h index cc10704046..fb3a019e03 100644 --- a/drivers/usb/gadget/s3c_udc_otg_priv.h +++ b/drivers/usb/gadget/s3c_udc_otg_priv.h @@ -88,13 +88,11 @@ struct dwc2_udc { unsigned req_pending:1, req_std:1; }; -extern struct dwc2_udc *the_controller; - #define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN) == USB_DIR_IN) #define ep_index(EP) ((EP)->bEndpointAddress&0xF) #define ep_maxpacket(EP) ((EP)->ep.maxpacket) -extern void otg_phy_init(struct dwc2_udc *dev); -extern void otg_phy_off(struct dwc2_udc *dev); +void otg_phy_init(struct dwc2_udc *dev); +void otg_phy_off(struct dwc2_udc *dev); #endif /* __S3C_UDC_OTG_PRIV__ */ diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h index 67c3e9112d..20af629929 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/s3c_udc.h @@ -20,6 +20,6 @@ struct s3c_plat_otg_data { unsigned int usb_gusbcfg; }; -extern int s3c_udc_probe(struct s3c_plat_otg_data *pdata); +int s3c_udc_probe(struct s3c_plat_otg_data *pdata); #endif From 06cb6ccd8e2e7cc1318709c6dc350a296ca9f477 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:28:40 +0100 Subject: [PATCH 16/27] usb: s3c-otg: Change the driver name to dwc2-udc Just change the driver name. Signed-off-by: Marek Vasut --- drivers/usb/gadget/s3c_udc_otg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index a960eff954..9cb6849ada 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -63,12 +63,12 @@ static char *state_names[] = { "WAIT_FOR_NULL_COMPLETE", }; -#define DRIVER_DESC "S3C HS USB OTG Device Driver, (c) Samsung Electronics" +#define DRIVER_DESC "DWC2 HS USB OTG Device Driver, (c) Samsung Electronics" #define DRIVER_VERSION "15 March 2009" struct dwc2_udc *the_controller; -static const char driver_name[] = "s3c-udc"; +static const char driver_name[] = "dwc2-udc"; static const char driver_desc[] = DRIVER_DESC; static const char ep0name[] = "ep0-control"; @@ -219,7 +219,7 @@ static int udc_enable(struct dwc2_udc *dev) reconfig_usbd(dev); debug_cond(DEBUG_SETUP != 0, - "S3C USB 2.0 OTG Controller Core Initialized : 0x%x\n", + "DWC2 USB 2.0 OTG Controller Core Initialized : 0x%x\n", readl(®->gintmsk)); dev->gadget.speed = USB_SPEED_UNKNOWN; From f4d9bd06f72ec554e01b29f710243d47f047f5bc Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:32:22 +0100 Subject: [PATCH 17/27] usb: s3c-otg: Rename local headers to dwc2_*h The driver is actually for the Designware DWC2 controller. This patch renames the local header files to dwc2_*h and adjusts the sources to use the new names. Signed-off-by: Marek Vasut --- drivers/usb/gadget/bcm_udc_otg_phy.c | 2 +- .../usb/gadget/{s3c_udc_otg_priv.h => dwc2_udc_otg_priv.h} | 6 +++--- .../usb/gadget/{s3c_udc_otg_regs.h => dwc2_udc_otg_regs.h} | 0 drivers/usb/gadget/s3c_udc_otg.c | 4 ++-- drivers/usb/gadget/s3c_udc_otg_phy.c | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) rename drivers/usb/gadget/{s3c_udc_otg_priv.h => dwc2_udc_otg_priv.h} (95%) rename drivers/usb/gadget/{s3c_udc_otg_regs.h => dwc2_udc_otg_regs.h} (100%) diff --git a/drivers/usb/gadget/bcm_udc_otg_phy.c b/drivers/usb/gadget/bcm_udc_otg_phy.c index c58388c639..10b2e132eb 100644 --- a/drivers/usb/gadget/bcm_udc_otg_phy.c +++ b/drivers/usb/gadget/bcm_udc_otg_phy.c @@ -9,7 +9,7 @@ #include #include -#include "s3c_udc_otg_priv.h" +#include "dwc2_udc_otg_priv.h" #include "bcm_udc_otg.h" void otg_phy_init(struct dwc2_udc *dev) diff --git a/drivers/usb/gadget/s3c_udc_otg_priv.h b/drivers/usb/gadget/dwc2_udc_otg_priv.h similarity index 95% rename from drivers/usb/gadget/s3c_udc_otg_priv.h rename to drivers/usb/gadget/dwc2_udc_otg_priv.h index fb3a019e03..1dcb277ad3 100644 --- a/drivers/usb/gadget/s3c_udc_otg_priv.h +++ b/drivers/usb/gadget/dwc2_udc_otg_priv.h @@ -5,8 +5,8 @@ * SPDX-License-Identifier: GPL-2.0+ */ -#ifndef __S3C_UDC_OTG_PRIV__ -#define __S3C_UDC_OTG_PRIV__ +#ifndef __DWC2_UDC_OTG_PRIV__ +#define __DWC2_UDC_OTG_PRIV__ #include #include @@ -95,4 +95,4 @@ struct dwc2_udc { void otg_phy_init(struct dwc2_udc *dev); void otg_phy_off(struct dwc2_udc *dev); -#endif /* __S3C_UDC_OTG_PRIV__ */ +#endif /* __DWC2_UDC_OTG_PRIV__ */ diff --git a/drivers/usb/gadget/s3c_udc_otg_regs.h b/drivers/usb/gadget/dwc2_udc_otg_regs.h similarity index 100% rename from drivers/usb/gadget/s3c_udc_otg_regs.h rename to drivers/usb/gadget/dwc2_udc_otg_regs.h diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 9cb6849ada..0bff63f2f1 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -32,8 +32,8 @@ #include -#include "s3c_udc_otg_regs.h" -#include "s3c_udc_otg_priv.h" +#include "dwc2_udc_otg_regs.h" +#include "dwc2_udc_otg_priv.h" #include /***********************************************************/ diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/s3c_udc_otg_phy.c index a761b43b12..ab7515bb56 100644 --- a/drivers/usb/gadget/s3c_udc_otg_phy.c +++ b/drivers/usb/gadget/s3c_udc_otg_phy.c @@ -32,8 +32,8 @@ #include -#include "s3c_udc_otg_regs.h" -#include "s3c_udc_otg_priv.h" +#include "dwc2_udc_otg_regs.h" +#include "dwc2_udc_otg_priv.h" #include #include From be5e4bdcedbd3bf5f2717fc22356e825bca0fbcd Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:34:46 +0100 Subject: [PATCH 18/27] usb: s3c-otg: Rename sources to dwc2_*c The driver is actually for the Designware DWC2 controller. This patch renames the local source files to dwc2_*c and adjusts the Makefile to use the new names. Signed-off-by: Marek Vasut --- drivers/usb/gadget/Makefile | 4 ++-- drivers/usb/gadget/{s3c_udc_otg.c => dwc2_udc_otg.c} | 4 ++-- drivers/usb/gadget/{s3c_udc_otg_phy.c => dwc2_udc_otg_phy.c} | 2 +- .../{s3c_udc_otg_xfer_dma.c => dwc2_udc_otg_xfer_dma.c} | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename drivers/usb/gadget/{s3c_udc_otg.c => dwc2_udc_otg.c} (99%) rename drivers/usb/gadget/{s3c_udc_otg_phy.c => dwc2_udc_otg_phy.c} (98%) rename drivers/usb/gadget/{s3c_udc_otg_xfer_dma.c => dwc2_udc_otg_xfer_dma.c} (99%) diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index 6288ecf09f..dd4df00184 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -13,8 +13,8 @@ ifdef CONFIG_USB_GADGET obj-$(CONFIG_USB_GADGET_AT91) += at91_udc.o obj-$(CONFIG_USB_GADGET_ATMEL_USBA) += atmel_usba_udc.o obj-$(CONFIG_USB_GADGET_BCM_UDC_OTG_PHY) += bcm_udc_otg_phy.o -obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += s3c_udc_otg.o -obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG_PHY) += s3c_udc_otg_phy.o +obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += dwc2_udc_otg.o +obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG_PHY) += dwc2_udc_otg_phy.o obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o obj-$(CONFIG_CI_UDC) += ci_udc.o obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c similarity index 99% rename from drivers/usb/gadget/s3c_udc_otg.c rename to drivers/usb/gadget/dwc2_udc_otg.c index 0bff63f2f1..40a7125ca0 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -1,5 +1,5 @@ /* - * drivers/usb/gadget/s3c_udc_otg.c + * drivers/usb/gadget/dwc2_udc_otg.c * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers * * Copyright (C) 2008 for Samsung Electronics @@ -157,7 +157,7 @@ __weak void otg_phy_off(struct dwc2_udc *dev) {} /***********************************************************/ -#include "s3c_udc_otg_xfer_dma.c" +#include "dwc2_udc_otg_xfer_dma.c" /* * udc_disable - disable USB device controller diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/dwc2_udc_otg_phy.c similarity index 98% rename from drivers/usb/gadget/s3c_udc_otg_phy.c rename to drivers/usb/gadget/dwc2_udc_otg_phy.c index ab7515bb56..eedfe37dd1 100644 --- a/drivers/usb/gadget/s3c_udc_otg_phy.c +++ b/drivers/usb/gadget/dwc2_udc_otg_phy.c @@ -1,5 +1,5 @@ /* - * drivers/usb/gadget/s3c_udc_otg.c + * drivers/usb/gadget/dwc2_udc_otg.c * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers * * Copyright (C) 2008 for Samsung Electronics diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c similarity index 99% rename from drivers/usb/gadget/s3c_udc_otg_xfer_dma.c rename to drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c index b8b270304a..fe02c0f8c2 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c @@ -1,5 +1,5 @@ /* - * drivers/usb/gadget/s3c_udc_otg_xfer_dma.c + * drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers * * Copyright (C) 2009 for Samsung Electronics From 507e677bc4f25b15d81d599c3d8b669ab9846493 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:44:33 +0100 Subject: [PATCH 19/27] usb: s3c-otg: Rename remaining macros The driver is actually for the Designware DWC2 controller. This patch renames the remaining S3C_* macros to match the DWC2 naming. Signed-off-by: Marek Vasut --- drivers/usb/gadget/dwc2_udc_otg.c | 14 +++++++------- drivers/usb/gadget/dwc2_udc_otg_priv.h | 6 +++--- drivers/usb/gadget/dwc2_udc_otg_regs.h | 20 ++++++++++---------- drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c | 4 ++-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index 40a7125ca0..93514a993a 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -190,7 +190,7 @@ static void udc_reinit(struct dwc2_udc *dev) dev->ep0state = WAIT_FOR_SETUP; /* basic endpoint records init */ - for (i = 0; i < S3C_MAX_ENDPOINTS; i++) { + for (i = 0; i < DWC2_MAX_ENDPOINTS; i++) { struct dwc2_ep *ep = &dev->ep[i]; if (i != 0) @@ -380,7 +380,7 @@ static void stop_activity(struct dwc2_udc *dev, dev->gadget.speed = USB_SPEED_UNKNOWN; /* prevent new request submissions, kill any outstanding requests */ - for (i = 0; i < S3C_MAX_ENDPOINTS; i++) { + for (i = 0; i < DWC2_MAX_ENDPOINTS; i++) { struct dwc2_ep *ep = &dev->ep[i]; ep->stopped = 1; nuke(ep, -ESHUTDOWN); @@ -448,7 +448,7 @@ static void reconfig_usbd(struct dwc2_udc *dev) writel(DEPCTL_EPDIS|DEPCTL_SNAK, ®->out_endp[EP0_CON].doepctl); writel(DEPCTL_EPDIS|DEPCTL_SNAK, ®->in_endp[EP0_CON].diepctl); - for (i = 1; i < S3C_MAX_ENDPOINTS; i++) { + for (i = 1; i < DWC2_MAX_ENDPOINTS; i++) { writel(DEPCTL_EPDIS|DEPCTL_SNAK, ®->out_endp[i].doepctl); writel(DEPCTL_EPDIS|DEPCTL_SNAK, ®->in_endp[i].diepctl); } @@ -470,7 +470,7 @@ static void reconfig_usbd(struct dwc2_udc *dev) writel((NPTX_FIFO_SIZE >> 2) << 16 | ((RX_FIFO_SIZE >> 2)) << 0, ®->gnptxfsiz); - for (i = 1; i < S3C_MAX_HW_ENDPOINTS; i++) + for (i = 1; i < DWC2_MAX_HW_ENDPOINTS; i++) writel((PTX_FIFO_SIZE >> 2) << 16 | ((RX_FIFO_SIZE + NPTX_FIFO_SIZE + PTX_FIFO_SIZE*(i-1)) >> 2) << 0, @@ -479,13 +479,13 @@ static void reconfig_usbd(struct dwc2_udc *dev) /* Flush the RX FIFO */ writel(RX_FIFO_FLUSH, ®->grstctl); while (readl(®->grstctl) & RX_FIFO_FLUSH) - debug("%s: waiting for S3C_UDC_OTG_GRSTCTL\n", __func__); + debug("%s: waiting for DWC2_UDC_OTG_GRSTCTL\n", __func__); /* Flush all the Tx FIFO's */ writel(TX_FIFO_FLUSH_ALL, ®->grstctl); writel(TX_FIFO_FLUSH_ALL | TX_FIFO_FLUSH, ®->grstctl); while (readl(®->grstctl) & TX_FIFO_FLUSH) - debug("%s: waiting for S3C_UDC_OTG_GRSTCTL\n", __func__); + debug("%s: waiting for DWC2_UDC_OTG_GRSTCTL\n", __func__); /* 13. Clear NAK bit of EP0, EP1, EP2*/ /* For Slave mode*/ @@ -515,7 +515,7 @@ static void set_max_pktsize(struct dwc2_udc *dev, enum usb_device_speed speed) } dev->ep[0].ep.maxpacket = ep0_fifo_size; - for (i = 1; i < S3C_MAX_ENDPOINTS; i++) + for (i = 1; i < DWC2_MAX_ENDPOINTS; i++) dev->ep[i].ep.maxpacket = ep_fifo_size; /* EP0 - Control IN (64 bytes)*/ diff --git a/drivers/usb/gadget/dwc2_udc_otg_priv.h b/drivers/usb/gadget/dwc2_udc_otg_priv.h index 1dcb277ad3..5126a9d8eb 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_priv.h +++ b/drivers/usb/gadget/dwc2_udc_otg_priv.h @@ -24,8 +24,8 @@ #define EP_FIFO_SIZE 512 #define EP_FIFO_SIZE2 1024 /* ep0-control, ep1in-bulk, ep2out-bulk, ep3in-int */ -#define S3C_MAX_ENDPOINTS 4 -#define S3C_MAX_HW_ENDPOINTS 16 +#define DWC2_MAX_ENDPOINTS 4 +#define DWC2_MAX_HW_ENDPOINTS 16 #define WAIT_FOR_SETUP 0 #define DATA_STATE_XMIT 1 @@ -81,7 +81,7 @@ struct dwc2_udc { struct s3c_plat_otg_data *pdata; int ep0state; - struct dwc2_ep ep[S3C_MAX_ENDPOINTS]; + struct dwc2_ep ep[DWC2_MAX_ENDPOINTS]; unsigned char usb_address; diff --git a/drivers/usb/gadget/dwc2_udc_otg_regs.h b/drivers/usb/gadget/dwc2_udc_otg_regs.h index 57affcb2a3..78ec90ea9f 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_regs.h +++ b/drivers/usb/gadget/dwc2_udc_otg_regs.h @@ -83,11 +83,11 @@ struct dwc2_usbotg_reg { /*===================================================================== */ /*definitions related to CSR setting */ -/* S3C_UDC_OTG_GOTGCTL */ +/* DWC2_UDC_OTG_GOTGCTL */ #define B_SESSION_VALID (0x1<<19) #define A_SESSION_VALID (0x1<<18) -/* S3C_UDC_OTG_GAHBCFG */ +/* DWC2_UDC_OTG_GAHBCFG */ #define PTXFE_HALF (0<<8) #define PTXFE_ZERO (1<<8) #define NPTXFE_HALF (0<<7) @@ -102,11 +102,11 @@ struct dwc2_usbotg_reg { #define GBL_INT_UNMASK (1<<0) #define GBL_INT_MASK (0<<0) -/* S3C_UDC_OTG_GRSTCTL */ +/* DWC2_UDC_OTG_GRSTCTL */ #define AHB_MASTER_IDLE (1u<<31) #define CORE_SOFT_RESET (0x1<<0) -/* S3C_UDC_OTG_GINTSTS/S3C_UDC_OTG_GINTMSK core interrupt register */ +/* DWC2_UDC_OTG_GINTSTS/DWC2_UDC_OTG_GINTMSK core interrupt register */ #define INT_RESUME (1u<<31) #define INT_DISCONN (0x1<<29) #define INT_CONN_ID_STS_CNG (0x1<<28) @@ -146,22 +146,22 @@ struct dwc2_usbotg_reg { #define USB_LOW_6MHZ (0x2<<1) #define USB_FULL_48MHZ (0x3<<1) -/* S3C_UDC_OTG_GRXSTSP STATUS */ +/* DWC2_UDC_OTG_GRXSTSP STATUS */ #define OUT_PKT_RECEIVED (0x2<<17) #define OUT_TRANSFER_COMPLELTED (0x3<<17) #define SETUP_TRANSACTION_COMPLETED (0x4<<17) #define SETUP_PKT_RECEIVED (0x6<<17) #define GLOBAL_OUT_NAK (0x1<<17) -/* S3C_UDC_OTG_DCTL device control register */ +/* DWC2_UDC_OTG_DCTL device control register */ #define NORMAL_OPERATION (0x1<<0) #define SOFT_DISCONNECT (0x1<<1) -/* S3C_UDC_OTG_DAINT device all endpoint interrupt register */ +/* DWC2_UDC_OTG_DAINT device all endpoint interrupt register */ #define DAINT_OUT_BIT (16) #define DAINT_MASK (0xFFFF) -/* S3C_UDC_OTG_DIEPCTL0/DOEPCTL0 device +/* DWC2_UDC_OTG_DIEPCTL0/DOEPCTL0 device control IN/OUT endpoint 0 control register */ #define DEPCTL_EPENA (0x1<<31) #define DEPCTL_EPDIS (0x1<<30) @@ -191,9 +191,9 @@ struct dwc2_usbotg_reg { #define DIEPCTL0_NEXT_EP_BIT (11) -/* S3C_UDC_OTG_DIEPMSK/DOEPMSK device IN/OUT endpoint +/* DWC2_UDC_OTG_DIEPMSK/DOEPMSK device IN/OUT endpoint common interrupt mask register */ -/* S3C_UDC_OTG_DIEPINTn/DOEPINTn device IN/OUT endpoint interrupt register */ +/* DWC2_UDC_OTG_DIEPINTn/DOEPINTn device IN/OUT endpoint interrupt register */ #define BACK2BACK_SETUP_RECEIVED (0x1<<6) #define INTKNEPMIS (0x1<<5) #define INTKN_TXFEMP (0x1<<4) diff --git a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c index fe02c0f8c2..d56d401c8e 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c @@ -652,14 +652,14 @@ static int dwc2_queue(struct usb_ep *_ep, struct usb_request *_req, } else if (ep_is_in(ep)) { gintsts = readl(®->gintsts); debug_cond(DEBUG_IN_EP, - "%s: ep_is_in, S3C_UDC_OTG_GINTSTS=0x%x\n", + "%s: ep_is_in, DWC2_UDC_OTG_GINTSTS=0x%x\n", __func__, gintsts); setdma_tx(ep, req); } else { gintsts = readl(®->gintsts); debug_cond(DEBUG_OUT_EP != 0, - "%s:ep_is_out, S3C_UDC_OTG_GINTSTS=0x%x\n", + "%s:ep_is_out, DWC2_UDC_OTG_GINTSTS=0x%x\n", __func__, gintsts); setdma_rx(ep, req); From e179cedd09325f6e83107d6f437600de0fc81553 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:55:37 +0100 Subject: [PATCH 20/27] usb: s3c-otg: Tweak the comments The driver is actually for the Designware DWC2 controller. Tweak the comments in the driver to reflect this fact. Signed-off-by: Marek Vasut --- drivers/usb/gadget/dwc2_udc_otg.c | 2 +- drivers/usb/gadget/dwc2_udc_otg_phy.c | 2 +- drivers/usb/gadget/dwc2_udc_otg_priv.h | 2 +- drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c | 2 +- include/usb/s3c_udc.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index 93514a993a..772d9481d3 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -1,6 +1,6 @@ /* * drivers/usb/gadget/dwc2_udc_otg.c - * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers + * Designware DWC2 on-chip full/high speed USB OTG 2.0 device controllers * * Copyright (C) 2008 for Samsung Electronics * diff --git a/drivers/usb/gadget/dwc2_udc_otg_phy.c b/drivers/usb/gadget/dwc2_udc_otg_phy.c index eedfe37dd1..d3e9840585 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_phy.c +++ b/drivers/usb/gadget/dwc2_udc_otg_phy.c @@ -1,6 +1,6 @@ /* * drivers/usb/gadget/dwc2_udc_otg.c - * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers + * Designware DWC2 on-chip full/high speed USB OTG 2.0 device controllers * * Copyright (C) 2008 for Samsung Electronics * diff --git a/drivers/usb/gadget/dwc2_udc_otg_priv.h b/drivers/usb/gadget/dwc2_udc_otg_priv.h index 5126a9d8eb..3642882631 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_priv.h +++ b/drivers/usb/gadget/dwc2_udc_otg_priv.h @@ -1,5 +1,5 @@ /* - * Samsung S3C on-chip full/high speed USB device controllers + * Designware DWC2 on-chip full/high speed USB device controllers * Copyright (C) 2005 for Samsung Electronics * * SPDX-License-Identifier: GPL-2.0+ diff --git a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c index d56d401c8e..bce9c30ef6 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c @@ -1,6 +1,6 @@ /* * drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c - * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers + * Designware DWC2 on-chip full/high speed USB OTG 2.0 device controllers * * Copyright (C) 2009 for Samsung Electronics * diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h index 20af629929..497248dbee 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/s3c_udc.h @@ -1,6 +1,6 @@ /* * drivers/usb/gadget/s3c_udc.h - * Samsung S3C on-chip full/high speed USB device controllers + * Designware DWC2 on-chip full/high speed USB device controllers * Copyright (C) 2005 for Samsung Electronics * * SPDX-License-Identifier: GPL-2.0+ From e30824f439c81070d97cff3f9a31952b58eb9ad3 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Wed, 19 Aug 2015 23:27:26 +0200 Subject: [PATCH 21/27] usb: s3c-otg: Rename USB_GADGET_S3C_UDC_OTG* to USB_GADGET_DWC2_OTG* The s3c-otg IP block is in fact a DWC2 OTG one, so finally rename the config option to make it less misleading. No functional change, just a mechanical change done using the following script: git grep USB_GADGET_S3C_UDC_OTG | cut -d : -f 1 | sort -u | \ while read line ; do sed -i "s/USB_GADGET_S3C_UDC_OTG/USB_GADGET_DWC2_OTG/g" $line ; done Signed-off-by: Marek Vasut --- drivers/usb/gadget/Makefile | 4 ++-- include/configs/bcm28155_ap.h | 2 +- include/configs/exynos4-common.h | 4 ++-- include/configs/s5p_goni.h | 4 ++-- include/configs/s5pc210_universal.h | 4 ++-- include/configs/smdkv310.h | 4 ++-- include/configs/socfpga_common.h | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index dd4df00184..c915c79729 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -13,8 +13,8 @@ ifdef CONFIG_USB_GADGET obj-$(CONFIG_USB_GADGET_AT91) += at91_udc.o obj-$(CONFIG_USB_GADGET_ATMEL_USBA) += atmel_usba_udc.o obj-$(CONFIG_USB_GADGET_BCM_UDC_OTG_PHY) += bcm_udc_otg_phy.o -obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += dwc2_udc_otg.o -obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG_PHY) += dwc2_udc_otg_phy.o +obj-$(CONFIG_USB_GADGET_DWC2_OTG) += dwc2_udc_otg.o +obj-$(CONFIG_USB_GADGET_DWC2_OTG_PHY) += dwc2_udc_otg_phy.o obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o obj-$(CONFIG_CI_UDC) += ci_udc.o obj-$(CONFIG_USB_GADGET_DOWNLOAD) += g_dnl.o diff --git a/include/configs/bcm28155_ap.h b/include/configs/bcm28155_ap.h index 131f613b68..a257084a03 100644 --- a/include/configs/bcm28155_ap.h +++ b/include/configs/bcm28155_ap.h @@ -142,7 +142,7 @@ #define CONFIG_USB_GADGET #define CONFIG_USB_GADGET_DUALSPEED #define CONFIG_USB_GADGET_VBUS_DRAW 0 -#define CONFIG_USB_GADGET_S3C_UDC_OTG +#define CONFIG_USB_GADGET_DWC2_OTG #define CONFIG_USB_GADGET_BCM_UDC_OTG_PHY #define CONFIG_USB_GADGET_DOWNLOAD #define CONFIG_USBID_ADDR 0x34052c46 diff --git a/include/configs/exynos4-common.h b/include/configs/exynos4-common.h index ec1f882f3a..d101a77473 100644 --- a/include/configs/exynos4-common.h +++ b/include/configs/exynos4-common.h @@ -51,8 +51,8 @@ #define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */ #define CONFIG_USB_GADGET -#define CONFIG_USB_GADGET_S3C_UDC_OTG -#define CONFIG_USB_GADGET_S3C_UDC_OTG_PHY +#define CONFIG_USB_GADGET_DWC2_OTG +#define CONFIG_USB_GADGET_DWC2_OTG_PHY #define CONFIG_USB_GADGET_DUALSPEED #define CONFIG_USB_GADGET_VBUS_DRAW 2 diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h index 2877e19ad4..8f65d7ed7a 100644 --- a/include/configs/s5p_goni.h +++ b/include/configs/s5p_goni.h @@ -269,8 +269,8 @@ #define CONFIG_SYS_MAX_I2C_BUS 7 #define CONFIG_USB_GADGET -#define CONFIG_USB_GADGET_S3C_UDC_OTG -#define CONFIG_USB_GADGET_S3C_UDC_OTG_PHY +#define CONFIG_USB_GADGET_DWC2_OTG +#define CONFIG_USB_GADGET_DWC2_OTG_PHY #define CONFIG_USB_GADGET_DUALSPEED #define CONFIG_USB_GADGET_VBUS_DRAW 2 #define CONFIG_CMD_USB_MASS_STORAGE diff --git a/include/configs/s5pc210_universal.h b/include/configs/s5pc210_universal.h index 35fef2b244..7bb62ca6c1 100644 --- a/include/configs/s5pc210_universal.h +++ b/include/configs/s5pc210_universal.h @@ -177,8 +177,8 @@ #define CONFIG_POWER_MAX8998 #define CONFIG_USB_GADGET -#define CONFIG_USB_GADGET_S3C_UDC_OTG -#define CONFIG_USB_GADGET_S3C_UDC_OTG_PHY +#define CONFIG_USB_GADGET_DWC2_OTG +#define CONFIG_USB_GADGET_DWC2_OTG_PHY #define CONFIG_USB_GADGET_DUALSPEED /* diff --git a/include/configs/smdkv310.h b/include/configs/smdkv310.h index 217cfc04ac..2492f99269 100644 --- a/include/configs/smdkv310.h +++ b/include/configs/smdkv310.h @@ -13,8 +13,8 @@ #undef CONFIG_BOARD_COMMON #undef CONFIG_USB_GADGET -#undef CONFIG_USB_GADGET_S3C_UDC_OTG -#undef CONFIG_USB_GADGET_S3C_UDC_OTG_PHY +#undef CONFIG_USB_GADGET_DWC2_OTG +#undef CONFIG_USB_GADGET_DWC2_OTG_PHY #undef CONFIG_CMD_USB_MASS_STORAGE #undef CONFIG_REVISION_TAG #undef CONFIG_CMD_THOR_DOWNLOAD diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h index b3f65b60d9..b0bc68952c 100644 --- a/include/configs/socfpga_common.h +++ b/include/configs/socfpga_common.h @@ -243,7 +243,7 @@ unsigned int cm_get_qspi_controller_clk_hz(void); */ #if defined(CONFIG_CMD_DFU) || defined(CONFIG_CMD_USB_MASS_STORAGE) #define CONFIG_USB_GADGET -#define CONFIG_USB_GADGET_S3C_UDC_OTG +#define CONFIG_USB_GADGET_DWC2_OTG #define CONFIG_USB_GADGET_DUALSPEED #define CONFIG_USB_GADGET_VBUS_DRAW 2 From c0982871df3ea6af1658cbf0f2fe38938b1780c7 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:23:29 +0100 Subject: [PATCH 22/27] usb: s3c-otg: Rename struct s3c_plat_otg_data The driver is actually for the Designware DWC2 controller. This patch is the first to rename global symbol, the struct s3c_plat_otg_data. The rename is done automatically: $ sed -i "s/s3c_plat_otg_data/dwc2_plat_otg_data/g" \ `git grep s3c_plat_otg_data | cut -d : -f 1` Signed-off-by: Marek Vasut --- board/altera/arria5-socdk/socfpga.c | 2 +- board/altera/cyclone5-socdk/socfpga.c | 2 +- board/broadcom/bcm28155_ap/bcm28155_ap.c | 2 +- board/denx/mcvevk/socfpga.c | 2 +- board/ebv/socrates/socfpga.c | 2 +- board/samsung/goni/goni.c | 2 +- board/samsung/odroid/odroid.c | 2 +- board/samsung/trats/trats.c | 4 ++-- board/samsung/trats2/trats2.c | 2 +- board/samsung/universal_c210/universal.c | 2 +- board/terasic/sockit/socfpga.c | 2 +- drivers/usb/gadget/dwc2_udc_otg.c | 2 +- drivers/usb/gadget/dwc2_udc_otg_priv.h | 2 +- include/usb/s3c_udc.h | 4 ++-- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/board/altera/arria5-socdk/socfpga.c b/board/altera/arria5-socdk/socfpga.c index a1dbc492c9..10f8f68338 100644 --- a/board/altera/arria5-socdk/socfpga.c +++ b/board/altera/arria5-socdk/socfpga.c @@ -68,7 +68,7 @@ int board_phy_config(struct phy_device *phydev) #endif #ifdef CONFIG_USB_GADGET -struct s3c_plat_otg_data socfpga_otg_data = { +struct dwc2_plat_otg_data socfpga_otg_data = { .regs_otg = CONFIG_USB_DWC2_REG_ADDR, .usb_gusbcfg = 0x1417, }; diff --git a/board/altera/cyclone5-socdk/socfpga.c b/board/altera/cyclone5-socdk/socfpga.c index a1dbc492c9..10f8f68338 100644 --- a/board/altera/cyclone5-socdk/socfpga.c +++ b/board/altera/cyclone5-socdk/socfpga.c @@ -68,7 +68,7 @@ int board_phy_config(struct phy_device *phydev) #endif #ifdef CONFIG_USB_GADGET -struct s3c_plat_otg_data socfpga_otg_data = { +struct dwc2_plat_otg_data socfpga_otg_data = { .regs_otg = CONFIG_USB_DWC2_REG_ADDR, .usb_gusbcfg = 0x1417, }; diff --git a/board/broadcom/bcm28155_ap/bcm28155_ap.c b/board/broadcom/bcm28155_ap/bcm28155_ap.c index 20eb19142a..e517db3a3b 100644 --- a/board/broadcom/bcm28155_ap/bcm28155_ap.c +++ b/board/broadcom/bcm28155_ap/bcm28155_ap.c @@ -95,7 +95,7 @@ int board_mmc_init(bd_t *bis) #endif #ifdef CONFIG_USB_GADGET -static struct s3c_plat_otg_data bcm_otg_data = { +static struct dwc2_plat_otg_data bcm_otg_data = { .regs_otg = HSOTG_BASE_ADDR }; diff --git a/board/denx/mcvevk/socfpga.c b/board/denx/mcvevk/socfpga.c index 1a23a7d88c..f27b64e80e 100644 --- a/board/denx/mcvevk/socfpga.c +++ b/board/denx/mcvevk/socfpga.c @@ -28,7 +28,7 @@ int board_init(void) } #ifdef CONFIG_USB_GADGET -struct s3c_plat_otg_data socfpga_otg_data = { +struct dwc2_plat_otg_data socfpga_otg_data = { .regs_otg = CONFIG_USB_DWC2_REG_ADDR, .usb_gusbcfg = 0x1417, }; diff --git a/board/ebv/socrates/socfpga.c b/board/ebv/socrates/socfpga.c index a1dbc492c9..10f8f68338 100644 --- a/board/ebv/socrates/socfpga.c +++ b/board/ebv/socrates/socfpga.c @@ -68,7 +68,7 @@ int board_phy_config(struct phy_device *phydev) #endif #ifdef CONFIG_USB_GADGET -struct s3c_plat_otg_data socfpga_otg_data = { +struct dwc2_plat_otg_data socfpga_otg_data = { .regs_otg = CONFIG_USB_DWC2_REG_ADDR, .usb_gusbcfg = 0x1417, }; diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c index d943d63eca..2ba556ef33 100644 --- a/board/samsung/goni/goni.c +++ b/board/samsung/goni/goni.c @@ -183,7 +183,7 @@ static int s5pc1xx_phy_control(int on) return 0; } -struct s3c_plat_otg_data s5pc110_otg_data = { +struct dwc2_plat_otg_data s5pc110_otg_data = { .phy_control = s5pc1xx_phy_control, .regs_phy = S5PC110_PHY_BASE, .regs_otg = S5PC110_OTG_BASE, diff --git a/board/samsung/odroid/odroid.c b/board/samsung/odroid/odroid.c index 36d493d514..58cbb72e41 100644 --- a/board/samsung/odroid/odroid.c +++ b/board/samsung/odroid/odroid.c @@ -452,7 +452,7 @@ static int s5pc210_phy_control(int on) return regulator_set_mode(dev, OPMODE_LPM); } -struct s3c_plat_otg_data s5pc210_otg_data = { +struct dwc2_plat_otg_data s5pc210_otg_data = { .phy_control = s5pc210_phy_control, .regs_phy = EXYNOS4X12_USBPHY_BASE, .regs_otg = EXYNOS4X12_USBOTG_BASE, diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index e163e45a58..3a553c110b 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -41,7 +41,7 @@ u32 get_board_rev(void) #endif static void check_hw_revision(void); -struct s3c_plat_otg_data s5pc210_otg_data; +struct dwc2_plat_otg_data s5pc210_otg_data; int exynos_init(void) { @@ -419,7 +419,7 @@ static int s5pc210_phy_control(int on) return 0; } -struct s3c_plat_otg_data s5pc210_otg_data = { +struct dwc2_plat_otg_data s5pc210_otg_data = { .phy_control = s5pc210_phy_control, .regs_phy = EXYNOS4_USBPHY_BASE, .regs_otg = EXYNOS4_USBOTG_BASE, diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c index a7377497e5..e52a8173ca 100644 --- a/board/samsung/trats2/trats2.c +++ b/board/samsung/trats2/trats2.c @@ -303,7 +303,7 @@ static int s5pc210_phy_control(int on) return 0; } -struct s3c_plat_otg_data s5pc210_otg_data = { +struct dwc2_plat_otg_data s5pc210_otg_data = { .phy_control = s5pc210_phy_control, .regs_phy = EXYNOS4X12_USBPHY_BASE, .regs_otg = EXYNOS4X12_USBOTG_BASE, diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index df4671394f..747d556dd3 100644 --- a/board/samsung/universal_c210/universal.c +++ b/board/samsung/universal_c210/universal.c @@ -179,7 +179,7 @@ static int s5pc210_phy_control(int on) return 0; } -struct s3c_plat_otg_data s5pc210_otg_data = { +struct dwc2_plat_otg_data s5pc210_otg_data = { .phy_control = s5pc210_phy_control, .regs_phy = EXYNOS4_USBPHY_BASE, .regs_otg = EXYNOS4_USBOTG_BASE, diff --git a/board/terasic/sockit/socfpga.c b/board/terasic/sockit/socfpga.c index a1dbc492c9..10f8f68338 100644 --- a/board/terasic/sockit/socfpga.c +++ b/board/terasic/sockit/socfpga.c @@ -68,7 +68,7 @@ int board_phy_config(struct phy_device *phydev) #endif #ifdef CONFIG_USB_GADGET -struct s3c_plat_otg_data socfpga_otg_data = { +struct dwc2_plat_otg_data socfpga_otg_data = { .regs_otg = CONFIG_USB_DWC2_REG_ADDR, .usb_gusbcfg = 0x1417, }; diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index 772d9481d3..2e2dfe121a 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -797,7 +797,7 @@ static struct dwc2_udc memory = { * probe - binds to the platform device */ -int s3c_udc_probe(struct s3c_plat_otg_data *pdata) +int s3c_udc_probe(struct dwc2_plat_otg_data *pdata) { struct dwc2_udc *dev = &memory; int retval = 0; diff --git a/drivers/usb/gadget/dwc2_udc_otg_priv.h b/drivers/usb/gadget/dwc2_udc_otg_priv.h index 3642882631..c5e9dc29d8 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_priv.h +++ b/drivers/usb/gadget/dwc2_udc_otg_priv.h @@ -78,7 +78,7 @@ struct dwc2_udc { struct usb_gadget gadget; struct usb_gadget_driver *driver; - struct s3c_plat_otg_data *pdata; + struct dwc2_plat_otg_data *pdata; int ep0state; struct dwc2_ep ep[DWC2_MAX_ENDPOINTS]; diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h index 497248dbee..3e83f7c56e 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/s3c_udc.h @@ -11,7 +11,7 @@ #define PHY0_SLEEP (1 << 5) -struct s3c_plat_otg_data { +struct dwc2_plat_otg_data { int (*phy_control)(int on); unsigned int regs_phy; unsigned int regs_otg; @@ -20,6 +20,6 @@ struct s3c_plat_otg_data { unsigned int usb_gusbcfg; }; -int s3c_udc_probe(struct s3c_plat_otg_data *pdata); +int s3c_udc_probe(struct dwc2_plat_otg_data *pdata); #endif From a4bb9b3636fe6dfd1cadaf34c42f4fb3b1ebe46c Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:26:33 +0100 Subject: [PATCH 23/27] usb: s3c-otg: Rename s3c_udc_probe() function The driver is actually for the Designware DWC2 controller. This patch is the second and final to rename global symbol, the s3c_udc_probe() function. The rename is done automatically: $ sed -i "s/s3c_udc_probe/dwc2_udc_probe/g" \ `git grep s3c_udc_probe | cut -d : -f 1` Signed-off-by: Marek Vasut --- board/altera/arria5-socdk/socfpga.c | 2 +- board/altera/cyclone5-socdk/socfpga.c | 2 +- board/broadcom/bcm28155_ap/bcm28155_ap.c | 4 ++-- board/denx/mcvevk/socfpga.c | 2 +- board/ebv/socrates/socfpga.c | 2 +- board/samsung/goni/goni.c | 2 +- board/samsung/odroid/odroid.c | 2 +- board/samsung/trats/trats.c | 2 +- board/samsung/trats2/trats2.c | 2 +- board/samsung/universal_c210/universal.c | 2 +- board/terasic/sockit/socfpga.c | 2 +- drivers/usb/gadget/dwc2_udc_otg.c | 2 +- include/usb/s3c_udc.h | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/board/altera/arria5-socdk/socfpga.c b/board/altera/arria5-socdk/socfpga.c index 10f8f68338..e640d8cccf 100644 --- a/board/altera/arria5-socdk/socfpga.c +++ b/board/altera/arria5-socdk/socfpga.c @@ -75,7 +75,7 @@ struct dwc2_plat_otg_data socfpga_otg_data = { int board_usb_init(int index, enum usb_init_type init) { - return s3c_udc_probe(&socfpga_otg_data); + return dwc2_udc_probe(&socfpga_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/board/altera/cyclone5-socdk/socfpga.c b/board/altera/cyclone5-socdk/socfpga.c index 10f8f68338..e640d8cccf 100644 --- a/board/altera/cyclone5-socdk/socfpga.c +++ b/board/altera/cyclone5-socdk/socfpga.c @@ -75,7 +75,7 @@ struct dwc2_plat_otg_data socfpga_otg_data = { int board_usb_init(int index, enum usb_init_type init) { - return s3c_udc_probe(&socfpga_otg_data); + return dwc2_udc_probe(&socfpga_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/board/broadcom/bcm28155_ap/bcm28155_ap.c b/board/broadcom/bcm28155_ap/bcm28155_ap.c index e517db3a3b..09397fc55b 100644 --- a/board/broadcom/bcm28155_ap/bcm28155_ap.c +++ b/board/broadcom/bcm28155_ap/bcm28155_ap.c @@ -101,8 +101,8 @@ static struct dwc2_plat_otg_data bcm_otg_data = { int board_usb_init(int index, enum usb_init_type init) { - debug("%s: performing s3c_udc_probe\n", __func__); - return s3c_udc_probe(&bcm_otg_data); + debug("%s: performing dwc2_udc_probe\n", __func__); + return dwc2_udc_probe(&bcm_otg_data); } int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) diff --git a/board/denx/mcvevk/socfpga.c b/board/denx/mcvevk/socfpga.c index f27b64e80e..3870b0b2af 100644 --- a/board/denx/mcvevk/socfpga.c +++ b/board/denx/mcvevk/socfpga.c @@ -35,7 +35,7 @@ struct dwc2_plat_otg_data socfpga_otg_data = { int board_usb_init(int index, enum usb_init_type init) { - return s3c_udc_probe(&socfpga_otg_data); + return dwc2_udc_probe(&socfpga_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/board/ebv/socrates/socfpga.c b/board/ebv/socrates/socfpga.c index 10f8f68338..e640d8cccf 100644 --- a/board/ebv/socrates/socfpga.c +++ b/board/ebv/socrates/socfpga.c @@ -75,7 +75,7 @@ struct dwc2_plat_otg_data socfpga_otg_data = { int board_usb_init(int index, enum usb_init_type init) { - return s3c_udc_probe(&socfpga_otg_data); + return dwc2_udc_probe(&socfpga_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c index 2ba556ef33..2725a46858 100644 --- a/board/samsung/goni/goni.c +++ b/board/samsung/goni/goni.c @@ -193,7 +193,7 @@ struct dwc2_plat_otg_data s5pc110_otg_data = { int board_usb_init(int index, enum usb_init_type init) { debug("USB_udc_probe\n"); - return s3c_udc_probe(&s5pc110_otg_data); + return dwc2_udc_probe(&s5pc110_otg_data); } #endif diff --git a/board/samsung/odroid/odroid.c b/board/samsung/odroid/odroid.c index 58cbb72e41..a3ee159d3e 100644 --- a/board/samsung/odroid/odroid.c +++ b/board/samsung/odroid/odroid.c @@ -510,6 +510,6 @@ int board_usb_init(int index, enum usb_init_type init) } #endif debug("USB_udc_probe\n"); - return s3c_udc_probe(&s5pc210_otg_data); + return dwc2_udc_probe(&s5pc210_otg_data); } #endif diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index 3a553c110b..6f711a8c64 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -430,7 +430,7 @@ struct dwc2_plat_otg_data s5pc210_otg_data = { int board_usb_init(int index, enum usb_init_type init) { debug("USB_udc_probe\n"); - return s3c_udc_probe(&s5pc210_otg_data); + return dwc2_udc_probe(&s5pc210_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c index e52a8173ca..dd7a606838 100644 --- a/board/samsung/trats2/trats2.c +++ b/board/samsung/trats2/trats2.c @@ -314,7 +314,7 @@ struct dwc2_plat_otg_data s5pc210_otg_data = { int board_usb_init(int index, enum usb_init_type init) { debug("USB_udc_probe\n"); - return s3c_udc_probe(&s5pc210_otg_data); + return dwc2_udc_probe(&s5pc210_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index 747d556dd3..0c1b9d820a 100644 --- a/board/samsung/universal_c210/universal.c +++ b/board/samsung/universal_c210/universal.c @@ -191,7 +191,7 @@ struct dwc2_plat_otg_data s5pc210_otg_data = { int board_usb_init(int index, enum usb_init_type init) { debug("USB_udc_probe\n"); - return s3c_udc_probe(&s5pc210_otg_data); + return dwc2_udc_probe(&s5pc210_otg_data); } int exynos_early_init_f(void) diff --git a/board/terasic/sockit/socfpga.c b/board/terasic/sockit/socfpga.c index 10f8f68338..e640d8cccf 100644 --- a/board/terasic/sockit/socfpga.c +++ b/board/terasic/sockit/socfpga.c @@ -75,7 +75,7 @@ struct dwc2_plat_otg_data socfpga_otg_data = { int board_usb_init(int index, enum usb_init_type init) { - return s3c_udc_probe(&socfpga_otg_data); + return dwc2_udc_probe(&socfpga_otg_data); } int g_dnl_board_usb_cable_connected(void) diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index 2e2dfe121a..ad9ed33a65 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -797,7 +797,7 @@ static struct dwc2_udc memory = { * probe - binds to the platform device */ -int s3c_udc_probe(struct dwc2_plat_otg_data *pdata) +int dwc2_udc_probe(struct dwc2_plat_otg_data *pdata) { struct dwc2_udc *dev = &memory; int retval = 0; diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h index 3e83f7c56e..9bc1aad9a7 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/s3c_udc.h @@ -20,6 +20,6 @@ struct dwc2_plat_otg_data { unsigned int usb_gusbcfg; }; -int s3c_udc_probe(struct dwc2_plat_otg_data *pdata); +int dwc2_udc_probe(struct dwc2_plat_otg_data *pdata); #endif From 5d5716eebccaa9b9ab977b7d5a9fae2abb7a8829 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 4 Dec 2015 02:51:20 +0100 Subject: [PATCH 24/27] usb: s3c-otg: Rename usb/s3c_udc.h to usb/dwc2_udc.h The driver is actually for the Designware DWC2 controller. This patch renames the global s3c_udc.h header to dwc2_udc.h. The rename is done automatically: $ sed -i "s/s3c_udc\.h/dwc2_udc.h/g" \ `git grep "s3c_udc\.h" | cut -d : -f 1` Signed-off-by: Marek Vasut --- board/altera/arria5-socdk/socfpga.c | 2 +- board/altera/cyclone5-socdk/socfpga.c | 2 +- board/broadcom/bcm28155_ap/bcm28155_ap.c | 2 +- board/denx/mcvevk/socfpga.c | 2 +- board/ebv/socrates/socfpga.c | 2 +- board/samsung/goni/goni.c | 2 +- board/samsung/odroid/odroid.c | 2 +- board/samsung/trats/trats.c | 2 +- board/samsung/trats2/trats2.c | 2 +- board/samsung/universal_c210/universal.c | 2 +- board/terasic/sockit/socfpga.c | 2 +- drivers/usb/gadget/dwc2_udc_otg.c | 2 +- drivers/usb/gadget/dwc2_udc_otg_phy.c | 2 +- drivers/usb/gadget/dwc2_udc_otg_priv.h | 2 +- include/usb/{s3c_udc.h => dwc2_udc.h} | 8 ++++---- 15 files changed, 18 insertions(+), 18 deletions(-) rename include/usb/{s3c_udc.h => dwc2_udc.h} (79%) diff --git a/board/altera/arria5-socdk/socfpga.c b/board/altera/arria5-socdk/socfpga.c index e640d8cccf..0fbbc3456c 100644 --- a/board/altera/arria5-socdk/socfpga.c +++ b/board/altera/arria5-socdk/socfpga.c @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include diff --git a/board/altera/cyclone5-socdk/socfpga.c b/board/altera/cyclone5-socdk/socfpga.c index e640d8cccf..0fbbc3456c 100644 --- a/board/altera/cyclone5-socdk/socfpga.c +++ b/board/altera/cyclone5-socdk/socfpga.c @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include diff --git a/board/broadcom/bcm28155_ap/bcm28155_ap.c b/board/broadcom/bcm28155_ap/bcm28155_ap.c index 09397fc55b..b3a4a4144d 100644 --- a/board/broadcom/bcm28155_ap/bcm28155_ap.c +++ b/board/broadcom/bcm28155_ap/bcm28155_ap.c @@ -13,7 +13,7 @@ #include #include -#include +#include #include #define SECWATCHDOG_SDOGCR_OFFSET 0x00000000 diff --git a/board/denx/mcvevk/socfpga.c b/board/denx/mcvevk/socfpga.c index 3870b0b2af..0f93722dfb 100644 --- a/board/denx/mcvevk/socfpga.c +++ b/board/denx/mcvevk/socfpga.c @@ -9,7 +9,7 @@ #include #include -#include +#include #include DECLARE_GLOBAL_DATA_PTR; diff --git a/board/ebv/socrates/socfpga.c b/board/ebv/socrates/socfpga.c index e640d8cccf..0fbbc3456c 100644 --- a/board/ebv/socrates/socfpga.c +++ b/board/ebv/socrates/socfpga.c @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c index 2725a46858..1600568193 100644 --- a/board/samsung/goni/goni.c +++ b/board/samsung/goni/goni.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/samsung/odroid/odroid.c b/board/samsung/odroid/odroid.c index a3ee159d3e..b4cb33240e 100644 --- a/board/samsung/odroid/odroid.c +++ b/board/samsung/odroid/odroid.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include "setup.h" diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index 6f711a8c64..54d01ec439 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c index dd7a606838..7b28ae8cc7 100644 --- a/board/samsung/trats2/trats2.c +++ b/board/samsung/trats2/trats2.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include DECLARE_GLOBAL_DATA_PTR; diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index 0c1b9d820a..c25b486f4a 100644 --- a/board/samsung/universal_c210/universal.c +++ b/board/samsung/universal_c210/universal.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/terasic/sockit/socfpga.c b/board/terasic/sockit/socfpga.c index e640d8cccf..0fbbc3456c 100644 --- a/board/terasic/sockit/socfpga.c +++ b/board/terasic/sockit/socfpga.c @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index ad9ed33a65..ffe2952f56 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -46,7 +46,7 @@ #define DEBUG_OUT_EP 0 #define DEBUG_IN_EP 0 -#include +#include #define EP0_CON 0 #define EP_MASK 0xF diff --git a/drivers/usb/gadget/dwc2_udc_otg_phy.c b/drivers/usb/gadget/dwc2_udc_otg_phy.c index d3e9840585..e0cbbc0757 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_phy.c +++ b/drivers/usb/gadget/dwc2_udc_otg_phy.c @@ -36,7 +36,7 @@ #include "dwc2_udc_otg_priv.h" #include -#include +#include void otg_phy_init(struct dwc2_udc *dev) { diff --git a/drivers/usb/gadget/dwc2_udc_otg_priv.h b/drivers/usb/gadget/dwc2_udc_otg_priv.h index c5e9dc29d8..b2c1fc4105 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_priv.h +++ b/drivers/usb/gadget/dwc2_udc_otg_priv.h @@ -14,7 +14,7 @@ #include #include #include -#include +#include /*-------------------------------------------------------------------------*/ /* DMA bounce buffer size, 16K is enough even for mass storage */ diff --git a/include/usb/s3c_udc.h b/include/usb/dwc2_udc.h similarity index 79% rename from include/usb/s3c_udc.h rename to include/usb/dwc2_udc.h index 9bc1aad9a7..302e9a35a2 100644 --- a/include/usb/s3c_udc.h +++ b/include/usb/dwc2_udc.h @@ -1,13 +1,13 @@ /* - * drivers/usb/gadget/s3c_udc.h + * drivers/usb/gadget/dwc2_udc.h * Designware DWC2 on-chip full/high speed USB device controllers * Copyright (C) 2005 for Samsung Electronics * * SPDX-License-Identifier: GPL-2.0+ */ -#ifndef __S3C_USB_GADGET -#define __S3C_USB_GADGET +#ifndef __DWC2_USB_GADGET +#define __DWC2_USB_GADGET #define PHY0_SLEEP (1 << 5) @@ -22,4 +22,4 @@ struct dwc2_plat_otg_data { int dwc2_udc_probe(struct dwc2_plat_otg_data *pdata); -#endif +#endif /* __DWC2_USB_GADGET */ From 70cc443d5833b27dd4dd4a48a771778c39734f75 Mon Sep 17 00:00:00 2001 From: Lukasz Majewski Date: Thu, 10 Dec 2015 16:32:25 +0100 Subject: [PATCH 25/27] usb: host: ehci: samsung: Move hcor initialization after usb phy setup With the old order of initialization the hcor pointer has been setup to the same address as Exynos EHCI base address (0x12110000 instead of 0x12110010). Such behaviour was caused by reading value of 0 instead of 0x10 from EHCI HCCPBASE register without doing proper clock initialization before. To fix this problem hcor initialization has been moved after USB PHY setup. Now ehci_readl(&ctx->hcd->cr_capbase) returns correct value. Signed-off-by: Lukasz Majewski --- drivers/usb/host/ehci-exynos.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c index 18e9251b64..bede04b748 100644 --- a/drivers/usb/host/ehci-exynos.c +++ b/drivers/usb/host/ehci-exynos.c @@ -219,14 +219,14 @@ static int ehci_usb_probe(struct udevice *dev) ctx->hcd = (struct ehci_hccr *)plat->hcd_base; ctx->usb = (struct exynos_usb_phy *)plat->phy_base; - hcor = (struct ehci_hcor *)((uint32_t)ctx->hcd + - HC_LENGTH(ehci_readl(&ctx->hcd->cr_capbase))); /* setup the Vbus gpio here */ if (dm_gpio_is_valid(&plat->vbus_gpio)) dm_gpio_set_value(&plat->vbus_gpio, 1); setup_usb_phy(ctx->usb); + hcor = (struct ehci_hcor *)((uint32_t)ctx->hcd + + HC_LENGTH(ehci_readl(&ctx->hcd->cr_capbase))); return ehci_register(dev, ctx->hcd, hcor, NULL, 0, USB_INIT_HOST); } From fee331f66c923bd1b481b4a72fe7814e5436daed Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Mon, 14 Dec 2015 17:18:50 +0300 Subject: [PATCH 26/27] usb: add support of generic OHCI devices This driver is meant to be used with any OHCI-compatible host controller in case if there's no need for platform-specific glue such as setup of controller or PHY's power mode via GPIOs etc. Signed-off-by: Alexey Brodkin Cc: Simon Glass Cc: Marek Vasut --- drivers/usb/host/Kconfig | 8 ++++++ drivers/usb/host/Makefile | 1 + drivers/usb/host/ohci-generic.c | 45 +++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 drivers/usb/host/ohci-generic.c diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig index 0096a2fdd9..39f7185e86 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig @@ -26,6 +26,14 @@ config USB_XHCI_UNIPHIER endif +config USB_OHCI_GENERIC + bool "Support for generic OHCI USB controller" + depends on OF_CONTROL + depends on DM_USB + default n + ---help--- + Enables support for generic OHCI controller. + config USB_EHCI_HCD bool "EHCI HCD (USB 2.0) support" ---help--- diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile index 0b4b458cca..6183b80c75 100644 --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile @@ -21,6 +21,7 @@ obj-$(CONFIG_USB_OHCI_S3C24XX) += ohci-s3c24xx.o obj-$(CONFIG_USB_OHCI_EP93XX) += ohci-ep93xx.o obj-$(CONFIG_USB_OHCI_SUNXI) += ohci-sunxi.o obj-$(CONFIG_USB_OHCI_LPC32XX) += ohci-lpc32xx.o +obj-$(CONFIG_USB_OHCI_GENERIC) += ohci-generic.o # echi obj-$(CONFIG_USB_EHCI) += ehci-hcd.o diff --git a/drivers/usb/host/ohci-generic.c b/drivers/usb/host/ohci-generic.c new file mode 100644 index 0000000000..f3307f47a7 --- /dev/null +++ b/drivers/usb/host/ohci-generic.c @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2015 Alexey Brodkin + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include "ohci.h" + +#if !defined(CONFIG_USB_OHCI_NEW) +# error "Generic OHCI driver requires CONFIG_USB_OHCI_NEW" +#endif + +struct generic_ohci { + ohci_t ohci; +}; + +static int ohci_usb_probe(struct udevice *dev) +{ + struct ohci_regs *regs = (struct ohci_regs *)dev_get_addr(dev); + + return ohci_register(dev, regs); +} + +static int ohci_usb_remove(struct udevice *dev) +{ + return ohci_deregister(dev); +} + +static const struct udevice_id ohci_usb_ids[] = { + { .compatible = "generic-ohci" }, + { } +}; + +U_BOOT_DRIVER(ohci_generic) = { + .name = "ohci_generic", + .id = UCLASS_USB, + .of_match = ohci_usb_ids, + .probe = ohci_usb_probe, + .remove = ohci_usb_remove, + .ops = &ohci_usb_ops, + .priv_auto_alloc_size = sizeof(struct generic_ohci), + .flags = DM_FLAG_ALLOC_PRIV_DMA, +}; From e4b70d80350c1238fa07872d71c19e3ddbf53b76 Mon Sep 17 00:00:00 2001 From: Stephen Warren Date: Fri, 13 Nov 2015 13:34:09 -0700 Subject: [PATCH 27/27] usb: kbd: don't use int xfers when polling via ctrl xfers When CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP is enabled, use a GET_REPORT control transfer to retrieve the initial state of the keyboard. This matches the technique used to poll the keyboard state. This is useful since it eliminates the remaining use of interrupt transfers from the USB keyboard driver, which allows it to work with USB HCD that don't support interrupt transfers. Cc: Hans de Goede Signed-off-by: Stephen Warren --- common/usb_kbd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 069fbd2de7..9617a4848a 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -476,6 +476,9 @@ static int usb_kbd_probe_dev(struct usb_device *dev, unsigned int ifnum) USB_KBD_BOOT_REPORT_SIZE, data->new, data->intinterval); if (!data->intq) { +#elif defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP) + if (usb_get_report(dev, iface->desc.bInterfaceNumber, + 1, 0, data->new, USB_KBD_BOOT_REPORT_SIZE) < 0) { #else if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize, data->intinterval) < 0) {