rk312x: usb-uart: disable usb-uart when cpu suspend
authorli yun zhi <lyz@rksz-server102.(none)>
Fri, 14 Nov 2014 02:59:15 +0000 (10:59 +0800)
committerlyz <lyz@rock-chips.com>
Fri, 14 Nov 2014 03:02:14 +0000 (11:02 +0800)
drivers/usb/dwc_otg_310/dwc_otg_driver.c
drivers/usb/dwc_otg_310/usbdev_rk3126.c

index 2befa34ec6af82438130dfd924da0ef85c7eb579..9bfa50cf96eb1bc474bb8079ff289f0484abb8fc 100755 (executable)
@@ -1620,7 +1620,11 @@ void rk_usb_power_up(void)
        struct dwc_otg_platform_data *pldata_otg;
        struct dwc_otg_platform_data *pldata_host;
        struct rkehci_platform_data *pldata_ehci;
-
+       if (cpu_is_rk312x()) {
+               pldata_otg = &usb20otg_pdata_rk3126;
+               if (usb_to_uart_status)
+                       pldata_otg->dwc_otg_uart_mode(pldata_otg, PHY_UART_MODE);
+       }
        if (cpu_is_rk3288()) {
 #ifdef CONFIG_RK_USB_UART
                /* enable USB bypass UART function  */
@@ -1666,6 +1670,11 @@ void rk_usb_power_down(void)
        struct dwc_otg_platform_data *pldata_host;
        struct rkehci_platform_data *pldata_ehci;
 
+       if (cpu_is_rk312x()) {
+               pldata_otg = &usb20otg_pdata_rk3126;
+               usb_to_uart_status = pldata_otg->get_status(USB_STATUS_UARTMODE);
+               pldata_otg->dwc_otg_uart_mode(pldata_otg, PHY_USB_MODE);
+       }
        if (cpu_is_rk3288()) {
 #ifdef CONFIG_RK_USB_UART
                /* disable USB bypass UART function */
index ccc817b7d25eb0301eed9a37f318ecb430d14078..a6f174cc322dbe44ac16c4c65945a120a38f4e16 100755 (executable)
@@ -127,6 +127,9 @@ static int usb20otg_get_status(int id)
                /* id in grf */
                ret = soc_status0 & (0x1 << 8);
                break;
+       case USB_STATUS_UARTMODE:
+               ret = readl(RK_GRF_VIRT + RK312X_GRF_UOC1_CON4) & (1 << 12);
+               break;
        case USB_CHIP_ID:
                ret = control_usb->chip_id;
                break;