From patchwork Mon Aug 12 07:26:54 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Chen X-Patchwork-Id: 2842904 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id C8E9B9F239 for ; Mon, 12 Aug 2013 09:28:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E1A2520211 for ; Mon, 12 Aug 2013 09:28:09 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1A3B720204 for ; Mon, 12 Aug 2013 09:28:05 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1V8oPt-0003X5-EW; Mon, 12 Aug 2013 09:27:57 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1V8oPr-0003Ln-6e; Mon, 12 Aug 2013 09:27:55 +0000 Received: from co9ehsobe001.messaging.microsoft.com ([207.46.163.24] helo=co9outboundpool.messaging.microsoft.com) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1V8oPo-0003LF-6G for linux-arm-kernel@lists.infradead.org; Mon, 12 Aug 2013 09:27:53 +0000 Received: from mail151-co9-R.bigfish.com (10.236.132.252) by CO9EHSOBE007.bigfish.com (10.236.130.70) with Microsoft SMTP Server id 14.1.225.22; Mon, 12 Aug 2013 09:27:30 +0000 Received: from mail151-co9 (localhost [127.0.0.1]) by mail151-co9-R.bigfish.com (Postfix) with ESMTP id 90991C00A8; Mon, 12 Aug 2013 09:27:30 +0000 (UTC) X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI X-SpamScore: 0 X-BigFish: VS0(zzzz1f42h208ch1ee6h1de0h1fdah2073h1202h1e76h1d1ah1d2ah1fc6hzz1de098h8275bh1de097hz2dh2a8h668h839hd24he5bhf0ah1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1ad9h1b0ah1b2fh1fb3h1d0ch1d2eh1d3fh1dfeh1dffh1e23h1fe8h1155h) Received: from mail151-co9 (localhost.localdomain [127.0.0.1]) by mail151-co9 (MessageSwitch) id 1376299648390827_20094; Mon, 12 Aug 2013 09:27:28 +0000 (UTC) Received: from CO9EHSMHS030.bigfish.com (unknown [10.236.132.248]) by mail151-co9.bigfish.com (Postfix) with ESMTP id 51BDF14004C; Mon, 12 Aug 2013 09:27:28 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by CO9EHSMHS030.bigfish.com (10.236.130.40) with Microsoft SMTP Server (TLS) id 14.16.227.3; Mon, 12 Aug 2013 09:27:28 +0000 Received: from tx30smr01.am.freescale.net (10.81.153.31) by 039-SN1MMR1-001.039d.mgd.msft.net (10.84.1.13) with Microsoft SMTP Server (TLS) id 14.3.136.1; Mon, 12 Aug 2013 09:21:53 +0000 Received: from shlinux1.ap.freescale.net (shlinux1.ap.freescale.net [10.192.225.216]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id r7C9Lnho003375; Mon, 12 Aug 2013 02:21:52 -0700 From: Peter Chen To: Subject: [PATCH 2/2] arm: mach-imx: anatop: add two APIs for USB driver Date: Mon, 12 Aug 2013 15:26:54 +0800 Message-ID: <1376292414-22922-2-git-send-email-peter.chen@freescale.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1376292414-22922-1-git-send-email-peter.chen@freescale.com> References: <1376292414-22922-1-git-send-email-peter.chen@freescale.com> MIME-Version: 1.0 X-OriginatorOrg: freescale.com X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn% X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130812_052752_401688_9321806F X-CRM114-Status: GOOD ( 13.49 ) X-Spam-Score: -4.2 (----) Cc: linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP imx_anatop_usb1_disconnect_line is used to disconnect dp/dm between PHY and controller, after that, the controller always gets SE0 for the status of dp/dm, it is not any wakeup signal for controller. It is used to avoid unknown interrupt due to dp/dm is floading after the USB PHY is no powered when there is no vbus supplied. imx_anatop_set_stop_mode_config is used to keep internal regualtor on when the system enters suspend mode, it will increase power consumption, we only enable it when the user enables USB wakeup (default is off). Signed-off-by: Peter Chen --- arch/arm/mach-imx/anatop.c | 22 ++++++++++++++++++++++ arch/arm/mach-imx/common.h | 2 ++ 2 files changed, 24 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-imx/anatop.c b/arch/arm/mach-imx/anatop.c index 71f1a08..7f96bbc 100644 --- a/arch/arm/mach-imx/anatop.c +++ b/arch/arm/mach-imx/anatop.c @@ -26,6 +26,7 @@ #define ANADIG_ANA_MISC0 0x150 #define ANADIG_ANA_MISC2 0x170 #define ANADIG_USB1_CHRG_DETECT 0x1b0 +#define ANADIG_USB1_LOOPBACK 0x1e0 #define ANADIG_USB2_CHRG_DETECT 0x210 #define ANADIG_DIGPROG 0x260 @@ -34,6 +35,8 @@ #define BM_ANADIG_ANA_MISC0_STOP_MODE_CONFIG 0x1000 #define BM_ANADIG_USB_CHRG_DETECT_CHK_CHRG_B 0x80000 #define BM_ANADIG_USB_CHRG_DETECT_EN_B 0x100000 +#define BM_ANADIG_USB1_LOOPBACK_UTMI_DIG_TST1 0x00000004 +#define BM_ANADIG_USB1_LOOPBACK_TSTI_TX_EN 0x00000020 #define ANADIG_ANA_MISC2_REG1_STEP_OFFSET 26 #define ANADIG_ANA_MISC2_REG_STEP_MASK 0x3 @@ -142,6 +145,25 @@ u32 imx_anatop_get_digprog(void) return digprog; } +void imx_anatop_usb1_disconnect_line(bool enable) +{ + if (enable) + regmap_write(anatop, ANADIG_USB1_LOOPBACK, + BM_ANADIG_USB1_LOOPBACK_UTMI_DIG_TST1 | + BM_ANADIG_USB1_LOOPBACK_TSTI_TX_EN); + else + regmap_write(anatop, ANADIG_USB1_LOOPBACK, 0); +} +EXPORT_SYMBOL(imx_anatop_usb1_disconnect_line); + +void imx_anatop_set_stop_mode_config(bool enable) +{ + regmap_write(anatop, ANADIG_ANA_MISC0 + + (enable ? REG_SET : REG_CLR), + BM_ANADIG_ANA_MISC0_STOP_MODE_CONFIG); +} +EXPORT_SYMBOL(imx_anatop_set_stop_mode_config); + void __init imx_anatop_init(void) { anatop = syscon_regmap_lookup_by_compatible("fsl,imx6q-anatop"); diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index df1d7b0..dcb3305 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h @@ -137,6 +137,8 @@ extern void imx_anatop_init(void); extern void imx_anatop_pre_suspend(void); extern void imx_anatop_post_resume(void); extern u32 imx_anatop_get_digprog(void); +extern void imx_anatop_usb1_disconnect_line(bool); +extern void imx_anatop_set_stop_mode_config(bool); extern int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode); extern void imx6q_set_chicken_bit(void);