u32 snpsid;
 };
 
+/* Size of control and EP0 buffers */
+#define DWC2_CTRL_BUFF_SIZE 8
+
 /**
  * struct dwc2_hsotg - Holds the state of the driver, including the non-periodic
  * and periodic schedules
 
        struct usb_request *ep0_reply;
        struct usb_request *ctrl_req;
-       u8 ep0_buff[8];
-       u8 ctrl_buff[8];
+       void *ep0_buff;
+       void *ctrl_buff;
 
        struct usb_gadget gadget;
        unsigned int enabled:1;
 
        s3c_hsotg_hw_cfg(hsotg);
        s3c_hsotg_init(hsotg);
 
+       hsotg->ctrl_buff = devm_kzalloc(hsotg->dev,
+                       DWC2_CTRL_BUFF_SIZE, GFP_KERNEL);
+       if (!hsotg->ctrl_buff) {
+               dev_err(dev, "failed to allocate ctrl request buff\n");
+               ret = -ENOMEM;
+               goto err_supplies;
+       }
+
+       hsotg->ep0_buff = devm_kzalloc(hsotg->dev,
+                       DWC2_CTRL_BUFF_SIZE, GFP_KERNEL);
+       if (!hsotg->ep0_buff) {
+               dev_err(dev, "failed to allocate ctrl reply buff\n");
+               ret = -ENOMEM;
+               goto err_supplies;
+       }
+
        ret = devm_request_irq(hsotg->dev, irq, s3c_hsotg_irq, IRQF_SHARED,
                                dev_name(hsotg->dev), hsotg);
        if (ret < 0) {