#define USBOTG_RST_B IOMUX_TO_GPIO(MX31_PIN_USB_PWR)
 
-static void mx31_3ds_usbotg_init(void)
+static int mx31_3ds_usbotg_init(void)
 {
+       int err;
+
        mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA0, USB_PAD_CFG);
        mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA1, USB_PAD_CFG);
        mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA2, USB_PAD_CFG);
        mxc_iomux_set_pad(MX31_PIN_USBOTG_NXT, USB_PAD_CFG);
        mxc_iomux_set_pad(MX31_PIN_USBOTG_STP, USB_PAD_CFG);
 
-       gpio_request(USBOTG_RST_B, "otgusb-reset");
-       gpio_direction_output(USBOTG_RST_B, 0);
+       err = gpio_request(USBOTG_RST_B, "otgusb-reset");
+       if (err) {
+               pr_err("Failed to request the USB OTG reset gpio\n");
+               return err;
+       }
+
+       err = gpio_direction_output(USBOTG_RST_B, 0);
+       if (err) {
+               pr_err("Failed to drive the USB OTG reset gpio\n");
+               goto usbotg_free_reset;
+       }
+
        mdelay(1);
        gpio_set_value(USBOTG_RST_B, 1);
+       return 0;
+
+usbotg_free_reset:
+       gpio_free(USBOTG_RST_B);
+       return err;
 }
 
 static struct fsl_usb2_platform_data usbotg_pdata = {