diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c
index 4cf82e2..a960eff 100644
--- a/drivers/usb/gadget/s3c_udc_otg.c
+++ b/drivers/usb/gadget/s3c_udc_otg.c
@@ -87,17 +87,17 @@
 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 @@
 	.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 @@
 	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 @@
 	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 @@
 }
 
 /* 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 @@
 /*
  * 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 @@
 /*
  * 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 e93d602..b8b2703 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 @@
 				    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 @@
 /** 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 @@
 	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 @@
 	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 @@
 /*
  * 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,
