rk312x: usb power optimize by turning off differential receiver in suspend mode
authorlyz <lyz@rock-chips.com>
Tue, 2 Sep 2014 12:34:28 +0000 (20:34 +0800)
committerlyz <lyz@rock-chips.com>
Tue, 2 Sep 2014 12:34:28 +0000 (20:34 +0800)
drivers/usb/dwc_otg_310/usbdev_rk3126.c

index b1467999657264bb35ce48557a8fa74162888cbe..4f7326ff6eb952c311c14d30466eaea3c886952e 100755 (executable)
@@ -6,6 +6,9 @@ static struct dwc_otg_control_usb *control_usb;
 #ifdef CONFIG_USB20_OTG
 static void usb20otg_hw_init(void)
 {
+       /* Turn off differential receiver in suspend mode */
+       writel(UOC_HIWORD_UPDATE(0, 1, 2),
+                  RK_GRF_VIRT + RK312X_GRF_USBPHY1_CON6);
        /* other haredware init,include:
         * DRV_VBUS GPIO init */
        if (gpio_is_valid(control_usb->otg_gpios->gpio)) {
@@ -210,8 +213,12 @@ struct dwc_otg_platform_data usb20otg_pdata_rk3126 = {
 #ifdef CONFIG_USB20_HOST
 static void usb20host_hw_init(void)
 {
+       /* Switch to DWC HOST */
        writel(UOC_HIWORD_UPDATE(1, 1, 3),
                   RK_GRF_VIRT + RK312X_GRF_SOC_CON2);
+       /* Turn off differential receiver in suspend mode */
+       writel(UOC_HIWORD_UPDATE(0, 1, 2),
+                  RK_GRF_VIRT + RK312X_GRF_USBPHY0_CON6);
        /* other haredware init,include:
         * DRV_VBUS GPIO init */
        if (gpio_is_valid(control_usb->host_gpios->gpio)) {