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 7a2d1e7d883..184ff4ef18c 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 f13cb8910aa..963b61721d5 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 f8690b034c3..936247e94af 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 184ff4ef18c..eb7f77e07ed 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 963b61721d5..ffc930c9110 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 7e7a2c2d906..66954449450 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 7f49a4e2d5c..f6c3a8693c4 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 eb7f77e07ed..00d03f32cd2 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 ac5d11213de..c8da803d856 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 936247e94af..c58388c639e 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 00d03f32cd2..99c6a1b1a76 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 ffc930c9110..169f8e4dbbf 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 00000000000..567fb4e263f --- /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 f6c3a8693c4..67c3e9112dd 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 169f8e4dbbf..a761b43b12d 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 c8da803d856..e5115ddef15 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 e5115ddef15..57affcb2a33 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 99c6a1b1a76..4caa390773c 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 567fb4e263f..a9b696902c9 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 66954449450..53c9d4e8b22 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 4caa390773c..22b9518cbd2 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 a9b696902c9..68bac699cf2 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 53c9d4e8b22..0288d44aa0b 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 68bac699cf2..cc107040466 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 0288d44aa0b..1390239e53f 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 1390239e53f..a8237d4ca3f 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 22b9518cbd2..a5091dcec62 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 a8237d4ca3f..aa506395f4a 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 a5091dcec62..0b75f26d775 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 0b75f26d775..4cf82e246c9 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 aa506395f4a..e93d6027e83 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 4cf82e246c9..a960eff9546 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 e93d6027e83..b8b270304a9 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 cc107040466..fb3a019e031 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 67c3e9112dd..20af6299290 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 a960eff9546..9cb6849ada8 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 c58388c639e..10b2e132eb0 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 fb3a019e031..1dcb277ad3e 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 9cb6849ada8..0bff63f2f16 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 a761b43b12d..ab7515bb56f 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 6288ecf09f5..dd4df001841 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 0bff63f2f16..40a7125ca00 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 ab7515bb56f..eedfe37dd17 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 b8b270304a9..fe02c0f8c2c 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 40a7125ca00..93514a993a8 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 1dcb277ad3e..5126a9d8eb0 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 57affcb2a33..78ec90ea9f4 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 fe02c0f8c2c..d56d401c8e5 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 93514a993a8..772d9481d32 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 eedfe37dd17..d3e9840585f 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 5126a9d8eb0..36428826317 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 d56d401c8e5..bce9c30ef61 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 20af6299290..497248dbeec 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 dd4df001841..c915c79729d 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 131f613b689..a257084a03c 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 ec1f882f3a1..d101a774739 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 2877e19ad4b..8f65d7ed7a3 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 35fef2b244a..7bb62ca6c17 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 217cfc04ac7..2492f992695 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 b3f65b60d9c..b0bc68952ce 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 a1dbc492c98..10f8f683388 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 a1dbc492c98..10f8f683388 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 20eb19142a9..e517db3a3bc 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 1a23a7d88c8..f27b64e80e3 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 a1dbc492c98..10f8f683388 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 d943d63eca0..2ba556ef33b 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 36d493d514d..58cbb72e412 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 e163e45a587..3a553c110b3 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 a7377497e5d..e52a8173ca6 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 df4671394f6..747d556dd3e 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 a1dbc492c98..10f8f683388 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 772d9481d32..2e2dfe121ab 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 36428826317..c5e9dc29d82 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 497248dbeec..3e83f7c56ed 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 10f8f683388..e640d8cccf8 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 10f8f683388..e640d8cccf8 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 e517db3a3bc..09397fc55ba 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 f27b64e80e3..3870b0b2afe 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 10f8f683388..e640d8cccf8 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 2ba556ef33b..2725a468585 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 58cbb72e412..a3ee159d3e2 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 3a553c110b3..6f711a8c64b 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 e52a8173ca6..dd7a6068385 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 747d556dd3e..0c1b9d820a6 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 10f8f683388..e640d8cccf8 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 2e2dfe121ab..ad9ed33a655 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 3e83f7c56ed..9bc1aad9a7d 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 e640d8cccf8..0fbbc3456ca 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 e640d8cccf8..0fbbc3456ca 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 09397fc55ba..b3a4a4144d6 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 3870b0b2afe..0f93722dfbd 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 e640d8cccf8..0fbbc3456ca 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 2725a468585..1600568193a 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 a3ee159d3e2..b4cb33240e1 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 6f711a8c64b..54d01ec439a 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 dd7a6068385..7b28ae8cc72 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 0c1b9d820a6..c25b486f4a9 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 e640d8cccf8..0fbbc3456ca 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 ad9ed33a655..ffe2952f56b 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 d3e9840585f..e0cbbc07579 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 c5e9dc29d82..b2c1fc41053 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 9bc1aad9a7d..302e9a35a23 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 18e9251b64f..bede04b748a 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 0096a2fdd9d..39f7185e860 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 0b4b458ccac..6183b80c75b 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 00000000000..f3307f47a76 --- /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 069fbd2de7d..9617a4848ad 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) {