}
/* start the controller */
dr_controller_run(udc);
- tegra_usb_set_charging_current(udc);
+ if (udc->connect_type != CONNECT_TYPE_SDP)
+ tegra_usb_set_charging_current(udc);
}
return 0;
udc = container_of(gadget, struct tegra_udc, gadget);
/* Do not set current limits for CDP ports */
- if (udc->connect_type != CONNECT_TYPE_CDP) {
+ if (udc->connect_type == CONNECT_TYPE_SDP) {
udc->current_limit = mA;
schedule_work(&udc->current_work);
}
return;
case USB_REQ_SET_ADDRESS:
+ udc->connect_type = CONNECT_TYPE_SDP;
+ tegra_vbus_draw(&udc->gadget,
+ USB_CHARGING_SDP_CURRENT_LIMIT_UA/1000);
/* Status phase from udc */
if (setup->bRequestType != (USB_DIR_OUT | USB_TYPE_STANDARD
| USB_RECIP_DEVICE))
#define USB_CHARGING_CDP_CURRENT_LIMIT_UA 1500000
#define USB_CHARGING_SDP_CURRENT_LIMIT_UA 100000
#define USB_CHARGING_NV_CHARGER_CURRENT_LIMIT_UA 2000000
-#define USB_CHARGING_NON_STANDARD_CHARGER_CURRENT_LIMIT_UA 1800000
+#define USB_CHARGING_NON_STANDARD_CHARGER_CURRENT_LIMIT_UA 500000
/* 4 sec wait time for charger detection after vbus is detected */
#define USB_CHARGER_DETECTION_WAIT_TIME_MS 4000