break;
case CONNECT_TYPE_DCP:
dev_info(dev, "connected to DCP(wall charger)\n");
- max_ua = USB_CHARGING_DCP_CURRENT_LIMIT_UA;
+ max_ua = udc->dcp_current_limit;
tegra_udc_notify_event(udc, USB_EVENT_CHARGER);
break;
case CONNECT_TYPE_CDP:
udc->fence_read = false;
else
udc->fence_read = true;
+
+ if (pdata->u_data.dev.dcp_current_limit_ma)
+ udc->dcp_current_limit =
+ pdata->u_data.dev.dcp_current_limit_ma * 1000;
+ else
+ udc->dcp_current_limit =
+ USB_CHARGING_DCP_CURRENT_LIMIT_UA;
} else
dev_err(&pdev->dev, "failed to get platform_data\n");
- pdata = dev_get_platdata(&pdev->dev);
-
udc->phy = tegra_usb_phy_open(pdev);
if (IS_ERR(udc->phy)) {
dev_err(&pdev->dev, "failed to open USB phy\n");
#define USB_MAX_CTRL_PAYLOAD 64
- /* Charger current limit=1800mA, as per the USB charger spec */
-#define USB_CHARGING_DCP_CURRENT_LIMIT_UA 1800000u
+/* Charger current limit=1500mA, as per BC1.2 spec */
+#define USB_CHARGING_DCP_CURRENT_LIMIT_UA 1500000u
#define USB_CHARGING_CDP_CURRENT_LIMIT_UA 1500000u
#define USB_CHARGING_SDP_CURRENT_LIMIT_UA 500000u
#define USB_CHARGING_NV_CHARGER_CURRENT_LIMIT_UA 2000000u
#define USB_CHARGING_APPLE_CHARGER_1000mA_CURRENT_LIMIT_UA 1000000u
#define USB_CHARGING_APPLE_CHARGER_2000mA_CURRENT_LIMIT_UA 2000000u
- /* 1 sec wait time for non-std charger detection after vbus is detected */
+/* 1 sec wait time for non-std charger detection after vbus is detected */
#define NON_STD_CHARGER_DET_TIME_MS 1000
#define BOOST_TRIGGER_SIZE 4096
u32 ep0_dir; /* Endpoint zero direction: USB_DIR_IN/USB_DIR_OUT */
u8 device_address; /* Device USB address */
u32 current_limit;
+ u32 dcp_current_limit;
spinlock_t lock;
struct mutex sync_lock;
unsigned softconnect:1;