From patchwork Tue Dec 27 09:47:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacky Bai X-Patchwork-Id: 708932 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3tnw580sxPz9t2D for ; Tue, 27 Dec 2016 23:23:40 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="mq4JZSKR"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754866AbcL0MXj (ORCPT ); Tue, 27 Dec 2016 07:23:39 -0500 Received: from mail-db5eur01on0075.outbound.protection.outlook.com ([104.47.2.75]:4128 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754804AbcL0MX3 (ORCPT ); Tue, 27 Dec 2016 07:23:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YuP9MmTSNaUU2sMGyk9jXlbPKpYAdI3m2llUrQxA1dM=; b=mq4JZSKRRxbL5uuNZQy7c03uaHOdvGot9ejQ6LNitLn36w/XWnWazS2ehNdO/LZyk69FQiuCjChZLZFvs8IBTOG7nmtku5FzaFSbEwvcPlSQcSsejMWYz2E2YCVM8Lsd9AAv6DXyHeL5dMNR6nFpQLGOvGdGqVRDU2FPl/ce8bk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ping.bai@nxp.com; Received: from b51503-01.ap.freescale.net (192.158.241.86) by DB4PR04MB538.eurprd04.prod.outlook.com (10.141.237.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Tue, 27 Dec 2016 09:49:26 +0000 From: Bai Ping To: , , , , , CC: , , , , , , , , , Subject: [PATCH v2 11/12] ARM: imx: correct i.mx6sll dram io low power mode Date: Tue, 27 Dec 2016 17:47:49 +0800 Message-ID: <1482832070-22668-12-git-send-email-ping.bai@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1482832070-22668-1-git-send-email-ping.bai@nxp.com> References: <1482832070-22668-1-git-send-email-ping.bai@nxp.com> MIME-Version: 1.0 X-Originating-IP: [192.158.241.86] X-ClientProxiedBy: KL1PR03CA0008.apcprd03.prod.outlook.com (10.165.63.18) To DB4PR04MB538.eurprd04.prod.outlook.com (10.141.237.28) X-MS-Office365-Filtering-Correlation-Id: cb821b58-9831-4247-b0db-08d42e3da8a8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DB4PR04MB538; X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB538; 3:1xH/UwYChflO9QaYCtsTvMmx91JJMmnfIpqZDUm+Ap8Q8hSfZBlHjqola3gKGbyrWfMFrzNvM0ctLMdwG3aORsWHlNKjyuvshITjsJrJrVqgDamIjZuG9xvHyy8x3AJTDyImtjxxrEfIhlaUcsBwEljEh8qEBJrDnBadCOM3GkOEUA90L8aUC/I42ORVUkjMurUZtulFOm6qHOpZWVuR1XoO5N/uXmVaBI2YzRrIc9W4poSi1MeGDX+SwNazI8pZPYylKik/UxgPFiNaiON3FA==; 25:LC4GTfNMUei0b5IZmFYGxaBOQ3ESlCMM9x3WqnT31qc2/nBNZLHzOjV1zd+6ItgVgXkUljXZkbzamQocX9JCPhZgLdf4naCOnissUAqSRv4L/QdD7xaoBIL2XylRUSZdnihZ43fJrhcda/GQ4mQZRnh79zbhdkIPc8IYGi2aMpY11U2JKLE0zDOShKsViPnPt86APQ4W5Rtt5ic2prkfwjrmvcoX+bKzr2AHkcm9mt21TBdcNv9BRkkJLf1+rGA/PLVweuF8xOhSK/SppHHEuwu6YQJGcz4rKBonGxh7U76vrKQ+TQ/90GnPEOWmUVLE/VevtvahSixYbsLF5MXahJ5LKYa6dvxIxRnNnB82zfKrgVq6nZCGUhpZO0+sChv5XOEGAvOtpmCLGaFInir3gPRAJ6gjZAqj+ajsOcNkaXFGXCCyBuxYo/ifEEcCdb0Xe4kIdmzEn3/gYVA58SEoxw== X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB538; 31:0P7PoIV3Wi8EYD/wAwQg3rYDy1i8OuYfVwoZrWqYUH7w0TYxq+3eNrk8YASTfxh4tQWiyOj12IFFG7J+jbOg0wdGwpFrz2VTrDsFtSi0isic65/p16xzfvrJL4SxXPLP9l+FtWnHPVVN51/KE5M5Gc9580ma4923IBleJkPRE/rHkQF6ZMNqVFdFGw64bvEFHc/ygKQkSvHBp1yucPCa6zuMB/ntH8BFj+WFhxKxV+6MEjOKgRXsQZ1RaYOmPTutTRGdBUP4G56F7jzECpfoQw==; 20:wXPRarZfcyPZKP7fZhRcPHraRmhuWvnrjwgdcjELhf5VXJdl7AF2ebrBul5v/Y0ujSTk1IKrgiZrR4Ex+rkWjKGpoWG45Z2xQyMO4c264MWBtJR2ww391dxDoCmVFnhOqt577CaXwexqLM2A1FwcHbKc0cuqE8xa5MjlTrt8h3bclPCc65ac15yxEbWlsTGOGIabRaA9BUKskENe2iwOn6sZktqQPKGH6xccbQ6iKmLpThTABD/lc4i7mW5Wa3QylgUSxh7jPi/jph0ZjmGXbf2rwLTbvn+EPyv7o6stb9hJfWuqlcNBx8WB5YkilmVa7EKmLXD9pnSp7e+eIu5OywcbesX06SEaAqsQWTAqmUrtLwdgSsC6bjJuyfsUaA7IKtvhEa+oYX1bI6kgS9fP67ds2Sm6mOowSvEG8felmVYb+Iggb9hrpmtgXhM9bCI3ouQN39P4+CefdZlYFcUm6fY4xjdBKeGqcpKGI2yvB0+YFMSjFAVSi1LWmGRryShJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148)(6047074); SRVR:DB4PR04MB538; BCL:0; PCL:0; RULEID:; SRVR:DB4PR04MB538; X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB538; 4:ziBghJ8cbEQXIREoWRKLu3whQt9L8OwWR0d7BfQqu25CwlSj8X7lF6GHvGhWxSmD5faol0HSHol3GKIg5K2AB6XVthjR0CVnXqYjZ0t1+O/PQEFE2lFIwL7fUKfDEIIRGR9j20dJPHNiflsdqAVb/+l/qYCDVfhspF3pYLn2P5qGrIBoTHaAytX7sgk5w6TDgSGGH2drz6mCepD+9ZWoKIgftVbXQ6FLKgrGPZjrCdyk5ft1mvvugvtgho7E1QFNoSQhTsrPJ44d9G6D3zajiDdMO497Kf+w5KGxgvvA9FYV4MBNILp8ryoYdq7tlMJPNP/o8cz4fpsYWIFTzktDSQ7UNBSNKWAJAScSdD5xmQGG7RkDU/hJUFa9HAAj9jRdf0O6SBVIuxP6D2QAqNC95wsuBsfqp3P1aTQGTtVTlzg96jL5IJ5nEezhm6NLSOf6NYuO6iFpZlxBR7lUbqjB4+yX4AB6wIRcBlLR7CTrC4jrz1L2WS/ZDormTEmQkW7mi0l7lAA7xpQF4C3Jc+xxpv4TW7xkvoPDON58mBRINMdwk5PCuCW7Yb4bvBc4yiVDrVE/CIY4MG6FwQyjiGNR98wY/a0AKc3hooJktx4dZMIjLVZuW6yvJMgy/9HT9Tjg91LqeGpUs8FVqJR63Bdj7Q== X-Forefront-PRVS: 0169092318 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39410400002)(39850400002)(39450400003)(39860400002)(39840400002)(199003)(189002)(7416002)(5003940100001)(81156014)(106356001)(86362001)(2201001)(105586002)(5660300001)(7736002)(25786008)(68736007)(39060400001)(81166006)(6666003)(305945005)(6486002)(6506006)(6512006)(38730400001)(50226002)(2950100002)(8676002)(6116002)(5001770100001)(97736004)(92566002)(3846002)(33646002)(2906002)(4326007)(50466002)(189998001)(48376002)(42186005)(36756003)(101416001)(50986999)(76176999)(47776003)(66066001)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR04MB538; H:b51503-01.ap.freescale.net; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR04MB538; 23:Pyy3X3nyDOJnu8+BBzo0ppXASyPPFovAfkF7OSRfhE?= =?us-ascii?Q?EtUHlFxMUW+7rnL2d6FeF+nst8PF/103WbY7zFpeKjTkNEn1r3Hh+kE+xVVF?= =?us-ascii?Q?r/CUzSGD/QVDMgqt6igi0r+Nw7pV7nVrfBaxTK4iflMCYfolz73Wt6GzSir3?= =?us-ascii?Q?ltBbe8LUuS8+khWi7KK0T20LQceZHEcsa0mn9s+JIAIqTSvxQlZINjjPil5+?= =?us-ascii?Q?wDDE67kSiBCJJ1IrYYUCDyi2ABMc8JcrdnIXifgJhcl9UxPM++0sEB6Xkl3O?= =?us-ascii?Q?6ikTP/aeXBapmiiLxnLTWxbURMAa795Ye9geHHuRh6brFmnzoY8vSZ3V3OX9?= =?us-ascii?Q?XH4uQiCoYibeH9ruAN/H37Lxs4ij9QkpHaf3ec/IaBh06uvLC188OR8iMPP/?= =?us-ascii?Q?0jqozzc9nPWsjllGddo8d6yAKBug9YMV6ihN0q2nUw5Uo2te3fL5ddNKpDHZ?= =?us-ascii?Q?1iDsFXZ2kXu53eRCP4p2c3WYwswmbW+kwcCOEY84OmcbNlCYypzenvbiFvTW?= =?us-ascii?Q?2r2jHOB1koHjR/SF7TMxZY1/G5WlLJJinf/FzJNoDR3LkMxDUKx4Q1GNdHxE?= =?us-ascii?Q?VnCA3kdfRKzO9QQYdX6f+VZYRboXmnZGPswEpHnbUb9Y+mFvNjMFLLy0bAkk?= =?us-ascii?Q?cZFLQnmKn2qZyucOZNKtdMof5nddjS5JmnAjbcsviA2zo4ZCKATv/V0jZJHA?= =?us-ascii?Q?NOuYZd4ATL7OEPmZBg1bgp2yCGz6Iog3ZM8pV9xpUJgpNOcrcrXsF9+4eT9Z?= =?us-ascii?Q?urSRk/8GMLyaHld5wyAhWNe97qPFLNV4JvsFy1wPFvkVBTdzmP/KwyWfMNUZ?= =?us-ascii?Q?q6A/jDq8enKdRj1MdVzY2kXGAO4v1qNZZpjHBIgc/Ye0uyUgFOkGKRVR8vnw?= =?us-ascii?Q?mNkDQBqvJ7bQ+tgRGhhKl8Zu1U2t2huWOTo4dZue/qI+Fth6W4xTlGx6MurL?= =?us-ascii?Q?IImsUS7vn9CyhwUs1c6ldRy9toFVRjvLLQbPZVPd+8sG6lvJoKZKAbIC04JV?= =?us-ascii?Q?Kl2KWTeCZN7F8hQtY8JwQ7rk2xi3nsULirAOjvWmR3mmKyhWA/rvo8A4dAkY?= =?us-ascii?Q?jdvDsEit4R99GtMzeDQfbVBvmXcE3yvD2OOh59MP0ERC2IrvUpDFNwkhmjdD?= =?us-ascii?Q?CprcT/u6BXbYexltBYAjvKdXxPV5gqJwrwzCJJ5RLJdseHioFgxfN1a/T8no?= =?us-ascii?Q?riy5PZFjx2BLmLh2G+Qkxo98XkaF0iAm1HnglsbrM6/baWY2eZVfXf7avJWB?= =?us-ascii?Q?dSH69SBQSaCvQYBbs=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB538; 6:IQXBGLGVN0x6yqC6SD7MCF5SRB5nckac8b3GT4wKWdubzuKp3ZgypxF9+L+6i71YdrBb3LqFDiCrTxuvsVMcLGBdj8MBkZusmMeK/OaPLsow1glrGDPS1cchdFnfezI7s2x0oDQ5qoruZDcM90tDKbaC0FC5H3HmSzC9rqM6B2vHSbTB+vSXqoRGbAt0+A37vrcN2iJ+gnUtN/td6Z4S1CMJM7Guh86HdYsLScHJHnPdM72kcclThitq0+NO9d+MIqFK0ywrMjg5OvaIddLhRGL8gNC1PKi/f+LAV5b49mkT7UF0Rpih9ZvoQ/IselaXlyfvbH2Uq949IjJpptvVdZ86xImCO49ImA1wFTDGU3Bv6DBUPxVdw7AZb29m77S+gd7eBdOdBQ9R1VxBZAW0ZC/AOV1cHhap9Bs+uSPFFU/u/rdl1g5ONXR1dM7N9bJbTJvm50uqEHE0iykzIN6qZg==; 5:UYDA1712uEiQQ5NPF/+USlDyJECjaDK9RTu0ArOfzpLFcA1dSIcyWJgpRPXcgXXvaKNY8Pev78jlbHqtgrS9PABID43Tq6O/tYvFZCfVorl4Bii/uOgw0MDldkPkWzGyf1mxaTEETZHa+qe3BCKq6w==; 24:Atm+VqX+Yd3izn0Ivdu3cvZtyrlsTS9SXX73QQYvPn+hbnW8CG3sdMirNYTtXkSYAlVr8ftzoq0ZPyx+8Osk6O8lqxPNWTNQFc7/hli0zxw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB538; 7:WQmPeuLyPTVtxYKh8n4I+7jVh7u43fCYx4L5KDY3mlRoes+aA/2iTQXWMhGgPnIdPYIa62eIdLqpvqg7RY6rCp7rIPlN5yGcZTXB+v6Eoi9CLJwDvwyiX9Y5ofZ31POJLMHQpYM0bDm6o+kkCuB+VGUMKb3Iwqm4vgCTWBPeM+8WeIVk0ZPUCK133pxzfUtNX19+SYArsR3BXNK+uRiXYp4GH9OKJHdmqt22D5iwesSSN97WOIM8zBDmT8/95IY7+iGStouQ00yDvARPA+U9IO/mOhZAcrL4YjJGrnQLkwwcmPlLvZZ8k7Z/eYMgUfNdAQcVgwgMJfJ2XFhPlkO/8SLfAOmowT0AMVTipR8clV9sUi/SQaPFtPfoqQw3yfR6g1XpKi7JFSvXvusqKRD5IXha/QujY5Gui8XMnvs+UebzKWc7OdQhdSkwDxViFqqq7XMtxJoPXVjuk0E4LcG/DA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2016 09:49:26.4805 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB538 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org i.MX6SLL has different DRAM IO offset, and it has no CAS/RAS/ODT/RESET pin now, correct the DRAM IO offset. To better support all different i.MX6 SoCs and different DRAM types, introduce a new column to store the low power settings for DRAM IO, then suspend asm code no need to check SoC or DRAM type, just get the DRAM IO's low power settings from OCRAM pm_info and set to each DRAM IO. Signed-off-by: Anson Huang Signed-off-by: Bai Ping --- arch/arm/mach-imx/pm-imx6.c | 17 ++++++++++++++++- arch/arm/mach-imx/suspend-imx6.S | 29 +++++++---------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c index 2ed4316..5fb78a9 100644 --- a/arch/arm/mach-imx/pm-imx6.c +++ b/arch/arm/mach-imx/pm-imx6.c @@ -230,7 +230,7 @@ struct imx6_cpu_pm_info { struct imx6_pm_base gpc_base; struct imx6_pm_base l2_base; u32 mmdc_io_num; /* Number of MMDC IOs which need saved/restored. */ - u32 mmdc_io_val[MX6_MAX_MMDC_IO_NUM][2]; /* To save offset and value */ + u32 mmdc_io_val[MX6_MAX_MMDC_IO_NUM][3]; /* To save offset,value and low power setting */ } __aligned(8); void imx6_set_int_mem_clk_lpm(bool enable) @@ -570,6 +570,21 @@ static int __init imx6q_suspend_init(const struct imx6_pm_socdata *socdata) pm_info->mmdc_io_val[i][1] = readl_relaxed(pm_info->iomuxc_base.vbase + mmdc_offset_array[i]); + pm_info->mmdc_io_val[i][2] = 0; + + } + + /* i.MX6SLL has no DRAM RESET pin */ + if (cpu_is_imx6sll()) { + pm_info->mmdc_io_val[pm_info->mmdc_io_num - 2][2] = 0x1000; + pm_info->mmdc_io_val[pm_info->mmdc_io_num - 1][2] = 0x1000; + } else { + if (pm_info->ddr_type == IMX_DDR_TYPE_LPDDR2) { + /* for LPDDR2, CKE0/1 and RESET pin need special setting */ + pm_info->mmdc_io_val[pm_info->mmdc_io_num - 3][2] = 0x1000; + pm_info->mmdc_io_val[pm_info->mmdc_io_num - 2][2] = 0x1000; + pm_info->mmdc_io_val[pm_info->mmdc_io_num - 1][2] = 0x80000; + } } imx6_suspend_in_ocram_fn = fncpy( diff --git a/arch/arm/mach-imx/suspend-imx6.S b/arch/arm/mach-imx/suspend-imx6.S index 76ee2ce..c9a26f4 100644 --- a/arch/arm/mach-imx/suspend-imx6.S +++ b/arch/arm/mach-imx/suspend-imx6.S @@ -104,7 +104,7 @@ add r7, r7, r0 1: ldr r8, [r7], #0x4 - ldr r9, [r7], #0x4 + ldr r9, [r7], #0x8 str r9, [r11, r8] subs r6, r6, #0x1 bne 1b @@ -179,7 +179,6 @@ ENTRY(imx6_suspend) ldr r11, [r0, #PM_INFO_MX6Q_IOMUXC_V_OFFSET] ldr r6, [r11, #0x0] - /* use r11 to store the IO address */ ldr r11, [r0, #PM_INFO_MX6Q_SRC_V_OFFSET] /* store physical resume addr and pm_info address. */ str r9, [r11, #MX6Q_SRC_GPR1] @@ -207,32 +206,18 @@ poll_dvfs_set: ands r7, r7, #(1 << 25) beq poll_dvfs_set + /* use r11 to store the IO address */ ldr r11, [r0, #PM_INFO_MX6Q_IOMUXC_V_OFFSET] - ldr r6, =0x0 - ldr r7, [r0, #PM_INFO_MMDC_IO_NUM_OFFSET] + ldr r6, [r0, #PM_INFO_MMDC_IO_NUM_OFFSET] ldr r8, =PM_INFO_MMDC_IO_VAL_OFFSET add r8, r8, r0 - /* LPDDR2's last 3 IOs need special setting */ - cmp r3, #IMX_DDR_TYPE_LPDDR2 - subeq r7, r7, #0x3 set_mmdc_io_lpm: - ldr r9, [r8], #0x8 - str r6, [r11, r9] - subs r7, r7, #0x1 + ldr r7, [r8], #0x8 + ldr r9, [r8], #0x4 + str r9, [r11, r7] + subs r6, r6, #0x1 bne set_mmdc_io_lpm - cmp r3, #IMX_DDR_TYPE_LPDDR2 - bne set_mmdc_io_lpm_done - ldr r6, =0x1000 - ldr r9, [r8], #0x8 - str r6, [r11, r9] - ldr r9, [r8], #0x8 - str r6, [r11, r9] - ldr r6, =0x80000 - ldr r9, [r8] - str r6, [r11, r9] -set_mmdc_io_lpm_done: - /* * mask all GPC interrupts before * enabling the RBC counters to