From 5bb9bfc097249becb0116014427d802437003162 Mon Sep 17 00:00:00 2001 From: li yun zhi Date: Fri, 14 Nov 2014 10:59:15 +0800 Subject: [PATCH] rk312x: usb-uart: disable usb-uart when cpu suspend --- drivers/usb/dwc_otg_310/dwc_otg_driver.c | 11 ++++++++++- drivers/usb/dwc_otg_310/usbdev_rk3126.c | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc_otg_310/dwc_otg_driver.c b/drivers/usb/dwc_otg_310/dwc_otg_driver.c index 2befa34ec6af..9bfa50cf96eb 100755 --- a/drivers/usb/dwc_otg_310/dwc_otg_driver.c +++ b/drivers/usb/dwc_otg_310/dwc_otg_driver.c @@ -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 */ diff --git a/drivers/usb/dwc_otg_310/usbdev_rk3126.c b/drivers/usb/dwc_otg_310/usbdev_rk3126.c index ccc817b7d25e..a6f174cc322d 100755 --- a/drivers/usb/dwc_otg_310/usbdev_rk3126.c +++ b/drivers/usb/dwc_otg_310/usbdev_rk3126.c @@ -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; -- 2.34.1