struct usbhsg_gpriv *gpriv;
        struct usbhsg_uep *uep;
        struct device *dev = usbhs_priv_to_dev(priv);
+       struct renesas_usbhs_driver_pipe_config *pipe_configs =
+                                       usbhs_get_dparam(priv, pipe_configs);
        int pipe_size = usbhs_get_dparam(priv, pipe_size);
        int i;
        int ret;
                        gpriv->gadget.ep0 = &uep->ep;
                        usb_ep_set_maxpacket_limit(&uep->ep, 64);
                        uep->ep.caps.type_control = true;
-               }
-               /* init normal pipe */
-               else {
-                       usb_ep_set_maxpacket_limit(&uep->ep, 512);
-                       uep->ep.caps.type_iso = true;
-                       uep->ep.caps.type_bulk = true;
-                       uep->ep.caps.type_int = true;
+               } else {
+                       /* init normal pipe */
+                       if (pipe_configs[i].type == USB_ENDPOINT_XFER_ISOC)
+                               uep->ep.caps.type_iso = true;
+                       if (pipe_configs[i].type == USB_ENDPOINT_XFER_BULK)
+                               uep->ep.caps.type_bulk = true;
+                       if (pipe_configs[i].type == USB_ENDPOINT_XFER_INT)
+                               uep->ep.caps.type_int = true;
+                       usb_ep_set_maxpacket_limit(&uep->ep,
+                                                  pipe_configs[i].bufsize);
                        list_add_tail(&uep->ep.ep_list, &gpriv->gadget.ep_list);
                }
                uep->ep.caps.dir_in = true;