From patchwork Wed Jan 10 03:05:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857887 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="nn6LhT04"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYnw1fF5z9s4s for ; Wed, 10 Jan 2018 14:07:00 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id E4351C21DB9; Wed, 10 Jan 2018 03:06:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id BF009C22080; Wed, 10 Jan 2018 03:06:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 77948C22080; Wed, 10 Jan 2018 03:06:18 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50059.outbound.protection.outlook.com [40.107.5.59]) by lists.denx.de (Postfix) with ESMTPS id 51082C21DF1 for ; Wed, 10 Jan 2018 03:06:11 +0000 (UTC) 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=imufWWKB5VeEEML5HSB4CnmjeclXGZtR5I9mejbo8A0=; b=nn6LhT04nyzHuhN6P5fWfab6cnzNrZx1+UgDybzEx33G8oAPK2zw6ERavZSs/iEBrMnq3jtWoTm+8oZbh+eJuYY80eGT2jOxqqRiF3kv3MQvvVt0vEgsfVb6bmFhzXUUk8Ju1eeLhHfQHqfLsiXj4z7NA07xsWExFlwI7Ke14TE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:07 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:32 +0800 Message-Id: <20180110030603.27864-2-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 5561c954-9e03-4184-274f-08d557d71969 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:6RM2FejAWSrwOjG2QsHFvu5yv4JXtzNEyP0Nhkx4sD126tx57pIUh/3hJx3EktfV7p9IDZx78LVLW15FqDPEIMBEcQ6a9zV5KRKzdS4hXW2GiI9XEVPTMVemJL5Rsuu4WOBvChJESwJZUkJlVefcQQ1IHyI/R6i2SbRbfau0fOXq7PrWJEoARyGqD2hyj6ban8d/e5QXPtCh8sv7x48wqhdzPxcTKPBPZuV5GB0hOXg7Rs8Fo5DXR2a+oEW2v/2c; 25:agwAGew3zw7PSVkD0PR2n1GPXPBBbolj/yABK0kLmpR2Sqgy167HsacJhjb8GAcCv8VPIX9rq7Fa6KtdvgBWF5+2mTawH264L0IN6b1s5Zi77gFknJ8Hl06YscYbHhCFGHe/4KipgTsJeagpoAah33Ed9L9uH9mFzSb67rJZ6+MkltcknGhOFWY2puVfmeh3jx2XH9fNl8rEv3eVxs1FB+fbYImShC+SlNIzrqK82GT6/y5LAJ31tyEF/EBTZDoEMio9egU+94ZmpKclx4DHEtnScO7I4/Xq5w8Q6Ac3r4namL0AJCEdZc6s2ImhQ18rG4UAwB0Wl5qOKUzjVMZgdg==; 31:QrU0HccclrBh1axpd9Soa4xzy73Y5rz8bwkYKuT7Pn12+86iwOWtrYNeDvSfJMhfpPh8+SQxoCtdiwMaQn9jARDeO1ZpFYSYfp0mfNZL+3KutQkDlmOIIqkVSKqFmI08Dax8NlCKrrNk6maAmhil0H7qE1jno3jFSPz/1pp5ih99BV+cuYFhcl33Ps4QDDzuKFi22d2I44SSis5wY5xda3td6Iq0iEt1hWZS5u1JWCM= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:8321CovkEXNu6HOEqiISh4Opyt2YS5AYG5BDd5LYqxwxa0qf9YImyu4V5EYEyV1+V/tCGCt5eoTte5fmAi5xhhYpPBzOagsuiAjCgo5MmONCyYCOMuMS6PGmjb7ZK0gkVAbXPG5J93kHCRljqtA1HqCDd5qhk2VwZu/WqpIdoDibjkoiI1RX2CX5jm2vE9yGt3ACdFt/6wcapD4a+GYRBMwLtQI8NBWTGa09mb1WIcK7pJ6n1NmC6SRw5wcHaowol6ezBuOwU1AIuLX09g2mpkSeULy/xkwlZK7T8Cdj1OdaiuBkTXwRkg5jE4iauKChchkOXhOFnSfA5c0b5Ov9J4k7A6lihcraUpOoygvVtXfx2nsLgpwQqW6SbcbTjgNgiuormYt5rfP8ooZ+yuC9O2TVLciDj+/hRk3qo59ghZx6w7xhrWXtoFiZYsGulfopX/zrGFAX58pEJaBYSohkCznQzG7bQLAJF9Gx/5LvxkMMcBte3F8bRB1ZM2W1Fpzp; 4:8H1e02v23IOmNKmzznfRV69rciX/RcRGMQpqa6SqD5mzvDXZ4v+ep6OQhr17khiaGtViJ/tPcv+kRC1Lqk5llWMHxvB1lU3CGAJu0OJe/Ymmk6E5HVHPai6q9s6qnmcP3pPS1Zmy9vZdq1aiGkY8qXu5uB7EFSo+F+wBZY7TUDwdg+/siP84r+BvNYueSHc84j54rgExRsCjmpCsUxmW4baLB1V3uA4hgBaPbDnHb2khY2GeRjyFrDTziFYstuPGADAt1whEY/8WyRWnINibhH4m7b6idsiSOYT7Ewi6GFSaYmoPU6vxRGOZS2AdU9EfZYrFDMMEzMsiWliYtJ9j/uU84XKQcNjSGAPC+OC/H1M= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:5YXgLLXVoJ6Ps+YVVFxIMes1Qz2PmeJ9HH7LVy9kK?= L2vWNQs3eqSjmXA5rnzckIiQ0ZvwSo7d08tbo4GOstNmK8v0cSdaoRYzQh9pCuzuB9CditOC1kWwQOj2L9wUCpIqjTWq0ycXnLyhY40+IlJrDzsBPh9Dt5FCSKXdTzeS52q3gfrGUZkdoO1/o+41wDZJp+ONvTUvOk5v38RZKHnB4QnS51hDGYG4jlSDwW/VK9ySkBKJqAkwlofkAPBwQCYePHgLw5G/IiM49THTUsNA05Qu0V8Pxc7IszLitqSzcncqDysHEEoX3SG2kqxG8cIHAKhEBcLQCek5RexKMyl9aHO+j35PjADN9oYX4Ue1/l52Hm64bbRHNp6rDm5ceHtR5Gl6LbsqXtHKQGHnuQqcFr7jo73iP+gUFV+K5whnOrmF9DE2XX4Q5yrWHIa2qbBMED91GRXp2EwRrDF9zvnmghAme6yh/9ypfxOg1pcwWGFF4cYV2QzZx/RkmBaLTmZso12QOdCB+QuL8jmOSH9VoA7KJBFOyXTN1/M4hYfvZJRDT02E8RgokZLhaZOJ8CtIg7SLz1J4hke6h+TmKTI/CJpZl8jT1D6KvAclRZXoeQbSVoaRWQZxGm5EfJ5luMaRChFaK7yQEQnXYN4tKn8aJGYkigIyTrAJdllXdvI81J0mqE+kfUgKS9Dj8OAIMzjEIJjMI74Xr5YwN0LE1dpL3O23ZVZ+syVXeQ3HUIEPCMzU7VcXWBToYrcDKnf2TRIey4hsVN2Tnj3PBJ6PigCscOBV/D0+2bYdzpPCaElRQcqDXODpZgLn2M+2YCxc+GWHo7VY/rJz8p4KN1BXyeCQPnMkGyB7bX6p23IY8f4ZaJhB7vdJsrGnJasW8amEegNSSS6TfCY0uao3h5Bw9jvDTVDf4zycRJfBFVFEa8lW3OofifhWwfnSQxJtc4IU8trcHuB5bmaAqIwKB++mCAjFOeWHs4kjG5xrJpgLGAyKC5Jze1gcw+97MuLowRiIkWet0KQVKTo3gRT/ng5c4578gtGxZp5JV8uVnn2S1Pt44wUBB7pSaseOiJFhyTBOSVS5OJ35WdVnh8IJFZDInLgEooCG4RUpba0ARmEGF5rO6iGS3zowVEfubTgCTo8M+6Q X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:xJanYx8ixY6d/N7nya4ykQLVC4ElZRS92wwb7OX1OrAM9ktyq/ozX3sEP3cwlRypGJBJfeYnKa+rrI9C/zAZOen52No48PJkGxbOsKUFPgOYROt0QrJdsc8OQuirjJ/GW7bKZsTs5+IttrQ2DBI4NR05FBlKEZOdqgZS0d4DPxOqfc+Ro2ZAKH6JpuEPCc3bbK7VzaJMI3nN7Dbo+XpNphElCGV5+QxbZCBGUd428xIrB7Oafu9x+cf8U9U+wbQ6oeVAiqgVJw7kOj+Db5UkFPk458crPqgG71D0gveE69vC2Y7BAmKxBUsd2eXJvPWC2w+G2ZVH+iLsU9sUG1dI0fTGKH04mUVjd1spf8DBkrY=; 5:xED9/zJK725qbIAOmBOLopamq4d0v/EhvuUEWyGdfGF2RNq3jf3Nyt7RnQvcBjrOHM0VxC3H/Apqy19QFrzTjTvx1Xt5WELpZDhEPuzQu3qRcYLFMSMQiZuJL1H9/LDUlwVAI4ymDjKcWBh2FnswWIhY8fIbv7e/agJ51P2JtdE=; 24:XyB0cH08cR4hEpY0e+HHs2Q7/ApCi+b/O+byIa6vjxGorc1NElkzl4Y6gCL9PWLlLACJ8vaRUVn4ZiXkn4aVXv6RyMsmdEfUl6QRo2SdHWU=; 7:O9ejK2Qwlb0NwrNHpmdef4looGK//KmxCYij9fwBwlfgUMZhuTiIDrCuwDbnXVQfxQhKpjDPHTHbnT2EQgHimcSM6Qu8y2m8eJyyvASIKOoi8dwpQ3j9ZyZP0iCkDsYXxqjqMqUWUd6LZqwxjscVciXcRPPE5pGHD8LC+c3by9T0MmTCTCKCL5UQNmqIY67omvNKonZE3EReAR2vM0SNGCIRP8fqak38fkG/i1KJX9m12hRiuLWETzI6Uaq5i+hB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:07.2298 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5561c954-9e03-4184-274f-08d557d71969 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de, Tom Rini Subject: [U-Boot] [PATCH V4 01/32] arm: imx: Rework i.MX specific commands to be excluded from SPL X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Tom Rini The "clocks" and "bootaux" commands are only usable in full U-Boot, not SPL, so do not link them inside of SPL. Rework a little of the bootaux related code to make use of __weak and declare parts of it static as it's local to the file. Cc: Stefano Babic Cc: Fabio Estevam Signed-off-by: Tom Rini --- arch/arm/mach-imx/Makefile | 2 ++ arch/arm/mach-imx/imx_bootaux.c | 13 ++++--------- arch/arm/mach-imx/mx5/clock.c | 4 +++- arch/arm/mach-imx/mx7/clock.c | 2 ++ arch/arm/mach-imx/mx7ulp/clock.c | 2 ++ 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index d7966cfd4a..cf39d08bdd 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -28,7 +28,9 @@ obj-y += cache.o init.o obj-$(CONFIG_SATA) += sata.o obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o obj-$(CONFIG_IMX_RDC) += rdc-sema.o +ifneq ($(CONFIG_SPL_BUILD),y) obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o +endif obj-$(CONFIG_SECURE_BOOT) += hab.o obj-$(CONFIG_SYSCOUNTER_TIMER) += syscounter.o endif diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c index 69026df763..b62dfbf6bf 100644 --- a/arch/arm/mach-imx/imx_bootaux.c +++ b/arch/arm/mach-imx/imx_bootaux.c @@ -6,27 +6,22 @@ #include #include +#include /* Allow for arch specific config before we boot */ -static int __arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) +int __weak arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) { /* please define platform specific arch_auxiliary_core_up() */ return CMD_RET_FAILURE; } -int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) - __attribute__((weak, alias("__arch_auxiliary_core_up"))); - /* Allow for arch specific config before we boot */ -static int __arch_auxiliary_core_check_up(u32 core_id) +int __weak arch_auxiliary_core_check_up(u32 core_id) { /* please define platform specific arch_auxiliary_core_check_up() */ return 0; } -int arch_auxiliary_core_check_up(u32 core_id) - __attribute__((weak, alias("__arch_auxiliary_core_check_up"))); - /* * To i.MX6SX and i.MX7D, the image supported by bootaux needs * the reset vector at the head for the image, with SP and PC @@ -40,7 +35,7 @@ int arch_auxiliary_core_check_up(u32 core_id) * The TCMUL is mapped to (M4_BOOTROM_BASE_ADDR) at A core side for * accessing the M4 TCMUL. */ -int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { ulong addr; int ret, up; diff --git a/arch/arm/mach-imx/mx5/clock.c b/arch/arm/mach-imx/mx5/clock.c index 610098c175..284f6d4cde 100644 --- a/arch/arm/mach-imx/mx5/clock.c +++ b/arch/arm/mach-imx/mx5/clock.c @@ -911,10 +911,11 @@ void mxc_set_sata_internal_clock(void) } #endif +#ifndef CONFIG_SPL_BUILD /* * Dump some core clockes. */ -int do_mx5_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_mx5_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { u32 freq; @@ -947,3 +948,4 @@ U_BOOT_CMD( "display clocks", "" ); +#endif diff --git a/arch/arm/mach-imx/mx7/clock.c b/arch/arm/mach-imx/mx7/clock.c index 8150faa1a3..c11042d6f5 100644 --- a/arch/arm/mach-imx/mx7/clock.c +++ b/arch/arm/mach-imx/mx7/clock.c @@ -1096,6 +1096,7 @@ void epdc_clock_disable(void) } #endif +#ifndef CONFIG_SPL_BUILD /* * Dump some core clockes. */ @@ -1131,3 +1132,4 @@ U_BOOT_CMD( "display clocks", "" ); +#endif diff --git a/arch/arm/mach-imx/mx7ulp/clock.c b/arch/arm/mach-imx/mx7ulp/clock.c index 77b282addd..553d62149d 100644 --- a/arch/arm/mach-imx/mx7ulp/clock.c +++ b/arch/arm/mach-imx/mx7ulp/clock.c @@ -323,6 +323,7 @@ void hab_caam_clock_enable(unsigned char enable) } #endif +#ifndef CONFIG_SPL_BUILD /* * Dump some core clockes. */ @@ -363,3 +364,4 @@ U_BOOT_CMD( "display clocks", "" ); +#endif From patchwork Wed Jan 10 03:05:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857890 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="j6bjgM3C"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYr14mvjz9s4s for ; Wed, 10 Jan 2018 14:08:49 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 5F09EC220AB; Wed, 10 Jan 2018 03:07:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9CB6EC2208C; Wed, 10 Jan 2018 03:06:25 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B0EE3C21DF3; Wed, 10 Jan 2018 03:06:20 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50061.outbound.protection.outlook.com [40.107.5.61]) by lists.denx.de (Postfix) with ESMTPS id E5753C22019 for ; Wed, 10 Jan 2018 03:06:14 +0000 (UTC) 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=26zvFlawviEugIH7GsxdWGlDZ31UQdfwUMLEoNiEdg0=; b=j6bjgM3Czouph0eeflUCvCJ0MFpJtnUzBeBYd0AeaKVYAz0roLbm2xDpedZeVVv8DlteJmEMEYeRVMIP9rRsad5622aw1N10tv3iC9vT/xByXSrd57H31GcHS4bRE4Uush/VZuhBKO8Lb/EbAWr0NGjgRZIKuxmvGAYFHhJ/Np4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:10 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:33 +0800 Message-Id: <20180110030603.27864-3-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 18cd5e55-d5a5-498b-f607-08d557d71b96 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:UzciZYNeDpjSX9QBRwNSKqbusuWdwS3pOQjrRDxNzrmxMkDF218OmGvv3qEt47yZDZvXqxPT9kILoqTAm1E3scu/IWoaB5uNmcA7yjobpJLemz1k+juD1oK9Ukmci9wQg/86DQruALY68cpbpLDsoyB+mbB9TOXQ9EO+llGO+WyVlbg0Y5aczEN/3JSqLwuMts0ZveLodYwykB/CqOaQFouKXatdioNgX3DeLgD0aCWLuJyzTRpog5bTRJ85oy9N; 25:TlMjyCDB4voaOwAx4o1jCCXBBx4RSpwaoA/kQ5eYAB8fMCZT/AZxbz+lMKbxxSb6PkH05Ps1/sCbKfsdB3AurNuEjVIT3fA7ziSXRlBKo1mm7ZyXoecDFHcnSyQFXyk4u+m5bLotPfTAqV6vMvJKy4FG/eo25hBpZcRv84GWwBeQ6GeBvLOpiN7ZRje1TI39ZD6pccHgP9gRlTOnpU7jMJ8/c3hNSBOf5XEu6vF6kTJFPprRf3R2SJ8LF0O4h25FSGEvmWYlBg/udynryxkhddCLGAqvNbFsahBzzX6hT1s6nDuGo2qDkHY7a/+Gy4Bmwewo2FBMzjc4vdhgw4RMVA==; 31:XkbL9WNFFe4dbyppWx7UOXuwhp4oKiEOAdEsRKbDYMkcFNYqVvqZx4R0XCyFgqJ6k+5V+wNREUpGxZGG/pZU2Hf3e/SHLBykrzca5YKgqvscFH90T6rANS9otxQY0alHMb/wEpC6IRU0D3h2KDpVAFC917tjc6I0c1wRgokNAvU6O6ML5d98LTUtEPgrCOLKU90q0tPt0i91ckuA69OmlnvCAWq/bZY/ZBgu+aAs5H0= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:FTInnCWErtyB9Gh5YLDPhST+fq7hTEGfUnzB+lZbmTruTgUeB9wXqemsMSC/jh7+3uqwZESAG1Rh4KQ41fWOkM9S9xXoQQ9NUwjPLOD9RtnJ0vpeLGRSfMKg/BfnBbFlKIG3DdRG8ykg2r0eqD+8muHv/sgwpffXmdoeugDiJ0/6cFJ4CMl/KYdFrpZWEIr8eAsqi//WoszS29uL09i2g4qUA9R2UJM7zwDVbZjPYD44Q1fOJjeWLlWtmN4xrwnBcLrvkmuJAyDECQWBAkr4hxLO/UMN56oZ1I2LmoT0b6uQ2Ma263g3+eH0KKmn/zUWNEGsizoLWaAibN0kCb8HDKUw2CaVQe9YiQkr6xuzkGM34K78tSeFJw1R/p9yaa3NU9buuOFeZ0jPIvCH81j+6IZROLwAo/XqoyRcvqN50318zpwRgKPGavr2pVBGzH/3qcPhtyUvh0gOIwkMhwDFroM/NBH0v8inkjn+WW/CEi3RvsSlfc0oEmbdwO6dVAWb; 4:6TldITMPf1td5QTFMC4xtGlTIDR53nELiE8zJnOZeWYh/GFGHT93tbxBepPq/FIzimh6dbt8zRI61ZuVKtC42We1tWU6dZOB6aMUpW/R+1QEGnmTsfdHLXzEJE68DJGb9jpsWwznI1Xnf7g1JHxoSDiFdYQxgSRiIBIDbMuOBPqAt+2ztHZ3EcAisl6Yi4s8EiF6/xwqpVJRvnyALW2e3HLeTOqpTzuPp+hyml13ysApRYyid0mx4ExAK1ubc6UzO3roEtwGGR9tdcD7oJRM/kUWrookFc1rNn49/7aGp9neqDZ6zIf7qRvLYfGss5HM X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:rhxUoh302ymEE/cwvXNVGDwo9qaF3vQokR5XP1RBO?= hxaIB7QyRqWmsaM1LN93ha6oYsfXlKaOjj49+Htp8LvHvY5bTKfXoQJba+vtry78vPSXDW2ISnmOjpr1eAKuki642+3DT/XT0QeN5JDO+Ij8j2vfdpzW8XCj1fbyFfeE6x2mBAJS751Z2vNkr0Qd1jcwGTGE9EQy/pag2GZ8pxituEMEixiiFkjytYnJRYfuCaNlIZ/HI//idTmL9kZVRNNL4flPTWMoFk/EgaEbmWA2rup91BxoKsMpnWawea8L2/Umk9FlJA3cmUdzSztE2kSYkoAhgX+YvGMRJtOC/xUNHFiFWzfkVXjDiOxwWYA9hiwKMl6Fbqx18fwDMBB1ju5xmug0HuTyB5lNwTi8/pNdE6To5tYY7gP9h6QHVRvEE3IMMnSQXWFeE9JzTHnHv+JNLrI3w8BQD9Da5U7hUXgcVrPBeBLIR21D5+L6ac8eS1niqMt8Jm0VIdjNgX0CRio5JNG5Xc4aYznTJ1zmlblFSEi59p+H6npsyg9eQTCB0UgoGoMhvobI9fb0hNiEUvnYBVYyy6i9MhaH1C0962TTDXaxelsCHRha+MyqUcHLZ3x5kH5x5NVsrNu5tcGI40SvHTFu3NPIZ701+eR9BhQaBbKIRkxMo+/1jwpKuGkVQoyRAC0gu1e48SQmGlUUmCRryOiq1mcFvEzBhDYZDf6y6R7YUqvHACw5LKI8Bane4BTmlh1WxxU0Oxg0/woHUsNADKsiikXSiSo0P7CTtQZA+yTpTOvx5nyJVbSDnDNffa4jgzen5zij1YAFdW1tni7fhLCiusXcIyU3A1m//j5WkMf0w4eW3HZgnAkg795hmWROcpCy1Nvs/XVrKjupTpwDeC3iOPH7hweg0YuQSVAzM/meaiFBBjZBkFLE1CaOQeHjwxHiXgknITc2TpGMFChBKqg/5lOF3YHkXb+CYTI4wLk73V9rqf8x4jBMa6EDB5bu43/mdKDQQ9ynf8LgEZu17R04o7mh70t66unHo5LYOBUAzjOi4CE2iyEDtHt539G61JsmdDlGoLIEmdB0QqS6EuxeJFgPM4ulCe/Tvd6yFSBGYlkD2NDK1HcFFDnyM7Xe9LFUjj5Clr7PUVh4hzw X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:yQVXTthZWyr9dBWtkOWVeFwqXHFPixOySDRFPTjjJ8IIgjKy/FBUhf+OHXOhgqNfch9Aekzx3/RGXa1Ueuag50DcYM1qJGpnyoC98HMavLm0Z481EdxS0z0uu+w5Rzz9/2GnDrWDyY32NJgGn/1xzY6fOWvBfC43gyjwdCSR+wgyn/owLRptfhwnLNORTkrclyBp9WM5eIx6i/tnZEBgQ6xCn67ixIqHaMD8UT7hLI/zKOkYPEyqKXgADpIPWYf9UTpagLYVnNgH+qont72WDdAe7GGgvaA3sDoXyK03KMIFzWAL8x4g6CuMod3HB2n0Pu8Y8mYizjZU3rd5nhHnP8vFfNUvGEq+r5Vyq5g8Hqc=; 5:+R+d83UVjPtjY5VzCewdVkZYJv9Xf85dZVpC7ZEBOKaaGcRKfBmhywO13nEjlp7jXobPp9Fj2vaN0gShlW2SD4tapN96U/9Pq3ggsHRXfb24ramHlkbNqkbr4V8UieTzwiZ7OMf3wgjz0n0dAEGR/q2OhcCQCEkq08fZ0REPNw4=; 24:gpZ0zXYKh7mDbe8wTxqRomTa+Fw8m7pM/Is5KXjfhaRYaEq+vARZ0CKojoTvOYcO/UXJaHXhY3+VMEdbOjuwiYSxWT/irdA1YmuZX8xBkiY=; 7:PumfFJQ6ac7UcDcRhAAFOWX/aheJkW/mk+2W2jC+Z24jLH4HYcHOzTB2w1NXydARgYusqIVh71dX2j+vapqs2/c0mo3HezQjjERdoXgqYyfWejh4L1lO8rygFGJKArDisBehr2mJwXZpJgkHG3Wx1GWsiPo0VmwOlBdXWBKNT5+0GdSPYQM2iWOB3lngLg9IsGu6AJxnOPO4qR6GMkiJnU8wjxJG82aYz9b18qLFHSZ0cdLUKLz2SQf+C9QGhu+b SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:10.5886 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 18cd5e55-d5a5-498b-f607-08d557d71b96 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 02/32] imx: add i.MX8M into Kconfig X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add i.MX8M into Kconfig, create a new folder mx8m dedicated for i.MX8M. Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/Kconfig | 14 +++++++++++--- arch/arm/Makefile | 4 ++-- arch/arm/mach-imx/mx8m/Kconfig | 10 ++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 arch/arm/mach-imx/mx8m/Kconfig diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f2c35e32c6..b095bfe2e5 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -604,6 +604,12 @@ config ARCH_MESON targeted at media players and tablet computers. We currently support the S905 (GXBaby) 64-bit SoC. +config ARCH_MX8M + bool "NXP i.MX8M platform" + select ARM64 + select DM + select SUPPORT_SPL + config ARCH_MX25 bool "NXP MX25" select CPU_ARM926EJS @@ -1180,13 +1186,15 @@ source "arch/arm/cpu/armv7/ls102xa/Kconfig" source "arch/arm/mach-imx/mx2/Kconfig" -source "arch/arm/mach-imx/mx7ulp/Kconfig" +source "arch/arm/mach-imx/mx5/Kconfig" + +source "arch/arm/mach-imx/mx6/Kconfig" source "arch/arm/mach-imx/mx7/Kconfig" -source "arch/arm/mach-imx/mx6/Kconfig" +source "arch/arm/mach-imx/mx7ulp/Kconfig" -source "arch/arm/mach-imx/mx5/Kconfig" +source "arch/arm/mach-imx/mx8m/Kconfig" source "arch/arm/mach-omap2/Kconfig" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 0e0ae77822..5881fdc8e2 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -95,11 +95,11 @@ libs-y += arch/arm/cpu/ libs-y += arch/arm/lib/ ifeq ($(CONFIG_SPL_BUILD),y) -ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35)) +ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 mx8m)) libs-y += arch/arm/mach-imx/ endif else -ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs vf610)) +ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs mx8m vf610)) libs-y += arch/arm/mach-imx/ endif endif diff --git a/arch/arm/mach-imx/mx8m/Kconfig b/arch/arm/mach-imx/mx8m/Kconfig new file mode 100644 index 0000000000..3a84c2f2b0 --- /dev/null +++ b/arch/arm/mach-imx/mx8m/Kconfig @@ -0,0 +1,10 @@ +if ARCH_MX8M + +config MX8M + bool + select ROM_UNIFIED_SECTIONS + +config SYS_SOC + default "mx8m" + +endif From patchwork Wed Jan 10 03:05:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857889 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="CCj2uSmM"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYqW6Vg0z9s4s for ; Wed, 10 Jan 2018 14:08:23 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id E8988C220F0; Wed, 10 Jan 2018 03:07:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8542CC22019; Wed, 10 Jan 2018 03:06:33 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3F1E4C21DB5; Wed, 10 Jan 2018 03:06:24 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50047.outbound.protection.outlook.com [40.107.5.47]) by lists.denx.de (Postfix) with ESMTPS id 5936AC21FB1 for ; Wed, 10 Jan 2018 03:06:18 +0000 (UTC) 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=S9TcXkk4y4f70lELFLNzgX6PgIYpdX945xyvJ2i8eMM=; b=CCj2uSmMCTohPDiblUUza8USGp1XJFwu7oIh8E4agpB35PYI6zSckmhDTCnuK6dAZUrOVOv+YJE6Xk3gkfPC6J07tdMeqOMX9eRVUe3VKt4yZcsRS1kQPMb4JuWdftaIrBf2QEUJNgvThqwNfKZpNCSXsIGJXTvBukUh1VjlH9E= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:14 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:34 +0800 Message-Id: <20180110030603.27864-4-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 19cf62a2-d780-4f8e-b827-08d557d71d73 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:Sv+8zFSos/i6o+bSjSbjs6f8qsxmGnj6lIbT0EPxFqSaOgZ4+YJfcmpe2/+5UxylPa/1M3ZaSWsdnfpvb8JT47OVlmXl7DbYCPpu9bfxHnCQBON74YpKL7beJ521HyddnSzCaxqKc/JdcjkNLmpOS/TWugJI7da3cyobLogQIO/5uIFAtmJlGslPiTwDvhDegMB4HjzV74tJ8+TBlJEZ8IG5akrc4D10lM9qDXFl9Nt/gfDJh5pc9g2wZ2IFIth4; 25:UOLEBqb8Ll/ZobLTkpAhbN7hD0aDYz5RDFr65svB+0G7V1NtYgDhaH9B42wbHk/UoXgbMlingR+Z5F4AVa9WFbrdWHv7UoVQYFt/NuYFh38D0U3UidmPEYa3lzVgJlCMPRQTIvAELnGiyVvDaL8wP5Cs4DsbE8Y22EY4P66ODEivoZIu2T224krl1V46yjP+7vvMbUAgPhY9+moGVJYUe2qIZoTQhht186FFUSAHrToCs4QjtWbLv+h/Uii1Y4GRYSzBdjCWs7EIkmDa82uKQwuuspibNWnLpxUTXY2Ju7Old/zP/qhgJ971gG6Xval2IEsrMjlvi9XhImLkLNlQyQ==; 31:Hmj+ZBUfct346jdByOTgB/EpXelxOd/qqf87sM8Wo+DLm9/6j825GtluC1nqORuUC+VHzpY/gTDeSiLB5j95/1LyW0NAQS4i9cJ2uivo0/pmWuD8rDIAGXZaTLODcs8LEAiqsdkWtGCj/Cqa9iCWDpIuvVbyhb/y3osYyUe4tBnIpTQA1QaCHZ6ERc14AmLt4gAux10zAR9y1FZsKEPvUe5LOgAcZSd2oSh+FyzDWbg= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:ndvgOaOtGD/E/bwDcl9XzSEkxk7EZplJOoDXtHs+n4XpddlRaKmFOsE9o4Bbe4szMpQk4JbtMWS8wpUMYFGyamor8i5j+29hnLZDfThjPZy8MBH1kQa1Q9ELK+KlMi9BpGGZ8HfsN/9LsPilSSS/GgT2lf2bZy3wRbkh/aP++uDDn4TGWl1RHThGHYLHY/xrz2TIkda+rvyxzzUVSoWMUF+qeIXuPiMYga3nhKPN1yycHBwn6I2M9IiBT2+yp0uYbrsZkV1AlHK4J0KsGOLsW2M8+g6z+8KCsYkBFClVLR23qW3MQGch0nYcM1k2BcRDRYrd9lF3IkVayjLa1Q1Wh7aBFgM1ujvjcofg5MePoX6tvDxIEJMbuKAntdDEenZzg2HCXxSvHNF0BlRKE2aRP1eg8f0jJyCb+Tg+E7UdGO5c/D5XNPeM5Zp/wEnrYSBiBQSglbfxo4plzkMd5OTwbLPWYqRd6JzP0qfyOQyidkwI13L5JpMQDGv7xWLHXklz; 4:M62oBGs9wL3U5yrhH7quYnev4twBcb7Y1xBnLdmhTHB8F1loZXGlEjyeyK0VicyMm73d4oMW8205KIPHM0t+vbZYEJHxT3b+H7DmPPYRtjUWNhbXUXz5hqOagNkLZuu/8EZ9NLBHqEIf6t476OYgkoDXlJYYtKbs5+PQdF91nLy2L4vi6AXdq3U1eVsey5ki6djDxeaW69BSqg8Jq3BNLSs0w+c3mRaZts6AeJ2suH8aTcoBkPB/YhY19NTuEvosRBN0nNDUquThlmQV+RBePPCzSEZi2Lq3xU9H8naQpuXQsBbmLJpEEgmHFO7zzNfC X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:RUxRoYs7hfIVYDwXDxYonXWD7nyHxSE5SnODIP7Er?= WRbEVC2WOA7FDsBWKSrjKfT09iUZ48VfE9vKTVNJx/HMelXbY4DCLwyiqTZVwyzfCyhcWFuBpHcfNk+vP7vFKKx5oHzrQmFFIOT5DnB0r4OttwERIk32Tg9oDaGpLUXC7q2rPRlXc31LERqroWvqj3is5JBGWIgQfWhXgy2L8LgNUE3nPLHR3drQOdpWBARXUJpoiaHmaUVmLAZKdPRBfpyv5QwIg8pRnGc9QtsV/n3p9f5rqrxVIDQVhxkWhFuzC69JRfiVzqg31lQMQvB/C1gKDiJxm61lGlcAArDKCvx/o+p8hcmdUKDCu56475La0x20U4mEL4CEx/eXQqzXoEDFhmWMEsKX6YcQXbEhL2TkgYK78zGWhJOKXOjBkAPIE6DbXHoHaMnmUkHyqQIFTb+lRaYjaJosnQUyMG7SycbdcN8nquY2UPW4mOhbMWKDr/y/5cYbNb8sCacuG2kcBitQdZmB6lxWZTGppjb+vXG6Od+wgETxsc1Lg87lnmun922nVm710f2wLLp2Vdtlupo5cJzIlCeqzz1xxlk8xhW1Imvn2Va+IvwMWtOEEG1ZCm25zjQ387lsKVcS2X2KQkhuHlr0NgUefHlfLR6Rynm2LAgL333ik/icrCeHhNcTBVs+EEhMbz+wynu/KrBXsuSnlg4Ismn20j4f5XJO9MsiKf9LBVbNlvkCT5dEiqJH8AaiJGBJeXXlzNxeIL7bbviTzQeRe0K7TrrSkg0VNOEK/M6ly1l8XhKF2EA6wL7SsBPaE0CWm0I9IeoxP27wAj4wCkVGGJE7/d8SsA9MC2YvF6+TtyYoeqxVS//XtD5PPGnGCWvc5tKBEtts7H18jjxzRCI4chp5uymIFzoxS9kO5kYNBjQTrv9StlT9kPqKsKqlrxF6Dlgn1Xly4UF/+wUZlIkL6kTGliHg3HNmupRFF0BzfQTvgEQNl/TMHC8dMcgAUVj6xkGK1TQ8WTTD/2rH8QtHm13u/dxOvJUuLbFjStWtnW7B4FRWvEFL8couQC7eNnuU9wGLC4+o0Szm9QVow2yc04htSo6PaBmzDT43DmpmN9z4E1TQXNjNOntlgsnBWAAD9ytH4AmcFyW2/PETu9g16xrDP0DOIouIVtgPw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:PDfimN4Lm0YsmFS+/LKEb5TPvach3r1ZOs9dyyDNgZidmMtnXvsAyn8yKRf06ee3Mkbld+NacofFIWSlJcH9duekpFO4LMwIPQHpPUR+Kyh+9ooaFt+bhKfeuuT6Pl8fZSudUZTek1TGviva5rt7ZoCkDyORH7uLWcZDKCoqXcRkWakQcqgUUs+f3X1c8+d4aiTtMhk5uP0stB6H4LgNQlC8Xk7MXZVjJOIWMzzCmtCroPlcoC6GIzGPYvKp5CSIeFyttTvyGQZmVnPjiBaWUyMT8c4l14Nx+14gno7/2T2VmsoQCjshdnRBN+dxggWkUjH90oZGARUwXbWV3EwiRrgsH92PrxFDfyom+i0TBT0=; 5:t6z/WQPbLbLywM6NjqAIEsio8pRE6djj2YmkXpr/OF8gCH2e6LLs42xrZKwbIk+knECvLi2wDpkJj6UGy3hJDH64EhJiGXVRA5NWcl623wVs+5VIukil034zo6nkV4J3DLvLjFgLhPRFEK7N/ftiAZNngdTOsn6EuXMEjvdbKXk=; 24:MQ5BPwDWD06IoS+6ie+jGYXoW6aIMeL6oC/ygviPE8dNHeBX+F0lJguXlpkVkxcyKXws4eeLAyj0yb6J9hKJ2SnWhOKrpqRXprjt5S2N4ng=; 7:+jIA/dklwxeKVTAc5XYinYw9nOEfzKcxl5FZV5D+PmUE4QMO+FnQD7Q7LoZjXdThhdGExwmG+Qhi49JZX4f1e/sALooY36MnqAZIsnSWkHlxe2rd9ru/9WHmsH/dDRIvhNZdLzdvePHDpzgUbJuWQuuCYb57EE4Q8QyGOZUX+Z7NRs9RPbKNYek8PztPNA18fqPp/LONasa+ixGKvxlpPrmBTTLrkcK9Ii9JulPXKMJbPFb21gneBBrPLCQc0wFN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:14.2286 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 19cf62a2-d780-4f8e-b827-08d557d71d73 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 03/32] imx: mx8m: add register definition header file X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add register definition header file for i.MX8M Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/arch-mx8m/imx-regs.h | 468 ++++++++++++++++++++++++++++++ 1 file changed, 468 insertions(+) create mode 100644 arch/arm/include/asm/arch-mx8m/imx-regs.h diff --git a/arch/arm/include/asm/arch-mx8m/imx-regs.h b/arch/arm/include/asm/arch-mx8m/imx-regs.h new file mode 100644 index 0000000000..a10034cc35 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/imx-regs.h @@ -0,0 +1,468 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_MX8M_REGS_H__ +#define __ASM_ARCH_MX8M_REGS_H__ + +#include + +#define ROM_VERSION_A0 0x800 +#define ROM_VERSION_B0 0x83C + +#define M4_BOOTROM_BASE_ADDR 0x007E0000 + +#define SAI1_BASE_ADDR 0x30010000 +#define SAI6_BASE_ADDR 0x30030000 +#define SAI5_BASE_ADDR 0x30040000 +#define SAI4_BASE_ADDR 0x30050000 +#define SPBA2_BASE_ADDR 0x300F0000 +#define AIPS1_BASE_ADDR 0x301F0000 +#define GPIO1_BASE_ADDR 0X30200000 +#define GPIO2_BASE_ADDR 0x30210000 +#define GPIO3_BASE_ADDR 0x30220000 +#define GPIO4_BASE_ADDR 0x30230000 +#define GPIO5_BASE_ADDR 0x30240000 +#define ANA_TSENSOR_BASE_ADDR 0x30260000 +#define ANA_OSC_BASE_ADDR 0x30270000 +#define WDOG1_BASE_ADDR 0x30280000 +#define WDOG2_BASE_ADDR 0x30290000 +#define WDOG3_BASE_ADDR 0x302A0000 +#define SDMA2_BASE_ADDR 0x302C0000 +#define GPT1_BASE_ADDR 0x302D0000 +#define GPT2_BASE_ADDR 0x302E0000 +#define GPT3_BASE_ADDR 0x302F0000 +#define ROMCP_BASE_ADDR 0x30310000 +#define LCDIF_BASE_ADDR 0x30320000 +#define IOMUXC_BASE_ADDR 0x30330000 +#define IOMUXC_GPR_BASE_ADDR 0x30340000 +#define OCOTP_BASE_ADDR 0x30350000 +#define ANATOP_BASE_ADDR 0x30360000 +#define SNVS_HP_BASE_ADDR 0x30370000 +#define CCM_BASE_ADDR 0x30380000 +#define SRC_BASE_ADDR 0x30390000 +#define GPC_BASE_ADDR 0x303A0000 +#define SEMAPHORE1_BASE_ADDR 0x303B0000 +#define SEMAPHORE2_BASE_ADDR 0x303C0000 +#define RDC_BASE_ADDR 0x303D0000 +#define CSU_BASE_ADDR 0x303E0000 + +#define AIPS2_BASE_ADDR 0x305F0000 +#define PWM1_BASE_ADDR 0x30660000 +#define PWM2_BASE_ADDR 0x30670000 +#define PWM3_BASE_ADDR 0x30680000 +#define PWM4_BASE_ADDR 0x30690000 +#define SYSCNT_RD_BASE_ADDR 0x306A0000 +#define SYSCNT_CMP_BASE_ADDR 0x306B0000 +#define SYSCNT_CTRL_BASE_ADDR 0x306C0000 +#define GPT6_BASE_ADDR 0x306E0000 +#define GPT5_BASE_ADDR 0x306F0000 +#define GPT4_BASE_ADDR 0x30700000 +#define PERFMON1_BASE_ADDR 0x307C0000 +#define PERFMON2_BASE_ADDR 0x307D0000 +#define QOSC_BASE_ADDR 0x307F0000 + +#define SPDIF1_BASE_ADDR 0x30810000 +#define ECSPI1_BASE_ADDR 0x30820000 +#define ECSPI2_BASE_ADDR 0x30830000 +#define ECSPI3_BASE_ADDR 0x30840000 +#define UART1_BASE_ADDR 0x30860000 +#define UART3_BASE_ADDR 0x30880000 +#define UART2_BASE_ADDR 0x30890000 +#define SPDIF2_BASE_ADDR 0x308A0000 +#define SAI2_BASE_ADDR 0x308B0000 +#define SAI3_BASE_ADDR 0x308C0000 +#define SPBA1_BASE_ADDR 0x308F0000 +#define CAAM_BASE_ADDR 0x30900000 +#define AIPS3_BASE_ADDR 0x309F0000 +#define MIPI_PHY_BASE_ADDR 0x30A00000 +#define MIPI_DSI_BASE_ADDR 0x30A10000 +#define I2C1_BASE_ADDR 0x30A20000 +#define I2C2_BASE_ADDR 0x30A30000 +#define I2C3_BASE_ADDR 0x30A40000 +#define I2C4_BASE_ADDR 0x30A50000 +#define UART4_BASE_ADDR 0x30A60000 +#define MIPI_CSI_BASE_ADDR 0x30A70000 +#define MIPI_CSI_PHY1_BASE_ADDR 0x30A80000 +#define CSI1_BASE_ADDR 0x30A90000 +#define MU_A_BASE_ADDR 0x30AA0000 +#define MU_B_BASE_ADDR 0x30AB0000 +#define SEMAPHOR_HS_BASE_ADDR 0x30AC0000 +#define USDHC1_BASE_ADDR 0x30B40000 +#define USDHC2_BASE_ADDR 0x30B50000 +#define MIPI_CS2_BASE_ADDR 0x30B60000 +#define MIPI_CSI_PHY2_BASE_ADDR 0x30B70000 +#define CSI2_BASE_ADDR 0x30B80000 +#define QSPI0_BASE_ADDR 0x30BB0000 +#define QSPI0_AMBA_BASE 0x08000000 +#define SDMA1_BASE_ADDR 0x30BD0000 +#define ENET1_BASE_ADDR 0x30BE0000 + +#define HDMI_CTRL_BASE_ADDR 0x32C00000 +#define AIPS4_BASE_ADDR 0x32DF0000 +#define DC1_BASE_ADDR 0x32E00000 +#define DC2_BASE_ADDR 0x32E10000 +#define DC3_BASE_ADDR 0x32E20000 +#define HDMI_SEC_BASE_ADDR 0x32E40000 +#define TZASC_BASE_ADDR 0x32F80000 +#define MTR_BASE_ADDR 0x32FB0000 +#define PLATFORM_CTRL_BASE_ADDR 0x32FE0000 + +#define MXS_APBH_BASE 0x33000000 +#define MXS_GPMI_BASE 0x33002000 +#define MXS_BCH_BASE 0x33004000 + +#define USB1_BASE_ADDR 0x38100000 +#define USB2_BASE_ADDR 0x38200000 +#define USB1_PHY_BASE_ADDR 0x381F0000 +#define USB2_PHY_BASE_ADDR 0x382F0000 + +#define MXS_LCDIF_BASE LCDIF_BASE_ADDR + +#define SRC_IPS_BASE_ADDR 0x30390000 +#define SRC_DDRC_RCR_ADDR 0x30391000 +#define SRC_DDRC2_RCR_ADDR 0x30391004 + +#define DDRC_DDR_SS_GPR0 0x3d000000 +#define DDRC_IPS_BASE_ADDR(X) (0x3d400000 + ((X) * 0x2000000)) +#define DDR_CSD1_BASE_ADDR 0x40000000 + +#if !defined(__ASSEMBLY__) +#include +#include +#include + +#define GPR_TZASC_EN BIT(0) +#define GPR_TZASC_EN_LOCK BIT(16) + +#define SRC_SCR_M4_ENABLE_OFFSET 3 +#define SRC_SCR_M4_ENABLE_MASK BIT(3) +#define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 0 +#define SRC_SCR_M4C_NON_SCLR_RST_MASK BIT(0) +#define SRC_DDR1_ENABLE_MASK 0x8F000000UL +#define SRC_DDR2_ENABLE_MASK 0x8F000000UL +#define SRC_DDR1_RCR_PHY_PWROKIN_N_MASK BIT(3) +#define SRC_DDR1_RCR_PHY_RESET_MASK BIT(2) +#define SRC_DDR1_RCR_CORE_RESET_N_MASK BIT(1) +#define SRC_DDR1_RCR_PRESET_N_MASK BIT(0) + +struct iomuxc_gpr_base_regs { + u32 gpr[47]; +}; + +struct ocotp_regs { + u32 ctrl; + u32 ctrl_set; + u32 ctrl_clr; + u32 ctrl_tog; + u32 timing; + u32 rsvd0[3]; + u32 data; + u32 rsvd1[3]; + u32 read_ctrl; + u32 rsvd2[3]; + u32 read_fuse_data; + u32 rsvd3[3]; + u32 sw_sticky; + u32 rsvd4[3]; + u32 scs; + u32 scs_set; + u32 scs_clr; + u32 scs_tog; + u32 crc_addr; + u32 rsvd5[3]; + u32 crc_value; + u32 rsvd6[3]; + u32 version; + u32 rsvd7[0xdb]; + + /* fuse banks */ + struct fuse_bank { + u32 fuse_regs[0x10]; + } bank[0]; +}; + +struct fuse_bank0_regs { + u32 lock; + u32 rsvd0[3]; + u32 uid_low; + u32 rsvd1[3]; + u32 uid_high; + u32 rsvd2[7]; +}; + +struct fuse_bank1_regs { + u32 tester3; + u32 rsvd0[3]; + u32 tester4; + u32 rsvd1[3]; + u32 tester5; + u32 rsvd2[3]; + u32 cfg0; + u32 rsvd3[3]; +}; + +struct anamix_pll { + u32 audio_pll1_cfg0; + u32 audio_pll1_cfg1; + u32 audio_pll2_cfg0; + u32 audio_pll2_cfg1; + u32 video_pll_cfg0; + u32 video_pll_cfg1; + u32 gpu_pll_cfg0; + u32 gpu_pll_cfg1; + u32 vpu_pll_cfg0; + u32 vpu_pll_cfg1; + u32 arm_pll_cfg0; + u32 arm_pll_cfg1; + u32 sys_pll1_cfg0; + u32 sys_pll1_cfg1; + u32 sys_pll1_cfg2; + u32 sys_pll2_cfg0; + u32 sys_pll2_cfg1; + u32 sys_pll2_cfg2; + u32 sys_pll3_cfg0; + u32 sys_pll3_cfg1; + u32 sys_pll3_cfg2; + u32 video_pll2_cfg0; + u32 video_pll2_cfg1; + u32 video_pll2_cfg2; + u32 dram_pll_cfg0; + u32 dram_pll_cfg1; + u32 dram_pll_cfg2; + u32 digprog; + u32 osc_misc_cfg; + u32 pllout_monitor_cfg; + u32 frac_pllout_div_cfg; + u32 sscg_pllout_div_cfg; +}; + +struct fuse_bank9_regs { + u32 mac_addr0; + u32 rsvd0[3]; + u32 mac_addr1; + u32 rsvd1[11]; +}; + +/* System Reset Controller (SRC) */ +struct src { + u32 scr; + u32 a53rcr; + u32 a53rcr1; + u32 m4rcr; + u32 reserved1[4]; + u32 usbophy1_rcr; + u32 usbophy2_rcr; + u32 mipiphy_rcr; + u32 pciephy_rcr; + u32 hdmi_rcr; + u32 disp_rcr; + u32 reserved2[2]; + u32 gpu_rcr; + u32 vpu_rcr; + u32 pcie2_rcr; + u32 mipiphy1_rcr; + u32 mipiphy2_rcr; + u32 reserved3; + u32 sbmr1; + u32 srsr; + u32 reserved4[2]; + u32 sisr; + u32 simr; + u32 sbmr2; + u32 gpr1; + u32 gpr2; + u32 gpr3; + u32 gpr4; + u32 gpr5; + u32 gpr6; + u32 gpr7; + u32 gpr8; + u32 gpr9; + u32 gpr10; + u32 reserved5[985]; + u32 ddr1_rcr; + u32 ddr2_rcr; +}; + +struct gpc_reg { + u32 lpcr_bsc; + u32 lpcr_ad; + u32 lpcr_cpu1; + u32 lpcr_cpu2; + u32 lpcr_cpu3; + u32 slpcr; + u32 mst_cpu_mapping; + u32 mmdc_cpu_mapping; + u32 mlpcr; + u32 pgc_ack_sel; + u32 pgc_ack_sel_m4; + u32 gpc_misc; + u32 imr1_core0; + u32 imr2_core0; + u32 imr3_core0; + u32 imr4_core0; + u32 imr1_core1; + u32 imr2_core1; + u32 imr3_core1; + u32 imr4_core1; + u32 imr1_cpu1; + u32 imr2_cpu1; + u32 imr3_cpu1; + u32 imr4_cpu1; + u32 imr1_cpu3; + u32 imr2_cpu3; + u32 imr3_cpu3; + u32 imr4_cpu3; + u32 isr1_cpu0; + u32 isr2_cpu0; + u32 isr3_cpu0; + u32 isr4_cpu0; + u32 isr1_cpu1; + u32 isr2_cpu1; + u32 isr3_cpu1; + u32 isr4_cpu1; + u32 isr1_cpu2; + u32 isr2_cpu2; + u32 isr3_cpu2; + u32 isr4_cpu2; + u32 isr1_cpu3; + u32 isr2_cpu3; + u32 isr3_cpu3; + u32 isr4_cpu3; + u32 slt0_cfg; + u32 slt1_cfg; + u32 slt2_cfg; + u32 slt3_cfg; + u32 slt4_cfg; + u32 slt5_cfg; + u32 slt6_cfg; + u32 slt7_cfg; + u32 slt8_cfg; + u32 slt9_cfg; + u32 slt10_cfg; + u32 slt11_cfg; + u32 slt12_cfg; + u32 slt13_cfg; + u32 slt14_cfg; + u32 pgc_cpu_0_1_mapping; + u32 cpu_pgc_up_trg; + u32 mix_pgc_up_trg; + u32 pu_pgc_up_trg; + u32 cpu_pgc_dn_trg; + u32 mix_pgc_dn_trg; + u32 pu_pgc_dn_trg; + u32 lpcr_bsc2; + u32 pgc_cpu_2_3_mapping; + u32 lps_cpu0; + u32 lps_cpu1; + u32 lps_cpu2; + u32 lps_cpu3; + u32 gpc_gpr; + u32 gtor; + u32 debug_addr1; + u32 debug_addr2; + u32 cpu_pgc_up_status1; + u32 mix_pgc_up_status0; + u32 mix_pgc_up_status1; + u32 mix_pgc_up_status2; + u32 m4_mix_pgc_up_status0; + u32 m4_mix_pgc_up_status1; + u32 m4_mix_pgc_up_status2; + u32 pu_pgc_up_status0; + u32 pu_pgc_up_status1; + u32 pu_pgc_up_status2; + u32 m4_pu_pgc_up_status0; + u32 m4_pu_pgc_up_status1; + u32 m4_pu_pgc_up_status2; + u32 a53_lp_io_0; + u32 a53_lp_io_1; + u32 a53_lp_io_2; + u32 cpu_pgc_dn_status1; + u32 mix_pgc_dn_status0; + u32 mix_pgc_dn_status1; + u32 mix_pgc_dn_status2; + u32 m4_mix_pgc_dn_status0; + u32 m4_mix_pgc_dn_status1; + u32 m4_mix_pgc_dn_status2; + u32 pu_pgc_dn_status0; + u32 pu_pgc_dn_status1; + u32 pu_pgc_dn_status2; + u32 m4_pu_pgc_dn_status0; + u32 m4_pu_pgc_dn_status1; + u32 m4_pu_pgc_dn_status2; + u32 res[3]; + u32 mix_pdn_flg; + u32 pu_pdn_flg; + u32 m4_mix_pdn_flg; + u32 m4_pu_pdn_flg; + u32 imr1_core2; + u32 imr2_core2; + u32 imr3_core2; + u32 imr4_core2; + u32 imr1_core3; + u32 imr2_core3; + u32 imr3_core3; + u32 imr4_core3; + u32 pgc_ack_sel_pu; + u32 pgc_ack_sel_m4_pu; + u32 slt15_cfg; + u32 slt16_cfg; + u32 slt17_cfg; + u32 slt18_cfg; + u32 slt19_cfg; + u32 gpc_pu_pwrhsk; + u32 slt0_cfg_pu; + u32 slt1_cfg_pu; + u32 slt2_cfg_pu; + u32 slt3_cfg_pu; + u32 slt4_cfg_pu; + u32 slt5_cfg_pu; + u32 slt6_cfg_pu; + u32 slt7_cfg_pu; + u32 slt8_cfg_pu; + u32 slt9_cfg_pu; + u32 slt10_cfg_pu; + u32 slt11_cfg_pu; + u32 slt12_cfg_pu; + u32 slt13_cfg_pu; + u32 slt14_cfg_pu; + u32 slt15_cfg_pu; + u32 slt16_cfg_pu; + u32 slt17_cfg_pu; + u32 slt18_cfg_pu; + u32 slt19_cfg_pu; +}; + +#define WDOG_WDT_MASK BIT(3) +#define WDOG_WDZST_MASK BIT(0) +struct wdog_regs { + u16 wcr; /* Control */ + u16 wsr; /* Service */ + u16 wrsr; /* Reset Status */ + u16 wicr; /* Interrupt Control */ + u16 wmcr; /* Miscellaneous Control */ +}; + +struct bootrom_sw_info { + u8 reserved_1; + u8 boot_dev_instance; + u8 boot_dev_type; + u8 reserved_2; + u32 core_freq; + u32 axi_freq; + u32 ddr_freq; + u32 tick_freq; + u32 reserved_3[3]; +}; + +#define ROM_SW_INFO_ADDR_B0 0x00000968 +#define ROM_SW_INFO_ADDR_A0 0x000009e8 + +#define ROM_SW_INFO_ADDR is_soc_rev(CHIP_REV_1_0) ? \ + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_A0 : \ + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_B0 +#endif +#endif From patchwork Wed Jan 10 03:05:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857892 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="AyIhlbIk"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYtD4Hh4z9s4s for ; Wed, 10 Jan 2018 14:10:44 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 00D6BC22117; Wed, 10 Jan 2018 03:08:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.2 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID, UPPERCASE_50_75 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 3A17DC22096; Wed, 10 Jan 2018 03:06:51 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6512FC22042; Wed, 10 Jan 2018 03:06:29 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50044.outbound.protection.outlook.com [40.107.5.44]) by lists.denx.de (Postfix) with ESMTPS id BA4EFC22088 for ; Wed, 10 Jan 2018 03:06:22 +0000 (UTC) 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=h7o7KH5yPoLHDZeRQDvUPNpBwEPEQHizz21w8BWOuBY=; b=AyIhlbIk+RZdd85Z4/atKrKPSKJnrv+9osaFUNR9HhQhJ+ETTLDSmNhVShWAdA7Fp/cpxxIbov0dOpgToeN2me9tSIUjLL7tDAAm8jpIhLvZhhi/eonFfmueXSmHcWIUZTU/jxz/cB0rUk3e2Je6cDsxLB38G2eGQ6of/GSClrE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:17 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:35 +0800 Message-Id: <20180110030603.27864-5-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b437ce5c-9280-4074-4e17-08d557d71f87 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:AURNPNdgs4BlLLYJajJHIk/bDhGWrpNlHLpnkeHaL4yAYuFVSXIhuRZqgnaRkuryiE9wWu4YIMypF5v3sVGs+3dk21XE4vn9kEawwYkCvUmNdjYB+Y5qAjjUctPvcMlYeGaOg7ocQuxz/1mHB8xHKJ3hQczvaWRM/a8ncUHvDH2731/FpimfcIYfWnbO7TuPAu42NSz00ydx+f4Bwrfa9YXGmC94RUALxmhRGcyOMah0hVXUNGI+Qkhhl3RNW8Nv; 25:vUHu3RRdv6SfcMNKg7x+65YTaveq83AdoB6TqPMa8azczfb+ydkMuOkKpGqL48DeuIFhSii5G40CEVhWvbexr8VCIgecXH7ZLqsjyLHuCcq6kOBFiDnyqIb1mXt0AkHETyX8C3t/k7+ISXDRaj0eoz1tJxWlBqmvqu/vgDzdeaWgX1R8VaX1b/XiCpziFtnKMyCjHuhPJOleoUjv9sLaGfasLgRi78X5X9RzEonbFSsO70rZibu9LJjLjAerAYG1L2qOwoRrDgumu1o87PaQYeZqYp3yxf0y6qHD6KThvdT2QtDiVIRCeG1+X0Vh4cPhku+tfneRNd/JOev1F1kJzw==; 31:ley1weh8AOMyw3dHEvGqQXR5h8acHljXHWI9oLT/AiwxeOB9O/MzZpwpxRyBJqh4NgSOuRfTbC3DuGAYxtiDgP7VLhOihIG+9+Z4lszY4bfJtt0971wzF1LO75ywkd7G8DUZOSGrkOoeDvCcqx/pEP2s61oFDdBtL1q9LbLsRbzI43gU6wQH5W9AAMw9y/LpVn9N5kHcTpEmqvzZ5fPyhgGef8LtR8JANWQIXM3ELYo= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:696xuWTe+MKOkiluEIQ04Y+mttvymJmSq6t+TdAhVvusrJ6qQHkgK7iwjFFehUKIVQDxmS4oA7UwbTExc3TsB+/UNK4vAqeHYb+OEui594SNlKHUjyWuHM8ESbCPvmmDK7/PhKFhkBbiDp5UgZqQWPsR7NWxMBuAU06EXH5KdhJmnRRHjwki5PNK7QSh3wsXug47fjUX1KszmlOXOC7vhsq3guLxvPe8VIzUdNDFNYwwRoFRjuFgQ3T3vA3NV7fsrWBqH7PUl4oVV8QMVrMjolwSACnn6e0lrFG4V6r0cs7j/kfsSMCWBtKTzMxpX5loWuImvO3G5eqE+NrBzp7MSdzKYB/6Fy/5U1shXrTivWz9KmtEdji4Te5Gh1IQLUrjVk4qwQIE0bBpsHMoQghsHnV5c0k8vnxAradj9sTCn+wPifmmvVT9gZ0lHFKUHGRWfYmHAe3uLN0jdI+EBVioHt5kYV/TY8+oAxqf8/zt0aFRVrPVrvUbrsy34zJWoPou; 4:7iP5+p5Lwb8CBEPgFSJUh+lmVMO8t/tscSpabFuZacUePNbpLUY51e8uVNko/O5m1pwN2Od+m5COkgpNE2MKAiiB5nWgv+EobpgqjoHWO074wjgHk0qwjYX1V0gcAkIp1zVCKKuGjo5DmNSZkpgh4n0SVk0PONBb8ipcVMXpMWO26UGq246J1ZoHKN69mfi/iZHz4uaSWzMnjivjFPgZwM2KdGa1UNNf22ZZdr244FqSPOXREOFtxefPme1LlUFkFUxg0iDwQ4uWDAD8k6sVERATObex5UXgDn3bUkZof8mHcndAnHj8eWm5SnjV6LON X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(53946003)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003)(32563001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:LZuFANcxxYrGhRVNreEj9TnW4l/MgLG6h6bWWc1Xk?= gvgNXIJgsMTmOASf+ti1EtU4ZX1Akeq2twT96pl+9TM5sqdrd2wEOUAlkIens/exvJojxvsm3pG2DL5Pc55xuWfBco66YnKtbG5n+3W/HrHJ72PkUynWjXouYkd4PalNU0q00bhdq7RQYm94hFUgfO0g1rH2wxMK/9gJYlTjbCM/bR86b14Qtc3BJV0Tku/BKlpFA2fOVg7ezm1VhZ6tGdAIy9429oDCp477UkZCU7/rGywD6It6ixfe1Kb1L58a1KK1ZMPmj26ddg5llaQKxh/zzXBmi1NTODKplZk9JVQXrWGCgrizsWMziy08nBn/ZkwXZcLwENWKe4ucgD6XspLOKESFuGvlc20Dk3xakrxDqzhWudfgRyPWdODc8t6vpUcamNhH1nLEYFWMeHEtEF6f5nJwWfkySVNe9vRnlUVizQ539Bs7FBc6wiLM7AH46CBxKYDP/hA1HKU6EjT5tANWm+jKiV/j9naLOSSAkvFG4wshKVJF2LZQ7wK7WL8wvML2ZijN4SYd5UhtZSY4g8OR2Vw8jXlU2n1gIx5nVNLhl1HJmbr0sgRy0py1QC43yKuPJXdZDKAa3UGZ+Ea/gf9otaGMHZdKcSNjYCPPVSecWE4u8Xw4MFotKXmS8toU6GCAYfvislW94y0hIRjHIKkPROpxJTWX0RSoxTzVBminzPeOMaQPtYm33Zx1I8WHDDvzdKZY4pEFK2C0i5DxRpGe3Xt2js48A7OrVALcRp/xfjaJmzCkzX7oJx7PKqj0/melz9R0EXXVdiycUbt4E1SPvT9wgTTGrpXQ3CPNLHIRvkK3/fgoOj2TXOx6eU0kjy2WURo2CLmXCuYkAPvnWt0+gFmozPliLpVjRUrMAh1c+bgnFaNL/re6kIZCI6qrtKkYM/lzgT0L9PLCHKryE7QYL6aa6rW9ceSTGyzEernjseNjfGm/P3t0LHgmKa9+60bhwegOj/Wd+GF+Uh9f+24MuWdD5vjsOjO9EhrZmJfKGQufPnHjs3Xgy4JmTZb3HhRNo8gB6XFHFRWs8ngOyMaYm1d3CyEwM9JWizmP/LE+dj4zoHZWOMLHQq+dDdwFmCRsy0wyvdqCkTpA66p8qx2uSoSCCRffB4yEq8xnetu4bzi0C+8Q/mHXVCpLQY2Xao= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:p0DL4YuRuzsajJae5zficaOmyMWuSHeEaOVDFzyK2FtPjd3gPP6wvJ8kak+Z3CcYtTv8lart6+RiYkP6yrlC9TCTD4VjkQI78VcIFoFUpho8DBE9uIJ3N4agrFNJ2KxZwYueYaTecth9XI1yOgCF/AXVU6GmBhJbKSTfQCjRHhVm69tbSzC7zocRkkXVeX9rD1hu1efhk1Ea+9u1wTgYl9HsvfXPvp+KHo0znK3gFTNVGGTm4DI87x8KDU3gZAipgrJcyr6S97SVp45jTVCYb/h9yzQ/+fRoB3GAiqbpZgBs0ckv1L3qFoX6eoFgQcRI4O8SSHaPK+7NvsIFvykFRX2kJRWTfCfex0rrATicWMw=; 5:2DHI1+DlpVjzoDhjjuttcTBK9Bxlnb2EXYsOZNxN68l03EzDA+Ac5wW3TOryqG02xalwGC7qLbqHKwooKd5p1oDbc7Nw7WkqOT3nrCaDC9Ngef8jJ1IK3SfrXMWp37Aix/aEpYmWKbcoKKAfJ1JIVJNZzK5zfpVAhbiDhWYm80Q=; 24:2qkkwYmGQ+bb+ZoZawmno/FlUUkUCXOWjam7MyzbPLqGTj+7lSOV1WLu+Gk1UpRw/oTKqH4TIKo09u6wyGi2VD6n7bohWYIGwKFanNQH6VI=; 7:k9fEEZT5v0ge9dyQvWKiILXf7qbmQhxBcw82RqbThumPiyfzeyzhEQUgbwLacoxvkd5VskCKlsXx/Q5qgRrcxf0C0uw3c9IzQcNj6BvVd/Lmq4R5jyYhS2VkvaIZoHiMUxdocxwiVupECnLhWYYn0hdykWcA+0KT5Eb0EpWNdTIc4mq/QdDNzjfrJe0zTGHCJoumDPJg4yfcjkbq+2jCOz+P3VqBaKLOYjxIfUVz4R8AiIOkUXWjNsACHVGr7QEr SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:17.5562 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b437ce5c-9280-4074-4e17-08d557d71f87 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 04/32] imx: mx8m: add pin header file X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add pin header file for i.MX8M Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/arch-mx8m/mx8mq_pins.h | 623 ++++++++++++++++++++++++++++ 1 file changed, 623 insertions(+) create mode 100644 arch/arm/include/asm/arch-mx8m/mx8mq_pins.h diff --git a/arch/arm/include/asm/arch-mx8m/mx8mq_pins.h b/arch/arm/include/asm/arch-mx8m/mx8mq_pins.h new file mode 100644 index 0000000000..062bea7299 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/mx8mq_pins.h @@ -0,0 +1,623 @@ +/* + * Copyright (C) 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_MX8MQ_PINS_H__ +#define __ASM_ARCH_MX8MQ_PINS_H__ + +#include + +enum { + IMX8MQ_PAD_GPIO1_IO00__GPIO1_IO0 = IOMUX_PAD(0x0290, 0x0028, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO00__CCM_ENET_PHY_REF_CLK_ROOT = IOMUX_PAD(0x0290, 0x0028, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO00__XTALOSC_REF_CLK_32K = IOMUX_PAD(0x0290, 0x0028, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO00__CCM_EXT_CLK1 = IOMUX_PAD(0x0290, 0x0028, 6, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO00__JTAG_FAIL = IOMUX_PAD(0x0290, 0x0028, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO01__GPIO1_IO1 = IOMUX_PAD(0x0294, 0x002C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO01__PWM1_OUT = IOMUX_PAD(0x0294, 0x002C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO01__XTALOSC_REF_CLK_24M = IOMUX_PAD(0x0294, 0x002C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO01__CCM_EXT_CLK2 = IOMUX_PAD(0x0294, 0x002C, 6, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO01__JTAG_ACTIVE = IOMUX_PAD(0x0294, 0x002C, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO02__GPIO1_IO2 = IOMUX_PAD(0x0298, 0x0030, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_B = IOMUX_PAD(0x0298, 0x0030, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_ANY = IOMUX_PAD(0x0298, 0x0030, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO02__JTAG_DE_B = IOMUX_PAD(0x0298, 0x0030, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO03__GPIO1_IO3 = IOMUX_PAD(0x029C, 0x0034, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO03__USDHC1_VSELECT = IOMUX_PAD(0x029C, 0x0034, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO03__SDMA1_EXT_EVENT0 = IOMUX_PAD(0x029C, 0x0034, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO03__XTALOSC_XTAL_OK = IOMUX_PAD(0x029C, 0x0034, 6, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO03__JTAG_DONE = IOMUX_PAD(0x029C, 0x0034, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO04__GPIO1_IO4 = IOMUX_PAD(0x02A0, 0x0038, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO04__USDHC2_VSELECT = IOMUX_PAD(0x02A0, 0x0038, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO04__SDMA1_EXT_EVENT1 = IOMUX_PAD(0x02A0, 0x0038, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO04__XTALOSC_XTAL_OK_1V = IOMUX_PAD(0x02A0, 0x0038, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO05__GPIO1_IO5 = IOMUX_PAD(0x02A4, 0x003C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO05__ARM_PLATFORM_CM4_NMI = IOMUX_PAD(0x02A4, 0x003C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO05__CCM_PMIC_READY = IOMUX_PAD(0x02A4, 0x003C, 5, 0x04BC, 0, 0), + IMX8MQ_PAD_GPIO1_IO05__SRC_INT_BOOT = IOMUX_PAD(0x02A4, 0x003C, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO06__GPIO1_IO6 = IOMUX_PAD(0x02A8, 0x0040, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO06__ENET_MDC = IOMUX_PAD(0x02A8, 0x0040, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO06__USDHC1_CD_B = IOMUX_PAD(0x02A8, 0x0040, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO06__CCM_EXT_CLK3 = IOMUX_PAD(0x02A8, 0x0040, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO07__GPIO1_IO7 = IOMUX_PAD(0x02AC, 0x0044, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO07__ENET_MDIO = IOMUX_PAD(0x02AC, 0x0044, 1, 0x04C0, 0, 0), + IMX8MQ_PAD_GPIO1_IO07__USDHC1_WP = IOMUX_PAD(0x02AC, 0x0044, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO07__CCM_EXT_CLK4 = IOMUX_PAD(0x02AC, 0x0044, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO08__GPIO1_IO8 = IOMUX_PAD(0x02B0, 0x0048, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO08__ENET_1588_EVENT0_IN = IOMUX_PAD(0x02B0, 0x0048, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO08__USDHC2_RESET_B = IOMUX_PAD(0x02B0, 0x0048, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO08__CCM_WAIT = IOMUX_PAD(0x02B0, 0x0048, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO09__GPIO1_IO9 = IOMUX_PAD(0x02B4, 0x004C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO09__ENET_1588_EVENT0_OUT = IOMUX_PAD(0x02B4, 0x004C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO09__SDMA2_EXT_EVENT0 = IOMUX_PAD(0x02B4, 0x004C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO09__CCM_STOP = IOMUX_PAD(0x02B4, 0x004C, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO10__GPIO1_IO10 = IOMUX_PAD(0x02B8, 0x0050, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO10__USB1_OTG_ID = IOMUX_PAD(0x02B8, 0x0050, 1, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO11__GPIO1_IO11 = IOMUX_PAD(0x02BC, 0x0054, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO11__USB2_OTG_ID = IOMUX_PAD(0x02BC, 0x0054, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO11__CCM_PMIC_READY = IOMUX_PAD(0x02BC, 0x0054, 5, 0x04BC, 1, 0), + + IMX8MQ_PAD_GPIO1_IO12__GPIO1_IO12 = IOMUX_PAD(0x02C0, 0x0058, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO12__USB1_OTG_PWR = IOMUX_PAD(0x02C0, 0x0058, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO12__SDMA2_EXT_EVENT1 = IOMUX_PAD(0x02C0, 0x0058, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO12__CSU_CSU_ALARM_AUT0 = IOMUX_PAD(0x02C0, 0x0058, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO13__GPIO1_IO13 = IOMUX_PAD(0x02C4, 0x005C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO13__USB1_OTG_OC = IOMUX_PAD(0x02C4, 0x005C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO13__PWM2_OUT = IOMUX_PAD(0x02C4, 0x005C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO13__CSU_CSU_ALARM_AUT1 = IOMUX_PAD(0x02C4, 0x005C, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO14__GPIO1_IO14 = IOMUX_PAD(0x02C8, 0x0060, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO14__USB2_OTG_PWR = IOMUX_PAD(0x02C8, 0x0060, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO14__PWM3_OUT = IOMUX_PAD(0x02C8, 0x0060, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO14__CCM_CLKO1 = IOMUX_PAD(0x02C8, 0x0060, 6, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO14__CSU_CSU_ALARM_AUT2 = IOMUX_PAD(0x02C8, 0x0060, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_GPIO1_IO15__GPIO1_IO15 = IOMUX_PAD(0x02CC, 0x0064, 0, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO15__USB2_OTG_OC = IOMUX_PAD(0x02CC, 0x0064, 1, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO15__PWM4_OUT = IOMUX_PAD(0x02CC, 0x0064, 5, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO15__CCM_CLKO2 = IOMUX_PAD(0x02CC, 0x0064, 6, 0x0000, 0, 0), + IMX8MQ_PAD_GPIO1_IO15__CSU_CSU_INT_DEB = IOMUX_PAD(0x02CC, 0x0064, 7, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_MDC__ENET_MDC = IOMUX_PAD(0x02D0, 0x0068, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_MDC__GPIO1_IO16 = IOMUX_PAD(0x02D0, 0x0068, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_MDIO__ENET_MDIO = IOMUX_PAD(0x02D4, 0x006C, 0, 0x04C0, 1, 0), + IMX8MQ_PAD_ENET_MDIO__GPIO1_IO17 = IOMUX_PAD(0x02D4, 0x006C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_TD3__ENET_RGMII_TD3 = IOMUX_PAD(0x02D8, 0x0070, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TD3__GPIO1_IO18 = IOMUX_PAD(0x02D8, 0x0070, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_TD2__ENET_RGMII_TD2 = IOMUX_PAD(0x02DC, 0x0074, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TD2__ENET_TX_CLK = IOMUX_PAD(0x02DC, 0x0074, 1, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TD2__GPIO1_IO19 = IOMUX_PAD(0x02DC, 0x0074, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_TD1__ENET_RGMII_TD1 = IOMUX_PAD(0x02E0, 0x0078, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TD1__GPIO1_IO20 = IOMUX_PAD(0x02E0, 0x0078, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_TD0__ENET_RGMII_TD0 = IOMUX_PAD(0x02E4, 0x007C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TD0__GPIO1_IO21 = IOMUX_PAD(0x02E4, 0x007C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_TX_CTL__ENET_RGMII_TX_CTL = IOMUX_PAD(0x02E8, 0x0080, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TX_CTL__GPIO1_IO22 = IOMUX_PAD(0x02E8, 0x0080, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_TXC__ENET_RGMII_TXC = IOMUX_PAD(0x02EC, 0x0084, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TXC__ENET_TX_ER = IOMUX_PAD(0x02EC, 0x0084, 1, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_TXC__GPIO1_IO23 = IOMUX_PAD(0x02EC, 0x0084, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_RX_CTL__ENET_RGMII_RX_CTL = IOMUX_PAD(0x02F0, 0x0088, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RX_CTL__GPIO1_IO24 = IOMUX_PAD(0x02F0, 0x0088, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_RXC__ENET_RGMII_RXC = IOMUX_PAD(0x02F4, 0x008C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RXC__ENET_RX_ER = IOMUX_PAD(0x02F4, 0x008C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RXC__GPIO1_IO25 = IOMUX_PAD(0x02F4, 0x008C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_RD0__ENET_RGMII_RD0 = IOMUX_PAD(0x02F8, 0x0090, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RD0__GPIO1_IO26 = IOMUX_PAD(0x02F8, 0x0090, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_RD1__ENET_RGMII_RD1 = IOMUX_PAD(0x02FC, 0x0094, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RD1__GPIO1_IO27 = IOMUX_PAD(0x02FC, 0x0094, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_RD2__ENET_RGMII_RD2 = IOMUX_PAD(0x0300, 0x0098, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RD2__GPIO1_IO28 = IOMUX_PAD(0x0300, 0x0098, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ENET_RD3__ENET_RGMII_RD3 = IOMUX_PAD(0x0304, 0x009C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ENET_RD3__GPIO1_IO29 = IOMUX_PAD(0x0304, 0x009C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_CLK__USDHC1_CLK = IOMUX_PAD(0x0308, 0x00A0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_CLK__GPIO2_IO0 = IOMUX_PAD(0x0308, 0x00A0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_CMD__USDHC1_CMD = IOMUX_PAD(0x030C, 0x00A4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_CMD__GPIO2_IO1 = IOMUX_PAD(0x030C, 0x00A4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA0__USDHC1_DATA0 = IOMUX_PAD(0x0310, 0x00A8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA0__GPIO2_IO2 = IOMUX_PAD(0x0310, 0x00A8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA1__USDHC1_DATA1 = IOMUX_PAD(0x0314, 0x00AC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA1__GPIO2_IO3 = IOMUX_PAD(0x0314, 0x00AC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA2__USDHC1_DATA2 = IOMUX_PAD(0x0318, 0x00B0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA2__GPIO2_IO4 = IOMUX_PAD(0x0318, 0x00B0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA3__USDHC1_DATA3 = IOMUX_PAD(0x031C, 0x00B4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA3__GPIO2_IO5 = IOMUX_PAD(0x031C, 0x00B4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA4__USDHC1_DATA4 = IOMUX_PAD(0x0320, 0x00B8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA4__GPIO2_IO6 = IOMUX_PAD(0x0320, 0x00B8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA5__USDHC1_DATA5 = IOMUX_PAD(0x0324, 0x00BC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA5__GPIO2_IO7 = IOMUX_PAD(0x0324, 0x00BC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA6__USDHC1_DATA6 = IOMUX_PAD(0x0328, 0x00C0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA6__GPIO2_IO8 = IOMUX_PAD(0x0328, 0x00C0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_DATA7__USDHC1_DATA7 = IOMUX_PAD(0x032C, 0x00C4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_DATA7__GPIO2_IO9 = IOMUX_PAD(0x032C, 0x00C4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_RESET_B__USDHC1_RESET_B = IOMUX_PAD(0x0330, 0x00C8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_RESET_B__GPIO2_IO10 = IOMUX_PAD(0x0330, 0x00C8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD1_STROBE__USDHC1_STROBE = IOMUX_PAD(0x0334, 0x00CC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD1_STROBE__GPIO2_IO11 = IOMUX_PAD(0x0334, 0x00CC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_CD_B__USDHC2_CD_B = IOMUX_PAD(0x0338, 0x00D0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_CD_B__GPIO2_IO12 = IOMUX_PAD(0x0338, 0x00D0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_CLK__USDHC2_CLK = IOMUX_PAD(0x033C, 0x00D4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_CLK__GPIO2_IO13 = IOMUX_PAD(0x033C, 0x00D4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_CMD__USDHC2_CMD = IOMUX_PAD(0x0340, 0x00D8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_CMD__GPIO2_IO14 = IOMUX_PAD(0x0340, 0x00D8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_DATA0__USDHC2_DATA0 = IOMUX_PAD(0x0344, 0x00DC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA0__GPIO2_IO15 = IOMUX_PAD(0x0344, 0x00DC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_DATA1__USDHC2_DATA1 = IOMUX_PAD(0x0348, 0x00E0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA1__GPIO2_IO16 = IOMUX_PAD(0x0348, 0x00E0, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA1__CCM_WAIT = IOMUX_PAD(0x0348, 0x00E0, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_DATA2__USDHC2_DATA2 = IOMUX_PAD(0x034C, 0x00E4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA2__GPIO2_IO17 = IOMUX_PAD(0x034C, 0x00E4, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA2__CCM_STOP = IOMUX_PAD(0x034C, 0x00E4, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_DATA3__USDHC2_DATA3 = IOMUX_PAD(0x0350, 0x00E8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA3__GPIO2_IO18 = IOMUX_PAD(0x0350, 0x00E8, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_DATA3__SRC_EARLY_RESET = IOMUX_PAD(0x0350, 0x00E8, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_RESET_B__USDHC2_RESET_B = IOMUX_PAD(0x0354, 0x00EC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_RESET_B__GPIO2_IO19 = IOMUX_PAD(0x0354, 0x00EC, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_RESET_B__SRC_SYSTEM_RESET = IOMUX_PAD(0x0354, 0x00EC, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SD2_WP__USDHC2_WP = IOMUX_PAD(0x0358, 0x00F0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SD2_WP__GPIO2_IO20 = IOMUX_PAD(0x0358, 0x00F0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_ALE__RAWNAND_ALE = IOMUX_PAD(0x035C, 0x00F4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_ALE__QSPI_A_SCLK = IOMUX_PAD(0x035C, 0x00F4, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_ALE__GPIO3_IO0 = IOMUX_PAD(0x035C, 0x00F4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_CE0_B__RAWNAND_CE0_B = IOMUX_PAD(0x0360, 0x00F8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE0_B__QSPI_A_SS0_B = IOMUX_PAD(0x0360, 0x00F8, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE0_B__GPIO3_IO1 = IOMUX_PAD(0x0360, 0x00F8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_CE1_B__RAWNAND_CE1_B = IOMUX_PAD(0x0364, 0x00FC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE1_B__QSPI_A_SS1_B = IOMUX_PAD(0x0364, 0x00FC, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE1_B__GPIO3_IO2 = IOMUX_PAD(0x0364, 0x00FC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_CE2_B__RAWNAND_CE2_B = IOMUX_PAD(0x0368, 0x0100, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE2_B__QSPI_B_SS0_B = IOMUX_PAD(0x0368, 0x0100, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE2_B__GPIO3_IO3 = IOMUX_PAD(0x0368, 0x0100, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_CE3_B__RAWNAND_CE3_B = IOMUX_PAD(0x036C, 0x0104, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE3_B__QSPI_B_SS1_B = IOMUX_PAD(0x036C, 0x0104, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CE3_B__GPIO3_IO4 = IOMUX_PAD(0x036C, 0x0104, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_CLE__RAWNAND_CLE = IOMUX_PAD(0x0370, 0x0108, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CLE__QSPI_B_SCLK = IOMUX_PAD(0x0370, 0x0108, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_CLE__GPIO3_IO5 = IOMUX_PAD(0x0370, 0x0108, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA00__RAWNAND_DATA00 = IOMUX_PAD(0x0374, 0x010C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA00__QSPI_A_DATA0 = IOMUX_PAD(0x0374, 0x010C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA00__GPIO3_IO6 = IOMUX_PAD(0x0374, 0x010C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA01__RAWNAND_DATA01 = IOMUX_PAD(0x0378, 0x0110, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA01__QSPI_A_DATA1 = IOMUX_PAD(0x0378, 0x0110, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA01__GPIO3_IO7 = IOMUX_PAD(0x0378, 0x0110, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA02__RAWNAND_DATA02 = IOMUX_PAD(0x037C, 0x0114, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA02__QSPI_A_DATA2 = IOMUX_PAD(0x037C, 0x0114, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA02__GPIO3_IO8 = IOMUX_PAD(0x037C, 0x0114, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA03__RAWNAND_DATA03 = IOMUX_PAD(0x0380, 0x0118, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA03__QSPI_A_DATA3 = IOMUX_PAD(0x0380, 0x0118, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA03__GPIO3_IO9 = IOMUX_PAD(0x0380, 0x0118, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA04__RAWNAND_DATA04 = IOMUX_PAD(0x0384, 0x011C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA04__QSPI_B_DATA0 = IOMUX_PAD(0x0384, 0x011C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA04__GPIO3_IO10 = IOMUX_PAD(0x0384, 0x011C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA05__RAWNAND_DATA05 = IOMUX_PAD(0x0388, 0x0120, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA05__QSPI_B_DATA1 = IOMUX_PAD(0x0388, 0x0120, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA05__GPIO3_IO11 = IOMUX_PAD(0x0388, 0x0120, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA06__RAWNAND_DATA06 = IOMUX_PAD(0x038C, 0x0124, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA06__QSPI_B_DATA2 = IOMUX_PAD(0x038C, 0x0124, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA06__GPIO3_IO12 = IOMUX_PAD(0x038C, 0x0124, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DATA07__RAWNAND_DATA07 = IOMUX_PAD(0x0390, 0x0128, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA07__QSPI_B_DATA3 = IOMUX_PAD(0x0390, 0x0128, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DATA07__GPIO3_IO13 = IOMUX_PAD(0x0390, 0x0128, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_DQS__RAWNAND_DQS = IOMUX_PAD(0x0394, 0x012C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DQS__QSPI_A_DQS = IOMUX_PAD(0x0394, 0x012C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_DQS__GPIO3_IO14 = IOMUX_PAD(0x0394, 0x012C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_RE_B__RAWNAND_RE_B = IOMUX_PAD(0x0398, 0x0130, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_RE_B__QSPI_B_DQS = IOMUX_PAD(0x0398, 0x0130, 1, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_RE_B__GPIO3_IO15 = IOMUX_PAD(0x0398, 0x0130, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_READY_B__RAWNAND_READY_B = IOMUX_PAD(0x039C, 0x0134, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_READY_B__GPIO3_IO16 = IOMUX_PAD(0x039C, 0x0134, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_WE_B__RAWNAND_WE_B = IOMUX_PAD(0x03A0, 0x0138, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_WE_B__GPIO3_IO17 = IOMUX_PAD(0x03A0, 0x0138, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_NAND_WP_B__RAWNAND_WP_B = IOMUX_PAD(0x03A4, 0x013C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_NAND_WP_B__GPIO3_IO18 = IOMUX_PAD(0x03A4, 0x013C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_RXFS__SAI5_RX_SYNC = IOMUX_PAD(0x03A8, 0x0140, 0, 0x04E4, 0, 0), + IMX8MQ_PAD_SAI5_RXFS__SAI1_TX_DATA0 = IOMUX_PAD(0x03A8, 0x0140, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXFS__GPIO3_IO19 = IOMUX_PAD(0x03A8, 0x0140, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_RXC__SAI5_RX_BCLK = IOMUX_PAD(0x03AC, 0x0144, 0, 0x04D0, 0, 0), + IMX8MQ_PAD_SAI5_RXC__SAI1_TX_DATA1 = IOMUX_PAD(0x03AC, 0x0144, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXC__GPIO3_IO20 = IOMUX_PAD(0x03AC, 0x0144, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_RXD0__SAI5_RX_DATA0 = IOMUX_PAD(0x03B0, 0x0148, 0, 0x04D4, 0, 0), + IMX8MQ_PAD_SAI5_RXD0__SAI1_TX_DATA2 = IOMUX_PAD(0x03B0, 0x0148, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXD0__GPIO3_IO21 = IOMUX_PAD(0x03B0, 0x0148, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_RXD1__SAI5_RX_DATA1 = IOMUX_PAD(0x03B4, 0x014C, 0, 0x04D8, 0, 0), + IMX8MQ_PAD_SAI5_RXD1__SAI1_TX_DATA3 = IOMUX_PAD(0x03B4, 0x014C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXD1__SAI1_TX_SYNC = IOMUX_PAD(0x03B4, 0x014C, 2, 0x04CC, 0, 0), + IMX8MQ_PAD_SAI5_RXD1__SAI5_TX_SYNC = IOMUX_PAD(0x03B4, 0x014C, 3, 0x04EC, 0, 0), + IMX8MQ_PAD_SAI5_RXD1__GPIO3_IO22 = IOMUX_PAD(0x03B4, 0x014C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_RXD2__SAI5_RX_DATA2 = IOMUX_PAD(0x03B8, 0x0150, 0, 0x04DC, 0, 0), + IMX8MQ_PAD_SAI5_RXD2__SAI1_TX_DATA4 = IOMUX_PAD(0x03B8, 0x0150, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXD2__SAI1_TX_SYNC = IOMUX_PAD(0x03B8, 0x0150, 2, 0x04CC, 1, 0), + IMX8MQ_PAD_SAI5_RXD2__SAI5_TX_BCLK = IOMUX_PAD(0x03B8, 0x0150, 3, 0x04E8, 0, 0), + IMX8MQ_PAD_SAI5_RXD2__GPIO3_IO23 = IOMUX_PAD(0x03B8, 0x0150, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_RXD3__SAI5_RX_DATA3 = IOMUX_PAD(0x03BC, 0x0154, 0, 0x04E0, 0, 0), + IMX8MQ_PAD_SAI5_RXD3__SAI1_TX_DATA5 = IOMUX_PAD(0x03BC, 0x0154, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXD3__SAI1_TX_SYNC = IOMUX_PAD(0x03BC, 0x0154, 2, 0x04CC, 2, 0), + IMX8MQ_PAD_SAI5_RXD3__SAI5_TX_DATA0 = IOMUX_PAD(0x03BC, 0x0154, 3, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_RXD3__GPIO3_IO24 = IOMUX_PAD(0x03BC, 0x0154, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI5_MCLK__SAI5_MCLK = IOMUX_PAD(0x03C0, 0x0158, 0, 0x052C, 0, 0), + IMX8MQ_PAD_SAI5_MCLK__SAI1_TX_BCLK = IOMUX_PAD(0x03C0, 0x0158, 1, 0x04C8, 0, 0), + IMX8MQ_PAD_SAI5_MCLK__SAI4_MCLK = IOMUX_PAD(0x03C0, 0x0158, 2, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_MCLK__GPIO3_IO25 = IOMUX_PAD(0x03C0, 0x0158, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI5_MCLK__SRC_TESTER_ACK = IOMUX_PAD(0x03C0, 0x0158, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXFS__SAI1_RX_SYNC = IOMUX_PAD(0x03C4, 0x015C, 0, 0x04C4, 0, 0), + IMX8MQ_PAD_SAI1_RXFS__SAI5_RX_SYNC = IOMUX_PAD(0x03C4, 0x015C, 1, 0x04E4, 1, 0), + IMX8MQ_PAD_SAI1_RXFS__ARM_PLATFORM_TRACE_CLK = IOMUX_PAD(0x03C4, 0x015C, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXFS__GPIO4_IO0 = IOMUX_PAD(0x03C4, 0x015C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXC__SAI1_RX_BCLK = IOMUX_PAD(0x03C8, 0x0160, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXC__SAI5_RX_BCLK = IOMUX_PAD(0x03C8, 0x0160, 1, 0x04D0, 1, 0), + IMX8MQ_PAD_SAI1_RXC__ARM_PLATFORM_TRACE_CTL = IOMUX_PAD(0x03C8, 0x0160, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXC__GPIO4_IO1 = IOMUX_PAD(0x03C8, 0x0160, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD0__SAI1_RX_DATA0 = IOMUX_PAD(0x03CC, 0x0164, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD0__SAI5_RX_DATA0 = IOMUX_PAD(0x03CC, 0x0164, 1, 0x04D4, 1, 0), + IMX8MQ_PAD_SAI1_RXD0__ARM_PLATFORM_TRACE0 = IOMUX_PAD(0x03CC, 0x0164, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD0__GPIO4_IO2 = IOMUX_PAD(0x03CC, 0x0164, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD0__SRC_BOOT_CFG0 = IOMUX_PAD(0x03CC, 0x0164, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD1__SAI1_RX_DATA1 = IOMUX_PAD(0x03D0, 0x0168, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD1__SAI5_RX_DATA1 = IOMUX_PAD(0x03D0, 0x0168, 1, 0x04D8, 1, 0), + IMX8MQ_PAD_SAI1_RXD1__ARM_PLATFORM_TRACE1 = IOMUX_PAD(0x03D0, 0x0168, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD1__GPIO4_IO3 = IOMUX_PAD(0x03D0, 0x0168, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD1__SRC_BOOT_CFG1 = IOMUX_PAD(0x03D0, 0x0168, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD2__SAI1_RX_DATA2 = IOMUX_PAD(0x03D4, 0x016C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD2__SAI5_RX_DATA2 = IOMUX_PAD(0x03D4, 0x016C, 1, 0x04DC, 1, 0), + IMX8MQ_PAD_SAI1_RXD2__ARM_PLATFORM_TRACE2 = IOMUX_PAD(0x03D4, 0x016C, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD2__GPIO4_IO4 = IOMUX_PAD(0x03D4, 0x016C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD2__SRC_BOOT_CFG2 = IOMUX_PAD(0x03D4, 0x016C, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD3__SAI1_RX_DATA3 = IOMUX_PAD(0x03D8, 0x0170, 0, 0x04E0, 1, 0), + IMX8MQ_PAD_SAI1_RXD3__SAI5_RX_DATA3 = IOMUX_PAD(0x03D8, 0x0170, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD3__ARM_PLATFORM_TRACE3 = IOMUX_PAD(0x03D8, 0x0170, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD3__GPIO4_IO5 = IOMUX_PAD(0x03D8, 0x0170, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD3__SRC_BOOT_CFG3 = IOMUX_PAD(0x03D8, 0x0170, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD4__SAI1_RX_DATA4 = IOMUX_PAD(0x03DC, 0x0174, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD4__SAI6_TX_BCLK = IOMUX_PAD(0x03DC, 0x0174, 1, 0x051C, 0, 0), + IMX8MQ_PAD_SAI1_RXD4__SAI6_RX_BCLK = IOMUX_PAD(0x03DC, 0x0174, 2, 0x0510, 0, 0), + IMX8MQ_PAD_SAI1_RXD4__ARM_PLATFORM_TRACE4 = IOMUX_PAD(0x03DC, 0x0174, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD4__GPIO4_IO6 = IOMUX_PAD(0x03DC, 0x0174, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD4__SRC_BOOT_CFG4 = IOMUX_PAD(0x03DC, 0x0174, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD5__SAI1_RX_DATA5 = IOMUX_PAD(0x03E0, 0x0178, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD5__SAI6_TX_DATA0 = IOMUX_PAD(0x03E0, 0x0178, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD5__SAI6_RX_DATA0 = IOMUX_PAD(0x03E0, 0x0178, 2, 0x0514, 0, 0), + IMX8MQ_PAD_SAI1_RXD5__SAI1_RX_SYNC = IOMUX_PAD(0x03E0, 0x0178, 3, 0x04C4, 1, 0), + IMX8MQ_PAD_SAI1_RXD5__ARM_PLATFORM_TRACE5 = IOMUX_PAD(0x03E0, 0x0178, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD5__GPIO4_IO7 = IOMUX_PAD(0x03E0, 0x0178, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD5__SRC_BOOT_CFG5 = IOMUX_PAD(0x03E0, 0x0178, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD6__SAI1_RX_DATA6 = IOMUX_PAD(0x03E4, 0x017C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD6__SAI6_TX_SYNC = IOMUX_PAD(0x03E4, 0x017C, 1, 0x0520, 0, 0), + IMX8MQ_PAD_SAI1_RXD6__SAI6_RX_SYNC = IOMUX_PAD(0x03E4, 0x017C, 2, 0x0518, 0, 0), + IMX8MQ_PAD_SAI1_RXD6__ARM_PLATFORM_TRACE6 = IOMUX_PAD(0x03E4, 0x017C, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD6__GPIO4_IO8 = IOMUX_PAD(0x03E4, 0x017C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD6__SRC_BOOT_CFG6 = IOMUX_PAD(0x03E4, 0x017C, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_RXD7__SAI1_RX_DATA7 = IOMUX_PAD(0x03E8, 0x0180, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD7__SAI6_MCLK = IOMUX_PAD(0x03E8, 0x0180, 1, 0x0530, 0, 0), + IMX8MQ_PAD_SAI1_RXD7__SAI1_TX_SYNC = IOMUX_PAD(0x03E8, 0x0180, 2, 0x04CC, 4, 0), + IMX8MQ_PAD_SAI1_RXD7__SAI1_TX_DATA4 = IOMUX_PAD(0x03E8, 0x0180, 3, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD7__ARM_PLATFORM_TRACE7 = IOMUX_PAD(0x03E8, 0x0180, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD7__GPIO4_IO9 = IOMUX_PAD(0x03E8, 0x0180, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_RXD7__SRC_BOOT_CFG7 = IOMUX_PAD(0x03E8, 0x0180, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXFS__SAI1_TX_SYNC = IOMUX_PAD(0x03EC, 0x0184, 0, 0x04CC, 3, 0), + IMX8MQ_PAD_SAI1_TXFS__SAI5_TX_SYNC = IOMUX_PAD(0x03EC, 0x0184, 1, 0x04EC, 1, 0), + IMX8MQ_PAD_SAI1_TXFS__ARM_PLATFORM_EVENTO = IOMUX_PAD(0x03EC, 0x0184, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXFS__GPIO4_IO10 = IOMUX_PAD(0x03EC, 0x0184, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXC__SAI1_TX_BCLK = IOMUX_PAD(0x03F0, 0x0188, 0, 0x04C8, 1, 0), + IMX8MQ_PAD_SAI1_TXC__SAI5_TX_BCLK = IOMUX_PAD(0x03F0, 0x0188, 1, 0x04E8, 1, 0), + IMX8MQ_PAD_SAI1_TXC__ARM_PLATFORM_EVENTI = IOMUX_PAD(0x03F0, 0x0188, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXC__GPIO4_IO11 = IOMUX_PAD(0x03F0, 0x0188, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD0__SAI1_TX_DATA0 = IOMUX_PAD(0x03F4, 0x018C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD0__SAI5_TX_DATA0 = IOMUX_PAD(0x03F4, 0x018C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD0__ARM_PLATFORM_TRACE8 = IOMUX_PAD(0x03F4, 0x018C, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD0__GPIO4_IO12 = IOMUX_PAD(0x03F4, 0x018C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD0__SRC_BOOT_CFG8 = IOMUX_PAD(0x03F4, 0x018C, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD1__SAI1_TX_DATA1 = IOMUX_PAD(0x03F8, 0x0190, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD1__SAI5_TX_DATA1 = IOMUX_PAD(0x03F8, 0x0190, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD1__ARM_PLATFORM_TRACE9 = IOMUX_PAD(0x03F8, 0x0190, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD1__GPIO4_IO13 = IOMUX_PAD(0x03F8, 0x0190, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD1__SRC_BOOT_CFG9 = IOMUX_PAD(0x03F8, 0x0190, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD2__SAI1_TX_DATA2 = IOMUX_PAD(0x03FC, 0x0194, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD2__SAI5_TX_DATA2 = IOMUX_PAD(0x03FC, 0x0194, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD2__ARM_PLATFORM_TRACE10 = IOMUX_PAD(0x03FC, 0x0194, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD2__GPIO4_IO14 = IOMUX_PAD(0x03FC, 0x0194, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD2__SRC_BOOT_CFG10 = IOMUX_PAD(0x03FC, 0x0194, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD3__SAI1_TX_DATA3 = IOMUX_PAD(0x0400, 0x0198, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD3__SAI5_TX_DATA3 = IOMUX_PAD(0x0400, 0x0198, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD3__ARM_PLATFORM_TRACE11 = IOMUX_PAD(0x0400, 0x0198, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD3__GPIO4_IO15 = IOMUX_PAD(0x0400, 0x0198, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD3__SRC_BOOT_CFG11 = IOMUX_PAD(0x0400, 0x0198, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD4__SAI1_TX_DATA4 = IOMUX_PAD(0x0404, 0x019C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD4__SAI6_RX_BCLK = IOMUX_PAD(0x0404, 0x019C, 1, 0x0510, 1, 0), + IMX8MQ_PAD_SAI1_TXD4__SAI6_TX_BCLK = IOMUX_PAD(0x0404, 0x019C, 2, 0x051C, 1, 0), + IMX8MQ_PAD_SAI1_TXD4__ARM_PLATFORM_TRACE12 = IOMUX_PAD(0x0404, 0x019C, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD4__GPIO4_IO16 = IOMUX_PAD(0x0404, 0x019C, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD4__SRC_BOOT_CFG12 = IOMUX_PAD(0x0404, 0x019C, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD5__SAI1_TX_DATA5 = IOMUX_PAD(0x0408, 0x01A0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD5__SAI6_RX_DATA0 = IOMUX_PAD(0x0408, 0x01A0, 1, 0x0514, 1, 0), + IMX8MQ_PAD_SAI1_TXD5__SAI6_TX_DATA0 = IOMUX_PAD(0x0408, 0x01A0, 2, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD5__ARM_PLATFORM_TRACE13 = IOMUX_PAD(0x0408, 0x01A0, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD5__GPIO4_IO17 = IOMUX_PAD(0x0408, 0x01A0, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD5__SRC_BOOT_CFG13 = IOMUX_PAD(0x0408, 0x01A0, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD6__SAI1_TX_DATA6 = IOMUX_PAD(0x040C, 0x01A4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD6__SAI6_RX_SYNC = IOMUX_PAD(0x040C, 0x01A4, 1, 0x0518, 1, 0), + IMX8MQ_PAD_SAI1_TXD6__SAI6_TX_SYNC = IOMUX_PAD(0x040C, 0x01A4, 2, 0x0520, 1, 0), + IMX8MQ_PAD_SAI1_TXD6__ARM_PLATFORM_TRACE14 = IOMUX_PAD(0x040C, 0x01A4, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD6__GPIO4_IO18 = IOMUX_PAD(0x040C, 0x01A4, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD6__SRC_BOOT_CFG14 = IOMUX_PAD(0x040C, 0x01A4, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_TXD7__SAI1_TX_DATA7 = IOMUX_PAD(0x0410, 0x01A8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD7__SAI6_MCLK = IOMUX_PAD(0x0410, 0x01A8, 1, 0x0530, 1, 0), + IMX8MQ_PAD_SAI1_TXD7__ARM_PLATFORM_TRACE15 = IOMUX_PAD(0x0410, 0x01A8, 4, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD7__GPIO4_IO19 = IOMUX_PAD(0x0410, 0x01A8, 5, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_TXD7__SRC_BOOT_CFG15 = IOMUX_PAD(0x0410, 0x01A8, 6, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI1_MCLK__SAI1_MCLK = IOMUX_PAD(0x0414, 0x01AC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI1_MCLK__SAI5_MCLK = IOMUX_PAD(0x0414, 0x01AC, 1, 0x052C, 1, 0), + IMX8MQ_PAD_SAI1_MCLK__SAI1_TX_BCLK = IOMUX_PAD(0x0414, 0x01AC, 2, 0x04C8, 2, 0), + IMX8MQ_PAD_SAI1_MCLK__GPIO4_IO20 = IOMUX_PAD(0x0414, 0x01AC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_RXFS__SAI2_RX_SYNC = IOMUX_PAD(0x0418, 0x01B0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_RXFS__SAI5_TX_SYNC = IOMUX_PAD(0x0418, 0x01B0, 1, 0x04EC, 2, 0), + IMX8MQ_PAD_SAI2_RXFS__GPIO4_IO21 = IOMUX_PAD(0x0418, 0x01B0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_RXC__SAI2_RX_BCLK = IOMUX_PAD(0x041C, 0x01B4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_RXC__SAI5_TX_BCLK = IOMUX_PAD(0x041C, 0x01B4, 1, 0x04E8, 2, 0), + IMX8MQ_PAD_SAI2_RXC__GPIO4_IO22 = IOMUX_PAD(0x041C, 0x01B4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_RXD0__SAI2_RX_DATA0 = IOMUX_PAD(0x0420, 0x01B8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_RXD0__SAI5_TX_DATA0 = IOMUX_PAD(0x0420, 0x01B8, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_RXD0__GPIO4_IO23 = IOMUX_PAD(0x0420, 0x01B8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_TXFS__SAI2_TX_SYNC = IOMUX_PAD(0x0424, 0x01BC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_TXFS__SAI5_TX_DATA1 = IOMUX_PAD(0x0424, 0x01BC, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_TXFS__GPIO4_IO24 = IOMUX_PAD(0x0424, 0x01BC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_TXC__SAI2_TX_BCLK = IOMUX_PAD(0x0428, 0x01C0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_TXC__SAI5_TX_DATA2 = IOMUX_PAD(0x0428, 0x01C0, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_TXC__GPIO4_IO25 = IOMUX_PAD(0x0428, 0x01C0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_TXD0__SAI2_TX_DATA0 = IOMUX_PAD(0x042C, 0x01C4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_TXD0__SAI5_TX_DATA3 = IOMUX_PAD(0x042C, 0x01C4, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_TXD0__GPIO4_IO26 = IOMUX_PAD(0x042C, 0x01C4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI2_MCLK__SAI2_MCLK = IOMUX_PAD(0x0430, 0x01C8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI2_MCLK__SAI5_MCLK = IOMUX_PAD(0x0430, 0x01C8, 1, 0x052C, 2, 0), + IMX8MQ_PAD_SAI2_MCLK__GPIO4_IO27 = IOMUX_PAD(0x0430, 0x01C8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_RXFS__SAI3_RX_SYNC = IOMUX_PAD(0x0434, 0x01CC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_RXFS__GPT1_CAPTURE1 = IOMUX_PAD(0x0434, 0x01CC, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_RXFS__SAI5_RX_SYNC = IOMUX_PAD(0x0434, 0x01CC, 2, 0x04E4, 2, 0), + IMX8MQ_PAD_SAI3_RXFS__GPIO4_IO28 = IOMUX_PAD(0x0434, 0x01CC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_RXC__SAI3_RX_BCLK = IOMUX_PAD(0x0438, 0x01D0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_RXC__GPT1_CAPTURE2 = IOMUX_PAD(0x0438, 0x01D0, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_RXC__SAI5_RX_BCLK = IOMUX_PAD(0x0438, 0x01D0, 2, 0x04D0, 2, 0), + IMX8MQ_PAD_SAI3_RXC__GPIO4_IO29 = IOMUX_PAD(0x0438, 0x01D0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_RXD__SAI3_RX_DATA0 = IOMUX_PAD(0x043C, 0x01D4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_RXD__GPT1_COMPARE1 = IOMUX_PAD(0x043C, 0x01D4, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_RXD__SAI5_RX_DATA0 = IOMUX_PAD(0x043C, 0x01D4, 2, 0x04D4, 2, 0), + IMX8MQ_PAD_SAI3_RXD__GPIO4_IO30 = IOMUX_PAD(0x043C, 0x01D4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_TXFS__SAI3_TX_SYNC = IOMUX_PAD(0x0440, 0x01D8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_TXFS__GPT1_CLK = IOMUX_PAD(0x0440, 0x01D8, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_TXFS__SAI5_RX_DATA1 = IOMUX_PAD(0x0440, 0x01D8, 2, 0x04D8, 2, 0), + IMX8MQ_PAD_SAI3_TXFS__GPIO4_IO31 = IOMUX_PAD(0x0440, 0x01D8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_TXC__SAI3_TX_BCLK = IOMUX_PAD(0x0444, 0x01DC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_TXC__GPT1_COMPARE2 = IOMUX_PAD(0x0444, 0x01DC, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_TXC__SAI5_RX_DATA2 = IOMUX_PAD(0x0444, 0x01DC, 2, 0x04DC, 2, 0), + IMX8MQ_PAD_SAI3_TXC__GPIO5_IO0 = IOMUX_PAD(0x0444, 0x01DC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_TXD__SAI3_TX_DATA0 = IOMUX_PAD(0x0448, 0x01E0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_TXD__GPT1_COMPARE3 = IOMUX_PAD(0x0448, 0x01E0, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_TXD__SAI5_RX_DATA3 = IOMUX_PAD(0x0448, 0x01E0, 2, 0x04E0, 2, 0), + IMX8MQ_PAD_SAI3_TXD__GPIO5_IO1 = IOMUX_PAD(0x0448, 0x01E0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SAI3_MCLK__SAI3_MCLK = IOMUX_PAD(0x044C, 0x01E4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_MCLK__PWM4_OUT = IOMUX_PAD(0x044C, 0x01E4, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SAI3_MCLK__SAI5_MCLK = IOMUX_PAD(0x044C, 0x01E4, 2, 0x052C, 3, 0), + IMX8MQ_PAD_SAI3_MCLK__GPIO5_IO2 = IOMUX_PAD(0x044C, 0x01E4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SPDIF_TX__SPDIF1_OUT = IOMUX_PAD(0x0450, 0x01E8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SPDIF_TX__PWM3_OUT = IOMUX_PAD(0x0450, 0x01E8, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SPDIF_TX__GPIO5_IO3 = IOMUX_PAD(0x0450, 0x01E8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SPDIF_RX__SPDIF1_IN = IOMUX_PAD(0x0454, 0x01EC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SPDIF_RX__PWM2_OUT = IOMUX_PAD(0x0454, 0x01EC, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SPDIF_RX__GPIO5_IO4 = IOMUX_PAD(0x0454, 0x01EC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_SPDIF_EXT_CLK__SPDIF1_EXT_CLK = IOMUX_PAD(0x0458, 0x01F0, 0, 0x0000, 0, 0), + IMX8MQ_PAD_SPDIF_EXT_CLK__PWM1_OUT = IOMUX_PAD(0x0458, 0x01F0, 1, 0x0000, 0, 0), + IMX8MQ_PAD_SPDIF_EXT_CLK__GPIO5_IO5 = IOMUX_PAD(0x0458, 0x01F0, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI1_SCLK__ECSPI1_SCLK = IOMUX_PAD(0x045C, 0x01F4, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI1_SCLK__UART3_RX = IOMUX_PAD(0x045C, 0x01F4, 1, 0x0504, 0, 0), + IMX8MQ_PAD_ECSPI1_SCLK__GPIO5_IO6 = IOMUX_PAD(0x045C, 0x01F4, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI1_MOSI__ECSPI1_MOSI = IOMUX_PAD(0x0460, 0x01F8, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI1_MOSI__UART3_TX = IOMUX_PAD(0x0460, 0x01F8, 1, 0x0504, 1, 0), + IMX8MQ_PAD_ECSPI1_MOSI__GPIO5_IO7 = IOMUX_PAD(0x0460, 0x01F8, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI1_MISO__ECSPI1_MISO = IOMUX_PAD(0x0464, 0x01FC, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI1_MISO__UART3_CTS_B = IOMUX_PAD(0x0464, 0x01FC, 1, 0x0500, 0, 0), + IMX8MQ_PAD_ECSPI1_MISO__GPIO5_IO8 = IOMUX_PAD(0x0464, 0x01FC, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI1_SS0__ECSPI1_SS0 = IOMUX_PAD(0x0468, 0x0200, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI1_SS0__UART3_RTS_B = IOMUX_PAD(0x0468, 0x0200, 1, 0x0500, 1, 0), + IMX8MQ_PAD_ECSPI1_SS0__GPIO5_IO9 = IOMUX_PAD(0x0468, 0x0200, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI2_SCLK__ECSPI2_SCLK = IOMUX_PAD(0x046C, 0x0204, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI2_SCLK__UART4_RX = IOMUX_PAD(0x046C, 0x0204, 1, 0x050C, 0, 0), + IMX8MQ_PAD_ECSPI2_SCLK__GPIO5_IO10 = IOMUX_PAD(0x046C, 0x0204, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI2_MOSI__ECSPI2_MOSI = IOMUX_PAD(0x0470, 0x0208, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI2_MOSI__UART4_TX = IOMUX_PAD(0x0470, 0x0208, 1, 0x050C, 1, 0), + IMX8MQ_PAD_ECSPI2_MOSI__GPIO5_IO11 = IOMUX_PAD(0x0470, 0x0208, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI2_MISO__ECSPI2_MISO = IOMUX_PAD(0x0474, 0x020C, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI2_MISO__UART4_CTS_B = IOMUX_PAD(0x0474, 0x020C, 1, 0x0508, 0, 0), + IMX8MQ_PAD_ECSPI2_MISO__GPIO5_IO12 = IOMUX_PAD(0x0474, 0x020C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_ECSPI2_SS0__ECSPI2_SS0 = IOMUX_PAD(0x0478, 0x0210, 0, 0x0000, 0, 0), + IMX8MQ_PAD_ECSPI2_SS0__UART4_RTS_B = IOMUX_PAD(0x0478, 0x0210, 1, 0x0508, 1, 0), + IMX8MQ_PAD_ECSPI2_SS0__GPIO5_IO13 = IOMUX_PAD(0x0478, 0x0210, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C1_SCL__I2C1_SCL = IOMUX_PAD(0x047C, 0x0214, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C1_SCL__ENET_MDC = IOMUX_PAD(0x047C, 0x0214, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C1_SCL__GPIO5_IO14 = IOMUX_PAD(0x047C, 0x0214, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C1_SDA__I2C1_SDA = IOMUX_PAD(0x0480, 0x0218, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C1_SDA__ENET_MDIO = IOMUX_PAD(0x0480, 0x0218, 1, 0x04C0, 2, 0), + IMX8MQ_PAD_I2C1_SDA__GPIO5_IO15 = IOMUX_PAD(0x0480, 0x0218, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C2_SCL__I2C2_SCL = IOMUX_PAD(0x0484, 0x021C, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C2_SCL__ENET_1588_EVENT1_IN = IOMUX_PAD(0x0484, 0x021C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C2_SCL__GPIO5_IO16 = IOMUX_PAD(0x0484, 0x021C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C2_SDA__I2C2_SDA = IOMUX_PAD(0x0488, 0x0220, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C2_SDA__ENET_1588_EVENT1_OUT = IOMUX_PAD(0x0488, 0x0220, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C2_SDA__GPIO5_IO17 = IOMUX_PAD(0x0488, 0x0220, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C3_SCL__I2C3_SCL = IOMUX_PAD(0x048C, 0x0224, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C3_SCL__PWM4_OUT = IOMUX_PAD(0x048C, 0x0224, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C3_SCL__GPT2_CLK = IOMUX_PAD(0x048C, 0x0224, 2, 0x0000, 0, 0), + IMX8MQ_PAD_I2C3_SCL__GPIO5_IO18 = IOMUX_PAD(0x048C, 0x0224, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C3_SDA__I2C3_SDA = IOMUX_PAD(0x0490, 0x0228, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C3_SDA__PWM3_OUT = IOMUX_PAD(0x0490, 0x0228, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C3_SDA__GPT3_CLK = IOMUX_PAD(0x0490, 0x0228, 2, 0x0000, 0, 0), + IMX8MQ_PAD_I2C3_SDA__GPIO5_IO19 = IOMUX_PAD(0x0490, 0x0228, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C4_SCL__I2C4_SCL = IOMUX_PAD(0x0494, 0x022C, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C4_SCL__PWM2_OUT = IOMUX_PAD(0x0494, 0x022C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C4_SCL__PCIE1_CLKREQ_B = IOMUX_PAD(0x0494, 0x022C, 2, 0x0524, 0, 0), + IMX8MQ_PAD_I2C4_SCL__GPIO5_IO20 = IOMUX_PAD(0x0494, 0x022C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_I2C4_SDA__I2C4_SDA = IOMUX_PAD(0x0498, 0x0230, 0x10 | 0, 0x0000, 0, 0), + IMX8MQ_PAD_I2C4_SDA__PWM1_OUT = IOMUX_PAD(0x0498, 0x0230, 1, 0x0000, 0, 0), + IMX8MQ_PAD_I2C4_SDA__PCIE2_CLKREQ_B = IOMUX_PAD(0x0498, 0x0230, 2, 0x0528, 0, 0), + IMX8MQ_PAD_I2C4_SDA__GPIO5_IO21 = IOMUX_PAD(0x0498, 0x0230, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART1_RXD__UART1_RX = IOMUX_PAD(0x049C, 0x0234, 0, 0x04F4, 0, 0), + IMX8MQ_PAD_UART1_RXD__ECSPI3_SCLK = IOMUX_PAD(0x049C, 0x0234, 1, 0x0000, 0, 0), + IMX8MQ_PAD_UART1_RXD__GPIO5_IO22 = IOMUX_PAD(0x049C, 0x0234, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART1_TXD__UART1_TX = IOMUX_PAD(0x04A0, 0x0238, 0, 0x0000, 0, 0), + IMX8MQ_PAD_UART1_TXD__ECSPI3_MOSI = IOMUX_PAD(0x04A0, 0x0238, 1, 0x0000, 0, 0), + IMX8MQ_PAD_UART1_TXD__GPIO5_IO23 = IOMUX_PAD(0x04A0, 0x0238, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART2_RXD__UART2_RX = IOMUX_PAD(0x04A4, 0x023C, 0, 0x04FC, 0, 0), + IMX8MQ_PAD_UART2_RXD__ECSPI3_MISO = IOMUX_PAD(0x04A4, 0x023C, 1, 0x0000, 0, 0), + IMX8MQ_PAD_UART2_RXD__GPIO5_IO24 = IOMUX_PAD(0x04A4, 0x023C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART2_TXD__UART2_TX = IOMUX_PAD(0x04A8, 0x0240, 0, 0x0000, 0, 0), + IMX8MQ_PAD_UART2_TXD__ECSPI3_SS0 = IOMUX_PAD(0x04A8, 0x0240, 1, 0x0000, 0, 0), + IMX8MQ_PAD_UART2_TXD__GPIO5_IO25 = IOMUX_PAD(0x04A8, 0x0240, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART3_RXD__UART3_RX = IOMUX_PAD(0x04AC, 0x0244, 0, 0x0504, 2, 0), + IMX8MQ_PAD_UART3_RXD__UART1_CTS_B = IOMUX_PAD(0x04AC, 0x0244, 1, 0x04F0, 0, 0), + IMX8MQ_PAD_UART3_RXD__GPIO5_IO26 = IOMUX_PAD(0x04AC, 0x0244, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART3_TXD__UART3_TX = IOMUX_PAD(0x04B0, 0x0248, 0, 0x0000, 0, 0), + IMX8MQ_PAD_UART3_TXD__UART1_RTS_B = IOMUX_PAD(0x04B0, 0x0248, 1, 0x04F0, 1, 0), + IMX8MQ_PAD_UART3_TXD__GPIO5_IO27 = IOMUX_PAD(0x04B0, 0x0248, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART4_RXD__UART4_RX = IOMUX_PAD(0x04B4, 0x024C, 0, 0x050C, 2, 0), + IMX8MQ_PAD_UART4_RXD__UART2_CTS_B = IOMUX_PAD(0x04B4, 0x024C, 1, 0x04F8, 0, 0), + IMX8MQ_PAD_UART4_RXD__PCIE1_CLKREQ_B = IOMUX_PAD(0x04B4, 0x024C, 2, 0x0524, 1, 0), + IMX8MQ_PAD_UART4_RXD__GPIO5_IO28 = IOMUX_PAD(0x04B4, 0x024C, 5, 0x0000, 0, 0), + + IMX8MQ_PAD_UART4_TXD__UART4_TX = IOMUX_PAD(0x04B8, 0x0250, 0, 0x0000, 0, 0), + IMX8MQ_PAD_UART4_TXD__UART2_RTS_B = IOMUX_PAD(0x04B8, 0x0250, 1, 0x04F8, 1, 0), + IMX8MQ_PAD_UART4_TXD__PCIE2_CLKREQ_B = IOMUX_PAD(0x04B8, 0x0250, 2, 0x0528, 1, 0), + IMX8MQ_PAD_UART4_TXD__GPIO5_IO29 = IOMUX_PAD(0x04B8, 0x0250, 5, 0x0000, 0, 0), +}; +#endif From patchwork Wed Jan 10 03:05:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857891 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="meIcKZoO"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYrr0rFNz9s4s for ; Wed, 10 Jan 2018 14:09:31 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id B284AC22103; Wed, 10 Jan 2018 03:07:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 70CE2C21FA6; Wed, 10 Jan 2018 03:06:39 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 9A6ADC220AE; Wed, 10 Jan 2018 03:06:33 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50053.outbound.protection.outlook.com [40.107.5.53]) by lists.denx.de (Postfix) with ESMTPS id 4D9F2C220A5 for ; Wed, 10 Jan 2018 03:06:26 +0000 (UTC) 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=9pp16mgEkKLjt4AeBXFKu4OfJsLJrnGU4/EDlxb3QVA=; b=meIcKZoO3W/XbAA9w2lSZdfCJDqsJEQ2OhXlIHIigqy3/cVajoStpbdtN7/RyITYOHHRSred+OoTZp2xcIqwfh+suZ0lASt8HcI6uK65q60ys0B38N6kQrC6oWa+UO77VsrY8hQvMz+N0/TKDkkpjpWaOBpVW2rUjw3WkrwG51M= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:21 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:36 +0800 Message-Id: <20180110030603.27864-6-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d82a0efa-6334-43ac-7153-08d557d72252 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:/EFv1W4727+iKXT0Wq4w2Vy2T2HVL1dNtuyoSc1ZTOgABkfIe5TNZOCYIPlJKwWtHslf6rbvgPT3ahIC6d6zk4BOBB1wtHZ14NEphQMXQo201AP0hgEIQGxkEFnjHkOI6PooKEqlZ3pzO+eeJ3ux6IS+ZT+555trd2rZvxsnjQDcTf2lEbjJ2kIc1HyI3SW976XjV6RUaYn0LC2vFlw/Q+NBWU7GltuX9wLgz3APxmNwGjX2BQoQIffu6o3f5aLz; 25:v0M3t2VjznX6espX0mdMRdpqKh5kxjvI1ngyWTLjTIozXppY8smWj/Vt3kmYUPpukCphkBZ4Qo9sUkcYHEvtVb8CGTHYRtq3dGOPcC6m3TXEgdXbmUDKtT3wEDFdvwsi6lS09GNFYlILcz8eYTleAWVqwxt1DNzdgxnL8bMXn/Q4kxjlkfM1IjByqYSHmuE5oNVVYk5DvpeK9/rHLH2cDe0lzN8jfXIsFeRAGgO0OLJM2kXASJlfhTcG049YM+tY1L+r53/b/DU1nvPEt9BWLkXt0cG3QbB/NEygjxuMqMwROvIK4aIN9OSRhv29NfE7PO92Zzo9Tc5LJzDzeRW2NA==; 31:VLaSMPFxC9H+r1pKRup9juG42T3Mgk7Ea6Z3C7fiQ0EtGdyj0sAVayzoJ4dq6Xs9ZO94MeZgLh9E3CncuEh7q6jojFx07fq4AigAI/hs1l6nWtmGBMBhpZky2wZi8YbnKnFaS5EIwAnMd/9jQWfbbikV97XpSU5deSihfTZDmm12empFm2q4hrqTAJUuBpZjNVVijDtU6E8JEetIfUtHaEeqSDBg2CwD5b7+7+keirY= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:KSeLHBiG2BZBuLeYXYu+xG/yrT/pcISlUtr0F68l5gk+ELJYHXxy9qe1QAIQgUvDBVETzJvbJCYEd5PbQtiMx87RvSr5tTx4bCCWUC1SDGN7wDhA9Xy43omKFKiRbNU1BAKGFAusoZALU+VtvPACK9PapaxPRoe1jCix7uZkkjG5XnlbyBHuHAU08Yy8PGEaLgkmsa1mfCpgQa5gVjnUVcL5tSLAXe6Tb62mUor6/iI7Cfp1m9P1BY49TrqjP7c1pafmRVujEV7aHzvKL18tO/kCKK4l2szOVKspM4Cj4GJ4txiYrHDrnA4L3WdKt5j8OgAG8woJVZysMI7YEwhUMn5MCVUWygGIbDc69xmJ0OtBLqiBP3HBAYU9Rlm+50V2vi5PdzYwMZDmblvHBe+CaVEwexnojMSlOW8nVevoO7sEoHetn2FzOIuaOBNllyqg5GJDofNEzb+sP+vPPffIUqK6LWN9PO4OllIGQOArvKLP/1vXsCEA3AwPeJHR1ru7; 4:fkMcF33SerwkLYr301uOj01lh4iPJ0jX7gps/K6OdPw8w51Wf5qGHmzDgjxS8WNIsRURrCm1w5NmAosVbnZr+xRRdgcrkhK/v3Nzrov6O+7vBJ3CWVyzJruP6OEW1PovrhJ5W+bPVMFf5GeFhXFSQ2oyhc97D5qlR9EQQDlQ9XN6uqlmHFRRe7JJ57G3I9BKJ8IPnj7n1m4vyysvvmQWgc/yFeEnIb0hNZOlk1YoT396ij37scPw6o7aSpAy+HMYptFva07+x/mMofd2TQpERNFeTNOUPF2eLvNZaOQRql+kOK/BzKjd9fBDfZ+Xdeat X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(54906003)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:hWCgWz88N5qNCnCGJhLAJFPl6KPzzWFm+SQhM9brQ?= j1iNamROsx/XIaFociGLxKpDIuVLjVIg9Uen5rZzs1nxBYiWUYupWai899ERzjJsvX0Hc2ecqUwASg+93C3hGHC273KV2UwdigH/7NLJxFFvJLt0a1HM3OOxhpkV/Nc5LKLsaC8aMC7NKOdSzhzt+MTFc2UCS/sBoMytejn6m1f+TPWXB0bTb2QBFTblrgPVKUiF9eT7K6gmFqaSwhi7uFnTviFCzXa2CcBrlLAl40L91CNeDI5HjD7Y4REnFhE9xZ+Pg/ZTZjIbtxbIShXggw0MGK58mBeZmGJGeNIRVDjyM9WlLo+DGO7uc1sPySa/OFACuqJPW7x9yx2pzaV8b9VRQe/q9YzmnpwgjXu6IzVqsxtNMmFASdfzxEToPqbED2zMPvF1ZKqPXBbEVzgA9Dqk1fVnzaXV25VubJvAawAxkE8Grq5F9pp/q6p35ItNjLTiBY7BBGsI8c0YCedOr/GajGcP9udB9g260P8gjNqqHqYtJ3zBsleG3GnghSGwRm27duYQHPlye2QOGPTokbYx/R4RauXUBL42pbWO3TnQBe1Wb//7+7eOrmVrxiuY8CRhACbfWdHNetFmahlx0s2MrfJEDG8O8+PN95fj1U1D2Hj8s/E6yTwp2LzSfW1Xjlbi85Ef2bnEY6xI4bJk2YP1UPjPLbphCAtJ45yyj45ARLQnpA+deeg3X/ne6Yfm0BJwgVRTDklX46NtI09M5wKi+/tAYUeicxaeIYcJc0WtrT025qPuY2m1i+q1R7fzM+zOF3i8qrkpQ4o2YDoiRJJ3HsYS37T+16Wimhhx1PYqN62aF2BDoDDFwMgExA6JLFnQOu4cu6elqdt1zABuoHhsw5f/NEIejxauNZQCs8bhDChONnYtLs85qviOr/MkVb9mOGFDWMbZCOFXv7koObwnZbGnVvMit+1J+e129c+rDO8H1m/uigIdgmYAXmSA9vm4yvLFq3ziK4qenMecqwLkD4hEFOkH/HfHjGNpabHJbjIbtqK/xo2zVTwvQs9fbHYGPuC73kOKtgpqC3D/GYsKjTx9OC3bwYDWXR7e4KA5Ld6YKnnMcoP0NceHD3NEtllt4DeT86ohVSZlgoJ/Qjvd8e16r1RmWsbIbQZn79DXA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:85A86DwRC8c19u//XBZATb0Axx4VPAzvZBVXEv7/p8jl8qtwRejRkaD6B//fudVBpyOCwTXPQKelCtKPypy6V40wX9kl38pW3mwZ6q8R++juLONzztUEy2r3v0urA6CnACSwcx5VobAhl9S61Gm/cBnngPExmJAvWS2grJhz87tm1bm/gYxugS2oqe/pBDbFOX0XFw5o/2x/+6etqtMl+Ywaa8ES3DBMBnrRKxivTHT8nqZtXlnP1UHALfsoLUpFOpnegiHdsLhe3Bs0PG7aC2Mg7S38+OyM0+H6gZPRHorgdLwY2iTQx8fSUBnJv9ZYLOTm505hnGLQAYlhifnACYVSdVSDovT+rC379LCNIxM=; 5:+kipNcXPzVZu7Q3LgsZ7ECLFXXkpPm+aOphufK4aSZ65ay367glKDqmcEKfzjlhy0TSFTuJmUUEbqiPCgvwuyOkT/h9+kzoOv0xDORGgDLcNSuk3z/VTNse3bttGba/Pwa/s00X3tSLoxrH8URzdlzBYdN/yEv7RuREd9gH+clA=; 24:uNCtvhsIOfIk8lrO8PiDSntsPYcBltEm2tLzfasq9aVQieDnhAVM88/0CuNi4gBFiN5pafDYDjs4NSuJiBqVUUYrvbAEemVXtauT7Stc6d4=; 7:Vu/rbLZnZ9iqnECl12dMrc5u8NlREx04uz+o2Np/6YsX7W7FbuwGrz26o2G1rgH05RD3h3zUWlcGFYlcA5vZ91ikwEFl1zKy55/Et0mvAH/XNrYVaKUIi+Zto5fuLF8Lw9FcHitIihc0tDqTD+CqO4aGwdfKx1Benu/vTwKnBWgeYe6sDEV9WMWxje88P7zeYZEto+f3r/HqbYlS1/617cb+WNsjVUlHHxDBYSup89nGC19igAElHlonwJdNez/9 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:21.4149 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d82a0efa-6334-43ac-7153-08d557d72252 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 05/32] time: add wait_mask_set/clr_timeout helper functions X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add heler functions for wait mask set/clr. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam Cc: Masahiro Yamada Cc: Simon Glass --- include/linux/delay.h | 4 ++++ lib/time.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/linux/delay.h b/include/linux/delay.h index 3dcd435d0d..b08fcb8c09 100644 --- a/include/linux/delay.h +++ b/include/linux/delay.h @@ -21,4 +21,8 @@ static inline void ndelay(unsigned long nsec) udelay(DIV_ROUND_UP(nsec, 1000)); } +int wait_mask_set_timeout(void *addr, u32 mask, u32 timeout); + +int wait_mask_clr_timeout(void *addr, u32 mask, u32 timeout); + #endif /* defined(_LINUX_DELAY_H) */ diff --git a/lib/time.c b/lib/time.c index aed1a091f2..9701287629 100644 --- a/lib/time.c +++ b/lib/time.c @@ -171,3 +171,33 @@ void udelay(unsigned long usec) usec -= kv; } while(usec); } + +int wait_mask_set_timeout(void *addr, u32 mask, u32 timeout) +{ + unsigned long long end_tick; + u32 val; + + end_tick = usec_to_tick(timeout) + get_ticks(); + do { + val = readl(addr); + if ((val & mask) == mask) + return 0; + } while (end_tick > get_ticks()); + + return -ETIMEDOUT; +} + +int wait_mask_clr_timeout(void *addr, u32 mask, u32 timeout) +{ + unsigned long long end_tick; + u32 val; + + end_tick = usec_to_tick(timeout) + get_ticks(); + do { + val = readl(addr); + if (!(val & mask)) + return 0; + } while (end_tick > get_ticks()); + + return -ETIMEDOUT; +} From patchwork Wed Jan 10 03:05:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857897 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="wkhAGn6f"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYxm3s0xz9s7n for ; Wed, 10 Jan 2018 14:13:48 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 397A2C22056; Wed, 10 Jan 2018 03:12:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.2 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID, UPPERCASE_50_75 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9F981C22052; Wed, 10 Jan 2018 03:07:36 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 8473CC22090; Wed, 10 Jan 2018 03:06:40 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50043.outbound.protection.outlook.com [40.107.5.43]) by lists.denx.de (Postfix) with ESMTPS id 5F9C1C22078 for ; Wed, 10 Jan 2018 03:06:33 +0000 (UTC) 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=Nbjm9K1NnOLbH6OxzimYy4cwxbBFsTNIMhhAvnk7LJk=; b=wkhAGn6f0mInyMOgSlnVVfjBiyAlC18eU9HTm2Yqb5n7XV2lcJXtobtrb+uOM7hOmiOuA5slW+pfcLi2hL/2tmoT0PRT7yFZze5BlOlChw1kOse62mtLMgPNVAlVd/ZjcY9TT5ktSXLaK25wbK/5wx4/4Asl5B0Z/H9RNP4nKVs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:25 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:37 +0800 Message-Id: <20180110030603.27864-7-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7b1c110b-0fae-43dd-db07-08d557d7249c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:3UE0Y16WpSO/je+/vWuB+IsUDAUZgqNRtSVojkdE2MQieg9DznAJ3MeJHEiHpn4/vopq8u1pa7r94S3TxAb4mcvNBvcNqQRx3nIiEHfMK5pKSAWSfBfNGXml2vPSRYDYxxOhmppsJFYwAGhC1J9OlqFjcFNwm/J0JDMvJrYL4pX31NWeBSmm8kCRrfu5cwUpiURMb0s2QjZKrt/UAr1Oe9KCF2IZrOtGyVNPSbuf35zVCzz1DYCQlI+uYR8JJm0W; 25:bLRBX9FjOLD2pDmXt0/F9IVl5usrc9HPNXt2t2ZrLRPz+oIE9OyfTverRT+OSWxVNMlzoy+lEvqWup/fvax1WzuhQOlRu11N2ho/3rbipuLvrbKf2hJsmC1LbOEqBExQWGiMxp10T0rCae/l02SU1kmlJ1vM63rNanf/wvUJH0qeHHTrBxCYCXQeMJyqiozJwEQS82CISuu71eJAq8RaikwP5VRcZDKEffptiMNHTeYSCyXAUSTK3O3WIUYNNY79GYM0uTg0CAMttCF0wKjhB3awUtMN4jsBpkTLBt9LJpc5KthCGQjjRKvcA4I7K8KghbEi336B5UMChXxGW4Aw1A==; 31:OpOqiB1ZPfbr3N37ODgCWgpEjROVD+ua/yF2cDtY5I+TNX3/8jHpHz8mHKfu2/66M3GmWUlt892liKg3q3PpSIpNHvSrb1PbgCKieYrXtF4k+QrhAgwrT+64ntMeXPWTX1tJtSocfpe7Y3hCjonsi3NyzW+/1ggh9pEmTyln5hZaGQj1JeB7NzELXYxAEeASmhaRenIdBsf1iEQj0yP9KwzGW6rj08FR7VUKzhfE6bI= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:9W3/zQfAj4PtV+j4izkmRw7SIDV/NHYYk85+U430w6Qb5uI8/M7O3gSi+gZvLkaOkPEGealW1+LISDb8PZl6K52VsIjvz85ho5faYT0SmzPjPaN3tfQeALFCrQZvcITfQ5zrKqsjdnzNRZSklyl8Gk5FJ2GkiNUAIqvvCNKZO/zm1yTTSYm7NIQGEEujQvJszHlyrQYtNBjGjS0/Wbh3FFM88oBRo0itLFV7lPpejMlMBqpGu0OaGSug4h8whW18vuBkQgvj2Ctel2gLyLYvlHH5Y1XuKNgJQPihoyXy93bCSvWD3inWzM8JS8+GesTd4jic6j9A0dTmzWF+7DoxHuVac5qhwECeVnR6A03arbnMalYOlO35zHtF058UY62x1hu32/APxGmNtnZRr0pZ4+JwwvznfBaI8WIG+q/hdwHVOIOdQ53VrbeZymqjTmdKXLlUyk72Ssy4ET9L7AwZB/cy6n2N49j3Ul5yVv1nbqbeWTKGRnAsHyh37a2h0kFr; 4:2Jzo30TiomG9FG+eSN9egCx8Bd32qBU6tZP0LpIuyh3LQE3yxq/KyhaFUx0deK43GiRMkiCyjybZhycQUtwbgTRkiqOPjO6SK7Y90FFmP61Fydgi9AmsUS3m1rAV2zC96JWCqGriEthGAluemB+mC59AFTYc1amPS+gUiquAUBC/hYJA150SB2bXDPmUv1CnDgG8uXxdW14DPWTrKEcYZkc/23AMPg3bBXibSK9ok6q8ZLlI0W1ruI0aPIS0raFNAiWDSkRXMDfatkvnrX1mZgEW1KRuQzRC07V6AMp819/RKvBGCChzM40SMbVchPB/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(53946003)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(16200700003)(47776003)(461764006)(32563001)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:opj27quKtmHRU6p/AcXjoFm+V622IDI6H3bF3nh72?= t5diy6ABg11rzAQe76BgJXHOeMtnuneDCC8UbNbmn6x9XMc72ASvGhkegeNAW7q18hdtXbqrz/jxpoPtYbQitXCh0kWLgqL8qmHHLgWoTs3hyH+pBz/5MDxqpw/BlnzWYtDEN4dW7YzyJ5MixRaFcRai8gyg7D3+FDNrNaC06ZxEYPuF4aSgmXegLDkHeBy800f45WG8nFTfnTtJolxWqjiOlinFa+SnokpfyYcvsJgeVxB+klIE/2CeMqwGAu7BKQtxrhC1mBNsfyhOl1VSf4QLO4OE0Vsf54c3HpLOEvJlnA+LXb3pC7Pn0PdEu1b/M1/uJLjsRdbi0XVccA/XGqSz1eJq3/eik59pkP+FZrdTL5dkNuU4bnvicKYcDHjhlHCKWZd8NBG9MBaTbHn2j1TqNKsC5G0ITxygd+WU1oEhJLklVs6vkPWa+fP5dN7uDoQmhkXIWOokK0LezUPG//WLJBhoFyr97OWrwH2Iu+4Qv54oOuHLjiVP9hqpmNAetBgsslBbRUIvyesxI4uEUsIpwkvRT5/1ICaSodp9Z7xVfbyhSgKSw4vCilQhVSBXVAvug4IZbBBD1kXLacj+g2uymXb+KzUnmQ2cn5RhPi/o6e/Vi1sChi0L6D6wZOyId+yESNkI7A6XXWWq7pTq1AbYMZXI8xwOod4cOtK/8E/+u7tI+oLpZ4ULzV3SHImCKBC1WZZnPUu2Y0DHhxGX/P64GLBHVoJHgB7XtTJfn6lte2G4524rkZLBwChAKrtlFxIAss4mmhNNCmzf/u6xfaEzLxZCOGIOUoEGpQ1SdM+K2d7+sSS6wBQiGmTggtQKFaXDj5E8MEEEXStwbrtR1REG6wdgtm8po7LG8dfJX/ZkSsC2JBmJd27TnWzJMPqmlHfOiNw7KOA3n/mtbNEY4lmBh0NTWkZJRCkhW/AcKOpmtRgAM7vtIDatxc2pG9fGAb1ECeId9S0laqDviLgRGI8dgWY9lIVRqoNhxO48PaAxoJ/aZMxqvDXyuvTXZ5I2my1JGnqQIRkAujcm1fxs9TQoJMP41PEcRjI4kC6gml8Zo/bA2eu5s+4R/dxjnn9wIy4CyMLjmwQCnaja0Oe3U+enHQUe3zsstEi/eulOYXRq2H13LMM/uww/RT17ICEY0dKWrozOw0+udD1ymH0fsQMgszG0BIdmVRJAEBPJvELh4/jIRNUasVuHv+8rxyYZzujAWaY84C4uUxGUIq/W3ClLGE3iPqDKiMOHVV502T8Fw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:deL+e7oKTXXFileSVPTw8uUxfEcj/GFU5QN6Ze7bfwNGneJUD3GTXAGdVJ0gNJH1K0znJXy/LKLD/c47G5ymwmcyRVx45V0CoRSjki7g6vdCWAshyzXrXIKvR/3EhXneThjoPDu5Y4GskpSwKenm9iQOGsM8FNhmsuY6yZUGJfeIZuQhTTg/YV1NXyjdLUfKYjD2p04ROpoBYFWLZkjsTQCn60qvKYSQvNyJZOqYzWC5iFvgD8pYCfYP22AJXs63qrxrOOkcP72kkDy6r1aZOUSHIE7FeL0BORyctsTreN+VDth/e10J+00nUMejvxtsd45NcwDHuwXSZ9iHYh7JKkZsv1S0zB5PzVRlX/rMxt8=; 5:sIC2Ae5L3wSSUTKx07dDt08lHpJegV+L6DltJp1LbOyrRMdwvOvwXtgnH79mcpwjU8kqlyMC5sCuAyctfMKI0xn8fKPd4ZFqGJBg3sxo0CquMGJYrgepvOLoAlO/k2patd6fzUklzoPAqEsWjSw388nu/kzl0FlDYYWrGlN4WdA=; 24:Yt2PDuJhoTtu+sr+QMPEJmyGFu6kRIF7jME50GuYmxbBBThz0ZXOyr19KByElYGVvId2HjkJUKCWUW+rdSdoxE1YnI5atfu9G13F+OfVOTA=; 7:e+HI+Yft/DKO8TW4CIvNkIydiF5AD3sQPYnjqZDBUc/R1zcJ7i1EdzmvszRkXzf3WaNku1wOBTYu0nUPPQIXAjgkiJAsdysNLhLCDuj8FJHW6mgpyrjgjB8uGdGZCLSYsAeJ4Qn3naWTEqLS3KcJY6rirYwWYGufEdagC3ockz2JqSkh7iXMyosoQcqFEQoQdn7ZFhYUi1rkbRV0mppJY4J4pSPRAgfcnmBnDtaMUw8DiwxbiblYsxSvOpVMi4Vu SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:25.6174 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7b1c110b-0fae-43dd-db07-08d557d7249c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 06/32] imx: mx8m: add clock driver X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add clock driver to support i.MX8M. There are two kind PLLs, FRAC pll and SSCG pll. ROM already configured SYS PLL1/2, we only need to configure the output. ocotp/i2c/pll decoding and configuration/usdhc/lcdif/dram pll/ enet clock are configured in the code. Signed-off-by: Peng Fan Cc: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/arch-mx8m/clock.h | 657 +++++++++++++++++++++++++++ arch/arm/mach-imx/mx8m/Makefile | 7 + arch/arm/mach-imx/mx8m/clock.c | 795 +++++++++++++++++++++++++++++++++ arch/arm/mach-imx/mx8m/clock_slice.c | 742 ++++++++++++++++++++++++++++++ 4 files changed, 2201 insertions(+) create mode 100644 arch/arm/include/asm/arch-mx8m/clock.h create mode 100644 arch/arm/mach-imx/mx8m/Makefile create mode 100644 arch/arm/mach-imx/mx8m/clock.c create mode 100644 arch/arm/mach-imx/mx8m/clock_slice.c diff --git a/arch/arm/include/asm/arch-mx8m/clock.h b/arch/arm/include/asm/arch-mx8m/clock.h new file mode 100644 index 0000000000..555512b453 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/clock.h @@ -0,0 +1,657 @@ +/* + * Copyright 2017 NXP + * + * Peng Fan + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _ASM_ARCH_IMX8M_CLOCK_H +#define _ASM_ARCH_IMX8M_CLOCK_H + +#include + +enum pll_clocks { + ANATOP_ARM_PLL, + ANATOP_GPU_PLL, + ANATOP_SYSTEM_PLL1, + ANATOP_SYSTEM_PLL2, + ANATOP_SYSTEM_PLL3, + ANATOP_AUDIO_PLL1, + ANATOP_AUDIO_PLL2, + ANATOP_VIDEO_PLL1, + ANATOP_VIDEO_PLL2, + ANATOP_DRAM_PLL, +}; + +enum clk_slice_type { + CORE_CLOCK_SLICE, + BUS_CLOCK_SLICE, + IP_CLOCK_SLICE, + AHB_CLOCK_SLICE, + IPG_CLOCK_SLICE, + CORE_SEL_CLOCK_SLICE, + DRAM_SEL_CLOCK_SLICE, +}; + +enum clk_root_index { + MXC_ARM_CLK = 0, + ARM_A53_CLK_ROOT = 0, + ARM_M4_CLK_ROOT = 1, + VPU_A53_CLK_ROOT = 2, + GPU_CORE_CLK_ROOT = 3, + GPU_SHADER_CLK_ROOT = 4, + MAIN_AXI_CLK_ROOT = 16, + ENET_AXI_CLK_ROOT = 17, + NAND_USDHC_BUS_CLK_ROOT = 18, + VPU_BUS_CLK_ROOT = 19, + DISPLAY_AXI_CLK_ROOT = 20, + DISPLAY_APB_CLK_ROOT = 21, + DISPLAY_RTRM_CLK_ROOT = 22, + USB_BUS_CLK_ROOT = 23, + GPU_AXI_CLK_ROOT = 24, + GPU_AHB_CLK_ROOT = 25, + NOC_CLK_ROOT = 26, + NOC_APB_CLK_ROOT = 27, + AHB_CLK_ROOT = 32, + IPG_CLK_ROOT = 33, + MXC_IPG_CLK = 33, + AUDIO_AHB_CLK_ROOT = 34, + MIPI_DSI_ESC_RX_CLK_ROOT = 36, + DRAM_SEL_CFG = 48, + CORE_SEL_CFG = 49, + DRAM_ALT_CLK_ROOT = 64, + DRAM_APB_CLK_ROOT = 65, + VPU_G1_CLK_ROOT = 66, + VPU_G2_CLK_ROOT = 67, + DISPLAY_DTRC_CLK_ROOT = 68, + DISPLAY_DC8000_CLK_ROOT = 69, + PCIE1_CTRL_CLK_ROOT = 70, + PCIE1_PHY_CLK_ROOT = 71, + PCIE1_AUX_CLK_ROOT = 72, + DC_PIXEL_CLK_ROOT = 73, + LCDIF_PIXEL_CLK_ROOT = 74, + SAI1_CLK_ROOT = 75, + SAI2_CLK_ROOT = 76, + SAI3_CLK_ROOT = 77, + SAI4_CLK_ROOT = 78, + SAI5_CLK_ROOT = 79, + SAI6_CLK_ROOT = 80, + SPDIF1_CLK_ROOT = 81, + SPDIF2_CLK_ROOT = 82, + ENET_REF_CLK_ROOT = 83, + ENET_TIMER_CLK_ROOT = 84, + ENET_PHY_REF_CLK_ROOT = 85, + NAND_CLK_ROOT = 86, + QSPI_CLK_ROOT = 87, + MXC_ESDHC_CLK = 88, + USDHC1_CLK_ROOT = 88, + MXC_ESDHC2_CLK = 89, + USDHC2_CLK_ROOT = 89, + I2C1_CLK_ROOT = 90, + MXC_I2C_CLK = 90, + I2C2_CLK_ROOT = 91, + I2C3_CLK_ROOT = 92, + I2C4_CLK_ROOT = 93, + UART1_CLK_ROOT = 94, + UART2_CLK_ROOT = 95, + UART3_CLK_ROOT = 96, + UART4_CLK_ROOT = 97, + USB_CORE_REF_CLK_ROOT = 98, + USB_PHY_REF_CLK_ROOT = 99, + GIC_CLK_ROOT = 100, + ECSPI1_CLK_ROOT = 101, + ECSPI2_CLK_ROOT = 102, + PWM1_CLK_ROOT = 103, + PWM2_CLK_ROOT = 104, + PWM3_CLK_ROOT = 105, + PWM4_CLK_ROOT = 106, + GPT1_CLK_ROOT = 107, + GPT2_CLK_ROOT = 108, + GPT3_CLK_ROOT = 109, + GPT4_CLK_ROOT = 110, + GPT5_CLK_ROOT = 111, + GPT6_CLK_ROOT = 112, + TRACE_CLK_ROOT = 113, + WDOG_CLK_ROOT = 114, + WRCLK_CLK_ROOT = 115, + IPP_DO_CLKO1 = 116, + IPP_DO_CLKO2 = 117, + MIPI_DSI_CORE_CLK_ROOT = 118, + MIPI_DSI_PHY_REF_CLK_ROOT = 119, + MIPI_DSI_DBI_CLK_ROOT = 120, + OLD_MIPI_DSI_ESC_CLK_ROOT = 121, + MIPI_CSI1_CORE_CLK_ROOT = 122, + MIPI_CSI1_PHY_REF_CLK_ROOT = 123, + MIPI_CSI1_ESC_CLK_ROOT = 124, + MIPI_CSI2_CORE_CLK_ROOT = 125, + MIPI_CSI2_PHY_REF_CLK_ROOT = 126, + MIPI_CSI2_ESC_CLK_ROOT = 127, + PCIE2_CTRL_CLK_ROOT = 128, + PCIE2_PHY_CLK_ROOT = 129, + PCIE2_AUX_CLK_ROOT = 130, + ECSPI3_CLK_ROOT = 131, + OLD_MIPI_DSI_ESC_RX_ROOT = 132, + DISPLAY_HDMI_CLK_ROOT = 133, + CLK_ROOT_MAX, +}; + +enum clk_root_src { + OSC_25M_CLK, + ARM_PLL_CLK, + DRAM_PLL1_CLK, + VIDEO_PLL2_CLK, + VPU_PLL_CLK, + GPU_PLL_CLK, + SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_266M_CLK, + SYSTEM_PLL1_200M_CLK, + SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL1_133M_CLK, + SYSTEM_PLL1_100M_CLK, + SYSTEM_PLL1_80M_CLK, + SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL2_500M_CLK, + SYSTEM_PLL2_333M_CLK, + SYSTEM_PLL2_250M_CLK, + SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL2_166M_CLK, + SYSTEM_PLL2_125M_CLK, + SYSTEM_PLL2_100M_CLK, + SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, + AUDIO_PLL1_CLK, + AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, + OSC_32K_CLK, + EXT_CLK_1, + EXT_CLK_2, + EXT_CLK_3, + EXT_CLK_4, + OSC_27M_CLK, +}; + +/* CCGR index */ +enum clk_ccgr_index { + CCGR_DVFS = 0, + CCGR_ANAMIX = 1, + CCGR_CPU = 2, + CCGR_CSU = 4, + CCGR_DRAM1 = 5, + CCGR_DRAM2_OBSOLETE = 6, + CCGR_ECSPI1 = 7, + CCGR_ECSPI2 = 8, + CCGR_ECSPI3 = 9, + CCGR_ENET1 = 10, + CCGR_GPIO1 = 11, + CCGR_GPIO2 = 12, + CCGR_GPIO3 = 13, + CCGR_GPIO4 = 14, + CCGR_GPIO5 = 15, + CCGR_GPT1 = 16, + CCGR_GPT2 = 17, + CCGR_GPT3 = 18, + CCGR_GPT4 = 19, + CCGR_GPT5 = 20, + CCGR_GPT6 = 21, + CCGR_HS = 22, + CCGR_I2C1 = 23, + CCGR_I2C2 = 24, + CCGR_I2C3 = 25, + CCGR_I2C4 = 26, + CCGR_IOMUX = 27, + CCGR_IOMUX1 = 28, + CCGR_IOMUX2 = 29, + CCGR_IOMUX3 = 30, + CCGR_IOMUX4 = 31, + CCGR_M4 = 32, + CCGR_MU = 33, + CCGR_OCOTP = 34, + CCGR_OCRAM = 35, + CCGR_OCRAM_S = 36, + CCGR_PCIE = 37, + CCGR_PERFMON1 = 38, + CCGR_PERFMON2 = 39, + CCGR_PWM1 = 40, + CCGR_PWM2 = 41, + CCGR_PWM3 = 42, + CCGR_PWM4 = 43, + CCGR_QOS = 44, + CCGR_DISMIX = 45, + CCGR_MEGAMIX = 46, + CCGR_QSPI = 47, + CCGR_RAWNAND = 48, + CCGR_RDC = 49, + CCGR_ROM = 50, + CCGR_SAI1 = 51, + CCGR_SAI2 = 52, + CCGR_SAI3 = 53, + CCGR_SAI4 = 54, + CCGR_SAI5 = 55, + CCGR_SAI6 = 56, + CCGR_SCTR = 57, + CCGR_SDMA1 = 58, + CCGR_SDMA2 = 59, + CCGR_SEC_DEBUG = 60, + CCGR_SEMA1 = 61, + CCGR_SEMA2 = 62, + CCGR_SIM_DISPLAY = 63, + CCGR_SIM_ENET = 64, + CCGR_SIM_M = 65, + CCGR_SIM_MAIN = 66, + CCGR_SIM_S = 67, + CCGR_SIM_WAKEUP = 68, + CCGR_SIM_USB = 69, + CCGR_SIM_VPU = 70, + CCGR_SNVS = 71, + CCGR_TRACE = 72, + CCGR_UART1 = 73, + CCGR_UART2 = 74, + CCGR_UART3 = 75, + CCGR_UART4 = 76, + CCGR_USB_CTRL1 = 77, + CCGR_USB_CTRL2 = 78, + CCGR_USB_PHY1 = 79, + CCGR_USB_PHY2 = 80, + CCGR_USDHC1 = 81, + CCGR_USDHC2 = 82, + CCGR_WDOG1 = 83, + CCGR_WDOG2 = 84, + CCGR_WDOG3 = 85, + CCGR_VA53 = 86, + CCGR_GPU = 87, + CCGR_HEVC = 88, + CCGR_AVC = 89, + CCGR_VP9 = 90, + CCGR_HEVC_INTER = 91, + CCGR_GIC = 92, + CCGR_DISPLAY = 93, + CCGR_HDMI = 94, + CCGR_HDMI_PHY = 95, + CCGR_XTAL = 96, + CCGR_PLL = 97, + CCGR_TSENSOR = 98, + CCGR_VPU_DEC = 99, + CCGR_PCIE2 = 100, + CCGR_MIPI_CSI1 = 101, + CCGR_MIPI_CSI2 = 102, + CCGR_MAX, +}; + +/* src index */ +enum clk_src_index { + CLK_SRC_CKIL_SYNC_REQ = 0, + CLK_SRC_ARM_PLL_EN = 1, + CLK_SRC_GPU_PLL_EN = 2, + CLK_SRC_VPU_PLL_EN = 3, + CLK_SRC_DRAM_PLL_EN = 4, + CLK_SRC_SYSTEM_PLL1_EN = 5, + CLK_SRC_SYSTEM_PLL2_EN = 6, + CLK_SRC_SYSTEM_PLL3_EN = 7, + CLK_SRC_AUDIO_PLL1_EN = 8, + CLK_SRC_AUDIO_PLL2_EN = 9, + CLK_SRC_VIDEO_PLL1_EN = 10, + CLK_SRC_VIDEO_PLL2_EN = 11, + CLK_SRC_ARM_PLL = 12, + CLK_SRC_GPU_PLL = 13, + CLK_SRC_VPU_PLL = 14, + CLK_SRC_DRAM_PLL = 15, + CLK_SRC_SYSTEM_PLL1_800M = 16, + CLK_SRC_SYSTEM_PLL1_400M = 17, + CLK_SRC_SYSTEM_PLL1_266M = 18, + CLK_SRC_SYSTEM_PLL1_200M = 19, + CLK_SRC_SYSTEM_PLL1_160M = 20, + CLK_SRC_SYSTEM_PLL1_133M = 21, + CLK_SRC_SYSTEM_PLL1_100M = 22, + CLK_SRC_SYSTEM_PLL1_80M = 23, + CLK_SRC_SYSTEM_PLL1_40M = 24, + CLK_SRC_SYSTEM_PLL2_1000M = 25, + CLK_SRC_SYSTEM_PLL2_500M = 26, + CLK_SRC_SYSTEM_PLL2_333M = 27, + CLK_SRC_SYSTEM_PLL2_250M = 28, + CLK_SRC_SYSTEM_PLL2_200M = 29, + CLK_SRC_SYSTEM_PLL2_166M = 30, + CLK_SRC_SYSTEM_PLL2_125M = 31, + CLK_SRC_SYSTEM_PLL2_100M = 32, + CLK_SRC_SYSTEM_PLL2_50M = 33, + CLK_SRC_SYSTEM_PLL3 = 34, + CLK_SRC_AUDIO_PLL1 = 35, + CLK_SRC_AUDIO_PLL2 = 36, + CLK_SRC_VIDEO_PLL1 = 37, + CLK_SRC_VIDEO_PLL2 = 38, + CLK_SRC_OSC_25M = 39, + CLK_SRC_OSC_27M = 40, +}; + +enum root_pre_div { + CLK_ROOT_PRE_DIV1 = 0, + CLK_ROOT_PRE_DIV2, + CLK_ROOT_PRE_DIV3, + CLK_ROOT_PRE_DIV4, + CLK_ROOT_PRE_DIV5, + CLK_ROOT_PRE_DIV6, + CLK_ROOT_PRE_DIV7, + CLK_ROOT_PRE_DIV8, +}; + +enum root_post_div { + CLK_ROOT_POST_DIV1 = 0, + CLK_ROOT_POST_DIV2, + CLK_ROOT_POST_DIV3, + CLK_ROOT_POST_DIV4, + CLK_ROOT_POST_DIV5, + CLK_ROOT_POST_DIV6, + CLK_ROOT_POST_DIV7, + CLK_ROOT_POST_DIV8, + CLK_ROOT_POST_DIV9, + CLK_ROOT_POST_DIV10, + CLK_ROOT_POST_DIV11, + CLK_ROOT_POST_DIV12, + CLK_ROOT_POST_DIV13, + CLK_ROOT_POST_DIV14, + CLK_ROOT_POST_DIV15, + CLK_ROOT_POST_DIV16, + CLK_ROOT_POST_DIV17, + CLK_ROOT_POST_DIV18, + CLK_ROOT_POST_DIV19, + CLK_ROOT_POST_DIV20, + CLK_ROOT_POST_DIV21, + CLK_ROOT_POST_DIV22, + CLK_ROOT_POST_DIV23, + CLK_ROOT_POST_DIV24, + CLK_ROOT_POST_DIV25, + CLK_ROOT_POST_DIV26, + CLK_ROOT_POST_DIV27, + CLK_ROOT_POST_DIV28, + CLK_ROOT_POST_DIV29, + CLK_ROOT_POST_DIV30, + CLK_ROOT_POST_DIV31, + CLK_ROOT_POST_DIV32, + CLK_ROOT_POST_DIV33, + CLK_ROOT_POST_DIV34, + CLK_ROOT_POST_DIV35, + CLK_ROOT_POST_DIV36, + CLK_ROOT_POST_DIV37, + CLK_ROOT_POST_DIV38, + CLK_ROOT_POST_DIV39, + CLK_ROOT_POST_DIV40, + CLK_ROOT_POST_DIV41, + CLK_ROOT_POST_DIV42, + CLK_ROOT_POST_DIV43, + CLK_ROOT_POST_DIV44, + CLK_ROOT_POST_DIV45, + CLK_ROOT_POST_DIV46, + CLK_ROOT_POST_DIV47, + CLK_ROOT_POST_DIV48, + CLK_ROOT_POST_DIV49, + CLK_ROOT_POST_DIV50, + CLK_ROOT_POST_DIV51, + CLK_ROOT_POST_DIV52, + CLK_ROOT_POST_DIV53, + CLK_ROOT_POST_DIV54, + CLK_ROOT_POST_DIV55, + CLK_ROOT_POST_DIV56, + CLK_ROOT_POST_DIV57, + CLK_ROOT_POST_DIV58, + CLK_ROOT_POST_DIV59, + CLK_ROOT_POST_DIV60, + CLK_ROOT_POST_DIV61, + CLK_ROOT_POST_DIV62, + CLK_ROOT_POST_DIV63, + CLK_ROOT_POST_DIV64, +}; + +struct clk_root_map { + enum clk_root_index entry; + enum clk_slice_type slice_type; + u32 slice_index; + u8 src_mux[8]; +}; + +struct ccm_ccgr { + u32 ccgr; + u32 ccgr_set; + u32 ccgr_clr; + u32 ccgr_tog; +}; + +struct ccm_root { + u32 target_root; + u32 target_root_set; + u32 target_root_clr; + u32 target_root_tog; + u32 misc; + u32 misc_set; + u32 misc_clr; + u32 misc_tog; + u32 nm_post; + u32 nm_post_root_set; + u32 nm_post_root_clr; + u32 nm_post_root_tog; + u32 nm_pre; + u32 nm_pre_root_set; + u32 nm_pre_root_clr; + u32 nm_pre_root_tog; + u32 db_post; + u32 db_post_root_set; + u32 db_post_root_clr; + u32 db_post_root_tog; + u32 db_pre; + u32 db_pre_root_set; + u32 db_pre_root_clr; + u32 db_pre_root_tog; + u32 reserved[4]; + u32 access_ctrl; + u32 access_ctrl_root_set; + u32 access_ctrl_root_clr; + u32 access_ctrl_root_tog; +}; + +struct ccm_reg { + u32 reserved_0[4096]; + struct ccm_ccgr ccgr_array[192]; + u32 reserved_1[3328]; + struct ccm_root core_root[5]; + u32 reserved_2[352]; + struct ccm_root bus_root[12]; + u32 reserved_3[128]; + struct ccm_root ahb_ipg_root[4]; + u32 reserved_4[384]; + struct ccm_root dram_sel; + struct ccm_root core_sel; + u32 reserved_5[448]; + struct ccm_root ip_root[78]; +}; + +#define CCGR_CLK_ON_MASK 0x03 +#define CLK_SRC_ON_MASK 0x03 + +#define CLK_ROOT_ON BIT(28) +#define CLK_ROOT_OFF (0 << 28) +#define CLK_ROOT_ENABLE_MASK BIT(28) +#define CLK_ROOT_ENABLE_SHIFT 28 +#define CLK_ROOT_SOURCE_SEL(n) (((n) & 0x7) << 24) + +/* For SEL, only use 1 bit */ +#define CLK_ROOT_SRC_MUX_MASK 0x07000000 +#define CLK_ROOT_SRC_MUX_SHIFT 24 +#define CLK_ROOT_SRC_0 0x00000000 +#define CLK_ROOT_SRC_1 0x01000000 +#define CLK_ROOT_SRC_2 0x02000000 +#define CLK_ROOT_SRC_3 0x03000000 +#define CLK_ROOT_SRC_4 0x04000000 +#define CLK_ROOT_SRC_5 0x05000000 +#define CLK_ROOT_SRC_6 0x06000000 +#define CLK_ROOT_SRC_7 0x07000000 + +#define CLK_ROOT_PRE_DIV_MASK (0x00070000) +#define CLK_ROOT_PRE_DIV_SHIFT 16 +#define CLK_ROOT_PRE_DIV(n) (((n) << 16) & 0x00070000) + +#define CLK_ROOT_AUDO_SLOW_EN 0x1000 + +#define CLK_ROOT_AUDO_DIV_MASK 0x700 +#define CLK_ROOT_AUDO_DIV_SHIFT 0x8 +#define CLK_ROOT_AUDO_DIV(n) (((n) << 8) & 0x700) + +/* For CORE: mask is 0x7; For IPG: mask is 0x3 */ +#define CLK_ROOT_POST_DIV_MASK 0x3f +#define CLK_ROOT_CORE_POST_DIV_MASK 0x7 +#define CLK_ROOT_IPG_POST_DIV_MASK 0x3 +#define CLK_ROOT_POST_DIV_SHIFT 0 +#define CLK_ROOT_POST_DIV(n) ((n) & 0x3f) + +/* AUDIO PLL1/2 VIDEO PLL1 GPU PLL VPU PLL ARM PLL*/ +#define FRAC_PLL_LOCK_MASK BIT(31) +#define FRAC_PLL_CLKE_MASK BIT(21) +#define FRAC_PLL_PD_MASK BIT(19) +#define FRAC_PLL_REFCLK_SEL_MASK BIT(16) +#define FRAC_PLL_LOCK_SEL_MASK BIT(15) +#define FRAC_PLL_BYPASS_MASK BIT(14) +#define FRAC_PLL_COUNTCLK_SEL_MASK BIT(13) +#define FRAC_PLL_NEWDIV_VAL_MASK BIT(12) +#define FRAC_PLL_NEWDIV_ACK_MASK BIT(11) +#define FRAC_PLL_REFCLK_DIV_VAL(n) (((n) << 5) & (0x3f << 5)) +#define FRAC_PLL_REFCLK_DIV_VAL_MASK (0x3f << 5) +#define FRAC_PLL_REFCLK_DIV_VAL_SHIFT 5 +#define FRAC_PLL_OUTPUT_DIV_VAL_MASK 0x1f +#define FRAC_PLL_OUTPUT_DIV_VAL(n) ((n) & 0x1f) + +#define FRAC_PLL_REFCLK_SEL_OSC_25M (0 << 16) +#define FRAC_PLL_REFCLK_SEL_OSC_27M BIT(16) +#define FRAC_PLL_REFCLK_SEL_HDMI_PHY_27M (2 << 16) +#define FRAC_PLL_REFCLK_SEL_CLK_PN (3 << 16) + +#define FRAC_PLL_FRAC_DIV_CTL_MASK (0x1ffffff << 7) +#define FRAC_PLL_FRAC_DIV_CTL_SHIFT 7 +#define FRAC_PLL_INT_DIV_CTL_MASK 0x7f +#define FRAC_PLL_INT_DIV_CTL_VAL(n) ((n) & 0x7f) + +/* SYS PLL1/2/3 VIDEO PLL2 DRAM PLL */ +#define SSCG_PLL_LOCK_MASK BIT(31) +#define SSCG_PLL_CLKE_MASK BIT(25) +#define SSCG_PLL_DIV2_CLKE_MASK BIT(23) +#define SSCG_PLL_DIV3_CLKE_MASK BIT(21) +#define SSCG_PLL_DIV4_CLKE_MASK BIT(19) +#define SSCG_PLL_DIV5_CLKE_MASK BIT(17) +#define SSCG_PLL_DIV6_CLKE_MASK BIT(15) +#define SSCG_PLL_DIV8_CLKE_MASK BIT(13) +#define SSCG_PLL_DIV10_CLKE_MASK BIT(11) +#define SSCG_PLL_DIV20_CLKE_MASK BIT(9) +#define SSCG_PLL_VIDEO_PLL2_CLKE_MASK BIT(9) +#define SSCG_PLL_DRAM_PLL_CLKE_MASK BIT(9) +#define SSCG_PLL_PLL3_CLKE_MASK BIT(9) +#define SSCG_PLL_PD_MASK BIT(7) +#define SSCG_PLL_BYPASS1_MASK BIT(5) +#define SSCG_PLL_BYPASS2_MASK BIT(4) +#define SSCG_PLL_LOCK_SEL_MASK BIT(3) +#define SSCG_PLL_COUNTCLK_SEL_MASK BIT(2) +#define SSCG_PLL_REFCLK_SEL_MASK 0x3 +#define SSCG_PLL_REFCLK_SEL_OSC_25M (0 << 16) +#define SSCG_PLL_REFCLK_SEL_OSC_27M BIT(16) +#define SSCG_PLL_REFCLK_SEL_HDMI_PHY_27M (2 << 16) +#define SSCG_PLL_REFCLK_SEL_CLK_PN (3 << 16) + +#define SSCG_PLL_SSDS_MASK BIT(8) +#define SSCG_PLL_SSMD_MASK (0x7 << 5) +#define SSCG_PLL_SSMF_MASK (0xf << 1) +#define SSCG_PLL_SSE_MASK 0x1 + +#define SSCG_PLL_REF_DIVR1_MASK (0x7 << 25) +#define SSCG_PLL_REF_DIVR1_SHIFT 25 +#define SSCG_PLL_REF_DIVR1_VAL(n) (((n) << 25) & SSCG_PLL_REF_DIVR1_MASK) +#define SSCG_PLL_REF_DIVR2_MASK (0x3f << 19) +#define SSCG_PLL_REF_DIVR2_SHIFT 19 +#define SSCG_PLL_REF_DIVR2_VAL(n) (((n) << 19) & SSCG_PLL_REF_DIVR2_MASK) +#define SSCG_PLL_FEEDBACK_DIV_F1_MASK (0x3f << 13) +#define SSCG_PLL_FEEDBACK_DIV_F1_SHIFT 13 +#define SSCG_PLL_FEEDBACK_DIV_F1_VAL(n) (((n) << 13) & \ + SSCG_PLL_FEEDBACK_DIV_F1_MASK) +#define SSCG_PLL_FEEDBACK_DIV_F2_MASK (0x3f << 7) +#define SSCG_PLL_FEEDBACK_DIV_F2_SHIFT 7 +#define SSCG_PLL_FEEDBACK_DIV_F2_VAL(n) (((n) << 7) & \ + SSCG_PLL_FEEDBACK_DIV_F2_MASK) +#define SSCG_PLL_OUTPUT_DIV_VAL_MASK (0x3f << 1) +#define SSCG_PLL_OUTPUT_DIV_VAL_SHIFT 1 +#define SSCG_PLL_OUTPUT_DIV_VAL(n) (((n) << 1) & \ + SSCG_PLL_OUTPUT_DIV_VAL_MASK) +#define SSCG_PLL_FILTER_RANGE_MASK 0x1 + +#define HW_DIGPROG_MAJOR_UPPER_MASK (0xff << 16) +#define HW_DIGPROG_MAJOR_LOWER_MASK (0xff << 8) +#define HW_DIGPROG_MINOR_MASK 0xff + +#define HW_OSC_27M_CLKE_MASK BIT(4) +#define HW_OSC_25M_CLKE_MASK BIT(2) +#define HW_OSC_32K_SEL_MASK 0x1 +#define HW_OSC_32K_SEL_RTC 0x1 +#define HW_OSC_32K_SEL_25M_DIV800 0x0 + +#define HW_FRAC_ARM_PLL_DIV_MASK (0x7 << 20) +#define HW_FRAC_ARM_PLL_DIV_SHIFT 20 +#define HW_FRAC_VPU_PLL_DIV_MASK (0x7 << 16) +#define HW_FRAC_VPU_PLL_DIV_SHIFT 16 +#define HW_FRAC_GPU_PLL_DIV_MASK (0x7 << 12) +#define HW_FRAC_GPU_PLL_DIV_SHIFT 12 +#define HW_FRAC_VIDEO_PLL1_DIV_MASK (0x7 << 10) +#define HW_FRAC_VIDEO_PLL1_DIV_SHIFT 10 +#define HW_FRAC_AUDIO_PLL2_DIV_MASK (0x7 << 4) +#define HW_FRAC_AUDIO_PLL2_DIV_SHIFT 4 +#define HW_FRAC_AUDIO_PLL1_DIV_MASK 0x7 +#define HW_FRAC_AUDIO_PLL1_DIV_SHIFT 0 + +#define HW_SSCG_VIDEO_PLL2_DIV_MASK (0x7 << 16) +#define HW_SSCG_VIDEO_PLL2_DIV_SHIFT 16 +#define HW_SSCG_DRAM_PLL_DIV_MASK (0x7 << 14) +#define HW_SSCG_DRAM_PLL_DIV_SHIFT 14 +#define HW_SSCG_SYSTEM_PLL3_DIV_MASK (0x7 << 8) +#define HW_SSCG_SYSTEM_PLL3_DIV_SHIFT 8 +#define HW_SSCG_SYSTEM_PLL2_DIV_MASK (0x7 << 4) +#define HW_SSCG_SYSTEM_PLL2_DIV_SHIFT 4 +#define HW_SSCG_SYSTEM_PLL1_DIV_MASK 0x7 +#define HW_SSCG_SYSTEM_PLL1_DIV_SHIFT 0 + +#define ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK 0x01000000 +#define ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK 0x02000000 +#define ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK 0x03000000 +#define ENET_AXI_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK 0x07000000 +#define ENET_AXI_CLK_ROOT_FROM_SYS1_PLL_266M 0x01000000 +#define ENET1_TIME_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK 0x01000000 +#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK 0x01000000 + +enum enet_freq { + ENET_25MHZ = 0, + ENET_50MHZ, + ENET_125MHZ, +}; + +enum frac_pll_out_val { + FRAC_PLL_OUT_1000M, + FRAC_PLL_OUT_1600M, +}; + +u32 imx_get_fecclk(void); +u32 imx_get_uartclk(void); +int clock_init(void); +void init_clk_usdhc(u32 index); +void init_uart_clk(u32 index); +void init_wdog_clk(void); +unsigned int mxc_get_clock(enum clk_root_index clk); +int clock_enable(enum clk_ccgr_index index, bool enable); +int clock_root_enabled(enum clk_root_index clock_id); +int clock_root_cfg(enum clk_root_index clock_id, enum root_pre_div pre_div, + enum root_post_div post_div, enum clk_root_src clock_src); +int clock_set_target_val(enum clk_root_index clock_id, u32 val); +int clock_get_target_val(enum clk_root_index clock_id, u32 *val); +int clock_get_prediv(enum clk_root_index clock_id, enum root_pre_div *pre_div); +int clock_get_postdiv(enum clk_root_index clock_id, + enum root_post_div *post_div); +int clock_get_src(enum clk_root_index clock_id, enum clk_root_src *p_clock_src); +void mxs_set_lcdclk(u32 base_addr, u32 freq); +int set_clk_qspi(void); +void enable_ocotp_clk(unsigned char enable); +int enable_i2c_clk(unsigned char enable, unsigned int i2c_num); +int set_clk_enet(enum enet_freq type); +#endif diff --git a/arch/arm/mach-imx/mx8m/Makefile b/arch/arm/mach-imx/mx8m/Makefile new file mode 100644 index 0000000000..05f38842f0 --- /dev/null +++ b/arch/arm/mach-imx/mx8m/Makefile @@ -0,0 +1,7 @@ +# +# Copyright 2017 NXP +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += clock.o clock_slice.o diff --git a/arch/arm/mach-imx/mx8m/clock.c b/arch/arm/mach-imx/mx8m/clock.c new file mode 100644 index 0000000000..38447ad509 --- /dev/null +++ b/arch/arm/mach-imx/mx8m/clock.c @@ -0,0 +1,795 @@ +/* + * Copyright 2017 NXP + * + * Peng Fan + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +static struct anamix_pll *ana_pll = (struct anamix_pll *)ANATOP_BASE_ADDR; + +static u32 decode_frac_pll(enum clk_root_src frac_pll) +{ + u32 pll_cfg0, pll_cfg1, pllout; + u32 pll_refclk_sel, pll_refclk; + u32 divr_val, divq_val, divf_val, divff, divfi; + u32 pllout_div_shift, pllout_div_mask, pllout_div; + + switch (frac_pll) { + case ARM_PLL_CLK: + pll_cfg0 = readl(&ana_pll->arm_pll_cfg0); + pll_cfg1 = readl(&ana_pll->arm_pll_cfg1); + pllout_div_shift = HW_FRAC_ARM_PLL_DIV_SHIFT; + pllout_div_mask = HW_FRAC_ARM_PLL_DIV_MASK; + break; + default: + printf("Frac PLL %d not supporte\n", frac_pll); + return 0; + } + + pllout_div = readl(&ana_pll->frac_pllout_div_cfg); + pllout_div = (pllout_div & pllout_div_mask) >> pllout_div_shift; + + /* Power down */ + if (pll_cfg0 & FRAC_PLL_PD_MASK) + return 0; + + /* output not enabled */ + if ((pll_cfg0 & FRAC_PLL_CLKE_MASK) == 0) + return 0; + + pll_refclk_sel = pll_cfg0 & FRAC_PLL_REFCLK_SEL_MASK; + + if (pll_refclk_sel == FRAC_PLL_REFCLK_SEL_OSC_25M) + pll_refclk = 25000000u; + else if (pll_refclk_sel == FRAC_PLL_REFCLK_SEL_OSC_27M) + pll_refclk = 27000000u; + else if (pll_refclk_sel == FRAC_PLL_REFCLK_SEL_HDMI_PHY_27M) + pll_refclk = 27000000u; + else + pll_refclk = 0; + + if (pll_cfg0 & FRAC_PLL_BYPASS_MASK) + return pll_refclk; + + divr_val = (pll_cfg0 & FRAC_PLL_REFCLK_DIV_VAL_MASK) >> + FRAC_PLL_REFCLK_DIV_VAL_SHIFT; + divq_val = pll_cfg0 & FRAC_PLL_OUTPUT_DIV_VAL_MASK; + + divff = (pll_cfg1 & FRAC_PLL_FRAC_DIV_CTL_MASK) >> + FRAC_PLL_FRAC_DIV_CTL_SHIFT; + divfi = pll_cfg1 & FRAC_PLL_INT_DIV_CTL_MASK; + + divf_val = 1 + divfi + divff / (1 << 24); + + pllout = pll_refclk / (divr_val + 1) * 8 * divf_val / + ((divq_val + 1) * 2); + + return pllout / (pllout_div + 1); +} + +static u32 decode_sscg_pll(enum clk_root_src sscg_pll) +{ + u32 pll_cfg0, pll_cfg1, pll_cfg2; + u32 pll_refclk_sel, pll_refclk; + u32 divr1, divr2, divf1, divf2, divq, div; + u32 sse; + u32 pll_clke; + u32 pllout_div_shift, pllout_div_mask, pllout_div; + u32 pllout; + + switch (sscg_pll) { + case SYSTEM_PLL1_800M_CLK: + case SYSTEM_PLL1_400M_CLK: + case SYSTEM_PLL1_266M_CLK: + case SYSTEM_PLL1_200M_CLK: + case SYSTEM_PLL1_160M_CLK: + case SYSTEM_PLL1_133M_CLK: + case SYSTEM_PLL1_100M_CLK: + case SYSTEM_PLL1_80M_CLK: + case SYSTEM_PLL1_40M_CLK: + pll_cfg0 = readl(&ana_pll->sys_pll1_cfg0); + pll_cfg1 = readl(&ana_pll->sys_pll1_cfg1); + pll_cfg2 = readl(&ana_pll->sys_pll1_cfg2); + pllout_div_shift = HW_SSCG_SYSTEM_PLL1_DIV_SHIFT; + pllout_div_mask = HW_SSCG_SYSTEM_PLL1_DIV_MASK; + break; + case SYSTEM_PLL2_1000M_CLK: + case SYSTEM_PLL2_500M_CLK: + case SYSTEM_PLL2_333M_CLK: + case SYSTEM_PLL2_250M_CLK: + case SYSTEM_PLL2_200M_CLK: + case SYSTEM_PLL2_166M_CLK: + case SYSTEM_PLL2_125M_CLK: + case SYSTEM_PLL2_100M_CLK: + case SYSTEM_PLL2_50M_CLK: + pll_cfg0 = readl(&ana_pll->sys_pll2_cfg0); + pll_cfg1 = readl(&ana_pll->sys_pll2_cfg1); + pll_cfg2 = readl(&ana_pll->sys_pll2_cfg2); + pllout_div_shift = HW_SSCG_SYSTEM_PLL2_DIV_SHIFT; + pllout_div_mask = HW_SSCG_SYSTEM_PLL2_DIV_MASK; + break; + case SYSTEM_PLL3_CLK: + pll_cfg0 = readl(&ana_pll->sys_pll3_cfg0); + pll_cfg1 = readl(&ana_pll->sys_pll3_cfg1); + pll_cfg2 = readl(&ana_pll->sys_pll3_cfg2); + pllout_div_shift = HW_SSCG_SYSTEM_PLL3_DIV_SHIFT; + pllout_div_mask = HW_SSCG_SYSTEM_PLL3_DIV_MASK; + break; + case DRAM_PLL1_CLK: + pll_cfg0 = readl(&ana_pll->dram_pll_cfg0); + pll_cfg1 = readl(&ana_pll->dram_pll_cfg1); + pll_cfg2 = readl(&ana_pll->dram_pll_cfg2); + pllout_div_shift = HW_SSCG_DRAM_PLL_DIV_SHIFT; + pllout_div_mask = HW_SSCG_DRAM_PLL_DIV_MASK; + break; + default: + printf("sscg pll %d not supporte\n", sscg_pll); + return 0; + } + + switch (sscg_pll) { + case DRAM_PLL1_CLK: + pll_clke = SSCG_PLL_DRAM_PLL_CLKE_MASK; + div = 1; + break; + case SYSTEM_PLL3_CLK: + pll_clke = SSCG_PLL_PLL3_CLKE_MASK; + div = 1; + break; + case SYSTEM_PLL2_1000M_CLK: + case SYSTEM_PLL1_800M_CLK: + pll_clke = SSCG_PLL_CLKE_MASK; + div = 1; + break; + case SYSTEM_PLL2_500M_CLK: + case SYSTEM_PLL1_400M_CLK: + pll_clke = SSCG_PLL_DIV2_CLKE_MASK; + div = 2; + break; + case SYSTEM_PLL2_333M_CLK: + case SYSTEM_PLL1_266M_CLK: + pll_clke = SSCG_PLL_DIV3_CLKE_MASK; + div = 3; + break; + case SYSTEM_PLL2_250M_CLK: + case SYSTEM_PLL1_200M_CLK: + pll_clke = SSCG_PLL_DIV4_CLKE_MASK; + div = 4; + break; + case SYSTEM_PLL2_200M_CLK: + case SYSTEM_PLL1_160M_CLK: + pll_clke = SSCG_PLL_DIV5_CLKE_MASK; + div = 5; + break; + case SYSTEM_PLL2_166M_CLK: + case SYSTEM_PLL1_133M_CLK: + pll_clke = SSCG_PLL_DIV6_CLKE_MASK; + div = 6; + break; + case SYSTEM_PLL2_125M_CLK: + case SYSTEM_PLL1_100M_CLK: + pll_clke = SSCG_PLL_DIV8_CLKE_MASK; + div = 8; + break; + case SYSTEM_PLL2_100M_CLK: + case SYSTEM_PLL1_80M_CLK: + pll_clke = SSCG_PLL_DIV10_CLKE_MASK; + div = 10; + break; + case SYSTEM_PLL2_50M_CLK: + case SYSTEM_PLL1_40M_CLK: + pll_clke = SSCG_PLL_DIV20_CLKE_MASK; + div = 20; + break; + default: + printf("sscg pll %d not supporte\n", sscg_pll); + return 0; + } + + /* Power down */ + if (pll_cfg0 & SSCG_PLL_PD_MASK) + return 0; + + /* output not enabled */ + if ((pll_cfg0 & pll_clke) == 0) + return 0; + + pllout_div = readl(&ana_pll->sscg_pllout_div_cfg); + pllout_div = (pllout_div & pllout_div_mask) >> pllout_div_shift; + + pll_refclk_sel = pll_cfg0 & SSCG_PLL_REFCLK_SEL_MASK; + + if (pll_refclk_sel == SSCG_PLL_REFCLK_SEL_OSC_25M) + pll_refclk = 25000000u; + else if (pll_refclk_sel == SSCG_PLL_REFCLK_SEL_OSC_27M) + pll_refclk = 27000000u; + else if (pll_refclk_sel == SSCG_PLL_REFCLK_SEL_HDMI_PHY_27M) + pll_refclk = 27000000u; + else + pll_refclk = 0; + + /* We assume bypass1/2 are the same value */ + if ((pll_cfg0 & SSCG_PLL_BYPASS1_MASK) || + (pll_cfg0 & SSCG_PLL_BYPASS2_MASK)) + return pll_refclk; + + divr1 = (pll_cfg2 & SSCG_PLL_REF_DIVR1_MASK) >> + SSCG_PLL_REF_DIVR1_SHIFT; + divr2 = (pll_cfg2 & SSCG_PLL_REF_DIVR2_MASK) >> + SSCG_PLL_REF_DIVR2_SHIFT; + divf1 = (pll_cfg2 & SSCG_PLL_FEEDBACK_DIV_F1_MASK) >> + SSCG_PLL_FEEDBACK_DIV_F1_SHIFT; + divf2 = (pll_cfg2 & SSCG_PLL_FEEDBACK_DIV_F2_MASK) >> + SSCG_PLL_FEEDBACK_DIV_F2_SHIFT; + divq = (pll_cfg2 & SSCG_PLL_OUTPUT_DIV_VAL_MASK) >> + SSCG_PLL_OUTPUT_DIV_VAL_SHIFT; + sse = pll_cfg1 & SSCG_PLL_SSE_MASK; + + if (sse) + sse = 8; + else + sse = 2; + + pllout = pll_refclk / (divr1 + 1) * sse * (divf1 + 1) / + (divr2 + 1) * (divf2 + 1) / (divq + 1); + + return pllout / (pllout_div + 1) / div; +} + +static u32 get_root_src_clk(enum clk_root_src root_src) +{ + switch (root_src) { + case OSC_25M_CLK: + return 25000000; + case OSC_27M_CLK: + return 25000000; + case OSC_32K_CLK: + return 32000; + case ARM_PLL_CLK: + return decode_frac_pll(root_src); + case SYSTEM_PLL1_800M_CLK: + case SYSTEM_PLL1_400M_CLK: + case SYSTEM_PLL1_266M_CLK: + case SYSTEM_PLL1_200M_CLK: + case SYSTEM_PLL1_160M_CLK: + case SYSTEM_PLL1_133M_CLK: + case SYSTEM_PLL1_100M_CLK: + case SYSTEM_PLL1_80M_CLK: + case SYSTEM_PLL1_40M_CLK: + case SYSTEM_PLL2_1000M_CLK: + case SYSTEM_PLL2_500M_CLK: + case SYSTEM_PLL2_333M_CLK: + case SYSTEM_PLL2_250M_CLK: + case SYSTEM_PLL2_200M_CLK: + case SYSTEM_PLL2_166M_CLK: + case SYSTEM_PLL2_125M_CLK: + case SYSTEM_PLL2_100M_CLK: + case SYSTEM_PLL2_50M_CLK: + case SYSTEM_PLL3_CLK: + return decode_sscg_pll(root_src); + default: + return 0; + } + + return 0; +} + +static u32 get_root_clk(enum clk_root_index clock_id) +{ + enum clk_root_src root_src; + u32 post_podf, pre_podf, root_src_clk; + + if (clock_root_enabled(clock_id) <= 0) + return 0; + + if (clock_get_prediv(clock_id, &pre_podf) < 0) + return 0; + + if (clock_get_postdiv(clock_id, &post_podf) < 0) + return 0; + + if (clock_get_src(clock_id, &root_src) < 0) + return 0; + + root_src_clk = get_root_src_clk(root_src); + + return root_src_clk / (post_podf + 1) / (pre_podf + 1); +} + +#ifdef CONFIG_MXC_OCOTP +void enable_ocotp_clk(unsigned char enable) +{ + clock_enable(CCGR_OCOTP, !!enable); +} +#endif + +int enable_i2c_clk(unsigned char enable, unsigned int i2c_num) +{ + /* 0 - 3 is valid i2c num */ + if (i2c_num > 3) + return -EINVAL; + + clock_enable(CCGR_I2C1 + i2c_num, !!enable); + + return 0; +} + +unsigned int mxc_get_clock(enum clk_root_index clk) +{ + u32 val; + + if (clk >= CLK_ROOT_MAX) + return 0; + + if (clk == MXC_ARM_CLK) + return get_root_clk(ARM_A53_CLK_ROOT); + + if (clk == MXC_IPG_CLK) { + clock_get_target_val(IPG_CLK_ROOT, &val); + val = val & 0x3; + return get_root_clk(AHB_CLK_ROOT) / (val + 1); + } + + return get_root_clk(clk); +} + +u32 imx_get_uartclk(void) +{ + return mxc_get_clock(UART1_CLK_ROOT); +} + +void mxs_set_lcdclk(u32 base_addr, u32 freq) +{ + /* + * LCDIF_PIXEL_CLK: select 800MHz root clock, + * select pre divider 8, output is 100 MHz + */ + clock_set_target_val(LCDIF_PIXEL_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(4) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV8)); +} + +void init_wdog_clk(void) +{ + clock_enable(CCGR_WDOG1, 0); + clock_enable(CCGR_WDOG2, 0); + clock_enable(CCGR_WDOG3, 0); + clock_set_target_val(WDOG_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_set_target_val(WDOG_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_set_target_val(WDOG_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_enable(CCGR_WDOG1, 1); + clock_enable(CCGR_WDOG2, 1); + clock_enable(CCGR_WDOG3, 1); +} + +void init_usb_clk(void) +{ + if (!is_usb_boot()) { + clock_enable(CCGR_USB_CTRL1, 0); + clock_enable(CCGR_USB_CTRL2, 0); + clock_enable(CCGR_USB_PHY1, 0); + clock_enable(CCGR_USB_PHY2, 0); + /* 500MHz */ + clock_set_target_val(USB_BUS_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1)); + /* 100MHz */ + clock_set_target_val(USB_CORE_REF_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1)); + /* 100MHz */ + clock_set_target_val(USB_PHY_REF_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1)); + clock_enable(CCGR_USB_CTRL1, 1); + clock_enable(CCGR_USB_CTRL2, 1); + clock_enable(CCGR_USB_PHY1, 1); + clock_enable(CCGR_USB_PHY2, 1); + } +} + +void init_uart_clk(u32 index) +{ + /* Set uart clock root 25M OSC */ + switch (index) { + case 0: + clock_enable(CCGR_UART1, 0); + clock_set_target_val(UART1_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_enable(CCGR_UART1, 1); + return; + case 1: + clock_enable(CCGR_UART2, 0); + clock_set_target_val(UART2_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_enable(CCGR_UART2, 1); + return; + case 2: + clock_enable(CCGR_UART3, 0); + clock_set_target_val(UART3_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_enable(CCGR_UART3, 1); + return; + case 3: + clock_enable(CCGR_UART4, 0); + clock_set_target_val(UART4_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + clock_enable(CCGR_UART4, 1); + return; + default: + printf("Invalid uart index\n"); + return; + } +} + +void init_clk_usdhc(u32 index) +{ + /* + * set usdhc clock root + * sys pll1 400M + */ + switch (index) { + case 0: + clock_enable(CCGR_USDHC1, 0); + clock_set_target_val(USDHC1_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2)); + clock_enable(CCGR_USDHC1, 1); + return; + case 1: + clock_enable(CCGR_USDHC2, 0); + clock_set_target_val(USDHC2_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2)); + clock_enable(CCGR_USDHC2, 1); + return; + default: + printf("Invalid usdhc index\n"); + return; + } +} + +int set_clk_qspi(void) +{ + /* + * set qspi root + * sys pll1 100M + */ + clock_enable(CCGR_QSPI, 0); + clock_set_target_val(QSPI_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(7)); + clock_enable(CCGR_QSPI, 1); + + return 0; +} + +#ifdef CONFIG_FEC_MXC +int set_clk_enet(enum enet_freq type) +{ + u32 target; + u32 enet1_ref; + + switch (type) { + case ENET_125MHZ: + enet1_ref = ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK; + break; + case ENET_50MHZ: + enet1_ref = ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK; + break; + case ENET_25MHZ: + enet1_ref = ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK; + break; + default: + return -EINVAL; + } + + /* disable the clock first */ + clock_enable(CCGR_ENET1, 0); + clock_enable(CCGR_SIM_ENET, 0); + + /* set enet axi clock 266Mhz */ + target = CLK_ROOT_ON | ENET_AXI_CLK_ROOT_FROM_SYS1_PLL_266M | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1); + clock_set_target_val(ENET_AXI_CLK_ROOT, target); + + target = CLK_ROOT_ON | enet1_ref | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1); + clock_set_target_val(ENET_REF_CLK_ROOT, target); + + target = CLK_ROOT_ON | + ENET1_TIME_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4); + clock_set_target_val(ENET_TIMER_CLK_ROOT, target); + + /* enable clock */ + clock_enable(CCGR_SIM_ENET, 1); + clock_enable(CCGR_ENET1, 1); + + return 0; +} +#endif + +u32 imx_get_fecclk(void) +{ + return get_root_clk(ENET_AXI_CLK_ROOT); +} + +#ifdef CONFIG_SPL_BUILD +void dram_pll_init(void) +{ + struct src *src = (struct src *)SRC_BASE_ADDR; + void __iomem *pll_control_reg = &ana_pll->dram_pll_cfg0; + u32 pwdn_mask = 0; + u32 pll_clke = 0; + u32 bypass1 = 0; + u32 bypass2 = 0; + int ret; + + setbits_le32(GPC_BASE_ADDR + 0xEC, BIT(7)); + setbits_le32(GPC_BASE_ADDR + 0xF8, BIT(5)); + + pwdn_mask = SSCG_PLL_PD_MASK; + pll_clke = SSCG_PLL_DRAM_PLL_CLKE_MASK; + bypass1 = SSCG_PLL_BYPASS1_MASK; + bypass2 = SSCG_PLL_BYPASS2_MASK; + + /* Enable DDR1 and DDR2 domain */ + writel(SRC_DDR1_ENABLE_MASK, &src->ddr1_rcr); + writel(SRC_DDR1_ENABLE_MASK, &src->ddr2_rcr); + + /* Clear power down bit */ + clrbits_le32(pll_control_reg, pwdn_mask); + /* Eanble ARM_PLL/SYS_PLL */ + setbits_le32(pll_control_reg, pll_clke); + + /* Clear bypass */ + clrbits_le32(pll_control_reg, bypass1); + __udelay(100); + clrbits_le32(pll_control_reg, bypass2); + /* Wait lock */ + ret = wait_mask_set_timeout(pll_control_reg, SSCG_PLL_LOCK_MASK, 1000); + if (ret) + printf("%s timeout\n", __func__); +} + +int frac_pll_init(u32 pll, enum frac_pll_out_val val) +{ + void __iomem *pll_cfg0, __iomem *pll_cfg1; + u32 val_cfg0, val_cfg1; + int ret; + + switch (pll) { + case ANATOP_ARM_PLL: + pll_cfg0 = &ana_pll->arm_pll_cfg0; + pll_cfg1 = &ana_pll->arm_pll_cfg1; + + if (val == FRAC_PLL_OUT_1000M) + val_cfg1 = FRAC_PLL_INT_DIV_CTL_VAL(49); + else + val_cfg1 = FRAC_PLL_INT_DIV_CTL_VAL(79); + val_cfg0 = FRAC_PLL_CLKE_MASK | FRAC_PLL_REFCLK_SEL_OSC_25M | + FRAC_PLL_LOCK_SEL_MASK | FRAC_PLL_NEWDIV_VAL_MASK | + FRAC_PLL_REFCLK_DIV_VAL(4) | + FRAC_PLL_OUTPUT_DIV_VAL(0); + break; + default: + return -EINVAL; + } + + /* bypass the clock */ + setbits_le32(pll_cfg0, FRAC_PLL_BYPASS_MASK); + /* Set the value */ + writel(val_cfg1, pll_cfg1); + writel(val_cfg0 | FRAC_PLL_BYPASS_MASK, pll_cfg0); + val_cfg0 = readl(pll_cfg0); + /* unbypass the clock */ + clrbits_le32(pll_cfg0, FRAC_PLL_BYPASS_MASK); + ret = wait_mask_set_timeout(pll_cfg0, FRAC_PLL_LOCK_MASK, 1000); + if (ret) + printf("%s timeout\n", __func__); + clrbits_le32(pll_cfg0, FRAC_PLL_NEWDIV_VAL_MASK); + + return 0; +} + +int sscg_pll_init(u32 pll) +{ + void __iomem *pll_cfg0, __iomem *pll_cfg1, __iomem *pll_cfg2; + u32 val_cfg0, val_cfg1, val_cfg2; + u32 bypass1_mask = 0x20, bypass2_mask = 0x10; + int ret; + + switch (pll) { + case ANATOP_SYSTEM_PLL1: + pll_cfg0 = &ana_pll->sys_pll1_cfg0; + pll_cfg1 = &ana_pll->sys_pll1_cfg1; + pll_cfg2 = &ana_pll->sys_pll1_cfg2; + /* 800MHz */ + val_cfg2 = SSCG_PLL_FEEDBACK_DIV_F1_VAL(3) | + SSCG_PLL_FEEDBACK_DIV_F2_VAL(3); + val_cfg1 = 0; + val_cfg0 = SSCG_PLL_CLKE_MASK | SSCG_PLL_DIV2_CLKE_MASK | + SSCG_PLL_DIV3_CLKE_MASK | SSCG_PLL_DIV4_CLKE_MASK | + SSCG_PLL_DIV5_CLKE_MASK | SSCG_PLL_DIV6_CLKE_MASK | + SSCG_PLL_DIV8_CLKE_MASK | SSCG_PLL_DIV10_CLKE_MASK | + SSCG_PLL_DIV20_CLKE_MASK | SSCG_PLL_LOCK_SEL_MASK | + SSCG_PLL_REFCLK_SEL_OSC_25M; + break; + case ANATOP_SYSTEM_PLL2: + pll_cfg0 = &ana_pll->sys_pll2_cfg0; + pll_cfg1 = &ana_pll->sys_pll2_cfg1; + pll_cfg2 = &ana_pll->sys_pll2_cfg2; + /* 1000MHz */ + val_cfg2 = SSCG_PLL_FEEDBACK_DIV_F1_VAL(3) | + SSCG_PLL_FEEDBACK_DIV_F2_VAL(4); + val_cfg1 = 0; + val_cfg0 = SSCG_PLL_CLKE_MASK | SSCG_PLL_DIV2_CLKE_MASK | + SSCG_PLL_DIV3_CLKE_MASK | SSCG_PLL_DIV4_CLKE_MASK | + SSCG_PLL_DIV5_CLKE_MASK | SSCG_PLL_DIV6_CLKE_MASK | + SSCG_PLL_DIV8_CLKE_MASK | SSCG_PLL_DIV10_CLKE_MASK | + SSCG_PLL_DIV20_CLKE_MASK | SSCG_PLL_LOCK_SEL_MASK | + SSCG_PLL_REFCLK_SEL_OSC_25M; + break; + case ANATOP_SYSTEM_PLL3: + pll_cfg0 = &ana_pll->sys_pll3_cfg0; + pll_cfg1 = &ana_pll->sys_pll3_cfg1; + pll_cfg2 = &ana_pll->sys_pll3_cfg2; + /* 800MHz */ + val_cfg2 = SSCG_PLL_FEEDBACK_DIV_F1_VAL(3) | + SSCG_PLL_FEEDBACK_DIV_F2_VAL(3); + val_cfg1 = 0; + val_cfg0 = SSCG_PLL_PLL3_CLKE_MASK | SSCG_PLL_LOCK_SEL_MASK | + SSCG_PLL_REFCLK_SEL_OSC_25M; + break; + default: + return -EINVAL; + } + + /*bypass*/ + setbits_le32(pll_cfg0, bypass1_mask | bypass2_mask); + /* set value */ + writel(val_cfg2, pll_cfg2); + writel(val_cfg1, pll_cfg1); + /*unbypass1 and wait 70us */ + writel(val_cfg0 | bypass2_mask, pll_cfg1); + + __udelay(70); + + /* unbypass2 and wait lock */ + writel(val_cfg0, pll_cfg1); + ret = wait_mask_set_timeout(pll_cfg0, SSCG_PLL_LOCK_MASK, 1000); + if (ret) + printf("%s timeout\n", __func__); + + return ret; +} + +int clock_init(void) +{ + u32 grade; + + clock_set_target_val(ARM_A53_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(0)); + + /* + * 8MQ only supports two grades: consumer and industrial. + * We set ARM clock to 1Ghz for consumer, 800Mhz for industrial + */ + grade = get_cpu_temp_grade(NULL, NULL); + if (!grade) { + frac_pll_init(ANATOP_ARM_PLL, FRAC_PLL_OUT_1000M); + clock_set_target_val(ARM_A53_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1)); + } else { + frac_pll_init(ANATOP_ARM_PLL, FRAC_PLL_OUT_1600M); + clock_set_target_val(ARM_A53_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1) | + CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2)); + } + /* + * According to ANAMIX SPEC + * sys pll1 fixed at 800MHz + * sys pll2 fixed at 1GHz + * Here we only enable the outputs. + */ + setbits_le32(&ana_pll->sys_pll1_cfg0, SSCG_PLL_CLKE_MASK | + SSCG_PLL_DIV2_CLKE_MASK | SSCG_PLL_DIV3_CLKE_MASK | + SSCG_PLL_DIV4_CLKE_MASK | SSCG_PLL_DIV5_CLKE_MASK | + SSCG_PLL_DIV6_CLKE_MASK | SSCG_PLL_DIV8_CLKE_MASK | + SSCG_PLL_DIV10_CLKE_MASK | SSCG_PLL_DIV20_CLKE_MASK); + + setbits_le32(&ana_pll->sys_pll2_cfg0, SSCG_PLL_CLKE_MASK | + SSCG_PLL_DIV2_CLKE_MASK | SSCG_PLL_DIV3_CLKE_MASK | + SSCG_PLL_DIV4_CLKE_MASK | SSCG_PLL_DIV5_CLKE_MASK | + SSCG_PLL_DIV6_CLKE_MASK | SSCG_PLL_DIV8_CLKE_MASK | + SSCG_PLL_DIV10_CLKE_MASK | SSCG_PLL_DIV20_CLKE_MASK); + + clock_set_target_val(NAND_USDHC_BUS_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(1)); + + init_wdog_clk(); + clock_enable(CCGR_TSENSOR, 1); + + return 0; +} +#endif + +/* + * Dump some clockes. + */ +#ifndef CONFIG_SPL_BUILD +int do_mx8m_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + u32 freq; + + freq = decode_frac_pll(ARM_PLL_CLK); + printf("ARM_PLL %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_800M_CLK); + printf("SYS_PLL1_800 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_400M_CLK); + printf("SYS_PLL1_400 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_266M_CLK); + printf("SYS_PLL1_266 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_200M_CLK); + printf("SYS_PLL1_200 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_160M_CLK); + printf("SYS_PLL1_160 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_133M_CLK); + printf("SYS_PLL1_133 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_100M_CLK); + printf("SYS_PLL1_100 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_80M_CLK); + printf("SYS_PLL1_80 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL1_40M_CLK); + printf("SYS_PLL1_40 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_1000M_CLK); + printf("SYS_PLL2_1000 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_500M_CLK); + printf("SYS_PLL2_500 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_333M_CLK); + printf("SYS_PLL2_333 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_250M_CLK); + printf("SYS_PLL2_250 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_200M_CLK); + printf("SYS_PLL2_200 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_166M_CLK); + printf("SYS_PLL2_166 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_125M_CLK); + printf("SYS_PLL2_125 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_100M_CLK); + printf("SYS_PLL2_100 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL2_50M_CLK); + printf("SYS_PLL2_50 %8d MHz\n", freq / 1000000); + freq = decode_sscg_pll(SYSTEM_PLL3_CLK); + printf("SYS_PLL3 %8d MHz\n", freq / 1000000); + freq = mxc_get_clock(UART1_CLK_ROOT); + printf("UART1 %8d MHz\n", freq / 1000000); + freq = mxc_get_clock(USDHC1_CLK_ROOT); + printf("USDHC1 %8d MHz\n", freq / 1000000); + freq = mxc_get_clock(QSPI_CLK_ROOT); + printf("QSPI %8d MHz\n", freq / 1000000); + return 0; +} + +U_BOOT_CMD( + clocks, CONFIG_SYS_MAXARGS, 1, do_mx8m_showclocks, + "display clocks", + "" +); +#endif diff --git a/arch/arm/mach-imx/mx8m/clock_slice.c b/arch/arm/mach-imx/mx8m/clock_slice.c new file mode 100644 index 0000000000..e734498b94 --- /dev/null +++ b/arch/arm/mach-imx/mx8m/clock_slice.c @@ -0,0 +1,742 @@ +/* + * Copyright 2017 NXP + * + * Peng Fan + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +static struct ccm_reg *ccm_reg = (struct ccm_reg *)CCM_BASE_ADDR; + +static struct clk_root_map root_array[] = { + {ARM_A53_CLK_ROOT, CORE_CLOCK_SLICE, 0, + {OSC_25M_CLK, ARM_PLL_CLK, SYSTEM_PLL2_500M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL1_400M_CLK, AUDIO_PLL1_CLK, SYSTEM_PLL3_CLK} + }, + {ARM_M4_CLK_ROOT, CORE_CLOCK_SLICE, 1, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL2_250M_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL1_800M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, SYSTEM_PLL3_CLK} + }, + {VPU_A53_CLK_ROOT, CORE_CLOCK_SLICE, 2, + {OSC_25M_CLK, ARM_PLL_CLK, SYSTEM_PLL2_500M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL1_400M_CLK, AUDIO_PLL1_CLK, VPU_PLL_CLK} + }, + {GPU_CORE_CLK_ROOT, CORE_CLOCK_SLICE, 3, + {OSC_25M_CLK, GPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_1000M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK} + }, + {GPU_SHADER_CLK_ROOT, CORE_CLOCK_SLICE, 4, + {OSC_25M_CLK, GPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_1000M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK} + }, + {MAIN_AXI_CLK_ROOT, BUS_CLOCK_SLICE, 0, + {OSC_25M_CLK, SYSTEM_PLL2_333M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_250M_CLK, SYSTEM_PLL2_1000M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, SYSTEM_PLL1_100M_CLK} + }, + {ENET_AXI_CLK_ROOT, BUS_CLOCK_SLICE, 1, + {OSC_25M_CLK, SYSTEM_PLL1_266M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_250M_CLK, SYSTEM_PLL2_200M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, SYSTEM_PLL3_CLK} + }, + {NAND_USDHC_BUS_CLK_ROOT, BUS_CLOCK_SLICE, 2, + {OSC_25M_CLK, SYSTEM_PLL1_266M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_133M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_250M_CLK, AUDIO_PLL1_CLK} + }, + {VPU_BUS_CLK_ROOT, BUS_CLOCK_SLICE, 3, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, VPU_PLL_CLK, + AUDIO_PLL2_CLK, SYSTEM_PLL3_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_100M_CLK} + }, + {DISPLAY_AXI_CLK_ROOT, BUS_CLOCK_SLICE, 4, + {OSC_25M_CLK, SYSTEM_PLL2_125M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL1_400M_CLK, AUDIO_PLL2_CLK, + EXT_CLK_1, EXT_CLK_4} + }, + {DISPLAY_APB_CLK_ROOT, BUS_CLOCK_SLICE, 5, + {OSC_25M_CLK, SYSTEM_PLL2_125M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL1_400M_CLK, AUDIO_PLL2_CLK, + EXT_CLK_1, EXT_CLK_3} + }, + {DISPLAY_RTRM_CLK_ROOT, BUS_CLOCK_SLICE, 6, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL1_400M_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK, + EXT_CLK_2, EXT_CLK_3} + }, + {USB_BUS_CLK_ROOT, BUS_CLOCK_SLICE, 7, + {OSC_25M_CLK, SYSTEM_PLL2_500M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL2_200M_CLK, + EXT_CLK_2, EXT_CLK_4, AUDIO_PLL2_CLK} + }, + {GPU_AXI_CLK_ROOT, BUS_CLOCK_SLICE, 8, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, GPU_PLL_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_1000M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK} + }, + {GPU_AHB_CLK_ROOT, BUS_CLOCK_SLICE, 9, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, GPU_PLL_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_1000M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK} + }, + {NOC_CLK_ROOT, BUS_CLOCK_SLICE, 10, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, SYSTEM_PLL3_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL2_500M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK} + }, + {NOC_APB_CLK_ROOT, BUS_CLOCK_SLICE, 11, + {OSC_25M_CLK, SYSTEM_PLL1_400M_CLK, SYSTEM_PLL3_CLK, + SYSTEM_PLL2_333M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL1_800M_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK} + }, + {AHB_CLK_ROOT, AHB_CLOCK_SLICE, 0, + {OSC_25M_CLK, SYSTEM_PLL1_133M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL1_400M_CLK, SYSTEM_PLL2_125M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK} + }, + {IPG_CLK_ROOT, IPG_CLOCK_SLICE, 0, + {} + }, + {AUDIO_AHB_CLK_ROOT, AHB_CLOCK_SLICE, 1, + {OSC_25M_CLK, SYSTEM_PLL2_500M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL2_166M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK} + }, + {MIPI_DSI_ESC_RX_CLK_ROOT, AHB_CLOCK_SLICE, 2, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, EXT_CLK_3, AUDIO_PLL1_CLK }, + }, + {DRAM_ALT_CLK_ROOT, IP_CLOCK_SLICE, 0, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, SYSTEM_PLL1_100M_CLK, + SYSTEM_PLL2_500M_CLK, SYSTEM_PLL2_250M_CLK, + SYSTEM_PLL1_400M_CLK, AUDIO_PLL1_CLK, SYSTEM_PLL1_266M_CLK} + }, + {DRAM_APB_CLK_ROOT, IP_CLOCK_SLICE, 1, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL1_160M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_250M_CLK, AUDIO_PLL2_CLK} + }, + {VPU_G1_CLK_ROOT, IP_CLOCK_SLICE, 2, + {OSC_25M_CLK, VPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL1_100M_CLK, + SYSTEM_PLL2_125M_CLK, SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK} + }, + {VPU_G2_CLK_ROOT, IP_CLOCK_SLICE, 3, + {OSC_25M_CLK, VPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL1_100M_CLK, + SYSTEM_PLL2_125M_CLK, SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK} + }, + {DISPLAY_DTRC_CLK_ROOT, IP_CLOCK_SLICE, 4, + {OSC_25M_CLK, VPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL3_CLK, AUDIO_PLL2_CLK} + }, + {DISPLAY_DC8000_CLK_ROOT, IP_CLOCK_SLICE, 5, + {OSC_25M_CLK, VPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL3_CLK, AUDIO_PLL2_CLK} + }, + {PCIE1_CTRL_CLK_ROOT, IP_CLOCK_SLICE, 6, + {OSC_25M_CLK, SYSTEM_PLL2_250M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_500M_CLK, SYSTEM_PLL2_333M_CLK, SYSTEM_PLL3_CLK} + }, + {PCIE1_PHY_CLK_ROOT, IP_CLOCK_SLICE, 7, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL2_500M_CLK, + EXT_CLK_1, EXT_CLK_2, EXT_CLK_3, EXT_CLK_4, + SYSTEM_PLL1_400M_CLK} + }, + {PCIE1_AUX_CLK_ROOT, IP_CLOCK_SLICE, 8, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_80M_CLK, + SYSTEM_PLL1_160M_CLK, SYSTEM_PLL1_200M_CLK} + }, + {DC_PIXEL_CLK_ROOT, IP_CLOCK_SLICE, 9, + {OSC_25M_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK, + AUDIO_PLL1_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_4} + }, + {LCDIF_PIXEL_CLK_ROOT, IP_CLOCK_SLICE, 10, + {OSC_25M_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK, + AUDIO_PLL1_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_4} + }, + {SAI1_CLK_ROOT, IP_CLOCK_SLICE, 11, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_1, EXT_CLK_2} + }, + {SAI2_CLK_ROOT, IP_CLOCK_SLICE, 12, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_2, EXT_CLK_3} + }, + {SAI3_CLK_ROOT, IP_CLOCK_SLICE, 13, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_3, EXT_CLK_4} + }, + {SAI4_CLK_ROOT, IP_CLOCK_SLICE, 14, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_1, EXT_CLK_2} + }, + {SAI5_CLK_ROOT, IP_CLOCK_SLICE, 15, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_2, EXT_CLK_3} + }, + {SAI6_CLK_ROOT, IP_CLOCK_SLICE, 16, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_3, EXT_CLK_4} + }, + {SPDIF1_CLK_ROOT, IP_CLOCK_SLICE, 17, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_2, EXT_CLK_3} + }, + {SPDIF2_CLK_ROOT, IP_CLOCK_SLICE, 18, + {OSC_25M_CLK, AUDIO_PLL1_CLK, AUDIO_PLL2_CLK, + VIDEO_PLL_CLK, SYSTEM_PLL1_133M_CLK, + OSC_27M_CLK, EXT_CLK_3, EXT_CLK_4} + }, + {ENET_REF_CLK_ROOT, IP_CLOCK_SLICE, 19, + {OSC_25M_CLK, SYSTEM_PLL2_125M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_160M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, EXT_CLK_4} + }, + {ENET_TIMER_CLK_ROOT, IP_CLOCK_SLICE, 20, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, AUDIO_PLL1_CLK, + EXT_CLK_1, EXT_CLK_2, EXT_CLK_3, EXT_CLK_4, + VIDEO_PLL_CLK} + }, + {ENET_PHY_REF_CLK_ROOT, IP_CLOCK_SLICE, 21, + {OSC_25M_CLK, SYSTEM_PLL2_50M_CLK, SYSTEM_PLL2_125M_CLK, + SYSTEM_PLL2_200M_CLK, SYSTEM_PLL2_500M_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, AUDIO_PLL2_CLK} + }, + {NAND_CLK_ROOT, IP_CLOCK_SLICE, 22, + {OSC_25M_CLK, SYSTEM_PLL2_500M_CLK, AUDIO_PLL1_CLK, + SYSTEM_PLL1_400M_CLK, AUDIO_PLL2_CLK, SYSTEM_PLL3_CLK, + SYSTEM_PLL2_250M_CLK, VIDEO_PLL_CLK} + }, + {QSPI_CLK_ROOT, IP_CLOCK_SLICE, 23, + {OSC_25M_CLK, SYSTEM_PLL1_400M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_500M_CLK, AUDIO_PLL2_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL3_CLK, SYSTEM_PLL1_100M_CLK} + }, + {USDHC1_CLK_ROOT, IP_CLOCK_SLICE, 24, + {OSC_25M_CLK, SYSTEM_PLL1_400M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_500M_CLK, AUDIO_PLL2_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL3_CLK, SYSTEM_PLL1_100M_CLK} + }, + {USDHC2_CLK_ROOT, IP_CLOCK_SLICE, 25, + {OSC_25M_CLK, SYSTEM_PLL1_400M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_500M_CLK, AUDIO_PLL2_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL3_CLK, SYSTEM_PLL1_100M_CLK} + }, + {I2C1_CLK_ROOT, IP_CLOCK_SLICE, 26, + {OSC_25M_CLK, SYSTEM_PLL1_160M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK, + AUDIO_PLL2_CLK, SYSTEM_PLL1_133M_CLK} + }, + {I2C2_CLK_ROOT, IP_CLOCK_SLICE, 27, + {OSC_25M_CLK, SYSTEM_PLL1_160M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK, + AUDIO_PLL2_CLK, SYSTEM_PLL1_133M_CLK} + }, + {I2C3_CLK_ROOT, IP_CLOCK_SLICE, 28, + {OSC_25M_CLK, SYSTEM_PLL1_160M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK, + AUDIO_PLL2_CLK, SYSTEM_PLL1_133M_CLK} + }, + {I2C4_CLK_ROOT, IP_CLOCK_SLICE, 29, + {OSC_25M_CLK, SYSTEM_PLL1_160M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL1_CLK, VIDEO_PLL_CLK, + AUDIO_PLL2_CLK, SYSTEM_PLL1_133M_CLK} + }, + {UART1_CLK_ROOT, IP_CLOCK_SLICE, 30, + {OSC_25M_CLK, SYSTEM_PLL1_80M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL3_CLK, + EXT_CLK_2, EXT_CLK_4, AUDIO_PLL2_CLK} + }, + {UART2_CLK_ROOT, IP_CLOCK_SLICE, 31, + {OSC_25M_CLK, SYSTEM_PLL1_80M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL3_CLK, + EXT_CLK_2, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {UART3_CLK_ROOT, IP_CLOCK_SLICE, 32, + {OSC_25M_CLK, SYSTEM_PLL1_80M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL3_CLK, + EXT_CLK_2, EXT_CLK_4, AUDIO_PLL2_CLK} + }, + {UART4_CLK_ROOT, IP_CLOCK_SLICE, 33, + {OSC_25M_CLK, SYSTEM_PLL1_80M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL3_CLK, + EXT_CLK_2, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {USB_CORE_REF_CLK_ROOT, IP_CLOCK_SLICE, 34, + {OSC_25M_CLK, SYSTEM_PLL1_100M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL2_200M_CLK, + EXT_CLK_2, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {USB_PHY_REF_CLK_ROOT, IP_CLOCK_SLICE, 35, + {OSC_25M_CLK, SYSTEM_PLL1_100M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL2_200M_CLK, + EXT_CLK_2, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {GIC_CLK_ROOT, IP_CLOCK_SLICE, 36, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_800M_CLK, + EXT_CLK_2, EXT_CLK_4, AUDIO_PLL2_CLK} + }, + {ECSPI1_CLK_ROOT, IP_CLOCK_SLICE, 37, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL1_160M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_250M_CLK, AUDIO_PLL2_CLK} + }, + {ECSPI2_CLK_ROOT, IP_CLOCK_SLICE, 38, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL1_160M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_250M_CLK, AUDIO_PLL2_CLK} + }, + {PWM1_CLK_ROOT, IP_CLOCK_SLICE, 39, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL1_40M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_1, + SYSTEM_PLL1_80M_CLK, VIDEO_PLL_CLK} + }, + {PWM2_CLK_ROOT, IP_CLOCK_SLICE, 40, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL1_40M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_1, + SYSTEM_PLL1_80M_CLK, VIDEO_PLL_CLK} + }, + {PWM3_CLK_ROOT, IP_CLOCK_SLICE, 41, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL1_40M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_1, + SYSTEM_PLL1_80M_CLK, VIDEO_PLL_CLK} + }, + {PWM4_CLK_ROOT, IP_CLOCK_SLICE, 42, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_160M_CLK, + SYSTEM_PLL1_40M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_1, + SYSTEM_PLL1_80M_CLK, VIDEO_PLL_CLK} + }, + {GPT1_CLK_ROOT, IP_CLOCK_SLICE, 43, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_40M_CLK, VIDEO_PLL_CLK, + SYSTEM_PLL1_80M_CLK, AUDIO_PLL1_CLK, EXT_CLK_1} + }, + {GPT2_CLK_ROOT, IP_CLOCK_SLICE, 44, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_40M_CLK, VIDEO_PLL_CLK, + SYSTEM_PLL1_80M_CLK, AUDIO_PLL1_CLK, EXT_CLK_2} + }, + {GPT3_CLK_ROOT, IP_CLOCK_SLICE, 45, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_40M_CLK, VIDEO_PLL_CLK, + SYSTEM_PLL1_80M_CLK, AUDIO_PLL1_CLK, EXT_CLK_3} + }, + {GPT4_CLK_ROOT, IP_CLOCK_SLICE, 46, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_40M_CLK, VIDEO_PLL_CLK, + SYSTEM_PLL1_80M_CLK, AUDIO_PLL1_CLK, EXT_CLK_1} + }, + {GPT5_CLK_ROOT, IP_CLOCK_SLICE, 47, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_40M_CLK, VIDEO_PLL_CLK, + SYSTEM_PLL1_80M_CLK, AUDIO_PLL1_CLK, EXT_CLK_2} + }, + {GPT6_CLK_ROOT, IP_CLOCK_SLICE, 48, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL1_40M_CLK, VIDEO_PLL_CLK, + SYSTEM_PLL1_80M_CLK, AUDIO_PLL1_CLK, EXT_CLK_3} + }, + {TRACE_CLK_ROOT, IP_CLOCK_SLICE, 49, + {OSC_25M_CLK, SYSTEM_PLL1_133M_CLK, SYSTEM_PLL1_160M_CLK, + VPU_PLL_CLK, SYSTEM_PLL2_125M_CLK, + SYSTEM_PLL3_CLK, EXT_CLK_1, EXT_CLK_3} + }, + {WDOG_CLK_ROOT, IP_CLOCK_SLICE, 50, + {OSC_25M_CLK, SYSTEM_PLL1_133M_CLK, SYSTEM_PLL1_160M_CLK, + VPU_PLL_CLK, SYSTEM_PLL2_125M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL1_80M_CLK, SYSTEM_PLL2_166M_CLK} + }, + {WRCLK_CLK_ROOT, IP_CLOCK_SLICE, 51, + {OSC_25M_CLK, SYSTEM_PLL1_40M_CLK, VPU_PLL_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL2_500M_CLK, SYSTEM_PLL1_100M_CLK} + }, + {IPP_DO_CLKO1, IP_CLOCK_SLICE, 52, + {OSC_25M_CLK, SYSTEM_PLL1_800M_CLK, OSC_27M_CLK, + SYSTEM_PLL1_200M_CLK, AUDIO_PLL2_CLK, + SYSTEM_PLL2_500M_CLK, VPU_PLL_CLK, SYSTEM_PLL1_80M_CLK} + }, + {IPP_DO_CLKO2, IP_CLOCK_SLICE, 53, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_400M_CLK, + SYSTEM_PLL2_166M_CLK, SYSTEM_PLL3_CLK, + AUDIO_PLL1_CLK, VIDEO_PLL_CLK, OSC_32K_CLK} + }, + {MIPI_DSI_CORE_CLK_ROOT, IP_CLOCK_SLICE, 54, + {OSC_25M_CLK, SYSTEM_PLL1_266M_CLK, SYSTEM_PLL2_250M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {MIPI_DSI_PHY_REF_CLK_ROOT, IP_CLOCK_SLICE, 55, + {OSC_25M_CLK, SYSTEM_PLL2_125M_CLK, SYSTEM_PLL2_100M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + EXT_CLK_2, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {MIPI_DSI_DBI_CLK_ROOT, IP_CLOCK_SLICE, 56, + {OSC_25M_CLK, SYSTEM_PLL1_266M_CLK, SYSTEM_PLL2_100M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {OLD_MIPI_DSI_ESC_CLK_ROOT, IP_CLOCK_SLICE, 57, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_80M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {MIPI_CSI1_CORE_CLK_ROOT, IP_CLOCK_SLICE, 58, + {OSC_25M_CLK, SYSTEM_PLL1_266M_CLK, SYSTEM_PLL2_250M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {MIPI_CSI1_PHY_REF_CLK_ROOT, IP_CLOCK_SLICE, 59, + {OSC_25M_CLK, SYSTEM_PLL2_125M_CLK, SYSTEM_PLL2_100M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + EXT_CLK_2, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {MIPI_CSI1_ESC_CLK_ROOT, IP_CLOCK_SLICE, 60, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_80M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {MIPI_CSI2_CORE_CLK_ROOT, IP_CLOCK_SLICE, 61, + {OSC_25M_CLK, SYSTEM_PLL1_266M_CLK, SYSTEM_PLL2_250M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {MIPI_CSI2_PHY_REF_CLK_ROOT, IP_CLOCK_SLICE, 62, + {OSC_25M_CLK, SYSTEM_PLL2_125M_CLK, SYSTEM_PLL2_100M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + EXT_CLK_2, AUDIO_PLL2_CLK, VIDEO_PLL_CLK} + }, + {MIPI_CSI2_ESC_CLK_ROOT, IP_CLOCK_SLICE, 63, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_80M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, EXT_CLK_3, AUDIO_PLL2_CLK} + }, + {PCIE2_CTRL_CLK_ROOT, IP_CLOCK_SLICE, 64, + {OSC_25M_CLK, SYSTEM_PLL2_250M_CLK, SYSTEM_PLL2_200M_CLK, + SYSTEM_PLL1_266M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_500M_CLK, SYSTEM_PLL2_333M_CLK, SYSTEM_PLL3_CLK} + }, + {PCIE2_PHY_CLK_ROOT, IP_CLOCK_SLICE, 65, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL2_500M_CLK, + EXT_CLK_1, EXT_CLK_2, EXT_CLK_3, + EXT_CLK_4, SYSTEM_PLL1_400M_CLK} + }, + {PCIE2_AUX_CLK_ROOT, IP_CLOCK_SLICE, 66, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL2_50M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_100M_CLK, + SYSTEM_PLL1_80M_CLK, SYSTEM_PLL1_160M_CLK, SYSTEM_PLL1_200M_CLK} + }, + {ECSPI3_CLK_ROOT, IP_CLOCK_SLICE, 67, + {OSC_25M_CLK, SYSTEM_PLL2_200M_CLK, SYSTEM_PLL1_40M_CLK, + SYSTEM_PLL1_160M_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL3_CLK, SYSTEM_PLL2_250M_CLK, AUDIO_PLL2_CLK} + }, + {OLD_MIPI_DSI_ESC_RX_ROOT, IP_CLOCK_SLICE, 68, + {OSC_25M_CLK, SYSTEM_PLL2_100M_CLK, SYSTEM_PLL1_80M_CLK, + SYSTEM_PLL1_800M_CLK, SYSTEM_PLL2_1000M_CLK, + SYSTEM_PLL3_CLK, EXT_CLK_3, AUDIO_PLL2_CLK}, + }, + {DISPLAY_HDMI_CLK_ROOT, IP_CLOCK_SLICE, 69, + {OSC_25M_CLK, SYSTEM_PLL1_200M_CLK, SYSTEM_PLL2_200M_CLK, + VPU_PLL_CLK, SYSTEM_PLL1_800M_CLK, + SYSTEM_PLL2_1000M_CLK, SYSTEM_PLL3_CLK, EXT_CLK_4} + }, + {DRAM_SEL_CFG, DRAM_SEL_CLOCK_SLICE, 0, + {DRAM_PLL1_CLK} + }, + {CORE_SEL_CFG, CORE_SEL_CLOCK_SLICE, 0, + {DRAM_PLL1_CLK} + }, +}; + +static int select(enum clk_root_index clock_id) +{ + int i, size; + struct clk_root_map *p = root_array; + + size = ARRAY_SIZE(root_array); + + for (i = 0; i < size; i++, p++) { + if (clock_id == p->entry) + return i; + } + + return -EINVAL; +} + +static void __iomem *get_clk_root_target(enum clk_slice_type slice_type, + u32 slice_index) +{ + void __iomem *clk_root_target; + + switch (slice_type) { + case CORE_CLOCK_SLICE: + clk_root_target = + (void __iomem *)&ccm_reg->core_root[slice_index]; + break; + case BUS_CLOCK_SLICE: + clk_root_target = + (void __iomem *)&ccm_reg->bus_root[slice_index]; + break; + case IP_CLOCK_SLICE: + clk_root_target = + (void __iomem *)&ccm_reg->ip_root[slice_index]; + break; + case AHB_CLOCK_SLICE: + clk_root_target = + (void __iomem *)&ccm_reg->ahb_ipg_root[slice_index * 2]; + break; + case IPG_CLOCK_SLICE: + clk_root_target = + (void __iomem *)&ccm_reg->ahb_ipg_root[slice_index * 2 + 1]; + break; + case CORE_SEL_CLOCK_SLICE: + clk_root_target = (void __iomem *)&ccm_reg->core_sel; + break; + case DRAM_SEL_CLOCK_SLICE: + clk_root_target = (void __iomem *)&ccm_reg->dram_sel; + break; + default: + return NULL; + } + + return clk_root_target; +} + +int clock_get_target_val(enum clk_root_index clock_id, u32 *val) +{ + int root_entry; + struct clk_root_map *p; + void __iomem *clk_root_target; + + if (clock_id >= CLK_ROOT_MAX) + return -EINVAL; + + root_entry = select(clock_id); + if (root_entry < 0) + return -EINVAL; + + p = &root_array[root_entry]; + clk_root_target = get_clk_root_target(p->slice_type, p->slice_index); + if (!clk_root_target) + return -EINVAL; + + *val = readl(clk_root_target); + + return 0; +} + +int clock_set_target_val(enum clk_root_index clock_id, u32 val) +{ + int root_entry; + struct clk_root_map *p; + void __iomem *clk_root_target; + + if (clock_id >= CLK_ROOT_MAX) + return -EINVAL; + + root_entry = select(clock_id); + if (root_entry < 0) + return -EINVAL; + + p = &root_array[root_entry]; + clk_root_target = get_clk_root_target(p->slice_type, p->slice_index); + if (!clk_root_target) + return -EINVAL; + + writel(val, clk_root_target); + + return 0; +} + +int clock_root_enabled(enum clk_root_index clock_id) +{ + void __iomem *clk_root_target; + u32 slice_index, slice_type; + u32 val; + int root_entry; + + if (clock_id >= CLK_ROOT_MAX) + return -EINVAL; + + root_entry = select(clock_id); + if (root_entry < 0) + return -EINVAL; + + slice_type = root_array[root_entry].slice_type; + slice_index = root_array[root_entry].slice_index; + + if ((slice_type == IPG_CLOCK_SLICE) || + (slice_type == DRAM_SEL_CLOCK_SLICE) || + (slice_type == CORE_SEL_CLOCK_SLICE)) { + /* + * Not supported, from CCM doc + * TODO + */ + return 0; + } + + clk_root_target = get_clk_root_target(slice_type, slice_index); + if (!clk_root_target) + return -EINVAL; + + val = readl(clk_root_target); + + return (val & CLK_ROOT_ON) ? 1 : 0; +} + +/* CCGR CLK gate operation */ +int clock_enable(enum clk_ccgr_index index, bool enable) +{ + void __iomem *ccgr; + + if (index >= CCGR_MAX) + return -EINVAL; + + if (enable) + ccgr = (void __iomem *)&ccm_reg->ccgr_array[index].ccgr_set; + else + ccgr = (void __iomem *)&ccm_reg->ccgr_array[index].ccgr_clr; + + writel(CCGR_CLK_ON_MASK, ccgr); + + return 0; +} + +int clock_get_prediv(enum clk_root_index clock_id, enum root_pre_div *pre_div) +{ + u32 val; + int root_entry; + struct clk_root_map *p; + void __iomem *clk_root_target; + + if (clock_id >= CLK_ROOT_MAX) + return -EINVAL; + + root_entry = select(clock_id); + if (root_entry < 0) + return -EINVAL; + + p = &root_array[root_entry]; + + if ((p->slice_type == CORE_CLOCK_SLICE) || + (p->slice_type == IPG_CLOCK_SLICE) || + (p->slice_type == CORE_SEL_CLOCK_SLICE) || + (p->slice_type == DRAM_SEL_CLOCK_SLICE)) { + *pre_div = 0; + return 0; + } + + clk_root_target = get_clk_root_target(p->slice_type, p->slice_index); + if (!clk_root_target) + return -EINVAL; + + val = readl(clk_root_target); + val &= CLK_ROOT_PRE_DIV_MASK; + val >>= CLK_ROOT_PRE_DIV_SHIFT; + + *pre_div = val; + + return 0; +} + +int clock_get_postdiv(enum clk_root_index clock_id, + enum root_post_div *post_div) +{ + u32 val, mask; + int root_entry; + struct clk_root_map *p; + void __iomem *clk_root_target; + + if (clock_id >= CLK_ROOT_MAX) + return -EINVAL; + + root_entry = select(clock_id); + if (root_entry < 0) + return -EINVAL; + + p = &root_array[root_entry]; + + if ((p->slice_type == CORE_SEL_CLOCK_SLICE) || + (p->slice_type == DRAM_SEL_CLOCK_SLICE)) { + *post_div = 0; + return 0; + } + + clk_root_target = get_clk_root_target(p->slice_type, p->slice_index); + if (!clk_root_target) + return -EINVAL; + + if (p->slice_type == IPG_CLOCK_SLICE) + mask = CLK_ROOT_IPG_POST_DIV_MASK; + else if (p->slice_type == CORE_CLOCK_SLICE) + mask = CLK_ROOT_CORE_POST_DIV_MASK; + else + mask = CLK_ROOT_POST_DIV_MASK; + + val = readl(clk_root_target); + val &= mask; + val >>= CLK_ROOT_POST_DIV_SHIFT; + + *post_div = val; + + return 0; +} + +int clock_get_src(enum clk_root_index clock_id, enum clk_root_src *p_clock_src) +{ + u32 val; + int root_entry; + struct clk_root_map *p; + void __iomem *clk_root_target; + + if (clock_id >= CLK_ROOT_MAX) + return -EINVAL; + + root_entry = select(clock_id); + if (root_entry < 0) + return -EINVAL; + + p = &root_array[root_entry]; + + clk_root_target = get_clk_root_target(p->slice_type, p->slice_index); + if (!clk_root_target) + return -EINVAL; + + val = readl(clk_root_target); + val &= CLK_ROOT_SRC_MUX_MASK; + val >>= CLK_ROOT_SRC_MUX_SHIFT; + + *p_clock_src = p->src_mux[val]; + + return 0; +} From patchwork Wed Jan 10 03:05:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857896 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="KgFqFMbb"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYxX6Yhcz9s7n for ; Wed, 10 Jan 2018 14:13:36 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 79160C2212E; Wed, 10 Jan 2018 03:11:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 70C2EC2206C; Wed, 10 Jan 2018 03:07:29 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B2EA7C22093; Wed, 10 Jan 2018 03:06:41 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50056.outbound.protection.outlook.com [40.107.5.56]) by lists.denx.de (Postfix) with ESMTPS id D8754C22044 for ; Wed, 10 Jan 2018 03:06:35 +0000 (UTC) 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=Nr5GKG2t7H7f5CfTkpaUPleGMe/2gfYBnC1QE1CO+PY=; b=KgFqFMbbObI7iI2sg85aqe4xtpg2C0ONeHZa4c1SFcx9AD9QoO9ZfrjToJugIKUEk3B3a2n/aNFdI+8KW8bq3/yPKu6Rc3TVJNogZS9uWF1VHPMd4QGkOa90OlVvOOKlydEcYE5JKnq6dO0nQYOaqxUWlZUPD0cFOYE0QWI7l8w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:32 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:38 +0800 Message-Id: <20180110030603.27864-8-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3139d0f1-d73d-4f7f-c720-08d557d7281a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:kJVCG2te6qf+il5iUCYEGImPTmbnG24bCOezgBQwY7oMAa2Y4Eymw0+sRlYfPM4KOLVzUg04wOI+4jvmnNLKk37I9jPAMtXbblEQidoBRWn4UlZUUtxKA46lh/fqSg9r7GW3ciH/C4wGHDTZ3jMFH4JzJeAiQCjAEYLPpyBTg1rsCsqb8uf9dCisN/g/dasJ7zjsgCmBjuaIplr31PS2ResXmzBOLV1guRSO2fr1wcuXErTWtCK26F6gYjdi5bNX; 25:AfNO5p8LyCsMKmiQ5mpoOr8LAm0D8aSNdCLQnYfCADiV6Uhw78gfRLvOHMSSgI0hClfRqWZMsjGvf+BMEIyh+Q9IxijQlZUGbBozUTq8VQukpTQIg165M3cgTlIyUW4UtVxNZhe0BXm6GZLSVKOIxDO9OzIpLTYwAqh52AIHemeuDV8JMu5HBiGhjEZ7xT2pxIntxKlqOJcynpnZp67damlPZ2WgFcU2qQXOWSN3qZX4DZNlqEnRS+MXviCab66GP2gYdUDnGj9qbna8wUQfNESJpotZunyQ9I1UvdbCqfv7IhG06rmfuCK9O7R+BDlZp4EVW19re/Mf9M8a92SsEQ==; 31:WKK6gXCoANMmcQzbN+CTKZ/cXSwWdGmZtZ2YmcPnraMpKYA6Xd9B503HdG1LCH6DTtnLNeJcsHBZ+bm08GsMzG4wT2+42hgmvJmgOh+PdfL3vq9I9qxcvy7NCef2l/LeJEU8Dr9rssoGSuQrzjLj3e1QTqBNZWj+R57lZdLCRaq+3kh4RpM1cQS6exhxOx2QsSLxU4SYgPTOxekYoypCx9NkNnO0HUUISs9A3Hb8z0Y= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:nVHcTkjiaDDsxBEus4iKHt696bfRRSFI0MfQEQ6EVFMdO7KXxbzDP3OySHZLLwuaXNrgMzLbtNjWHXVnjNu0VPL/puRk+jrRQIcB0oc6nqV9zHAZoF9moFRS4jDW4eSkJu5NF1zfHJe80fXOd8qldpYlaPJg4xEUDxh3DMg2OPJNRrsOPzCngO1c4sf/11qIOUZlAUPicQdfF6g41ha4Pf6hwtiPQ6YmhL0G0YmNzksXIqkFh9Zj240Ul/lKeQx9d8uuwOEzfxnS0pdNhidU3K+ywb1kBPQ5R9648aT8XpjlcJ+zHiLlo4CzQd8UBgtqMa8F06f71aQMjUb/Hj/92d1RR5DIaViKreKfqxbSYiRbpIN9TZXTEpqU4oDTwyE6D0E4k/LEKsL6NJNwLuR9VItKVGd0KVnHtW2JzEbU9anPdw2WtqTs+PgT7vOMkDR/FldTdb1gB06dAGFxWC7FhuMHkYAxLouK/AP0a+7aZZtkXh4RHko3zCAhBLYOrkHd; 4:wbmsPB1sRUgz2KeN9cqGWtw9n/IE4rEF0pwns7VcxZsgCtl+loSz8idooL0FVkAxTIFPIa38u8E3mj7xw9jpYAe61oA63XkciFoedyDQCX70eZXebwBr+ZRUxfhVb1QHBHlPBQ2i6/+ZEaZW/KZv2e8RKLfpbWi1JJhE0dfiGMC2GvR4BsXrFpUnIdTUAFlz2Z594vnTVqUwIm4CHoS9N240TkT7VE66BMddn2/RSJ6AKenFm2y9d3QrUyc/fBDF7/fDXaTgLA8U8GRFfix2H4AvLiNjh75XjbozCK2hoHxlEljINUAqEAqNzpD+HCK/DzeyhuJHRsQkS6GsL5aHkU5G9JmrE6gpFtqRKQNxhbM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820)(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(966005)(39060400002)(6116002)(52116002)(76176011)(316002)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(6306002)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:orMHT+1RvDbqWEmoFDftp+gZYJVBFJz5OBVS7j69s?= 7//KYhmdi+7PaJC/zmfCaRQhXhhZp64Q/X8Zm5mM1GEYqrMi5bDAApyMCoMlCDy4UTdTH3/aolUm3oF/G3vhmGBqsr4lG+Ufylp3IKqefUKmN8hyMFG0GgSatpZK0uwdScRvyP5tpSbSzqbxF8xlboi/8ePdHWcR4cQSSo4nUD5hOW53Cn0zAwnUBUOymVzAitLtvOYWDgdanIvR25bxu/asNlNium2GvMacdQTA0xsiyr2QNiH6S+Nn8TSUAjCnXNSAkrbzLu8NipnTPwenEC8jrI1m08HayVCAhdy6JoYClHW56kJ5sUeUQcY6j5uPuKDgAOoa8tSu3efSB8ycLXJXzk2u42omB8wflNdKGEztn85DvUExJek9D0Bi1Qz7TXIDCBXj88Qn/sooIwFeA9MRXYlerESlOO+Ch6pjZAR0YNlIYo5CF4oqj08BpyUYn87Hj+fDfvy3TJXH3VTKDOOzrIULs5MxHfikKndLhnG1wAvCj8kMfqKfnbgsHyLqpp5Z4/Xo8Eev70lR1l5TaKGv6yRiuVYI0XXG9nmR08Z623yMPM+4CrXHJA0ScT8+7bsS810DNWG2wzGlwgi2TCFpBumhkJPzI6fZQ8jk4jKPN6QsTWQkwryh3ZNqLWXJRSCFmAWInuJw2ZJ86CHvNu0IAWEgs427LRXktdWgZlOw9tpAduJTiKESIIk8zv57sN5wIh4UMjG9VPmJDZNNYG8oqjrxAtYjwSFw8fqNdroDHHcjplQkeD8KAN3oOEgjk35J+rOXftL1mAw7MVCwG0559dB/TGmg/EhyJYOhMb3549QrXCAorRF14ylo6J8QbcZc4O5vc8OzVH7swjtMA8b/aNdMnpV4Lz1ru+XKvCv5Q/SqQKiyEIfOUc6zufVLRSZHjJ+LOhBIA86AazO3RGBq5ts5j5hlA/+bwreWFJEEdM9Em+A7WdeFf6WTEJ6/gVHmCI46SZXkaVXhyIPpG7Lglc/p4PQMerGqQGshFdvmGsbfBCm29kFsBWD4Pw8XZp/L475curlM3EIDcf9egeuLEInITXpEstTSXJkOOvT/VCjQLBVQfuSCgfFZtKOy+UicKAfvsZ29HsgM/Pzp4OlJyanHcoBxgvlG17oJARdAA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:3dIyVeSxFeC/YBeHVqmDELA2mel2IfFHoODZSY1Kh+2nJvCSSYFtSRC/VhjYdruZGYhrtR+a7zK+9SR1M7s5eoA6qBoC8ilC68ltzfAshTNFq4bucEKGEBYV8vxDHTeI2E6W/PCWXLSAeTB99fQOPfFP7z169KLuDEdFRXisQYtIR7ROmclfdD7kqFVJmM/1JGVlLNW1X9SxyXwdPiamxAD+DoasCTy27Q4f87H+JS37osr1ycqoUoQvomNlEy2Qf0eRugSSv8GnUaDKp05RBEu2HxKAxMejHdFgNAFwSe8oG6G8Hdek8HKPp1v+MW/STz0EDr0dTyN6uqr5vvqJSPGzds1D5oNFL5e/SxY5CY4=; 5:5urYFOCUEE3h/nTvYLHbK9wH0ht6zygqZkAqUhXTCXJyTZ6aPp5Q2nxSNljy+W2g+0AkumcQ8NU4GXAIjV0m8CTdvnVyMvgOn5jp4I2kNtOHeVUsMPXBD83WhAmPDMaQ55nuQIkGeweSSiF+Ynkc8P3hB4oyumk0YPfz1TT6Pyw=; 24:Rq4IJYx3/J8vCBdZs7WXx9Abl/uCrd/3KagrxgYAdqsU1Ok9qk2nSf+dHJfWM+SBpTap1OqKxxCrJgg4CyWZpq7d3KMcKviAXvek2Wy6cQI=; 7:sjnsjlrEKPL6hSCgXPGhxCEZbPaITtwvjcaQbf6+YkS09mqPTkDhpgmbL/JVC9KxFaWmth3pA9cGHpR+cjBPnDa44zwHmfGA6tdm7GH981GGJgMftS3eBWjNF1XJLvnu6Xq8m3iCKr6VJvda2/D3KIRWmtAF37WeypgRoTgHo3i76JB6G+ajd5Fuk0Nn7sz/FJqbALTbs7eF5h/Al1gtCMdhvPLX7GKnXNVSw7/cxBSdVss97IpYec0xEgJLdhDv SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:32.1163 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3139d0f1-d73d-4f7f-c720-08d557d7281a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 07/32] imx: add sip function X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add SiP (Silicon Provider) services function to issue SMC call to Arm Trusted Firmware. More SiP information could be found in https://github.com/ARM-software/arm-trusted-firmware/blob/master/ docs/arm-sip-service.rst Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/mach-imx/sys_proto.h | 3 +++ arch/arm/mach-imx/Makefile | 2 ++ arch/arm/mach-imx/sip.c | 23 +++++++++++++++++++++++ include/imx_sip.h | 14 ++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 arch/arm/mach-imx/sip.c create mode 100644 include/imx_sip.h diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h index d518e03809..c53e5400a1 100644 --- a/arch/arm/include/asm/mach-imx/sys_proto.h +++ b/arch/arm/include/asm/mach-imx/sys_proto.h @@ -126,4 +126,7 @@ void lcdif_power_down(void); int mxs_reset_block(struct mxs_register_32 *reg); int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout); int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout); + +unsigned long call_imx_sip(unsigned long id, unsigned long reg0, + unsigned long reg1, unsigned long reg2); #endif diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index cf39d08bdd..63db0e15c4 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -124,6 +124,8 @@ spl/u-boot-nand-spl.imx: SPL FORCE targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx) +obj-$(CONFIG_ARM64) += sip.o + obj-$(CONFIG_MX5) += mx5/ obj-$(CONFIG_MX6) += mx6/ obj-$(CONFIG_MX7) += mx7/ diff --git a/arch/arm/mach-imx/sip.c b/arch/arm/mach-imx/sip.c new file mode 100644 index 0000000000..b724330d35 --- /dev/null +++ b/arch/arm/mach-imx/sip.c @@ -0,0 +1,23 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +unsigned long call_imx_sip(unsigned long id, unsigned long reg0, + unsigned long reg1, unsigned long reg2) +{ + struct pt_regs regs; + + regs.regs[0] = id; + regs.regs[1] = reg0; + regs.regs[2] = reg1; + regs.regs[3] = reg2; + + smc_call(®s); + + return regs.regs[0]; +} diff --git a/include/imx_sip.h b/include/imx_sip.h new file mode 100644 index 0000000000..48ab878749 --- /dev/null +++ b/include/imx_sip.h @@ -0,0 +1,14 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _IMX_SIP_H__ +#define _IMX_SIP_H_ + +#define IMX_SIP_SRC 0xC2000005 +#define IMX_SIP_SRC_M4_START 0x00 +#define IMX_SIP_SRC_M4_STARTED 0x01 + +#endif From patchwork Wed Jan 10 03:05:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857898 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="W1lncgPv"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYyV2y8nz9s7n for ; Wed, 10 Jan 2018 14:14:26 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id C5BB9C21DF1; Wed, 10 Jan 2018 03:11:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 16F14C220B8; Wed, 10 Jan 2018 03:07:31 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 55DB7C2204D; Wed, 10 Jan 2018 03:06:43 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50047.outbound.protection.outlook.com [40.107.5.47]) by lists.denx.de (Postfix) with ESMTPS id 1093DC21DA3 for ; Wed, 10 Jan 2018 03:06:39 +0000 (UTC) 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=AGvATeu/PDbFR9NRgL2sqNmG4PAoQaniUAFbcC2zhbU=; b=W1lncgPvgbnqZ92hperTyoTJh9deKH3RElyf4P7R5FnxfduNe1MgMLrhiYyYtb1Q31IUm4nk1wI1xpZTEzVaK13hjrpFHVsSxc6qUKmj+CoQKXBJ2LUlC8fEvDB5P6yObCP73OLJra16opMbO7hc/9ZgHLblW1fL3Trpxhf3IQw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:35 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:39 +0800 Message-Id: <20180110030603.27864-9-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ffa62ea7-7da7-424c-3900-08d557d72a08 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:Pk/QDhs+j3lCvgZboxiSpuCcTknodRB1EfM4S1s9QS1nADTbPc1NS2AjjUJ1OtgViiLqKSRZs93RVm83dPRQr9MTbMueheQCTgdJ/FvSC8mGq3z6P5g2hquumF43OSnSyXR7/VOSfDJy1IKo4ob/WKCoGeRELt12dwq3/r7WH+j8feupYVrJoBVDbh0jTbezAWmiOQJMoCqFikVoXraFHEBMBuqOxsTNCHMJqKXC3J4iylo8/gRn7mWHRWCbPsdL; 25:9CfL45KN3I50oWPdtyPJ9wxMCJlbcshcp7JoxxwROLXkdLDctxugWfj3VJLpax6eh4h4Y3w722RNF1Kim2TIs3RHF0DvpktxKxSlUkSlLgVYja6P6l9sbyJOUr7Nwo9Yb4FXkcen6Jj4ktRlfXFnR6R2E3+3C3uwwCzL+Jp654v8KQtxoRO716Aukac/2GA+vuCj1s3N2x6wqHD0Y2fGZtuXvXPtu9JrKbGdh8jAWBu45IpXIp49yqBV5UNzGgFLrJE68mDqDeKsQG+j/Au0259sLFjvylqgTOAOmAIXz+wn+xDByuvFbZJeN7/BuwqQhwL2eX3q6mGtjyPHSBwVXw==; 31:AoQBb15oxFZMgjCu5wOwQUyZpXQ0x7CG/0A2fiHZeQ6+r94Y4bEdNVhhcYFxJqByeKUHcQ36q46d0PKaw5viMZCOnXxbTnBGTu9NzqxVQ+J5pDXqJEa73b9MBA44EllF+278IoWfAampBtkSZAoPzTHRleBHOUxWm66TTAnNfd9PauigSYMrI3dZRsUlFHUZzfydwHKgPc2A+9hk5WDWSltG68FCD3wruT6RrBgCVUM= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:ElLIX0el0KAN0rANObkplC8CuR57kNGk9pQyqoDwmW9Gm5KIGHThO+9N3qfyQAboP3JU7soaxiAPdOEqfNbqlcAbJxGBwJdKWXloCyyvLdh3CgWYdr3x5OY6vgST6gBJaTXyPcmGcCdpPU/aen0emL1uMNx4p/5a/gtGCBqaFjjnjBNjzWsgwQLR9LWDqVNf6UyTvsPrHL/w7CwWS/DJ9jIpR004kjJDHGI9QzMwwtQPPtT7NoN8qHFZAkCDmsOLDcTnuc6nWJvkrEtPyVyDfJN4niGiPx3yfcX7avGt/ZaN2awo7rEpE1L52aZazF1aWNMBo6R7Zw08xVvx0L1YHVFTn7HP6210+4LrkBXiWX1zDTaRKey+Xud37Re2PQJYXh+Snd5Id/K8Jb7AkHWW/XdaTVpBI0uY4UwhXDlHx5xGYBOtQ6ihmED7WkNZSswL2k8/6b8GgQ+tAhI/u1l8r4zUimt8fXbf+a6r+lWeXQSzk6XHpGdUMNj54WhNJ2mk; 4:MT7KUfN1v7AOvW1HY67qpMnFu4o13fxn+uJg2tcC7Wk6kZXhV99pEgd1lFTZAxt0zXlesW5I46ISUEcdDk83TtAluPf60V5WBHFku3Y2QDAhSNWuSp/okq31RwoXeV3DbIlK+zt3qIkIvbnLlfxQ4UEbbeNlRTtHq688gvayvO/OuFXBlV/vJIojCjoBBUi1vlSW/hkSY11bw+tgIYRIqRY2xaO4tPXg/xDAhTkXMCtqOWm99CvJMpEKHrQK2SbWRfh4h2tl6J7es/9vu2CiRoMsxxNxbIvw7HIyXM6K6ocnkERHMSHC9jJOr733llvC X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:issY2IC/PV0jvcQsdvPP0sZa68VlJvWkB2EW2v5Fq?= TfOibPIkag5CtfdvPDkGTD3AO09k38A01qzG6Mp+Ek+yM8D54LmfKUo+5bl5dd7J4tTYcIrkXMjhhe6eCC27QzJJWCKLgCAay4KTeitSLD1bF8veMLcxu5IaNVsMXViujQpLj/UJz/HTdMslQUZWektY4SlaajVFJHNIb5YLIcrfL87tsAvELYDS548kwQKNtob3FnzrpJ0QTyfon9KmCxMJh6jbsteEaoCzu4ZdNB1zAClGfgyQrKy203tZIHoHW+sQpko+WndbJYESKWExCmS0CInwrLLRYP7cusg0Bj9feCpC6ljQOn3UiiRAGNJ+XufT8dnx0/tMxXryl/xckq398ww55YdBOVM5vxFmL3SzB39XGKqTFcKHrk6t1O4OzpU8nFZNZLS7DnJBr+XrIrVXt6L/u0cRRz02NyLf0DXrvrHsATe0KKPOjcmMp38ABiO/qP3x+wMusaFng+Iq2+UDQOF1ILmljAu4sZeAvMh/qN+Wsv12JnZV3nPFIoLO4d3KWsoH+Caz5mYwKL02L4a7IzrzlEOJSda5BypjFkGTBaNoCW1tBP2hy4o/yw9BIhbj4VfJqoaDiZZ4cJmzlWk21kf8fJv2M0FAAAMywg62UpbAyayp2I6xvQImO4dwRpdpgsagmTxKT2OJvhQhrMO/YDwy/y7rAdx1T+hU5jbWjtWk75+gE3Ftm5tQgev27MhhMCqIxd+flF/Q6JsQ0ytl4ykcspshvlNjJtR6OnCt7Blvl4Q51A2X2p9ycjq8Qufndf7XT/5i9YgYtouASeiV7y71f25tVm5FOu7PlTCrhxFsLI4DhDF8JFm4Jf3HhpXbLchXSTbhy9aFpB+ddvlsr0edRXT4DsQlwfAt8xnmzBK2sBtE4HvA7DDNP19g3aN6Lj5ZAc0C0q3Qa2RcTVslUjVUd3dKSAVggY7EZPKS8GkOwjeS6vW9YL011v4f2Q3gyadL7hhwDrbW0UaNUBZK/457tmDLcjXf0L8SKXtsnOjUIKGnhgvLYcjI9qWJRDGCUWTkFt/44TuFJWnyKGAR1Y82RL6K0tAVHbozRXIDw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:BbkfWqXV8wsIQDN7XTead84ek7enMOMVYCJNFEanCf+1W0+UZXOajYRe/HjL2Q1Bb6ReQN7u4wqRarnve0721nL636y4riOCHujeGgxnKOl8G0ZKBltXh3cjZZNW08UXzfyX+90XKh5kxEhFmMs9ffY+cJDwoPPRn0ZC2InaQJepAROhDSRWmCzksy2zhURgIiWzvW5FzRHBAz1NKOjlxr3uxAVE3412PZ+4yP0hc46Kkce4LaHLQohGLFXt/Eg940QT7R1yj9dNhvYBXkyLybjCV1Eq/BDR6FZBEifNG8jD4MkzAk2gvA7RKzo/PgmqKXQJ578aHTERnuempqlTI2d+/aYcDDKT4IPt2GqalOw=; 5:zwQYRZc22eK3TYcv+R7H9laFUiu8xISXR79Krbavm5b/BTTKJHIHYh1BTNtRhjVHi8Gu0R2FaSATleXVrmnYY/MII2sqOkaU3yCQcYWSMGkrojMmAr2SGNSbD5nS0eEncvKG4HXFliW6iy0AmSRmFnPOaoDXBdcOqlFtglXIQww=; 24:J1kVR1cQn4j96BPdUXgCAejh874LrwL0yISLxHHCw1iMH076ZOPHLhpZgR5m/s0v792En0pG8uc5hK8fKo8WR/yQIdSt0eu8a2LZpPe6gmg=; 7:Gvl93PvKHCN30wNEErsUsWNP3Wht70EhfZ0b97oaTfN1Pzve/K7rB4F8ykdrny/jZheKAxxfeEL3jKS3M0sF8Y1G5cAYeL25jbb+x4/wFsP1994C7E0JtnWiofzVLA1W00nIXeCXFSXu04jkxzh3tcZ4DScoD5/JnIj7/VJJdfEz3ClhiNokdzepPapQfddXPWwaNukmDUomKdHG/qDchGfKXcOGwWNgAidszQ5JB04rm821HRIZUucU2xwwdRST SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:35.3033 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ffa62ea7-7da7-424c-3900-08d557d72a08 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 08/32] imx: boot_mode: add USB_BOOT entry X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add USB_BOOT entry. Signed-off-by: Peng Fan Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- arch/arm/include/asm/mach-imx/boot_mode.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/include/asm/mach-imx/boot_mode.h b/arch/arm/include/asm/mach-imx/boot_mode.h index a8239f2f7a..e3ed046b25 100644 --- a/arch/arm/include/asm/mach-imx/boot_mode.h +++ b/arch/arm/include/asm/mach-imx/boot_mode.h @@ -26,6 +26,7 @@ enum boot_device { MMC4_BOOT, NAND_BOOT, QSPI_BOOT, + USB_BOOT, UNKNOWN_BOOT, BOOT_DEV_NUM = UNKNOWN_BOOT, }; From patchwork Wed Jan 10 03:05:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857893 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="PGh3Y9Lm"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYtX5QnRz9s4s for ; Wed, 10 Jan 2018 14:11:00 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 709EBC2211F; Wed, 10 Jan 2018 03:09:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C60C2C21DD0; Wed, 10 Jan 2018 03:06:59 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 47C23C22042; Wed, 10 Jan 2018 03:06:47 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50050.outbound.protection.outlook.com [40.107.5.50]) by lists.denx.de (Postfix) with ESMTPS id 63620C22083 for ; Wed, 10 Jan 2018 03:06:42 +0000 (UTC) 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=fNOdQ8BCNyC8QDgIWu2OKyVyE02dWtjARKRK+iFidOo=; b=PGh3Y9LmqenWazRHFa3zGcb4ICZcNXp+yiUr7eu35yi60xjl3KkxzRjD4CrYLa4TsGBUIv4mDZlThgZObaF1xaQaulsLjjISpF2nXe27XrXbzt21AbSm1TvyJYR74H468uUkcSKr0g6aUZ6OaMIQDKsDKOTqAPEMbRUhtamyGuo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:38 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:40 +0800 Message-Id: <20180110030603.27864-10-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 4430c82e-0b8f-471d-d1aa-08d557d72bfc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:s6y5XqZNhOzOgf9/nPNDaNgKB8N8E9I6aT89pI2sG2aOA726Hd4AEPuuXKKKGeXfRLLQq4Jm9XUutet2+HpWgnQ34q9K5lz7sIoQdXbqgSyZr6732Kd+KNr+CN0Iaz/LSsX4wBEgIux3Y+xGzgxLn+eY5toFQETXlD2AUSSRo2WCldVuaIl68+VRfnq+mQZ6C23RVpqsofrblzozOd3r+CT30x4zkugLLWBUcD1iVsUzvJ6zfrH7OWKJ0bEdyZJI; 25:w/rjSS6NlyK8cpGJJJcTQCj2HPmLIfJCSF0C4qxoRzli1D3bRFoDssBCoz2pR0qLSlNOG+Xj6TgZN1Sa9tnUpAO4K9J6DhYdOn1gZ0zGW/dI0eXo9crMBitc35MFOsgddhqfvAzlZoGsBtRUgmI1g8uTIrNIkE5+27L9dQe8TrShfLn+8us2uQMgdPhj6zGjX4C+kMo3AuciBtk1deUZTs7ZC+IZa8A5erkBn9BZK9JU9QIWuJdisBduUBBEuUyBuoSVO1TvGjhHPE4qsobjRaY5edGg4WFrrTr06+iZCNLd1r4mXQ+1mugAnzcuiFqhotqBD8igQQewlZ8yNN2TFw==; 31:G1jVr03aTSM04BXB8Gdcp7d16muXwvig8gq4B40aPiHRdK2iMy+6yvNUF5wGo6aImZ7CYYE9voDxWrLQMFoKDZdup2/qbn43XGcfRxPs6owiRxMfk1SC+2VTMPPIcHvrgCRycyi2XBNAlAE/UJtEXBWNdr83oyI8dKepU54n8clm7D7WQJMjBeXg5oh68OWO3BHiTXGVPZPxtsAS87zFddj3UCG22LL3Hqq6yc+3qdw= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:7MyJenDfZdcObpp6gYdYDP13UpfFZG62k8g5U/eZJH/cRMGd0Bxy7k8pbepGMEaSw0/0aWjlPOacGTKo4WlMDqSt6TIaTK7ypx7hVH+6K6GC/hRlqoRe5oz9hlt5Bf9g4h0yvZ56o/YYlPvO/RRv9KteFSKzqpxmXgQQ63MqrHzyNCnt1mxXDkX4jc7ml8gF4C/vjMo9csV7HgQB7N6WuzRv/PAi+9CpShoDICklsXOqgrMdS5jkU5yyjGPVsTsPdxBIoh9XqaZS4QwIDu/+weZh7DyTc66fABTtwz/+csZxcDa++IfIqlf/J2KIZzbfQIH7A0i9hcXINSYgsiYvr0gCXOMZyjcGr2lmNCSnrTQB+nL7uQ7yWCaJh2vZMdYwgVLi8m5uucsFyvJDj24A2EJR4Y0PEpljliWWFHbLv6D7EyTZ2E2XO45kjbjS19R6R9lVW9wpq4e+6vPvAvNjMZAEkcwjwwI4MlPaUJy48fe5emd7wC+3MrH7nUokUpGu; 4:2fKJkaVGOiEh98m1ALEABTXuN1rlycHWa00ZCVmcWO16BNovF6JtPVVcviszJQdJRtNSEgf1MTO7rxMlswxOaHlmLjk5UQOWe+3IlvQ6EKm8zv9VHOnkadOo/7EBgwKkOWjd7xMPMZ6aoNQI3hXqnM5R5Ou81g7foH5L95Q9mr7pAI3B0ECwFCvNIH3Hf16gxcwzZLCniD6+zSoJWBNnEaAZGYwpK6iUCK2Gecb4RV2O4Ppq6QYAViv1K4hZAVftFlb2p8erXuiiTJtBZlykba5M3Xjj9SI0kBpbxEzPx5yLa/C2hWz/JZB5549LTIfO X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(15650500001)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:aex1v8wzdZ9WSaX40Tp30PyYBtlTf9ilzfv/6LEBS?= c65KxM34aVVdhfaHrE78k9ULIiZ57p7hqK/Ao9tTwBeM9iKj4fV0W7G3cBLAadeYCNyDW5RWwA0WR73ivgjip4HW+O6nG+XmATtxrgy6u5f+VqDiv2GdKiSq5AxyW6b4yo+WGwfvVEeeNyb2c3lIxMpCz97r2w5QSKmcobeloq5W/bZgLT9FKnPG9vnpxSkwrJln+znG3Ts5+/jn8Vykv6h3u2RSLliqVGCvJxYkxH80nvcK6kZEDZ1jsoQRZFCkHZlLQ/IW9KQHgxwillfWaMQ0JXGtUv3w++oPrmqfaZI+FeYU0P7w3GayWJS4lzssMWK7bfvpicaQQDOoZ4KKPSNRYzVyEHgRJo0PSqed2m0tRqcP3/AH0Z87h3SdWLVdLU6hIdW+HnKv+mpWHXvu9jGspGHn4VE8ScqrE1Ea3AnAzw3qXHGbCFklMshnN2EocUi7n640G7SwW2v8S3kdPBBeYU/02omy0mQauYsRpq9ODg2JC7k27IEZ/rGp/ISmfTbTBEq6jNz/cS+X0Ob6SmQxc/t1Rw1ybPXpCxvWRNctlFrwmA3ShKoa1WoybWaClnaaw0UzwHZYaXHXqAVW9ZyPz9YfvR0dJpoSVsKCIUq+1lhwlCZdF+6Jx+Y35SQyqxaobmBs2vuUbyLorXRNdIfBgUrv2118w4ImIL0hvgq6u1rXDl2cNdCZl0Iz1NSTeUHWUFL1x/d1FoyRZUMaHS9Fzh+Pef3WD3s6u0dOkxdLUO8Dukw8/0uu99gEoTirOGG+q3dYzPBRTL5lNCgg6uxgqXmKsseTYFBE6UN/iHbhEL9epKGAaURN+RxCkETUK3tYzppdP1QsN8iyNjOyT+rSAL0OxqhGlR2FXImtvf++P3uJ9LoSucjvShR1lglz0YCn5u7KQ0EQOn1M86+MsG4nCsFiXA8A16gh7rmhmpOnr7xo8anM/qpShIA087rWKH4H56ah6dNS1BrDRU1c6DSu6x483j/Fy+169oUMYVL9DmqwImAA6TtUhYUcu5Ix2jsEea5a4//4fZHz3nLy9gN/Xtth8OAhoJPcKvWE1Xr0ki2Km8QSw+1deHf1XVqJKsRgR747tIgkqZpktzrWnRupTmEuyISN/EpaObq8yBZ5cY2+jwGuIpRRWZSgqVVdtk= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:WKqji1wsesvbk6zhBbGJKgax8MEjvkxjJhiVGa8tz0Yd1OkYBAWSf33KGnchjw9dzWAG16k9erJCWt7wVJVduy/lYqBxKnCkNp6cxee8FKIjkcEJicthzKnu8pVcxiYHMeYK7MyaxYs+K101J93YfqItR0O7Lql1kOTSfGV1HpTdmuhN/ypCqpOpbAyWzV15IZdiQdv5I9UAunsysQYk9lGCT5jDzZmazXc0jvglgnTNEwHlPeQKBFNHK7GpGKH0yFBfK7PEyK0OmWZTTtmnIkuDhGKpLtVAt/Q6KrPOYUbt7hh+gZM24GAJ6Ur+dvq/giZdCHbhpRbrKmIbOBUtgoeaXbB8EP3fQ4V9KBz9A9Y=; 5:xrW23f1LPRTC5riEDgf6/GdSMEPe19i90sFGfefBDH8JZCKQMBSRRqPjuE7YFIRtyTOe6Qm4AB8H/xCANrw1Oh6ANtf/n4XSBKHcTh/ID2rajd7EKGNKW2z9YRFIS1eknCSBlAJUykP4bG72+TMLpMRsUqNUigeAmzCkXk/6Jcg=; 24:ltTV6JcO3ykapH4+bq9BUhV1zwvZFqW395iU/OF0mTB0EvB2l96t4MPtXVJNtXLEZdRYXYNtXWY44xgFTQ9vG3RMp9mJ2o8exAoy4Rjzm1Y=; 7:9aeg95bLslHgbqSTL0VWhMB5YD6QncfUTg/f1HDkjy9OrhKBbrpnDgfSNJrh2RtjWm8DrDWIEDIa0CaNYYlpe198ksapnah0DSAi9FypsDglDlQPJJjtHG5UBkVH8tiZNIcsEIPr1KHKLNSquchYBxGZ6MnhFkTqvaNYKWYeRiZxjqg0zgtXG7JU1rqqEMtb+NduZb5N9bUvJArm+Sv62hGzISKnmlsxEdUF/TYEWEfcMD1ubHUPD39tGPOxxN9F SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:38.5215 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4430c82e-0b8f-471d-d1aa-08d557d72bfc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 09/32] imx: cpu: update cpu file to support i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Update get_reset_cause to reflect i.MX8M Compile out get_ahb_clk and set_chipselect_size for i.MX8M Signed-off-by: Peng Fan Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- arch/arm/mach-imx/cpu.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index a32ab87e9b..fae8b0a419 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -62,6 +62,11 @@ static char *get_reset_cause(void) return "WDOG4"; case 0x00200: return "TEMPSENSE"; +#elif defined(CONFIG_MX8M) + case 0x00100: + return "WDOG2"; + case 0x00200: + return "TEMPSENSE"; #else case 0x00100: return "TEMPSENSE"; @@ -137,6 +142,8 @@ unsigned imx_ddr_size(void) const char *get_imx_type(u32 imxtype) { switch (imxtype) { + case MXC_CPU_MX8MQ: + return "8MQ"; /* Quad-core version of the mx8m */ case MXC_CPU_MX7S: return "7S"; /* Single-core version of the mx7 */ case MXC_CPU_MX7D: @@ -259,7 +266,7 @@ int cpu_mmc_init(bd_t *bis) } #endif -#ifndef CONFIG_MX7 +#if !(defined(CONFIG_MX7) || defined(CONFIG_MX8M)) u32 get_ahb_clk(void) { struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; @@ -293,6 +300,7 @@ void arch_preboot_os(void) #endif } +#ifndef CONFIG_MX8M void set_chipselect_size(int const cs_size) { unsigned int reg; @@ -323,6 +331,7 @@ void set_chipselect_size(int const cs_size) writel(reg, &iomuxc_regs->gpr[1]); } +#endif #ifdef CONFIG_NXP_BOARD_REVISION int nxp_board_rev(void) From patchwork Wed Jan 10 03:05:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857894 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="Dh1YQvom"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYw80X49z9s4s for ; Wed, 10 Jan 2018 14:12:24 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id AA4EDC220B9; Wed, 10 Jan 2018 03:10:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 3DF46C2209D; Wed, 10 Jan 2018 03:07:28 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 24CFFC21DDB; Wed, 10 Jan 2018 03:06:51 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50089.outbound.protection.outlook.com [40.107.5.89]) by lists.denx.de (Postfix) with ESMTPS id 2147EC22044 for ; Wed, 10 Jan 2018 03:06:46 +0000 (UTC) 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=fXSQ0rae7sKlEBkgT46w7aUG9h5OQz+JQfvVgjQhBEQ=; b=Dh1YQvomQ9NnkAFzXlY5bZuSN3EP9hL8NbLvYFjNfoXicSczdOUbZZQ55EQbsVNS6UHRhn9iQ8VULcGpM6MTMKe84+K9qUevUlepbaeOf1Jo2XrTjd+KuH2Ngn2KD0hDa13LlQol2Qbvrkkj1C1N+Ns0GnJRaFtHQjMz3eahIh4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:41 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:41 +0800 Message-Id: <20180110030603.27864-11-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 0d0f338f-ed01-4438-3e1b-08d557d72e28 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:M1vMw77Go0EUCoBSkTyG/47uPWW+1QPlfdl8NXCUdglTDCM7Mk48h6fj4UNyzAeeBEecuSpLAGj7xMU2DLUCvCRGIRwxOxyjrdWNU5QLOdwL8p5K57qgn9Ip++avOVPJyqDg9VBoRd2pwwZM9GBUFzma4O9pwj8FDDWjVMTxCOnKN8S1MczAuBcQKw794VSyDKaVLY/HEI5C+s9Fc2+EACaUDDoqSkcQcvEY2qimlv7/ODXOfsTUpxCyJb/9mUfz; 25:z8hWCUuMXGkRfw7TD6xQazMEUTFMSnBni1JHGYPwMXbxXWAEll9SZHQ2uJlJRsggtfvrAomyPgvlthMcLF/CacmCcxWbqoNaa991BuIkd69/j0EqCqwH+vr8lsPEgCPzq8BUP4AlDaqi8KqiNzmZ9kBV20eEsUe+tGBycbVmNketEv9Op2eqJ9pXs/QmKsdpb0yHEC5KeVtQ6+b4lpZsHo3EGxS5OPYV63AOf5XlNuhJJQx8LVJjBApjA5F+JSNKtbskvjSQVvynE1s0Vj+f5W5XtcD+CCrzsPn+/d6NEGWk7xFNFKpTRnUDY5FPvQGRluLK8+rQ6RxU20obcFyWZg==; 31:OB1tOg5daYU/qh0jo5vCJEHuJdtBEmiVhfMzux4Z+/WKCTIbADkvN5L1DBxuCEFdmmP+JVLRavwEMyCH4mtZXTpWEunfALN1am5sbGWwOwUviG4iyfa3Wj7lwpDdtu1lE3ci1TZqiEvGbjetL7EOoXGgGVPbxjBge970X6RuWzKoGzT81Mvr1jX4hxsfs9ak43SEpFmL/gWqvqrAnnIpxF0cckhVg4B+ZDazfCk0Oe4= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:ja5cfOEkaVnHf3CJgOmNhj1volDDNF8QRl5xAk9oukky0W9Wcp+J/aQy2q+5La/khkrPbiZL6o6eMZqbTcZ9eVxQJ7jGRU1Y/bqYlinEMeOuTZ+fCPWN1WOmW1Yz1/QbiUK8WMXVl2KaMewvCxF/DqM5+MWzvW9VAPl+DnXqVv0sdEX9T+R/I3vZCPzCPSe67sprTuAwLDFj0GUgUK89oso8pXII010725fVFaiCp1CEhYtIgQ13X96vUuPEsHy0Lj9Q0u5P+8bIdIvbQH8gI52YvZIq0wOHRi4no9XbW0zo9RmWJoWjGWtENZ2icbzEXA83ZbdVeAq0YPbAq2CgneIZFAfmHVhA2t+Hp8pwsIictDtshacwE65lpVKiH2diXhFXftrbGqR/agnJ9eD6aai71tU7lqbmSabxDTPjg0yoMvEf7+8jUrMCdy58ffOrMMQq2EaT8sW2/RCj0Xxnxw/4u958AYKEGJD9ngUrVEtbEFrOnI9U1x6KwLJP9wDr; 4:vWOdk1ISqrMwpA/XhIpW1DR5l8nxDZNcFriXF+SdQZX0UJPa0C0cY1tdSA9Yfjxv3lbrXHIp8UuV+t4Vnu7M8nnhNjRMcyeqKWbFWk+kPmUtzAVQW7K/OyCbyGfHahyMmZxBqGpkaYvvflzX8rXPMuR9OwcY7blki0c+E97kwpHBW5csbn20qMe1oakvOnObxLrLJnUgxLPSr2KmMbzGQCvhRC3ssvUnHyiMcqFgsacBZWpUvTpsiEARwm8RhfjetM6oGpl2F6RrdRSqRjNAAhDTY14+/vKs0LCmzeYfOH/AMyylDuHUofk+BE24YE6E X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:TqAivQJJKRDRA11Oc2lvLWugHf56+zBAr00CmCNAG?= XRTHKff0lgxLpIbqOHofm0wW9iBjqfOKRbdWm5qSe3CKGkQakcia7FsOruuGydF8C092VsD3e7pf7Zg7Uw0lD+P2brdy7ZLPO2eG4rF9+7Kcrm+k9Rw9GUuPFpyKOT97/UDh0E5zdJNrzCuMVHc79FzjBezw7wQZkX0otYtNavwMbtgX994bfEUhUdpNKx8EJa3pSawun5VSlcdg5iKvY+GW9gl2NZHkHgxlcGEILxks6pHsP08T6y5U/FnOj/9C0HPHEUQpA+q/q8F3eAVpj8xqZ0+UshkvK3SVyvVMQpGOL32qhmXieC+O0IEIdKoeHe1xYSx32PCkFPK+DNIduwHX7H6YEgdb+w8fTjfM0w0RlH4hg6iw4L/cyGSZzcr3e0arvsBf4xI331rbsGEtMEE1TrzFdNpHHYYBrHlxTEffp90ET4iky79yMadPLF06S6EvdMoIZkHPxUK3E3qw6PF6+IUweSW73L5QMdacSdAlq0UoUel0E/bGLkxyegTSHEpVpnL3x21IzYo9Y04ZW3dpO4qC8QkmcHjO1wY5XGHttEN83vrCUqAzVv0ySaEO+AcwVKFDssAmkm5v3/tVucQesu0uHhupJ4kHcRYwVtsMgFdBn0dc8wNv+D/E00rAAnHUkkWaFX74cXPyLGTm3DTV+Id436B38KKJHN+kWwZUvA8ne6MdkgM5O4WoL9ljXS8Mdc6VI+qbFFICL4I5bQLqURVL90N1DRtoU8ByiXOKWBiymhqmzzhl/k29UmKIr0urGpWUCWA7w2DFZ+2sxM1+VMijc3YwCGQrkr5PLzCpsMRtMzUDU1Lw+NLb6EmHQTQ6FLGes37uOgGKxEkg8q6stVQCUrBTgEP603UmhMUz55QL6hgWl17Q6ULjbVCFB0I7G1RJUR70x4CLsV+oWj+/r4ksKlnc2AtBipjrI0sNlxdNv5YpgDfQsYRHjm6n5Iz4vS0dscqlIK4dSKLFd130J7tD9L7KLD99NpdL3lCw6LO8xXoLDitTcH1VyO3WFzj9JqUPbVpFEwIeM1YPYfVku9HdV3jfyCB9O8iRWkzVw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:yp2dI/7L4Rte1wTnJCMIC8ebk+k6aazJLnu2QFSU3rCA5JexYx0Um0czRvf9PEeMNkzhVoJhaTYfoRO24xQ1BgPmVRnphLE06QiLrmtbOAt/OkAVtNhJz4iaaUzXtREpCVv437czVL5xe4CUM0yDU3+Svu4xi9WdMd5uZlOo+oyfIoNoA3oZDv63hZVhnUzVQcIHBBphsg8AJ/GsjbK+SmBL+SjD8Yqz9LwR8eXeQsj/3bMcZlhiATexkgsP4cKOIKRBf4oOYEYb6MQAcv390nj81BIHbK1Je39ZqiXBfDFnGDe4JKcKD1Got39k67ry7TAd/WPmNhiR4VdYS2FPVKS+oVAIHTpDWbFoCK2JpfE=; 5:LX32FfB8s2pjivDVJNu0VCABdAPbvOpyRnKkEEmbTIp+2u/7OIu1u0RFR68Nu4yyUZc8KYprKkTn3TxOU6lBkrlOlt7JNbBcQF6iivycqurDQqAcqfV5K0Ujv2lTEfC2znnu7djm+8X2QpvqB1JqlMYJo/bgjT52WuuBs9vkyfk=; 24:iaHd9Ztj7UufUQIoXYnVMPZYLt5/Uhp4oaDEmAy9Nx8LXga5/wtKSoCYZ4FxHw5BnvMTF49gWxqTzq/1RDi5BO3q+mghq3FubS60PhYpoWw=; 7:hJA6fQ+d2MfvpF6mV94LVsWfE4/Tsw2vEKHlWuUWiP9luKc1FaYJdO5+Y1AEWw+1auUl5G1SzI8UnMKCEbnQ3Kd+EDasUQXRPWfkffzs7/vaXQREG7tAdc6xYZ4khUlIeLThtIl6wvmT/PRFCPMs+Wkkm+7+H00WYRtIpznPprBzQLvgTAZDBtwEQMJD/K1RpF48ES6a+glmaLuwPxmEiFIkU1d8gR3gb54b2qRUK7T7sYMXId319Wtfql0k/ivW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:41.8334 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d0f338f-ed01-4438-3e1b-08d557d72e28 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 10/32] imx: spl: implement spl_boot_device for i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Implement spl_boot_device for i.MX8M. Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/mach-imx/spl.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c index 723f51fad3..7c4ee82cd1 100644 --- a/arch/arm/mach-imx/spl.c +++ b/arch/arm/mach-imx/spl.c @@ -97,8 +97,8 @@ u32 spl_boot_device(void) return BOOT_DEVICE_NONE; } -#elif defined(CONFIG_MX7) -/* Translate iMX7 boot device to the SPL boot device enumeration */ +#elif defined(CONFIG_MX7) || defined(CONFIG_MX8M) +/* Translate iMX7/MX8M boot device to the SPL boot device enumeration */ u32 spl_boot_device(void) { enum boot_device boot_device_spl = get_boot_device(); @@ -112,11 +112,15 @@ u32 spl_boot_device(void) return BOOT_DEVICE_MMC2; case SPI_NOR_BOOT: return BOOT_DEVICE_SPI; + case NAND_BOOT: + return BOOT_DEVICE_NAND; + case USB_BOOT: + return BOOT_DEVICE_USB; default: return BOOT_DEVICE_NONE; } } -#endif /* CONFIG_MX6 || CONFIG_MX7 */ +#endif /* CONFIG_MX6 || CONFIG_MX7 || CONFIG_MX8M */ #ifdef CONFIG_SPL_USB_GADGET_SUPPORT int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) From patchwork Wed Jan 10 03:05:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857895 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="i5mLRRE5"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGYxN0lXXz9s75 for ; Wed, 10 Jan 2018 14:13:27 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 9F153C21FB1; Wed, 10 Jan 2018 03:10:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D5448C21C59; Wed, 10 Jan 2018 03:07:01 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 9EBEDC2207E; Wed, 10 Jan 2018 03:06:54 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0070.outbound.protection.outlook.com [104.47.1.70]) by lists.denx.de (Postfix) with ESMTPS id 51B2FC21FF3 for ; Wed, 10 Jan 2018 03:06:49 +0000 (UTC) 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=kkuzitQyNacPoFvFsJmO1GyZfhLm6kD9sEt8Ud+T6Qo=; b=i5mLRRE5fig/tVSAurmfS/ycNQxAow0KZt+BVaQWfLuaOW5TJkV9oNFGXj3UcgQLSnMCB6Fl4nFsIQqnMi+guzmsXWASml8tgMyxa6fIHmpdH0+SVUu08vp0Egx3+z7uesKKA2v5xb9K6YXBgNJwzvgMzblO2WqCbkcPeCEVZ9Q= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:45 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:42 +0800 Message-Id: <20180110030603.27864-12-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f5f0a80e-9f8f-45d6-5fc4-08d557d73026 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:mDMYKVpdUsu3OFfbn8gkYGsvWYUX2zhwrtmDDo8vPANlI/iRKQ4qN3hzsF1JH4ULjpNugEubO5KCm823uWEXRENDVy1i/I82CB5v+pxYWd4uNfUC0aenB3dJOOpnl5m3g1Jig6QEZbpKnTOBZoW3YPCpvF02MAIVl4IdVWf+DNoUv3z32kxtd4JAawwp0SlPOTCPM/sUq8Br6bDpHxbX13aiHihKDjL+XqNFvEgbr2nbDGtuSqE5UT4vlYP2MSbs; 25:vJOqrdsMhbXg21XV+t8frCmQ3UtBuy2Sgl9mYkqdhbM2WFa6+Zo9UEbQtWgIPcOKTaQ5hT6zj0uzrQkykv5ciNiRqAXkc3Vqa6GTqldkTZr5KUE2zgrcacDajSgt3IXhDM9eZs+uy6Gso18tAmNjxgqq2RoPzeeFfnsHioyUPFEzMDvULZW7+J6K+x5q/YrCPJTo9ax6VzvQH4myrJStlvdjHXaTC7MnCE/SdiCSvfzjiIpSVqvhmDrc1S/vGiSOr8rCRlckFtBEz+x6/5W8BUDSkVGN0JQqWA49LCNoJ5dW+enp3DEjsuvXr4KcQE13rBioD3IbUI7bQ08IQer2Fw==; 31:ZaNmxhryZnU7vAkLWg7zulu2UsIVpkM6ShDPEXuN+YVPTsxRAC4GuJrTdlgWQ3oAACM0SwSaYF8xhmeMVSzsOmyHXLmvki/LdsHBxvOhszg5729NC4lKVGvcSGYbQouCkxdRCx9bMTivx/EGXwx65P+f4Wl67j1ZpjBsjmINu1gDCj0NvnDhCpp+OlAvc7EAfpHa+8qrYyQPi9FNmXxnEkSSuPySseiq7Lw6oLkyvgo= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:joeoky8zDgjJbJFy1jkI2teZpvONk/uUj2XBDyX2hrNwzurYzv74sL/Jhy0FqRaRQmYET2sqBQV54aUuu+nlivb3HMOQocqQChdMUKX5fiMVhHQpetxEXYljYTDUkwclBM7G9P+Jts+Y0uNPOwwqSaXFuga/w6V69ifLPRND6WrgU8OoSVsaHJQxwfeKQM9g7Zx0qvueqoXj03yB17P2lhLwU80ZBXFaa3MjbqBXUAQLxPNQ75WEh6M86X8d/mHRR65hRvS8YlVH4nsaOIdbUA2A/j+OcRPCzLk3WMbs8BeuYRiPBdMXb5SyfYVT1g4s/GevSkmlyCmkGPCBA2A/RAkfJndcCaco1NUVpsNoUSVbVxL6r6j80gYaVJ7f/SjyEIwQaMCZeclo3rDXMkhsnIqRXFpmPyE2CLRQbYL5X4cd5LNcA579gx9TFjv9iyuE7lfstTfQOmIm3jDwvUZJt8gbWiHo9Q7YT/xiE834NMS4T1ENx16u2qWMBV0Hqbev; 4:EcyzH+BakfLiA+MeZMEBndxHJuuFal4TzCfXLwKAVDLSO0XPNV894Xpi5T4DQXnPx3KgRAI++w/aNZ6KZJp3n67BVcdTfLXPeiaSEX4eFxY5B05jfEyESRlosye3pAHEpeeyfe1JA9CpyTQpqrjmeJaiPtcXEkYiVWtBV3kbkKschh8+IibJ37gcuvtVFbPNlZ7s7wTV6gG5wD8mDrddEmmLFX9FPW6zmgvygXgqlBxp2kfy+SywoRfu1zqdxwAWgq/74ELhwZUAHcRAqGVWVnyJdekeTxGyNAdnijhYasPMYMuNcJAkrp+vGm0AWte1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:tzW+F/BlDzyEFJWp34p+2o17qZnEFFD0v7nBHGFzL?= KVARi1JRD46IRvhFWuZH+Ftu/unO6eFrdBhNet3pnFipsZC+/vPf6bQySUuJclm+BD7WaebDA9y0IIq6OqnXjTujiRs72WpFqFTldyWIXPFtCi0nLiz9xyiIO8kE/ak0ISHvjEFEJrgb7kmV53kPSoAXTidk8S7oRMadfCSB2fH0/j+GJ6dCpiYKpKC2T4rZA5UXotq8v4ErMVWFwY0NlF+XFGY0HGHHuU10eUtIBm6bVV4IxTobQuTj1C4k5OofpOcy9lJoJm43RyfPcZSV67gO1dqebersRSQypgOcqG8LUZh74qTo4dQLSXE4T6czZ3DSKln6q3mwCdwRJeP2G5bEx2pYf4xpexnZG5GiKGL0seOGVizs6qCYdQxyy76J6s4YNaJM5r/ORj54U7yC+de9XJDydhoAfT9XghGQMHKx6Jf8c7dEBm/Mf8RZZxGWe4DxzXXFSTXr7kUnEV1TuGkrytz0gtXGdA1+MHjtQqEO1vrJZkmzMpKP9tP6Q+zWdvVF8AwROryrOW85jdV4Q9t/s55qbolCIfjvgOw7XrJU9w73wrH61KelkSPFTNjbpki5wrp+FDYE1l/vn4np+FeXZjpTQVgfhE+wKGwoPc/okVoybDmoMtn4Mnri1hVEDrJp3r0SEXKcP2sUaCx6dN6R5hY69qwweo1EWwGA0jAa9ekxDda9134ahI4C4WOklvOwwE+jPoa4LRYiFD63M/GLOqixmchHuKENDy+/ts7zCrytlwtUD7FgnBU2jieCAs3nqjUnp1rSgzflZFb04GFNj2rgJzVGAgK1SLey6zfLKacaphwhSrflBLSQuuAp8a2STLgA8Hp+wbslaabu+9wwgK3qbBjuuIa5QUg2l08dlgnomEtIgO7INq6A0sKubEDkF0Wxy6qpcN1wTgV8Pz3F+/15bN9SYR6Yqe+t+1iSYGjLoI2GQNgG3FELBHjGxr4xxMY8XS1BEtpv8anFKiEeWqQMOFoHVr+99n0qqh1hF3pYhOwNAW8EAWGB30MFven3HZ2d0vITUTApW/ZKlS6Mcd18KjlIvgLSl805nWJoCwhy67HflHLg/DftvDVvbdUYsAa5E9Qn7/RbtqBiNVJ X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:jIjupY0Tuisw/XD6rLjGIG0saEdtNmsFUYa6Z6JkZm9TDupWPyqES/x3IIBvknrtr6XvWxOCP/3A7n4uO4z3DfJvGr1VPhpUN5copVZrD+DtUfoO2vaiPph7+uQ+SLLfIFsU8z6H0M8oRV1MROATAxKxEyW5XQfZ8CsqmYyVEwWaOdgX1XK4MsSmN7+40UBm4TxUM+HY7+bMAH5LlJSX7X6IzrUS0e2ze2UecKeYVioer/MEMQPRBU02yy2m9ASU9Il3K70OB3HHtEnHo/sYEaAF15+iISR24tpK0uAyXCtUuT0rbZK4wnIehJJhILVTMTwKYz5NwRCieIENXNevASfsRKa/KO8En7wAfe4sXpg=; 5:/+sUceYjJhOY9owZwH/M+Q7knvVNrnnEtf7wNWQenMmkWlVDnTv6phnkv6URqDBUQdXCwjYDzMmOFYgUoDlfIT3tEkOR4UBt9N1B0Zrey8hHHTpQKGN7LzVGpjDho++UGFl/drMGOFKC1ASOY66DXT2ZgNUxBt7wKX03eVaeYhg=; 24:ul61RsIEemFu75CyW6CwuPK7343RVtxY1S0PHTk6EVvqSy3CxE8R0daOzgERNtiI9dJlHpxyS979X3kAlkpti1wIjqCY6Jk7mNARMOrQmdc=; 7:oJOCadQyNd4BgWkMJTDpjCkjOEc2i+z92frRQFYWRd1mp8IccsUQOd4Tb8JQxvjU9Iy22n+dUFVHyP01uV3jFr4sdeQS+crlN0WK3axpA61j+dF8PJrnOIuylFlRUrvMZZQnW1uieJHwKkTwCOwCiH24t9R7mvfHXLOnRfDj+yTouJLmDLCIRMuj8fV/dLB0QIk/KjlywNTqFCpp0NYa1JUHzg+cnZnNi4kQRTpaoiZjLA/JA0ahKSgB7s8ajmrI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:45.4891 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f5f0a80e-9f8f-45d6-5fc4-08d557d73026 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 11/32] imx: add i.MX8MQ SoC Revision and is_mx8m helper X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add i.MX8MQ SoC Revision Add is_mx8m helper The 7ULP is a dummy number, so use 0xEx. Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/arch-imx/cpu.h | 6 ++++-- arch/arm/include/asm/mach-imx/sys_proto.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/asm/arch-imx/cpu.h b/arch/arm/include/asm/arch-imx/cpu.h index ec5b419e47..470961c6f7 100644 --- a/arch/arm/include/asm/arch-imx/cpu.h +++ b/arch/arm/include/asm/arch-imx/cpu.h @@ -25,12 +25,14 @@ #define MXC_CPU_MX6QP 0x69 #define MXC_CPU_MX7S 0x71 /* dummy ID */ #define MXC_CPU_MX7D 0x72 -#define MXC_CPU_MX7ULP 0x81 /* Temporally hard code */ +#define MXC_CPU_MX8MQ 0x82 +#define MXC_CPU_MX7ULP 0xE1 /* Temporally hard code */ #define MXC_CPU_VF610 0xF6 /* dummy ID */ #define MXC_SOC_MX6 0x60 #define MXC_SOC_MX7 0x70 -#define MXC_SOC_MX7ULP 0x80 /* dummy */ +#define MXC_SOC_MX8M 0x80 +#define MXC_SOC_MX7ULP 0xE0 /* dummy */ #define CHIP_REV_1_0 0x10 #define CHIP_REV_1_1 0x11 diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h index c53e5400a1..96795e1814 100644 --- a/arch/arm/include/asm/mach-imx/sys_proto.h +++ b/arch/arm/include/asm/mach-imx/sys_proto.h @@ -27,6 +27,7 @@ #define is_mx6() (is_soc_type(MXC_SOC_MX6)) #define is_mx7() (is_soc_type(MXC_SOC_MX7)) +#define is_mx8m() (is_soc_type(MXC_SOC_MX8M)) #define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP)) #define is_mx6dq() (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) From patchwork Wed Jan 10 03:05:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857905 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="nAqGkxpx"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ6d2Kzyz9s7M for ; Wed, 10 Jan 2018 14:21:29 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 98256C220AF; Wed, 10 Jan 2018 03:16:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9F687C220E6; Wed, 10 Jan 2018 03:08:25 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 17D17C220FC; Wed, 10 Jan 2018 03:06:57 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0084.outbound.protection.outlook.com [104.47.1.84]) by lists.denx.de (Postfix) with ESMTPS id A2239C220A1 for ; Wed, 10 Jan 2018 03:06:52 +0000 (UTC) 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=nRYJyTvt0vycbAacuXq59L7cR9uvgr0RTTVg+z2ZJ4s=; b=nAqGkxpxN4zHH8mE6oZAVjn6mJOMEFIWqsTN+KRZq8erVQ5ZsTxPnSuSBbhq5DJBDCjOfSzOPjTZr+Kdd5XzlL0MRjcFyvtAEY2WmowFrl/qJsJVCAksJ3Jkx4/YahZ6GWI7PkXfi6c1FBZs1njVbBHN6NQNO/lF99GmFx+ptqg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:48 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:43 +0800 Message-Id: <20180110030603.27864-13-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 52962139-2c65-4576-33ef-08d557d73216 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:P5LtEieCfMcS1mwhw1MvKMWhXkWXWdlWd+NJ6YXBdcKjm336Tc+gTOHtmgYsxRLWe1QkF2mugC/3SMFHejeb8sp9Y8adZJbpNxALcIscb9s2pfQN5pD4mawhiWVsdL8yzjr9XMxlgnL6IKYGTEv1WsJQx0DAsA+Pk0+P2rwwAnUvEb++InMM2CNKngklm49yRC4g2t5Yt3rYTB0gqbMClP2IAbD2vrd5cNBjI7BymOiESBnQXy/o4+MOAm+mLCwH; 25:mJVaMa0cUN6M1+Dn0GUBRR1joCT1h5H9vLBp7hrTVcpw5GMKXbDk8wFw1drHVs+nCPhRJ1emhnU4XgoYuQDtrcPlDrtkPF8rsSJ5sQSI0fpBAhFcTPpcT22SldmQDZraRDu6S8kPZi3XnvVfbZtjHp9OXhrofapfOUOnrEp+khGmqmgJ0Uo01k/XPK+nZfGNkqUtN15lINCb/kMoUn+HO11EcdI8bZNb81PAPIM7kTIYG/uXDxO6ZkvGDoTtfgmh45pZpqPczYTCSqWyVgI6gK+1bXJ8JMi4ofr5MmNPnnHACOQkAUS/Vgt0/5A/zVENvwO8IIG7uIjl4ebpyXVHyg==; 31:myRIKI/nbmTO4vZ+zLDgRaD9SCWmzJ3TWwC+TC89zFbqCGwBjo5NXNDxmAXYhtIwq6kZdy6U0qYfX1Kjz+cjNaEpjfwgU51OjyzdmsisJdOxztCF/MIht4UqIsQdIFUapfbDmgpEWvFMHaYjsSiHEIrUHPquEBv0HIdg3NdI1SsttrXP1B1512FDQPspqeoEOsTWZiD9Zs2pK+gnsGDYSROmllaOVy0Pd1pT13hHmzg= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:ksonouC/IQAA2UiX/dWWJGr6lpmu9uDuUFB5wOiHly1r1brxWi1uymmpYfj1e213NtWQSZ+S05l4MeWGqBM51QWefBqT6Xg7FFEivJDSzrMdbob6+r5dPvoG65onKBMFNuZi6cl3Ue7Uzbf4k+0UPnTMIJdbfQxCwgWWPbMon1/bOGUlECiEptQm+Ho8mrI4UUBrqhblisYzl6PtpyZTZGUApkCt83Hmpe4ycqCEAN7WG8wo7IrVOP1XlXlBbEBygl1SG7dIGVNIdt4c6EYssESoCd6Z8HzV8prlNdDkp1i/1FlpyD2VinP4jvuEB2ZFFYRaEJ7malMG0AuFOsj5XkuiuKaQYCiS+zbZlkMCZljlOBCNj2qH/B9xYw5UrFFxpU8TpbAZbAdU5aMmqSetjiAXpzbRwJAjd29fr0cItcVO1ByrnskTdMFabQiHKwyV9VczT+jegG8l7VeL2oRSqu2M4kKi8j3JcwmbaIu/wQsjlIJM2j48ZbzS3mphU2f9; 4:qGNhylxFMrEkImhIGt4xER87r/fiMMhanfbAthpU/3EAeMFmaGRjT8pzVmQO5NlznkC9J8cmbbBu39WAfMmbItDnUCd4YKgctHBl7X9rP0/Wi8SRMppird/fyWQJ899U5GS/rhk8m1QlOiQJJOwD/Mb8qjzJ5uLwlRVi4WiMDzYsRJXXkeBEwyMzfO8JP4TS9gBcK8YgerGwo92rGCpGrIVZqjEo9aTw9y7NI286RCGBtvCXst2Wk5F6Aw+W2umH/Db90RrMzwhZa0Qmv5q7Conb/cVjwSdjl4D6Px0Q8iNcOJOI8ans/XDqSRY77vKq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:jtdN2MBPLD0Vt8Kf92oxaADA5SO9Rs0ZkNiiF5/pt?= vEE2+1Pejqb3CHclGUKbx1kGt9OzuubDmuyYhiiYcDpYuiBLaC/C/Qbn2mFoFt3jk5m+kXO/PC1CtitMnSKx1NfPlSwwacAqmjdpp6GxFB+gAAQttQea5evdyTkrq7+hICXZRZnldokc4ze7/Mf7vkxg5MtsaLZoXyBriCZcads2kKp0wdk8bSKg7Kjr4VBt7oeoUC1WjfxW6U3WYAPn+QqchTKyaTHLRynTOCulTF4VBV+dSe6aFKOoDfPuIv8Czn0gbtz+DULkfvhfjYNNYBkV0j2z8JSK8Y0liklPYihPb8JYIN+z8xcwaUyxyEeS+yBp2uszVcvIdg4J1oCYsm3MIIECcws0o2lMDWTKzxuxqhDttKBOJaGBgPbbyD+BR8GhzD+3MGXIVAfjS4kJuEOzisNV6vphkHjObuAFtLmeCKbZigKgKVaFkUwL738tIkVR3qC5dybE5tMTQXRKwoomLuJRmgcJtfIdifUl2+hWG7FSHLqFadB4LpvcT+LCtn5OhXdg+bxuTAuOTP7CPzvkegiwEaoznpiT86GPKoIipkRGUz/8k9ARzO/G+gNKKa32rKHDgShYeRZZH29zq2Mmm2QcSElEKrYNsjKRXpEQdOl2S62QtGBtAC8yM4GZToLQEx7n8NMmIu8AFHqzak4yBNKq9gS+wzQ5dkxvskmNvTt1bm6silqIFU9qdugGTQAwiJbOV2LsSlx3duTfbQdIs4JmxTqUR/N91c4MmsOzHwzxhYXXG4riDaboc972ShKpYUeFgkZI5Ui+idl0rv/3yzvReJXk4dHGX0zt2/zexznbDEWMDFJL9NhIPcmxrmkrhYjCigTeiZcDWV7K0NSQcPmTG5ImYW861RAbxRAe2Spy4grTZ7gTrBVWIWXppFHHs9w+7L8kmZlD6CWFNB8vGuuECMNHi121c1CjOEsiwTVe/8HD3qo7ZU41kvEiiCISGerRMyUq4j2Btej2wSkblFD+hsHo3A/cFKSQEAzBJmy3AqkzD6B20Qt34KKCK7/JUeHwfyyB2Oakvxm2oRf0cXLBkT7P9PUhxukueAlM/0EGCjfbOtBb4IHMlQ8giEF9ZHqCaj/xMuOreA0wZ62 X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:9+ddfd7fESkbUxZHi+33SGjM2Ymr5zqajQShbIvg7527H0dktGaz8hdlLTEGiRJJl2YDwTCadNwqyFKxbyMfw0XLs3wXogLa4vHA02ese0lna5VgWwGOSVdsW76tkPhE3VrhJfWIe+fXmAnc5g7sn9tOojVhakXMWnmaHYnULiQJk3q1U139Tm8oXTOEl1xwZcehFkfNKl6iutvn+Y+jrJICP1XWZIiM/n1ouqR7jSFpz2TRrQnDGUTWsVgPR+ZG0AAgEPqHfj7F9McA8CNYU+9eZkSEUA9C6T51utAWZH9BK48nEKmKlUQrI+aHOkFoIsyK1NKApLm25RddYJ20GASOQ+2ay2BwQF3UGimWQ8Q=; 5:T5e+w1Gb6/w7b/JeOLl+mLwgeaLcvam73m3d763jHqvjoum2fXQiGLZ9SpZESL+MjFa/8GQPIh4yQTOv5R526JParTRVbm755IrLXvlW7TVEveCOcVG/6CgpT6UI3yLERdUrMlSDj3oGvZvffPees3Q31PiXIm4qEiw3S+dOpJw=; 24:U0WUq7ouYCj30i6Kjr+dNot5oP8fbEYnUq/zH2E4O5cMNA1NYJb0swh41zCpsI9efu0iTuo+mnk6MoLuQeoQ9cboTCM8JiNt6pabPs5RZnU=; 7:WSFmX4b2DzboLQrYy7g3kgAb1u734uP2jZxbsnXotaL8J/4kqFrSDkPSs1qASJqA4iZJPnIE9upMKLiKVRkEw0cZHIjPQnVlUouta0A9/hIlKhdm65miNHtMIjtFmnXgVRlioAll6qevH4VRzUbz3c+N++MIlFUC6Jf6F6gzyIYhsWxeSIxr/+EtcpboxuMQkrb1GEd20zgUE1BzgebUcuPNqFREvX+TSlgz/cL8Mk5J+mva2e1Yqa9sYIaEVt+b SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:48.7073 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 52962139-2c65-4576-33ef-08d557d73216 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 12/32] imx: add pad settings bit definition for i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add pad settings bit definition for i.MX8M. Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/mach-imx/iomux-v3.h | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/arch/arm/include/asm/mach-imx/iomux-v3.h b/arch/arm/include/asm/mach-imx/iomux-v3.h index ed75e9cd9a..800d4cfb50 100644 --- a/arch/arm/include/asm/mach-imx/iomux-v3.h +++ b/arch/arm/include/asm/mach-imx/iomux-v3.h @@ -87,7 +87,27 @@ typedef u64 iomux_v3_cfg_t; #define IOMUX_CONFIG_LPSR 0x20 #define MUX_MODE_LPSR ((iomux_v3_cfg_t)IOMUX_CONFIG_LPSR << \ MUX_MODE_SHIFT) -#ifdef CONFIG_MX7 +#ifdef CONFIG_MX8M +#define PAD_CTL_DSE0 (0x0 << 0) +#define PAD_CTL_DSE1 (0x1 << 0) +#define PAD_CTL_DSE2 (0x2 << 0) +#define PAD_CTL_DSE3 (0x3 << 0) +#define PAD_CTL_DSE4 (0x4 << 0) +#define PAD_CTL_DSE5 (0x5 << 0) +#define PAD_CTL_DSE6 (0x6 << 0) +#define PAD_CTL_DSE7 (0x7 << 0) + +#define PAD_CTL_FSEL0 (0x0 << 3) +#define PAD_CTL_FSEL1 (0x1 << 3) +#define PAD_CTL_FSEL2 (0x2 << 3) +#define PAD_CTL_FSEL3 (0x3 << 3) + +#define PAD_CTL_ODE (0x1 << 5) +#define PAD_CTL_PUE (0x1 << 6) +#define PAD_CTL_HYS (0x1 << 7) +#define PAD_CTL_LVTTL (0x1 << 8) + +#elif defined CONFIG_MX7 #define IOMUX_LPSR_SEL_INPUT_OFS 0x70000 From patchwork Wed Jan 10 03:05:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857908 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="I50YUAEw"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ8X5nFjz9s7v for ; Wed, 10 Jan 2018 14:23:08 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 6F160C22089; Wed, 10 Jan 2018 03:15:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D842BC220F3; Wed, 10 Jan 2018 03:07:59 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4BA34C220DC; Wed, 10 Jan 2018 03:07:00 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0056.outbound.protection.outlook.com [104.47.1.56]) by lists.denx.de (Postfix) with ESMTPS id 0A7B3C21FF3 for ; Wed, 10 Jan 2018 03:06:56 +0000 (UTC) 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=8csAUNYkUQnD9Aj64tMNTnbWIbuZnIl22LdWwFhGbSE=; b=I50YUAEwVUeVPlZrWL3k332B2iPc258Ts1pkSeLxZrP+PFXj3f/zR4vNW2UnBHXfQgWmgaPGPSaYZbZ+lSfPhpJqBOtQOTY56xnKS9fKqVkzz6WOrMqFyJNVXUD0H6t0Myw8k07W1sAHaLlMS8ElBBIshwfshYraneYx1fjdrJ8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:52 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:44 +0800 Message-Id: <20180110030603.27864-14-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a07cea0b-4152-4726-1a1b-08d557d73419 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:CDB5BGMWGnMvhA7bQyUajZdFnUmld4v4AqXiVXcrcUb+f8RMuXlmUYOjNUvlSmhhtXCJW7AYofuNTi3h6GjBe7zfLFPL1hh+Im43yEvzT5vWcrjMFM6sXRXfgsngWrBU12XLKqb1yRfF2ktIgq1UVVrsHVvlmS+eY3VTsXnXY/PrIdinLub2fL1qM6tdLPTWlsTEFESOmPewTR0K70xKDqVQXK4v5iJoBEhs7yrufvIEaPMtQZF2eyMis17eQGR9; 25:525dzLsB7yB/84po4TBAbft11AMT2DsudGEYpQd1fL4miYyBJBQckvJ/+4/5AOQmyfvBNRPm2g7CuFMVR6WMsi8C33ljLAnmpzVH6WUVfhzdHm5Rg4FbERSiir3rZlGA4DL7q32K2kH6ZHqEt1b2on5MDXmCiDbxKU4EKV+NoBX9kCgdhNcSMjcFeMDH9dDOX9c4ZXuWOImE97RmoKrveGR6vAoe5xKjjxHyelj2iI4mMqTzNhFpgsaD3pS6FfApWZMkzXo+44H5hZb7KTLR/7BO/5tUeoq7MmUqHUc2gXRVvSVgqE4zz7cnmn1fgVYI5aY64DYiEtGro+dbtyTmEQ==; 31:gQ8oyPJ09JtWIcyaGJCYrenqYFSRWJjtGLg/MJ+IgyhrygOS6dYK5V3CTop+ddj70fVRGwWzp9ldVyhNXS7xGvnpFl2k/R6zZAR6DlZro5mdRP/v9dgznXuyUwSVJ8Qro939AubrvSH2y/3TwIN7H7QcQNnrLEntle32k+/CYWB0p6+Wos4nkSrt89cLMyqRwXrO5mJxofrLm30g0U7LtU3Sy9DvTHvrXBFCSXrKB4M= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:2AXgrfpfoEwBJGJ/351uNhrihRycntcz85DiFblTz/kOV+stapoD9LuKcwB2HwYF7Z7XuH3l09I97tHU7Xwb+HxYr84G6QPcy4w3aVZsLuZDoSaty1RLuAtbE0BKXA4wtZg09TqOSHdHNIkZ37HYzE1edZX2hkIox5zlcvd5yWqoYx8+J7nvrlhQejRbqw1No5VOL2N52M+Gt0Qt7xTK/x7YcNsbST7mo7gIdn//n/e8u8tVDQieFek5+SK2k/bs2UA7r/9LARCWpWIk+odTiDfUSr5ycfblwBsWamEFPAv7Va8aQMT1KLDIDc47erFIzD1bA431lOr2fb2scnHZjVYwNRODileYI/rwg95m/H1/VOh2zx1w3ZOY9M6/lvJaxt4e8OFukDk01bV9FOStUH0J9cmWOb9oFVRAMxV9cqNnsFwRt/XVo+vFUMHj6ahq6mm2/3B9FMM6MbEnGOz/6Dt3mY3ilFEm0sTUTw5g1iSoSJPFlLmJ0GA2rMZl3B2+; 4:zg9pUTW2Xt/xGn3XWgaMyRS9plg2FlkP+zykfhYd0aI6yL39XP6jt3J/q30HlgxmNHGCMGR0flt7c+xKIAsxfYDnml+u8QQq6AaXfl6jYKZd3qLqIebRwnFlO2vBbByeMjTCXNHYjVbyI2ScsZGlO6R7ztE7hBHUFBwakga5yGMUg6WgQNy31j2UeqJyMIILkCTrqMW19NR9hzvQkrxJbv5KGaV8LNNPkQFkhhD+aqYPezTnBIX73jXXuAampamycLfOfP+IQqNAWSPj9FCJIZhxLiFyyfBwHR2xD7u49rLiU45afLTOIhtdc51nMhKm X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:h7cDg0U8x1zdIuADszvmluLUr0fg+1fbrRC2O5HZi?= xuOegRRfm3cn6OSVdrEhU6DaRTuWzMmETZC0PDIaRELRyoN0fMcuJGsPet1zOK/fr6dD8/ZeBpdkUnpBeUhilAEM2TEU2bXtdhPR7PurT8amGbM0PERkLuaSAtusgx10sVcdPktc0kZR0kwfM2u15jCiXHMh/nLQPYSljU7agxvPgU9jblWnMrosOW2yLA3JGdzHqKRsHN12+sMBexUvAukBswWj/rFxaQLM6oxjStgo2Y8MN71H/1anoaAlDBuX2yaRNh9k2qCHJpB9xpv8pcQP7XxCX9NGTrMxGG0RKOqrwUYG/9H2cqe0X0vEnaXX5qw6trc63nzYFyndocjPSqTOkjDXx/febiI+oZnRrAC74K+IVLt5PTGVNgT7gzOIqViFnPDIklzrjqTOW/dZIFA3Ejc4IEuuCagLBUc6QiLpw58ZCWGQfH/w8s2bKQKA+ZjmyoCDnMHSC4msFfiE1p1RL/PC2tJf1TrgzV21TPlREduE6s5BUv0WyPETJEtp+2MM0qpD3xByl3Q8oa9NBjwvv3j0vj8DYrEGxEtRLozG/WywWrqSjDfKmN5ywyd0rPLykmQOyK117ekOwa1cmT/BncItu0DRksTcDMOEV8/b61B7CKq+4KOAAcXtDdESD5NPR/FmVzG9l1a42/P4LzipMMrQV4/OX8GqqPQZnNbChios/PueO9JCNs4N2guLPj2eEy1LTjhbmdnlKfRvaRHGgRf44zr6nkfww2TJOqjmXyAdLXBF3pQj3vgHd0DSL3+/IahSpM9MK9V9Lt7+JnRI5qWOS9ybnbYKMfoC00H0BZ6U3W/UkTDbi0tcrgqXh6pHz2FoJAHHdjnGCNPUjuWDBpFY+wei5ZNaT9DnJw067NnC21oUtBS8kXBn8RxiXdhW/JwRDkZdLVxM2HFCSkjw/jGAaOJqdoL6X55LRCyK4bolEbX+hUhX/jPPfPhcilrtqAwpYjcCKSeyQqSUYFN+fL6l6LxcNpPPz6DGThYq1uR3luBP1CAW6Mv1L+SQWPdMmdZ8UZAJCIzW0Z0DfQI0SmI0hAYnr83w1ijcnhF/a1HrX+4Ow6kvfDrwq3ZOstKidfx0wB/rF00rhLVYj4S X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:38uaJD0RETLOkZplCjfZh/DKScZoEr+fQ+LGiX5ZdHcGZI17KCfqSMFtOkIOnZGGrebReum8rbTkTJN4IsPoCwhjVH4WmtndqZn6BLvM7u8ggrxn5AWCQ55Yea3RMNUED7IQuSnNhrsFAvOiNwWtuk8oVDlAmD6NUJU2W4KIOIxJgRhReHzSQCaxoC5Z3V0QO/6kw5oSvEzlF4cP1ZdGYlET6RXSlwCcXkchQqbsOpUsku2k5/H5v6FmNTJgPKMV0xwkeddAAIWOaaUWRoVJETTH8QlXVWzE1CSXGqC073Ki60OHThiwopvRCSpTWRa03ok8wJ0pqlZoHfOI0fnVp0b++VV1cUx+Ox4CTxOtRHA=; 5:y5umwZ0kVWG/Dbk6dfQw84TH57C+alZtkGDBUTMBlF0ZaPeMk+0E+n/QTb1yrhXH6ys5lqD+fz4bZnRJIvJ3naYnWZlAep9QRurWWincVxL/7vy6Oty97BIkVVPKEs5CHWKOz3Ki5Wms1PxW08YoM3vrej4nDafz1hJufb2R/4M=; 24:dnItScpsBYHIw4pJZuIQoQ0JlZR+fDxkToKyzICTnuroPKyXmvlwKJynOrw8QWtDi8kcUMlmsHAaj2EodXkaMVEp5Kep1iCdKtSv/IVutWs=; 7:rPFqbt+HdtROedCaziM7rQGfO+TBXoOBcepjgd35kU3JC5rpysz3LABJxz1eRvE4qFLmqFv61E48/+HBT6zeOY72FIISDBvHkeG7MpDvfcTCKmBy6PM9x99T6jbq4SFUdE+oCj+zDpqKIqovfeciJJeLBji5Gt8fLSJG+RmsTvgL2CrBYtdFgnKrqQYqNrama5/jIIFyEps3Mw6uVdTvMi28Ampn71BQAJay0XkYyZIRqt+3+nXYaL8zy7LO7GQf SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:52.0349 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a07cea0b-4152-4726-1a1b-08d557d73419 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 13/32] imx: cpu: move speed/temp to common cpu X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The i.MX7 cpu speed/temp code could be reused on i.MX8M, so move them to common cpu code. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/mach-imx/cpu.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ arch/arm/mach-imx/mx7/soc.c | 71 ------------------------------------------- 2 files changed, 73 insertions(+), 71 deletions(-) diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index fae8b0a419..52dbafb50c 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -333,6 +333,79 @@ void set_chipselect_size(int const cs_size) } #endif +#if defined(CONFIG_MX7) +/* + * OCOTP_TESTER3[9:8] (see Fusemap Description Table offset 0x440) + * defines a 2-bit SPEED_GRADING + */ +#define OCOTP_TESTER3_SPEED_SHIFT 8 +#define OCOTP_TESTER3_SPEED_800MHZ 0 +#define OCOTP_TESTER3_SPEED_500MHZ 1 +#define OCOTP_TESTER3_SPEED_1GHZ 2 +#define OCOTP_TESTER3_SPEED_1P2GHZ 3 + +u32 get_cpu_speed_grade_hz(void) +{ + struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; + struct fuse_bank *bank = &ocotp->bank[1]; + struct fuse_bank1_regs *fuse = + (struct fuse_bank1_regs *)bank->fuse_regs; + uint32_t val; + + val = readl(&fuse->tester3); + val >>= OCOTP_TESTER3_SPEED_SHIFT; + val &= 0x3; + + switch(val) { + case OCOTP_TESTER3_SPEED_800MHZ: + return 800000000; + case OCOTP_TESTER3_SPEED_500MHZ: + return 500000000; + case OCOTP_TESTER3_SPEED_1GHZ: + return 1000000000; + case OCOTP_TESTER3_SPEED_1P2GHZ: + return 1200000000; + } + return 0; +} + +/* + * OCOTP_TESTER3[7:6] (see Fusemap Description Table offset 0x440) + * defines a 2-bit SPEED_GRADING + */ +#define OCOTP_TESTER3_TEMP_SHIFT 6 + +u32 get_cpu_temp_grade(int *minc, int *maxc) +{ + struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; + struct fuse_bank *bank = &ocotp->bank[1]; + struct fuse_bank1_regs *fuse = + (struct fuse_bank1_regs *)bank->fuse_regs; + uint32_t val; + + val = readl(&fuse->tester3); + val >>= OCOTP_TESTER3_TEMP_SHIFT; + val &= 0x3; + + if (minc && maxc) { + if (val == TEMP_AUTOMOTIVE) { + *minc = -40; + *maxc = 125; + } else if (val == TEMP_INDUSTRIAL) { + *minc = -40; + *maxc = 105; + } else if (val == TEMP_EXTCOMMERCIAL) { + *minc = -20; + *maxc = 105; + } else { + *minc = 0; + *maxc = 95; + } + } + return val; +} +#endif + #ifdef CONFIG_NXP_BOARD_REVISION int nxp_board_rev(void) { diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index d160e80146..032dfcf2ce 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -97,77 +97,6 @@ struct imx_sec_config_fuse_t const imx_sec_config_fuse = { }; #endif -/* - * OCOTP_TESTER3[9:8] (see Fusemap Description Table offset 0x440) - * defines a 2-bit SPEED_GRADING - */ -#define OCOTP_TESTER3_SPEED_SHIFT 8 -#define OCOTP_TESTER3_SPEED_800MHZ 0 -#define OCOTP_TESTER3_SPEED_500MHZ 1 -#define OCOTP_TESTER3_SPEED_1GHZ 2 -#define OCOTP_TESTER3_SPEED_1P2GHZ 3 - -u32 get_cpu_speed_grade_hz(void) -{ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[1]; - struct fuse_bank1_regs *fuse = - (struct fuse_bank1_regs *)bank->fuse_regs; - uint32_t val; - - val = readl(&fuse->tester3); - val >>= OCOTP_TESTER3_SPEED_SHIFT; - val &= 0x3; - - switch(val) { - case OCOTP_TESTER3_SPEED_800MHZ: - return 800000000; - case OCOTP_TESTER3_SPEED_500MHZ: - return 500000000; - case OCOTP_TESTER3_SPEED_1GHZ: - return 1000000000; - case OCOTP_TESTER3_SPEED_1P2GHZ: - return 1200000000; - } - return 0; -} - -/* - * OCOTP_TESTER3[7:6] (see Fusemap Description Table offset 0x440) - * defines a 2-bit SPEED_GRADING - */ -#define OCOTP_TESTER3_TEMP_SHIFT 6 - -u32 get_cpu_temp_grade(int *minc, int *maxc) -{ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[1]; - struct fuse_bank1_regs *fuse = - (struct fuse_bank1_regs *)bank->fuse_regs; - uint32_t val; - - val = readl(&fuse->tester3); - val >>= OCOTP_TESTER3_TEMP_SHIFT; - val &= 0x3; - - if (minc && maxc) { - if (val == TEMP_AUTOMOTIVE) { - *minc = -40; - *maxc = 125; - } else if (val == TEMP_INDUSTRIAL) { - *minc = -40; - *maxc = 105; - } else if (val == TEMP_EXTCOMMERCIAL) { - *minc = -20; - *maxc = 105; - } else { - *minc = 0; - *maxc = 95; - } - } - return val; -} - static bool is_mx7d(void) { struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; From patchwork Wed Jan 10 03:05:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857914 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="LJGD6Lfy"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZDW57LZz9sBZ for ; Wed, 10 Jan 2018 14:26:35 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 40312C2206E; Wed, 10 Jan 2018 03:17:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id CB8BAC220C9; Wed, 10 Jan 2018 03:08:59 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6E17AC22009; Wed, 10 Jan 2018 03:07:03 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50059.outbound.protection.outlook.com [40.107.5.59]) by lists.denx.de (Postfix) with ESMTPS id 86E51C22094 for ; Wed, 10 Jan 2018 03:06:59 +0000 (UTC) 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=JDlKRkjRYuRWZplWdpk7Cj2KYsTo1QpM4zjXQBF9+88=; b=LJGD6Lfy01kVy0Mqb8IGWYWk+aVxrCGqWY+LO9arum/nv7QSNlrzfrMNLiMllLib7tvXO0SheE/LQ/vSZ+k4GJoZJTTztVWGHas+8uB1IdFVcFOY1XnjympwfPN731rfk2NHE+zzctBevV+L6zt/PJJEPHafH4Pnep23Ls9qQm8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:55 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:45 +0800 Message-Id: <20180110030603.27864-15-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6092c3ac-65bf-4842-4dca-08d557d7362a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:I8LJ/KTEJT8kb0mhM5zuTsp50bID042B0enhDKsGjB1c8LsV3geU1hlYjXBnX/W/o6VZ/e7xPIwalNob/FQ7VeHZ/nMet64d0S/otCkWLNu0lU4IifLMI59RyzPVxFM+FsL9K6kUUVeIaXNQuF3hGoFQh/25LjVUi0KMVTrnEs3+KdFEmRCMnAa/Dr0/GDOqvqesEtNpa0+J27/ILvnITQf+VTMf4DHk2Cl1HBIhMe3dnv8zMhRoPmTHgjWqVf5l; 25:5/t9ThPJg+8I2Cc7YLLbCLE1SlMAv/jIGifsomqa/WATnLt84GX+/CTGysWJl561szK98q3cvhgackiigJjCfvGUKGM+pPqyMtfo9i9ZEAM7I2XwiChhsEaQNCfAkU/Qpiea5pdXpnU6yZcWt5KkrH4CizLYnrBSoCrh5E71XGbb0VtDn8Go9Mlrs2rwRAY/xrrYy88mTCo7eEmQAX3/WUZokMdvT1sOGENesirVlQt5F040P1Py/rzvbcfDnSJgx33J7lufIGTzTx7p67nyMykChacc5SkFtL2vL8w5gG7APy5dyHRO426nYKr6yydWAqoo0BN0ly5+44Z8Y1kZQQ==; 31:Ngjt4o5xCGsDjwX3MBA2DUm9nl/LmdH2GddeGgz1oKQjcAwJhqnMd81DoRulHfDRFEYfd3i6WZajtj/ARCzzcSRZDDVf0bbUsSOxms3lkHxF9ktxa4zcb/eJRuoykrULCsIylC9WkILDriBMLdjIgiaAxXEait59LHubimV0fJyzP/AzbMQKusng/updNGClWck7wiz/2fIRQ1C2jDdF5gh3i8JNWh71Uq+DkdQ0rhg= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:UzS33o0xQvwaetQ83bI99QZVbnmf5FPn41F2YQxhNjU3Ctgp3E+GDc2vsA7oSfAgKW7Fue6Uck4mzXz1O7tXEe+z2zOi7pV0cdCorQuNPzcwibMkOTyi/rMSP3gTHLqOLz9zF9kBwy7QfuKE9wHyPH32U7H6f5BJ9sbcCfBgG554ThMw+/w9dHMPo6WmrWr+iL+fEu6IBbJbeu1NUj9pH7UV3h1lhoTP9y5eWjcV3fZnMyS56FCaXzkv6ntB8s8x3MB9yJHDZvlx36nuon9Rs6G1Kuo9LlZ3pkZS4awS0Gv5GSdMj8C1OvGlXhb7/KEVscVDgwC9//FQ0hhV2HAhH9GYSrFnGjf+BO16zJAApBxLaiIRguzJDnOM4b3I8AhFX9Xhd6toMKBmUV98qwWWR0TZqv6UgRPfP5uDlEx7561XQjLNa36268kjEt/pUOH0/vFW3F1WD8NZ1OTn6veO852LCGaXo4Wgq8rhvSKXN6Sx5qJHGJ7WzJsnbDzZBLPI; 4:SvbXYxYjRNenB0eQ2erkwlqbiLtycLSZsAMp7M96e7NVIzBz3Z53cXXZyLfHRdzmN56RuVt/o5/wsVp3QiVvXaz/zdgQiV6EDJ7esU7zOjnbXxd9AhRDKL+5h+fL93W5TGDoPEslGSNPnYRSLPMEEVcJ6CsIbfGWf17dzkXAYI7jaTYrJzqAql4eEeOaa2lS1r9FQ2nZpYnYcf8R0yWFOMit4LuQzf43HOk10OiOOVsV/bfbEdX8ujZzINLoIE/ohm6O8yzYua/qMc9ksx4p/SAsPDWcD9PD4Obewo0oeos+9LY/UY+mFHrLw+KBm71l X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:Xb8WJTCtvDt90RvIZ9CQ5ucjnQweLZ8WsidMdxizF?= SW0ODBHUFQYB7FJlmmTzJXcB93KpspAbXkqUDi5baEm+fOr8cyTjQZsSExrnTM043YoFecV2qvtOsc46hefqCrmlO9v97K7e9pYvR48JikX58ROqZsr8WcHbo4HjJDpABbyqCXemU+VC9RXUtx/+zJPSnCQHuUTxkOrzhbnuXgC3FlnF3ptpDXqEfwrpUxqIDZ+i4VlLaCZUMzN+louwc+JCrCrnmIcYWcMyC56L97MDp7zvvuxAJ5vdKry+YkU9ncTC+PhIwa+hHZqy5g3BClTaSF3Co08rOFcYvcg7AUY+O2QtgSBnJDKjvvPN1WvKV5UgstmvDOqFDf28wE433WB9M2exGGnFaq4Tpy8L2q7I3aMAIsoKqoJ2oyt61VimZ6wya6IJy59wrmhSHL9bDGnRPpxTIg4SS6665A72sHskJDHeVhG1RS282mO/e9NiRwlfKmdrD8IKRzxFfQGORqUSXwo2VzgITw1qwE4KbK0NAOthb5FWbzxFhWzR9tBgjpGsZTe4bYemT0d6CeeCNvF/Vszzhpm5W+w31VaQUCUzkxZltEUBZCY/tKYYTzq/0Dx9P/FKN18CR/fF3qarB4IUWVDAAJ90505pAGoOe2P0YWw1gY105GaGJTdJeHDXMcJGYELXuk6k/IWvmR8n2RcYI3OsPnNITFO7wVj69yegh6RXc668ghilVR1+5ZTzfhzGyNXJ5krUbyRu3SWGgn0tmefGSq8kctmx5kxjiRNkVQBIuQh3vYmPMz8tZRuVrUbZ6CBuHUFJ2Vm0QP4V+6UgkIwqYxYe8CeqOKsrn2ExeaM9CHwKxPVFMcf1s4ShWRDkROKPtpv2p3RKIwZA+PpZ6BU4V2ZynTwsFnJZxX8C1HWsOmlWxFRQozc6+iKhV99JKqC8ZfRTBlr8lAb0aPN5C2/gAEgVUbxcZd7I/E/4tV+btmRAgdgXKEsnQDd/GpvbQEeqQZ2fZLEPbZe8q+UWspqUdrVXrmF/C1TTp7noF5qAl4nPLdRmCGVzdwM1cofbbj4WGdQ69Ga5MAzW3xS6FFeaN8aqmsPBupYc5AE8Doy9OCZoUfEfhlp8P02P6U= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:kvoY9SHV1nV30T7p45gLbxYhBN+H6vlgmg0CCTEeDFb8kSemali5vZ1QHJQek40/yR+zhsQYzuPMgUEIWt0s6VPJw92eBlnD9jwLzyxkmQgbq1+dh2xObkvn8Y+w3y7QGEVDbgFK0dWH9lV3mprFSx9teqSgK5oLNUVMcDAgAkdi05C4gsVJ2zyEKI10nMMU8cfRUNai55OxWClWZWYo536K3hD+fTcNm/8K//x9BOCxXJe72fnBQahy2hWkHJCWpiih81aAvuNy++lvlXd0CiaqOhb1rjP+pinBnEC5bD4irbnUQusfjBMWKBICH/4HnVH8M/j37MngvPPqv5PFJOarp2Y5nuTitqYau4jmP8M=; 5:cMmmVeibipXQYX9WSxIDAqbTG28yBwrsUmLCnMEBxo6hMrbaWV8MK4l1N7haHzDBfRBKJaq+QcG2th3ZjfE8Dgl+9bV/FywY2Fkqm64phicR8xuZcx/ZEbSjPlrf9nJm7JKKM6ny1WSdKxurvUBbPIRJkxlfRY44mHSXILURTfc=; 24:56RpZRFpf1gc85BDSQpM7gg+9ubpqN82DVydqOeOm2es0i2zynXUbq+zX2OTdK2WQYo0aDSLAdjhdi5bbuPO0blLIwJy9D33xF3zC+qcCig=; 7:6Iyrs60WkGPt9wmJwfW/0og8nIbt0KX3/eHUUScRFwUHAGqyWvqtysYmTo9b1hNo5PNetN3FJX5IoEuiOVeOAH3tJ5a4iZY/7vKqwhaZJCxP+AlPh6wB8Tg4lB5A0vQybiR3lXpaNNpBZWekYaIow7YlwZ4s6SxjGE7iPyRRb1SdjZApI2j7vowC/9YoIWO3oMsUQ7YAV6/YFLiMBE4pzOBcL1+4FQRpHupARvhIiAelUpl9PxqBcqaVnyFDdykD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:55.3781 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6092c3ac-65bf-4842-4dca-08d557d7362a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 14/32] imx: cpu: add cpu speed/grade for i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Use more general enum types for speed grade. Refine get_cpu_speed_grade_hz to support i.MX8M. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/mach-imx/cpu.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index 52dbafb50c..fd6d08c533 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -333,16 +333,18 @@ void set_chipselect_size(int const cs_size) } #endif -#if defined(CONFIG_MX7) +#if defined(CONFIG_MX7) || defined(CONFIG_MX8M) /* * OCOTP_TESTER3[9:8] (see Fusemap Description Table offset 0x440) * defines a 2-bit SPEED_GRADING */ #define OCOTP_TESTER3_SPEED_SHIFT 8 -#define OCOTP_TESTER3_SPEED_800MHZ 0 -#define OCOTP_TESTER3_SPEED_500MHZ 1 -#define OCOTP_TESTER3_SPEED_1GHZ 2 -#define OCOTP_TESTER3_SPEED_1P2GHZ 3 +enum cpu_speed { + OCOTP_TESTER3_SPEED_GRADE0, + OCOTP_TESTER3_SPEED_GRADE1, + OCOTP_TESTER3_SPEED_GRADE2, + OCOTP_TESTER3_SPEED_GRADE3, +}; u32 get_cpu_speed_grade_hz(void) { @@ -357,15 +359,16 @@ u32 get_cpu_speed_grade_hz(void) val &= 0x3; switch(val) { - case OCOTP_TESTER3_SPEED_800MHZ: + case OCOTP_TESTER3_SPEED_GRADE0: return 800000000; - case OCOTP_TESTER3_SPEED_500MHZ: - return 500000000; - case OCOTP_TESTER3_SPEED_1GHZ: - return 1000000000; - case OCOTP_TESTER3_SPEED_1P2GHZ: - return 1200000000; + case OCOTP_TESTER3_SPEED_GRADE1: + return is_mx7() ? 500000000 : 1000000000; + case OCOTP_TESTER3_SPEED_GRADE2: + return is_mx7() ? 1000000000 : 1300000000; + case OCOTP_TESTER3_SPEED_GRADE3: + return is_mx7() ? 1200000000 : 1500000000; } + return 0; } From patchwork Wed Jan 10 03:05:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857901 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="F7p/iiDY"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ2x2LNWz9s7M for ; Wed, 10 Jan 2018 14:18:17 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 0123DC2207A; Wed, 10 Jan 2018 03:14:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id BA4EDC220BD; Wed, 10 Jan 2018 03:07:42 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D6182C220AF; Wed, 10 Jan 2018 03:07:06 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50074.outbound.protection.outlook.com [40.107.5.74]) by lists.denx.de (Postfix) with ESMTPS id EF76AC22009 for ; Wed, 10 Jan 2018 03:07:02 +0000 (UTC) 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=7Zkt7m85wIJHNu4DkCmRisRIUQ+gupc0wHqN9ozc7fw=; b=F7p/iiDYC1wJWOvqsCqor8Jxr2v457swp4VpcGJVez8FadLINu1NdEXeYcPuiKTqjiQC+hA8BdjS3jkDAVNxD/UhMbF6cS7bQiH4TUWWwzNe1PH0ViaQvWMFwNL1bAulCRrDGgGrOgi5Md9iPx4WAh6xYeAAs61D5Rmsaf8zTyo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:58 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:46 +0800 Message-Id: <20180110030603.27864-16-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6eb36065-b2db-404b-e3b2-08d557d7383d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:/DDFbWkyNbDMgJm26PGCB1czG0usiD98UJZn9F++FnqU2W+hHz04wxuSyOT4bHC2xxFZA1uOcf1Ujrb40wwWCUEsRQ0OvOGpCDTnBI1sCjhUmt0M1cO+FmcEJq0u48TISGECT7/7oEooVmGqc43X8MNUMeM0SESoekd02G9n+SKoAY8PSSwZMdkR/1aSfJ/JcG3op7NkV0Nj1e4+qSJU571Cho3qs+heD3jAG1KeBWntKFVlvvIEYaPDj0qKsdVs; 25:/qL0G0381oUs/9ixN7m7u2ucExfPTpsTQLzlKAotCgco168eb0heliVaDcHJyz1SPhnRhHwx7bpSqbGwGPzhNJC9jRaHSWv/3q0J1qUbfPJn4ZtRo0rOBLvlMrYXFhCMKCrvYx196nfynmiI3RjxTe8AwjuIVvUQ/7PsqV7aBpS5rtu1BQQLP7lXFijUy/kwziYI5eG1bMzKUkhJy5L3bAe7cGJarKcyf/cAb05px3h8LUG74Nnj9jI6Gk5SjnP85uldSk5PsVSb/IBlE/+w3Eimqb2aP1a7/+6JYUrvmyxrEhiSYiX22LcMGVA9uYcprtAxFx8cUEj115TfJQENOg==; 31:L7RyJBQm7gJp15urkOwe/gFIgk2XWBmWEaZpOnBwvtJ5ufVu2EjcgvoLdPuSoO+aeAb1clFJ1s5YuTh70cWdryN/v/3pGjy0O/2Z5hLk3y1gHKKwAahD3PvyCiYB761ewmJ3dH3jXYliwXokad/whxK+V8RBQlY7nO7OGcdqWbzm9UTvawrrQK/uxVzis5yrHE79AFzbdaYKNPcQ8hT8eOOkyzRuqsGFKWqIxmUfk2o= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:KFcC9KKeNLX9Ktk9fdF0Foz3TQtwm2KjDir82aAhM9zw5YcETN6OanQ91IumM5p9BsTnegfpKmec1sdTUXpw7Q4c6XrDxz/gelYcgrXQ6G5yJF5vVn9XHRqn0wxxaTvLMw0xabXub9YyOTpGSQd+34bEGHd/zIC31OPcLW57hyZQuekT7tiX/mJw2nMee8l82CqSWR5Sb6JKZVtNSssHY1u4TwlTUCTRB+um9xKUGDd9BqX6vAJFqJVpmJsxqbgbC477fOcJI69Ipauqc9MNnq831+sb0JX6XuL7q2nMpBilFmpGUvblA4TMbyv8m4DrhIhWm5CU43jWA26zh6GjeA8uyRPGv8lhfwBUkK1hKbRsyv9xTvjVRgWWChhtppRftVHNgFYvIFTd/JmAPUkWOjx2vVQB59OAjhO4wS2iVxCWY2FQFCNNNl1nsnBelS4iRwO+83Pi8OwsZO0TUVU+8dZXNE6tMmMCjfSZc/bvI6XQQvEYN0y1iZXp9zy3KxCE; 4:hOnDGgk+CnhPGZwsoyulh7NG73OABuUl1YSCpASfYyHlrPOqC3/i+q/pFty+IxH4shzY2EemriFtN7o5J++h6nM0anXw9HCVazm1CZOcDycWgdKaYW5KXqFn1lzkAU0PGTxAG+bCuEswOxDxe6bIcUvfBg3IIGSwGwMZiBonIhIdDvDHpWyW6FNoNqDfR+C4M+eAPvN9Sc6Fk7TeDN4E6fHf76xL0XDQbzyIGDxKeWZo6z3WXXoEDSUmt/NLI/hN3Q0XgRFuV4xUfuO9AdEkaI72wIbKb5J+27tFm2PVKNH8ZejvPGElvYuFogB4wwU6 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:Xq452cbuSJSm4nFQ0HjyDtleUV02msQLZoAn9JSqa?= 7b5wSDzR9L2WU2MXhfVL2Jp5Apq8strYy8pL5OIEDppBJgOqytwEMhmJ7dk1HZtfLvFvJhlY1eyQq1MWLjrGE2hNFWi0KR76XQ27EVPmQZUjQXqxPot2FFj7v8dSkJ+LcPiAXnwP+hwAMd3ljF24gj9bNLl1/EPHH0zLwv7Ck1bMYq1UeSZzf0doKG6EA3yIb+BONfJNVsxrU696JzMYqAOwZdYl4AdhxU8k9w45yLeaRzESrkQmqB+CdE2llE+XyrhQrBkv1tyIYb6qd6goGTkSk2e1I8s/czwhcu3WDD7kGXlOm/452EdVYe0zZXKxgwFIwlPHFnbKnrNJgGg/4izMaPb7u5MvZUnJnoSoihodcxUl9hhzdNYv7X+0Vw3mMHg9vGwFb/SZ1FVBVjbgD4Qto6UPEJBH3/Mre9ySgZx28lDII8cWyNHFGBONE+qjkSkIGTZk9ugPekleWsA00rf4in/BtUO/75GVI3dGp+FwU70GSorU5eL09gQBqbMMkaPoMji4qsj+aHnWdbvpDsQ7UYHMx6rogOWoCkL0DbhWV8EiGYXeNcVcn6Wr7VhJVtvpQHeDeS/AUPa/smxnjFMEI60952rwT+RMJNVHyxjw2JcKzrEEFjc4usa4Pb2PkM/P4OXzT+SGDVBy1voCN4CNNDox5SjF6cjXVZZFbwkQEebPk7uu6e+Hzp6jbUbIz/ufTSx0qQIg94VUs8FkxkIUx74kkmTSccPRsoL/nhFWG+mHAn/csnVsDjTqDL7EqM//rsCclD437EiqCxHhdIRgN8HUe/GPjQNLVHG5XBmcIeJTmF7mBHVIrcAsoo8OMhP+zmObnmNMhPBBwpepv88njg21BBOkoiL9kKtj87fv7nbhRqBe2L0UQlF8UFhWC4XlDRiXVWTejCpdbVchtWzBheOzyr01tCkbZFXzDKZnbwmiRZpyuYVekq2hsJB8cysa5X86i2BZFDo5IH7jNzv763m6VJ+YR6ALM5USOMYFgFGOo9v5iUUX+SpEJ8FYXMy011GZ1veehcCpGASGzEDQuUXHnBZCMGSQ5wc8QM8XDxlPbPIBmJ012Kvt3dQMh8sFTgENUm/rzkrDk1yfHhgGJMUE2wcvD6nECnYWf5BRg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:qwSkuKvdLpkb8jrflv2YLOVHTDYgNj54I2inyBdYc0/IikDQztxEdW2fxftua1oZTYyJAQes1LmfqFcwgV4/FhXq2JAybxbrgaU+WN9n66yac0bPz3bkJ/hoJZj1q8bEAWMEnadAfarMzt7mJiNj5I9poRaYzdnQozNdsokS0m+NyG9/a6kZTLEkwRtI9mxT8SGtwh/CYm/Sj/epXMH9fr5YwVVDTlIVGxnuz2vch2lahnUNBaq54RXSwd3FBHhNUwLKVkUqvHmBarS9N4blvHhst5yfZL/XvTQurTcD0adLbQRcsZHU+sx9RLghWbY4GkRPEs2bgU8BCbVGiPoJ0nlyTGyQ54b+3FAS9ovr0nI=; 5:l7/d9FB865Y7QYN+cav0OT85GVMdXlwWiU3kjukzOoePKYl8Ystb4CmmG+OrcTf8UU2k2bqmHTBCPiC8uuTgN3lWh2MiW72uED6NSOZEG/FfMSniJooHVQKgmyIkyJ++DUjvvYktyO3YOtt4MR23ec+/s6vkroRjRlIs+436puY=; 24:rXLpFglLjLQEvjAkuZPMesQlSH0W6MwZ74IpYR0hiXUuDpbqZrQnt1DBtYEcOJAou5OpClYx/sy1F1t0O8ak4szYMf4CyRqQWSQX7uhuSlM=; 7:jm2GYSgok72M9M+3PEOo/cBaSk8xrT9b4Kyq6kNkM2AO4HQu8rzeKRfZoJPJlQDlSRu0kiBFePPorIeZHyelxSFBj6k8Yxxq82lVdF4DF2GknyrKnRvR2gNR6p4DTvH7GeA5UG+Tk5rt+fjMSMM34ZcxTxWmbYszdKbC9d/5Y1yjk8zZGspHAPiz3OP1fwnX8z9FbL/Cvmh27oZwgbpPQfnG6Xrpc4YYEcRkmIy6AQoyyKnkbWg7hENNrRBYgTc4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:58.8931 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6eb36065-b2db-404b-e3b2-08d557d7383d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 15/32] imx: refactor imx_get_mac_from_fuse X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move imx_get_mac_from_fuse to a new mac.c for i.MX6/7. Since fuse regs structure are different for i.MX6/7, use mac address offset in code and define a new local struture imx_mac_fuse. Also sort the config order. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/mach-imx/Makefile | 3 ++- arch/arm/mach-imx/mac.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ arch/arm/mach-imx/mx6/soc.c | 34 ------------------------- arch/arm/mach-imx/mx7/soc.c | 32 ------------------------ 4 files changed, 63 insertions(+), 67 deletions(-) create mode 100644 arch/arm/mach-imx/mac.c diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 63db0e15c4..714b858e73 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -25,12 +25,13 @@ obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o endif ifeq ($(SOC),$(filter $(SOC),mx6 mx7)) obj-y += cache.o init.o -obj-$(CONFIG_SATA) += sata.o +obj-$(CONFIG_FEC_MXC) += mac.o obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o obj-$(CONFIG_IMX_RDC) += rdc-sema.o ifneq ($(CONFIG_SPL_BUILD),y) obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o endif +obj-$(CONFIG_SATA) += sata.o obj-$(CONFIG_SECURE_BOOT) += hab.o obj-$(CONFIG_SYSCOUNTER_TIMER) += syscounter.o endif diff --git a/arch/arm/mach-imx/mac.c b/arch/arm/mach-imx/mac.c new file mode 100644 index 0000000000..dd7fd92d31 --- /dev/null +++ b/arch/arm/mach-imx/mac.c @@ -0,0 +1,61 @@ +/* + * Copyright 2017 NXP + * + * Peng Fan + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +struct imx_mac_fuse { + u32 mac_addr0; + u32 rsvd0[3]; + u32 mac_addr1; + u32 rsvd1[3]; + u32 mac_addr2; + u32 rsvd2[7]; +}; + +#define MAC_FUSE_MX6_OFFSET 0x620 +#define MAC_FUSE_MX7_OFFSET 0x640 + +void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) +{ + struct imx_mac_fuse *fuse; + u32 offset; + bool has_second_mac; + + offset = is_mx6() ? MAC_FUSE_MX6_OFFSET : MAC_FUSE_MX7_OFFSET; + fuse = (struct imx_mac_fuse *)(ulong)(OCOTP_BASE_ADDR + offset); + has_second_mac = is_mx7() || is_mx6sx() || is_mx6ul() || is_mx6ull(); + + if (has_second_mac && dev_id == 1) { + u32 value = readl(&fuse->mac_addr2); + + mac[0] = value >> 24; + mac[1] = value >> 16; + mac[2] = value >> 8; + mac[3] = value; + + value = readl(&fuse->mac_addr1); + mac[4] = value >> 24; + mac[5] = value >> 16; + + } else { + u32 value = readl(&fuse->mac_addr1); + + mac[0] = value >> 8; + mac[1] = value; + + value = readl(&fuse->mac_addr0); + mac[2] = value >> 24; + mac[3] = value >> 16; + mac[4] = value >> 8; + mac[5] = value; + } +} diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c index 43cb58106b..b3bee58f10 100644 --- a/arch/arm/mach-imx/mx6/soc.c +++ b/arch/arm/mach-imx/mx6/soc.c @@ -518,40 +518,6 @@ int board_postclk_init(void) return 0; } -#if defined(CONFIG_FEC_MXC) -void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) -{ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[4]; - struct fuse_bank4_regs *fuse = - (struct fuse_bank4_regs *)bank->fuse_regs; - - if ((is_mx6sx() || is_mx6ul() || is_mx6ull()) && dev_id == 1) { - u32 value = readl(&fuse->mac_addr2); - mac[0] = value >> 24 ; - mac[1] = value >> 16 ; - mac[2] = value >> 8 ; - mac[3] = value ; - - value = readl(&fuse->mac_addr1); - mac[4] = value >> 24 ; - mac[5] = value >> 16 ; - - } else { - u32 value = readl(&fuse->mac_addr1); - mac[0] = (value >> 8); - mac[1] = value ; - - value = readl(&fuse->mac_addr0); - mac[2] = value >> 24 ; - mac[3] = value >> 16 ; - mac[4] = value >> 8 ; - mac[5] = value ; - } - -} -#endif - #ifndef CONFIG_SPL_BUILD /* * cfg_val will be used for diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 032dfcf2ce..10dec8bdf4 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -208,38 +208,6 @@ void get_board_serial(struct tag_serialnr *serialnr) } #endif -#if defined(CONFIG_FEC_MXC) -void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) -{ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[9]; - struct fuse_bank9_regs *fuse = - (struct fuse_bank9_regs *)bank->fuse_regs; - - if (0 == dev_id) { - u32 value = readl(&fuse->mac_addr1); - mac[0] = (value >> 8); - mac[1] = value; - - value = readl(&fuse->mac_addr0); - mac[2] = value >> 24; - mac[3] = value >> 16; - mac[4] = value >> 8; - mac[5] = value; - } else { - u32 value = readl(&fuse->mac_addr2); - mac[0] = value >> 24; - mac[1] = value >> 16; - mac[2] = value >> 8; - mac[3] = value; - - value = readl(&fuse->mac_addr1); - mac[4] = value >> 24; - mac[5] = value >> 16; - } -} -#endif - #ifdef CONFIG_IMX_BOOTAUX int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) { From patchwork Wed Jan 10 03:05:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857911 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="T0qVBfwh"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZBQ22CHz9sBZ for ; Wed, 10 Jan 2018 14:24:46 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id CC900C22088; Wed, 10 Jan 2018 03:16:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 37254C220AF; Wed, 10 Jan 2018 03:08:12 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 64B9DC21FF3; Wed, 10 Jan 2018 03:07:10 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50074.outbound.protection.outlook.com [40.107.5.74]) by lists.denx.de (Postfix) with ESMTPS id 707FBC220B1 for ; Wed, 10 Jan 2018 03:07:06 +0000 (UTC) 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=Tt98dH+72Ll3LSEp9yjw2iPM8lymKYiDheEecYyx7p8=; b=T0qVBfwhf7CqIVcHFAEg43L8Iw7cmasVNnfhr+8BGGg2grfS1Q81ODy7tET7oEi03s423NOt+ONn7/+T3ynqKq+7EKkBgJHH9PwPlgCpul+0Ncur78dJ3i+9WN/S7tV29Gytvv83WeoxzaSSgDxitlP59xJzebhVvnGRgfIl2cI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:02 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:47 +0800 Message-Id: <20180110030603.27864-17-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d10fba3f-4710-4792-52e6-08d557d73a4a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:ssLvPWn120LVp7oks3twvEv9zmGgrXI4KdiwkfGa2x5C5mF3Z3d1elwUQUCqSBOq57ak1SmNMkML1YE38ghbAVBCAsRidN2LN2GlMTaqLD0UOmwcV1eMZylBDG4WhoYbZou0YuowJvU9GbF9GXrFmGiJ1BL0CzoZxSBwCvNtAmzsEuUEWkAffQd6S6nF3t+Ez73eucifBR8IDm9RZEBtUam8rDGq+8vBIG4dw5ESvDEOwdYZHH1Uq5U1mDehlSvb; 25:rEGbcRWWcWj7jNHpBptEdrUs7lgr8ZUJC/P0cfmaPnS6y+C6h8lyZ3CkPDKm9NGqBz+j23J7VhUXkm5TOxck6LBJsMxR8m4BFGI2fbHdRmxg7gGT5kPtXsNf2G7bTHOt1LrJ8MOpQgAh1uOk6xf861IJQ/gBQx0DrzZ5iM5/40ngr2hFJSy9pNcfa32n5vkDYRe0k8neEPcTj2CNYUMH34MgdYvoycBbbf2ds8p5Ug6R/2PWEjciZaD7mq+hw4N8U1PKJooQOGQ+BVf1kvpShPTvlYV3WvNuCw5icfzLgpLyeaAIb9OUosVkrfxSzNdcZR1cUjRoYS7wsiZoFmJVYg==; 31:e5FKodS8mwjRIX7q3LX3GRHc6QzCDMQbNpw/xDWO58osM6nQW2/VORh8vMZ2dk4xVptnAbLGq3Rv2Pf5H28RVE5vJWDLZSwUpwfoM+oE85HCPJbhTjw8Qcgj7QfzRdDWK4gkZ5zBa12tfw8hYOrwqvlznH6rFdlIDeJCqv+kmYnMNLU492o66SAXF5zsmiesC2bdY5+AdzQUzalXV/Lwa5aVVTc8I0/BdtlZl1sE/78= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:hZ1drgdJduqr1Jw3z0NdHN5rf5Q+0GtQjVO9t0NF4XvImllLhXKelLNXPsa5JhSZ6uUhVlsde2S6Psou5sESWVv2Jwp56dPCi+8RkT75u4kXqa1fVfP2UYxfEb/qdjYhUG5oN/CxRn9RaefIwdT/Oy+reP1unGL5aOKhkJxHi5T66hqkW0+aodFmK0O49G/YHtVqpqQuNk3HvokW23TfiBthXHVeqKU3bJ1It63CkBX4+kkoFGT5EhmYuNet0fnsTT2tAOTNIsGBBZcb4WOvJhkkpeVTJtrqDYL3PSI1rTp/dDOdk723F0NqFZ3w+wNDAxY/jH6QmlDQAyZHcLAjiU+hR4onDJFvOJrODg6RXFkwdleMs6AxhZ5Rj28fjkE+2fT4hSPpx0Svq4Y+c8OHDX3BABm/LhG5IR2e8kV7w3B8yRkcK7g1Y/9WdPmzXHuLNdayvHth1VWxo24Ek2yDtg1jZ0Oh7h6e3ISbR/doaQ2c+JGryL+jYZQ/4ehzHbeV; 4:qPtBXqITTRlGokIzQe6A/UpSlJneEfbBGpLtsm97pMzvDRhrFqrh0/NyotXoJ0TRVsUFRhIlPyWHy6yyfSpzS1yV2w0WNibN2o/coHQoEEpAkTC2tAWcW4E4++lcmrDpNEkhJfxe1N5Fdy8ndUgB3T8LRLzue9FESuleBwLp6YMEhHtK1/ykako8EHjatu8EfPChOw8XvDZKiXAyPO4GqHW4ONGE/0FXXORz0BdV1STcuP/+tBNq/p7sdqn2UfZkBlHBpoH1ePGZAqWo/zAkn3W4h11Dr/g3xxeAu/ZmTEpuaceEEOtElOYNDmIQMl1p X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:rNi0wH46Im0OY+RnmLucj+HZj1e7Oz/AwRiKP85iH?= FzUPfSRFBMHJrHSIOwYhCxEE9AMQw1f8chFKEdK4NWIIvKvGLI/XQmBGfHvFYMFjo7wVKv0RCZYjtbg/wuskfJdWstjvG8KAPI5kb3+B4+YiMwZFmHtKtqAOioK7JGVIiqrbKMz2s79Mnb9HHAFfO43SEMatXlJ2QQNiHQ/W5oPbJ7kv2ecj+1SJCmWPP0dnp++qbeREgWth/lpmeoF7WZrlQtIwWDZUQ/rDNUZX2KhIsQBtJDZkN4LgtY9BM2ki2tj/M4qkvaebksjWMIELEZuwNhwvWTxJPMO39Tsl34v9DVp7dJgvOg3pFmxm+SDBcDCzVtG72o2AVDB19cHs/UNQ+j9sktA2yTHBMFEO+B6B60tZB8/862hx1BCPqdZqKb4VepzpQTetoLr//+gGdwZOcxZJ1imcri6EMeZgPBqb0oMu5GF7nuhbVe+Gfs+zyM8tboXmzfvtQpL1csHEAbXd9tKxHB/QMHEPPd7OpCEKvPHftZIitG5nL0NCj3GjRW1vxByHRVuvAlswIIHib1UoxowmMdhe35kxlouv9zzEkcRRlkkYG++oVob8s0KpwN3HbtQ2/c8XQj2JJ2ZIIqUO2TiJRY4iuui5Olb6+omiObXVqc/q+WQWHSfPUrwzVoR/TkhnZ7MPjNJ0P5Rp4tRDTGdnK7dQ26bevDyslnpJCbcDeOQGR287xiu0A0RLudnT7ezNxUSpqw2091WZ8qXLgBpMPUjtV7fTYaHKigrgT9iYyMCX2XqocgKrqugZMFx7J0ybfeCQhhC7ElZboOw/Qk7JCqGaq/qIOt3l5ByjcSHx5CE1QxZdFEboeRjyukh7OsiJM9atjyBwcVh4PBHfotTGR0GzdGgkd1PuTrgJEvRjnwmQfSqfEfQYtnSHmdN9ess4V9oXs/nTiNAFs56HIVfypWBAZUDAtRkjidZqDWN5gM/FPsmQNkhV83K0Q33HjWQgk1hijecGqBK4YeD5rWedc56f9wnvzHBd7TsJefxeLbXrAR8pd0Q16/hBVrCaRdCTyFKxVn6QoUZzksOZURh+lhTipJEXo9RTggLQl++oui3PxzooeozRP4Gv4gGiMK2Xgv3IPAK14eN05GPWb2V0ilJrzEwm+DfKaFyzg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:JIyMoKpUQz7pFjK44aVKHQpPxBav+NKd0XAcx/wdfra3M3nHX15Z13fVCbjkO4bIlImb//hx2vVR6YSPdvwcTE7X44KZPEv/dZC8lKbixc/LGeoaFbOQM01TyHLvW6JhWynFspG9vYBmeC3kD/q7HDq3537bvo4rke965roz/xZqGXqhzulOU7v1g5PLh+Hwtr8z1qUY/lnkLLTMqA4pQt+23bW8SMm5GOnGhiucb12hN1wdIQgKyU7aBZQJJPKSQ3WY33MRFzyw5xfKdyitFOkTaManib9IXfZ9MnQxiWA9nQCIgFbDU5yFnhnqkAImDrIRAOlt8WnzzCmTnfcO57bbXXVAM70Az3LNN+PmBCA=; 5:lw435UozoIfwz1465x0DhRewZbrs1/+lcGwBNi9n7DApEEQSIt0ZCUiIBX4McvdeJ4WVarbZsabDiVJjl2U67XkZ3s8bgRKG1c5iujWiCHAWEUD3nWHwOq5PFStOKfzTi5tT4SwDtheSUFDJbIks6b2gPIm60QzG480t/7ykapg=; 24:O/oVNCY7M8gUP2s73wkmrNw6DITnOdDoqYbO3vkBL73VxSaiSJqKOwKt0t0yZQqo+xzlWvpqdd6jllC7syzUk0WRPRNTBGWUSc3On4T8Vsk=; 7:JmPwqlX2K+0qkt0c0SPm8IBNlqRNDtvDzJr1ZCVWWtHA01QKizKSZnFL0KlZZV97gZWBL1h8kKxMWJto3PEuMXzazvaVBCDKBflTFAb4w61F6p75qf/w5z+cpNug43ZUvSMZJcApAneL1tILdhJKO8AYl8NIJRZHzv6hyjrGOoyzX6Nd79NAXrXH5zfOZ4uTb/A+aSEjhVwT97XxN8t71vrJNySTs/OK9o5Gi7G1xjKg08xNo9xXmW8HWpFtnZog SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:02.3144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d10fba3f-4710-4792-52e6-08d557d73a4a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 16/32] imx: cleanup bootaux X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move i.MX6/7 bootaux code to imx_bootaux.c. The i.MX6/7 has different src layout, so define M4 reg offset to ease the cleanup. Redefine the M4 related BIT for share common code. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/include/asm/arch-mx6/imx-regs.h | 9 ++++---- arch/arm/include/asm/arch-mx7/imx-regs.h | 10 +++++---- arch/arm/mach-imx/imx_bootaux.c | 36 +++++++++++++++++++++++------- arch/arm/mach-imx/mx6/soc.c | 38 -------------------------------- arch/arm/mach-imx/mx7/soc.c | 36 ------------------------------ 5 files changed, 39 insertions(+), 90 deletions(-) diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h index 48ce0edd06..8513406a8e 100644 --- a/arch/arm/include/asm/arch-mx6/imx-regs.h +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h @@ -482,10 +482,11 @@ struct src { #define src_base ((struct src *)SRC_BASE_ADDR) -#define SRC_SCR_M4_ENABLE_OFFSET 22 -#define SRC_SCR_M4_ENABLE_MASK (1 << 22) -#define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 4 -#define SRC_SCR_M4C_NON_SCLR_RST_MASK (1 << 4) +#define SRC_M4_REG_OFFSET 0 +#define SRC_M4_ENABLE_OFFSET 22 +#define SRC_M4_ENABLE_MASK BIT(22) +#define SRC_M4C_NON_SCLR_RST_OFFSET 4 +#define SRC_M4C_NON_SCLR_RST_MASK BIT(4) /* GPR1 bitfields */ #define IOMUXC_GPR1_APP_CLK_REQ_N BIT(30) diff --git a/arch/arm/include/asm/arch-mx7/imx-regs.h b/arch/arm/include/asm/arch-mx7/imx-regs.h index f0693f9028..a421b9bc04 100644 --- a/arch/arm/include/asm/arch-mx7/imx-regs.h +++ b/arch/arm/include/asm/arch-mx7/imx-regs.h @@ -264,10 +264,12 @@ struct src { u32 ddrc_rcr; }; -#define SRC_M4RCR_M4C_NON_SCLR_RST_OFFSET 0 -#define SRC_M4RCR_M4C_NON_SCLR_RST_MASK (1 << 0) -#define SRC_M4RCR_ENABLE_M4_OFFSET 3 -#define SRC_M4RCR_ENABLE_M4_MASK (1 << 3) +#define SRC_M4_REG_OFFSET 0xC +#define SRC_M4C_NON_SCLR_RST_OFFSET 0 +#define SRC_M4C_NON_SCLR_RST_MASK BIT(0) +#define SRC_M4_ENABLE_OFFSET 3 +#define SRC_M4_ENABLE_MASK BIT(3) + #define SRC_DDRC_RCR_DDRC_CORE_RST_OFFSET 1 #define SRC_DDRC_RCR_DDRC_CORE_RST_MASK (1 << 1) diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c index b62dfbf6bf..02728514b7 100644 --- a/arch/arm/mach-imx/imx_bootaux.c +++ b/arch/arm/mach-imx/imx_bootaux.c @@ -5,21 +5,41 @@ */ #include +#include #include #include -/* Allow for arch specific config before we boot */ -int __weak arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) +int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data) { - /* please define platform specific arch_auxiliary_core_up() */ - return CMD_RET_FAILURE; + ulong stack, pc; + + if (!boot_private_data) + return -EINVAL; + + stack = *(ulong *)boot_private_data; + pc = *(ulong *)(boot_private_data + 4); + + /* Set the stack and pc to M4 bootROM */ + writel(stack, M4_BOOTROM_BASE_ADDR); + writel(pc, M4_BOOTROM_BASE_ADDR + 4); + + /* Enable M4 */ + clrsetbits_le32(SRC_BASE_ADDR + SRC_M4_REG_OFFSET, + SRC_M4C_NON_SCLR_RST_MASK, SRC_M4_ENABLE_MASK); + + return 0; } -/* Allow for arch specific config before we boot */ -int __weak arch_auxiliary_core_check_up(u32 core_id) +int arch_auxiliary_core_check_up(u32 core_id) { - /* please define platform specific arch_auxiliary_core_check_up() */ - return 0; + unsigned int val; + + val = readl(SRC_BASE_ADDR + SRC_M4_REG_OFFSET); + + if (val & SRC_M4C_NON_SCLR_RST_MASK) + return 0; /* assert in reset */ + + return 1; } /* diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c index b3bee58f10..9b3d8f69b2 100644 --- a/arch/arm/mach-imx/mx6/soc.c +++ b/arch/arm/mach-imx/mx6/soc.c @@ -666,41 +666,3 @@ void gpr_init(void) writel(0x007F007F, &iomux->gpr[7]); } } - -#ifdef CONFIG_IMX_BOOTAUX -int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) -{ - struct src *src_reg; - u32 stack, pc; - - if (!boot_private_data) - return -EINVAL; - - stack = *(u32 *)boot_private_data; - pc = *(u32 *)(boot_private_data + 4); - - /* Set the stack and pc to M4 bootROM */ - writel(stack, M4_BOOTROM_BASE_ADDR); - writel(pc, M4_BOOTROM_BASE_ADDR + 4); - - /* Enable M4 */ - src_reg = (struct src *)SRC_BASE_ADDR; - clrsetbits_le32(&src_reg->scr, SRC_SCR_M4C_NON_SCLR_RST_MASK, - SRC_SCR_M4_ENABLE_MASK); - - return 0; -} - -int arch_auxiliary_core_check_up(u32 core_id) -{ - struct src *src_reg = (struct src *)SRC_BASE_ADDR; - unsigned val; - - val = readl(&src_reg->scr); - - if (val & SRC_SCR_M4C_NON_SCLR_RST_MASK) - return 0; /* assert in reset */ - - return 1; -} -#endif diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 10dec8bdf4..72dbd625c9 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -208,42 +208,6 @@ void get_board_serial(struct tag_serialnr *serialnr) } #endif -#ifdef CONFIG_IMX_BOOTAUX -int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) -{ - u32 stack, pc; - struct src *src_reg = (struct src *)SRC_BASE_ADDR; - - if (!boot_private_data) - return 1; - - stack = *(u32 *)boot_private_data; - pc = *(u32 *)(boot_private_data + 4); - - /* Set the stack and pc to M4 bootROM */ - writel(stack, M4_BOOTROM_BASE_ADDR); - writel(pc, M4_BOOTROM_BASE_ADDR + 4); - - /* Enable M4 */ - clrsetbits_le32(&src_reg->m4rcr, SRC_M4RCR_M4C_NON_SCLR_RST_MASK, - SRC_M4RCR_ENABLE_M4_MASK); - - return 0; -} - -int arch_auxiliary_core_check_up(u32 core_id) -{ - uint32_t val; - struct src *src_reg = (struct src *)SRC_BASE_ADDR; - - val = readl(&src_reg->m4rcr); - if (val & 0x00000001) - return 0; /* assert in reset */ - - return 1; -} -#endif - void set_wdog_reset(struct wdog_regs *wdog) { u32 reg = readw(&wdog->wcr); From patchwork Wed Jan 10 03:05:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857907 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="VwDhpYw7"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ8G2dKfz9s7v for ; Wed, 10 Jan 2018 14:22:54 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id CD335C220C2; Wed, 10 Jan 2018 03:17:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A689DC22109; Wed, 10 Jan 2018 03:08:29 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E2042C22107; Wed, 10 Jan 2018 03:07:13 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50042.outbound.protection.outlook.com [40.107.5.42]) by lists.denx.de (Postfix) with ESMTPS id 146BAC22089 for ; Wed, 10 Jan 2018 03:07:10 +0000 (UTC) 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=GY9mmjsJZ3PT3YGwZuX6Rx9i3cMVqdxyr+LJL8u74c0=; b=VwDhpYw7lV2L9Nf7IpusQ64tPhuX9vllv5x4mSpRcVkb85GioX4gqHpe8yN0UXuLJEJ45iNIkYzpZRpfMabgc4J9ocRaGvU9Z+cw9/F9bDIbo/WTthiWEhDTdbxOvnt9i2eX3hUG03AfZOvMcORVLswoTMiAkLWrzIa9uyAjdu0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:05 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:48 +0800 Message-Id: <20180110030603.27864-18-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8f705ed3-28bf-4deb-9b54-08d557d73c4f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:vby8bSJ3SZyJoZml6t2UHTb3UrzYvRDxhzhNaqjJc6WhKjg0/SD+tyVZiEqIc06g/9lGVC3NgHcW4xe04E+MU/QCatzA1ZYVSK3C9OlRInGJAUrs9tpr0SCjB7VSS/pEiRT+gX4pxdyixt5thLr8XjU1prseTQBELmjkvv1dmi5s/hLhrlrn2RdzKUJbajUwyXDt1ir1HDmj72udA14TZyMx6LGq/7d6/b1g2+Vwp7CYEgu+6uCf7ATaulPtJsP/; 25:9KnIvEUNG6TUqHHbFDM0NJFLo7EI9wdtjoPwfMByGZMeRRtVtgYsDNN4iT9M6e6vqn6sxhNyS4l0GFn6+W88AV2k88DcM6QUG8vOvMQHv9k6Ee+LdvgbCvSj0Mb/CHRY2Hg7NnfBegHixnCHnWKvK1IbEh7TmApVHoenWPVUzPJtVt6wcNNR2E5jKLHsv10Mo1pYsGf4M5jDIGeC1HIps+sXUBT0UYBIpZS/CcELq9I1iGKS15TzvGedNipRN0W5HhLeqQGHoiTD9Kcp0e438bLRatZ9y3QZIgqTaGR+0Ftocci9a3SpsNHkBO5GPwnt+YChRQL8fXXNPudocr3cBw==; 31:z258W2/kbtuYQ9oZfUUX12P9wSsLAv/NaOAoZqLxwab2DwjqK8I/sbA5GBR6htGK3mzlauTNq1yoy2zLDsjBBWwxZ0nFr3nLclrL1mq4c+o3O/EUl0+LBm01Cg1GT+o2T8toX5YjlDgboOiWLrGeOaPXtbODG1xP3cUGJ1dyVdptsSISudXEeBsPlC7Fl8O7lIEy3tsGCfjhGooRfFKtKgfRFYCY87yxwqUJ5ykgO7o= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:C3+xyzb/iLZTL4fVVjRtBu5PUXQ3+B7uCuXx63KRuzI16dcZQ6LRE9e7WEsT0kWJceBimwPWTXnMJVmJbKoMghop/5OvFeLMkw/LSLmqvNmRZXSmwtXcrehyaaqbPpzKp8DSpp6TQ5fiOCv7CptP4dKwMenWWZoCvsi8inxhQJBQjn4vrRER6lJPh1h0Ypbah7XzBWo7+9gFATpeSZlS18SCuEqDCzpqzZrkTWK2flYiCbxTaF9zviEN0s6jvaSD+qzJIiKDkbpv3KYUOmRn+jR7MIUELF5TxwWWrjl8eI6snjGRLqB/QlsCXfDlbUA96fGCiKj9hTt+R7DERyJ/PR5cFV+s0CTZE81NI6mTCNRPymOEttHZTzwqxN75p+kNE2gmiU/EtKBG4mLn1m1W0IJLoeWHvYtjclmYOwmpDD0X0/BCaXLLo+/aUQ2xjSlmgO1c2NBe5FRsVkhTSOyqmfD7bJLuv/bB7W3uwtKgRJhURPBajlF0Ea2tHQvC2B0k; 4:6ctQ9y5pAfkA/2F1rRdMczNb8G2AQhClDId7dDkqJOIyRcVJGc26DAbBxWw0bRPne9KmTQmVUbPWtrjkfXLbahCcd213QdXWXHS6GBOXirgV8zWgkfQnLPE13ogcIlER/NR2WYXNdAVK3N3RahZicSZGkYU7Ohm+lRR9xedtDt0fMPS0kc9FQuvslJMnklTMuiGzAlKRwQC2DlPoqnZyXFgb+iFMY09mPuU5x4c3cv4QPw63qTcOgbvhLdt3RfWozYCM3dAdTYrcUfnwWFT+sP+AuPFXzg0zjsh8SAMO+6JFN5tRN3m6mkMt8E5xKK1V X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:IAdFVCCvbrgpOR6ueHm/x49VR27ILj7yTFXDpLKl4?= 6/MDB9vJqEQn9EireAVnvfGqKxnZP7IttbrvDVwbldkj1+Q+MXFr6VueAeELjFi6gobPUR4fA08fJzeUJg0191fpJ4dVmvIdtqyInIzGVeboF3r+cbBQMaIAiMImlAi0opNo/pDfXlkx0Zp7HVilkm5NCrAriXrsE29dioeH3DEWuvFi+jTIKvQ/58zG1bR7T48ntdLvcosk9omX0TjX08jkL49USIl9L4kgMcFtDyOS1uswHd66wXESqTEzvE3IcQXbYnv9O0lDqJWDwafu3LdzsCfizBksCuC+6j7Bga2IdqLDbo2BwxcNyIGqS9K+3TRHo1Tasn+WBZ1lS6JO1tJaEik7pAFFZwJCCofMR5B93b42MRsNEqH1WE+rSboqZGEqMezt2h2/fd+gpMJY9Cx/evooPwxMbWpbUQ9CjpU2aOZQ9QzJkNZCZKJ94j7kozIx+q9PT3S72buM+b2zCDjPt8kUn5dVEPQhRgc/unVrEwTqaU/+Gme7whr5t+xA0PWwGpoG7td1TaumZ1/jL0fLBrvAm6t+XgiVbZI5CMTdXvsTJgO9vIlHHyW/TBo0rLEfeu5UBKkZa1QCBjtdCy/10a0DWg/BR50mymjiZsgseOw4N2yRfXGouA4NyfkuW1ZoXn1z7C1Z7aQb5C8bPw8NEhLG/qy5tarEUDzPcG1UC7M5gn+A+MkQn5jyiqiXBOjKcrnRRq4P60KL2ijb24ayRTjuJzEkM9k8HS3oxzq1axgxbIUETKSfcIZtQWFObRbSVudFNG5PTR6LIzCyxixqdJpyEPMyTw3uwDgMBHb7DHhIMxaCM+lYPRW1xLsmSFFXsruGU2zjIzC0Q6uxFls6FwagkUSsosV5WyDCa5ekA4CeYP1rLqjekr9pPzGIZrib7xsQ3AzoZlEvid69QcQJzpFRmiW2jGUEtXdulHmSher7pktgfdN3y0KGpiuravVfdJNuVQpngvSTZIhAnRGw3432gBG9SWmZFpEX7NuzcdgHOP5GsDncgs8MNMl0rtdrCiSaWgNsHv25V/Z9WSV9A/D8yHSLZKWOO1bQhhl1NglbhCDGYZO5MYsf38zQ0U= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:Bxvd09E0Yms4yGc30TdwR5EJINpvuNBS1MBY92bvJoB9Bw8N9T2HEYiJBGtdP/LabqrH8XnDw8kU+huAfwsNLo/w3nGyVyj8B1nGgawylTAiYMNi3jw7uyYtfXr65ndbbB5UV0Q1OBZMQ+MbVvxXAaeyz8bSfrRiIvFlgHsCSBfw4bO4wP5Fn6oTeMl6kVl/fusn7DKg73f3hIIMOifge+c3kcGAf/5j8Gs1s3BHsgYjpl1Qdc19kAUmdEQUBEXhwiz4uiFFO47IB1dUo771IeRdLM8IfvoIzzZMl6qocsjsuiGeM8sEcPcAAm2xVulxm2n5d2arc580G+882YV20eDJCNUQV3uU3n8tAaeSGc4=; 5:hXCSdaKKdDl71iYjEKthxGTb6K1xBJy2WHjFirUkm+P6Jtbz0zjR8I9M5PjM4Ce9JByF/ovTd3jbxBAgCNwN8UBzcqf8mRbIqJJOZj7FK1KqC7/cmU2k+AmtNnWVB3sJwAU/gNUlIkCExzgIRvMIpqrtAaot+mJTOpF4arj0qV8=; 24:xsX9ktP1wUjMr0g+Ktqr2C5buNXxnz5ifXbH2lLzqn3bDKVbuYZE3pcwEFe1fsIYDt9lYJk3n81xxH71xB+DKUXQ/xtdiw9/oooXWqcsh7M=; 7:YvgQqZZzduuB7HVApVqvRauZlU0pCDlcNdPdupGrUCTGJXwzLunJHHQDNBnqzLM84JY0jXXBXWdNJsht6xvuKDG3Riaqg+nbG2GHEmP57QfvKGaDu/V1au3GPGypYTQN6EMhddgkY5bDHLTDreccO17PAxmJzSjEY88D6TdinH8h0PUgbaiP5yMAz7dxCcGRcU/TWuWDlsQOAaKWZWTc6t2vb9BUEs+CagkvHOGuZMJCInD/PRWiIpIBukRpUCt0 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:05.7826 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f705ed3-28bf-4deb-9b54-08d557d73c4f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 17/32] imx: bootaux: support i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add i.MX8M support. Because i.MX8M use SiP call trap to Arm Trusted Firmware to handle M4, so use #ifdef to avoid build error on i.MX6/7. Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx_bootaux.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c index 02728514b7..6256b3a778 100644 --- a/arch/arm/mach-imx/imx_bootaux.c +++ b/arch/arm/mach-imx/imx_bootaux.c @@ -6,7 +6,9 @@ #include #include +#include #include +#include #include int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data) @@ -24,14 +26,21 @@ int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data) writel(pc, M4_BOOTROM_BASE_ADDR + 4); /* Enable M4 */ +#ifdef CONFIG_MX8M + call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0); +#else clrsetbits_le32(SRC_BASE_ADDR + SRC_M4_REG_OFFSET, SRC_M4C_NON_SCLR_RST_MASK, SRC_M4_ENABLE_MASK); +#endif return 0; } int arch_auxiliary_core_check_up(u32 core_id) { +#ifdef CONFIG_MX8M + return call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_STARTED, 0, 0); +#else unsigned int val; val = readl(SRC_BASE_ADDR + SRC_M4_REG_OFFSET); @@ -40,6 +49,7 @@ int arch_auxiliary_core_check_up(u32 core_id) return 0; /* assert in reset */ return 1; +#endif } /* From patchwork Wed Jan 10 03:05:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857909 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="tGv2iuad"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ8z38p9z9s7v for ; Wed, 10 Jan 2018 14:23:31 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 22DFEC22096; Wed, 10 Jan 2018 03:15:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 29C90C22044; Wed, 10 Jan 2018 03:07:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 88366C22089; Wed, 10 Jan 2018 03:07:16 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0070.outbound.protection.outlook.com [104.47.1.70]) by lists.denx.de (Postfix) with ESMTPS id 18DD2C220A1 for ; Wed, 10 Jan 2018 03:07:13 +0000 (UTC) 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=fr8rAqBRwTViXudIpMP8XJn9bA5lCPNeGRj333CwyZU=; b=tGv2iuadQGcZKafs2EoQKQ9oKj/DyT3PqNxNySHmq/rlC95W505LsbIJGbnoAQzRcSYCkF7xidhv+lyKhxaBo23m9idF5rleXLFTXbIhql407srlGu8OrblPKvrJEEWrISaYRJaa0ONhdc3rj5iIYQ0KyLbjhDddISy6pxX7PGw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:09 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:49 +0800 Message-Id: <20180110030603.27864-19-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c09a0d3e-7012-4b88-9640-08d557d73e46 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:xa0Gy90LTmih1coxUfMhENNhsSLe2gqs6CY7wb9C+L5SUBHf2v5r+Zn2NEYDig3QFZfmzpCQ4NYt4F6LodZoyTdN3JQ0SQdDSDLlO8KII5gM5bXbG1pNZl3ts8ilCOBWpF7T6hEWdOUzipGbb55f5hT8B9T1G9yvpl3BQkFb29Cxaul9b4hl0nDa+qsTN1NGkISCiaDpGkUXOJhMI2zOPkAl2M88BeVZyoodoZ5D+poXyZ2ys5ENz4Qv/VZ/+1J1; 25:rVQdxu0z2wTUAV/M/vLCjia8KC9fnCQy9p7Fa5cjnqXFQpT+dr8IGTjihhciDBH1/hWnUHRSrW4hVg8wFg/u/IyVXAShBM3ICH8khimPQjPnDoXyUjXBXq25XjQrFPXx1dtJGWaKe/TQ3rLZWg8gvVKxLtdb91OPuAu5CbVd95Kt+K1vDux0rFkB/hgTldcG4ZirfRg8/MZXdFy+Q5tSGoVx+9agHLu3wrmKRcfU+Kj6hFz24hQQrWLSZmKePzqzSfahN4MYf5ztXXewncFlT8uQjYK36Wi2SToZG9uzKPhVDvzANnN7CRl9vMyxEeTS8BHk5T4QWIWSNSLf9iouhg==; 31:b58srUUtOg+NIgn2leo60kIU782ulz9yMmdd+Wwe9IX1XDBhF+b9VBwA1YPd3ruIq8JlRo/P+3TIjxl4amKcW+BlXhATy6ys7KPlxSdjoWcK+s+GPaRgUiKvdEywwRGNgV6aWsCsn+dH250TQVu/3GQhu9zzGQdPsKbYqjMBY6cn9ylF2hzUTsQhWx+9AAhNQr0pyYp3TKdMfYsN3kgk0XKF9FsLLZOazcQ1r5Jqg4g= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:mOsCJGfmm1/u7dXv6SBDbXuB6JLGDo6ZwF/o60kJmCrO1ryb33l/3NjNm2DpEYn+A/gs5kpyfRuedZKH5d1d/uZc5HfKYSbA3pPTPdQPnk4veRdy935cEzgBnanHUSwKq86PSK4+SGemlASxoeBe6ZxU9oKaACipmeSMSPjW4Y2TIkSmBW9+/3NGNqUOwQj8FuikRCUIHiTAcyYgmarG2sfrrg2D8ZVj0a5WxBQuV5PabW1MqOGoKQ2fPMFeZo665Ettf56+PQdy8b+S8/5W6fF/ZgZUxAcF4F457+0a8C3F3xhBNsKU81KehwrytWN7m8Lum8wo/ZFXgqowlSWtyqN1VAjikl1qeUdNLWrJZ7AfSTJJ41/n4e54M9QluP9LDdiuioTy2pE4OWkegHfjcRy0KWcZbTeuFHjv+Xrfx6PjVaWIxEKUm6CTF6UO8Fz3gGpINep6bmrs5dYA3GRf/B79OQ/tnghHIqkC6In5i7qD1YkfCLCuC/jK2J8G58JX; 4:hbcH7V2z3OOaZZgT+ePjXoL1Lt8Fk5EZru6EF4szIcvO8MY1R/lHzaX1thtikdy3CT1gTtfldKC4DKw2st26NIirYJnQIPWvcfU+jIa1SXkmkL049kd+2TVQ0JMc9lH/Q+3yq9tiFQRUT2XVanKDkAVPGQOxWTvViJIaGxpNllcWpyyQCYA6zo4hCLubCKrgQCpuesFj96oEgzqgdiR0koiVkoJdKJpy319C1Pv0XCernXmsl4zx6kMnRI6sMbCYZC9UFMjcgCuwW2hHTuxQvmKBRGzo3STg6ISxQu8caLlbyEeYRW+ZN0MUO7P6hdCF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:aDwzzEGiwbIcsrqOZjncU1biVjD6Ng9fsulvaa2Gc?= zQOVLu0vmk/j0ULIvUGCEPt0PA28EeJvE2B6IIEbbHWmCjmomuHPy8wABSp5PLgNUJky4fPdxxvm6IPo+J0ZBGZa0PQxYT0i0SAH8tk7WAilHzeBXElLqONF6oiW+7InVuZjMVMmmBFLVsN5O5z333x9RDiJbGsmGUvg9JB8WTrQDPIkYwLsqKHYnkTchW5/j0IQCgvHpk1PzOkyy6p1DK3vGXBYBGKK33AIMO4ao1q8yj2QPb4NDHG/fLuG3p8V3iUq2oZVz0YdJ6wLiAH+kCxgKzjZ6wxyg78by6iPoIqb2/LYwAGIhHsxUeo9+AWLrLsrKf9lnK+jqs1675RNQqKWZd4XQoluYsxXQRwWDUkVFLp7p3kVM/UqDoGLiX3Ae/YiUVY5rwA4/H4Yj9ZRHxv5eItI0LZtdOOmTN342L2jKeeFU/Kz7IsqLBlxl+ChSTlHheMtGEqi263vTOsOpztj2SJo137mNXtcuHRpdVcGFFXTFYyNq0CEE6ZyPqKDSnBfvCiJ8yVc+Be+Wd1KTrvshXF0TaN9Rcp+BexDrN1NKgFEYGjCt+pUl52P/F3rfilAbCXr7Kitamwu//DC+ySkY8Zp8MZTH58inNR2Tonc0Ntq3USnR9HJ7ENbKdioKwi+MKCu7k2yYIy7U+Pwkg2JiyelsZgLVPgUPst5MemTW0duMRSBZ63mbGd9l0PUYKZbw2cnAFomu3YVZ3ob/JjCBFehmXI+WsMU5O86FMO0CZdxBM2KmwB5ggZcoMOo6VGba1HDcMk1ENtxfu+XrhPPuJ92iIw5QDbdsXHuXGFzKxjAkE94Qcww2A/fW0p4EboTaX1MOLS5CHRvcHxElGAHEEomwVxAXdp6JCmUXj/K4hetcEJRmI4igFHltMeYOzPHzzWDnSq4D5oBH2sbxWVPcUsd1LHF4JnD9LsHE4PaEsCCAlwfNoD6v/PvD6lRBSBAOuGJdPmxJO/9KMVlhThrTvCzK8z8I24Cx1Vil5/qcC1Bl0AbwhRk1ZD+KgduN3S+BiGCPhwSIf+2LL0swsXzRU/EWhfu852a/owbWd2WYaowOsP65nqDHcxUsOlBEelVoIA5wZHQB/cy6Mw/xCs X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:YMCAN5dMxvTw5qcc/nBexs8rkkQEJvZn02LsY41/EdYznTvNpFKfdgzgtu0zsDvt6Z9fElUj9xI5Ldo5KKsbPWUMA6mFiDj9ENZYFbPnW3Tv5cG6iSpIiXe5WPKxeNY6Jw0KHkQd6KkixfULafct6npw7Nezuw6D0aVC3VTuK9SdDRgGW7W9yRLZ/EfYvhqs0oJ3Xy1yGN2TfifTYUtJ0zA9lTGEF/xdLetbKC2JC/WDTzVU4UtN+8hNDGlHxDcbFMG9cQjF/TJm6rJqDCtFZegMvYXdQ3j/Fc02J33lF/9CusAC6qYOBWK9nQrMJWt82NFVFJ5t5omeD5VIg2J0gWbF4MycFKT+0bat6C7//UY=; 5:FQbitbEzNyy28+G7PceWUTS92JaDhfvyWWddDYXK2s1whXY1pTo7BLn6l8fq7+h+0Oosn5o+LCSV9ZeC1EBhZJBgByR2shsjOXnIT73mFzZS933TbrESHvWBn4lgDhRdoHuOyPDw0/tNk51hLUUfdw0UChPBMWWCuI7IOvTCdd8=; 24:aVgA1i2n8IeVvkQvPottJgT6Y1hXwMGnrxzRqIEM3JsS4DCarPUDQAHtIwxapK4kPWypoMYV13O9t5jbHL3wDacEO7m6+NZb9Qi4dhv/H9w=; 7:fv5L0cAeM2U+I1PGUSslfB7GmXW5SiNnIHRFfYvGbrRVuCszuL9ycvb+663uYuhnWqAfbTJj8aESXkVszTA3lxsafPSwVSJ3FRO2E7DQ5//3RmSob2+23vVc5B7QMB0VrwFxm485JcnnZWE1pzfVDIvPtJseKfmNpSTHJZnCFXwlnDcWcE3rGEO+MCe9WFllExnMqYdvj4ekA5mDV6TCdFEMPB9Orz1WVvfsF0THH18PHWzJi+vZcyamNjYWr6xD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:09.1414 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c09a0d3e-7012-4b88-9640-08d557d73e46 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 18/32] imx: mx7: move get_boot_device to cpu.c X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move get_boot_device to cpu.c to prepare adding i.MX8M support, because i.MX8M share same code with i.MX7. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/include/asm/arch-mx7/imx-regs.h | 8 ------- arch/arm/include/asm/mach-imx/boot_mode.h | 9 ++++++++ arch/arm/mach-imx/cpu.c | 38 +++++++++++++++++++++++++++++++ arch/arm/mach-imx/mx7/soc.c | 35 ---------------------------- 4 files changed, 47 insertions(+), 43 deletions(-) diff --git a/arch/arm/include/asm/arch-mx7/imx-regs.h b/arch/arm/include/asm/arch-mx7/imx-regs.h index a421b9bc04..3726f02af5 100644 --- a/arch/arm/include/asm/arch-mx7/imx-regs.h +++ b/arch/arm/include/asm/arch-mx7/imx-regs.h @@ -1210,14 +1210,6 @@ extern void pcie_power_off(void); readl(USBOTG2_IPS_BASE_ADDR + 0x158)) #define disconnect_from_pc(void) writel(0x0, USBOTG1_IPS_BASE_ADDR + 0x140) -/* Boot device type */ -#define BOOT_TYPE_SD 0x1 -#define BOOT_TYPE_MMC 0x2 -#define BOOT_TYPE_NAND 0x3 -#define BOOT_TYPE_QSPI 0x4 -#define BOOT_TYPE_WEIM 0x5 -#define BOOT_TYPE_SPINOR 0x6 - struct bootrom_sw_info { u8 reserved_1; u8 boot_dev_instance; diff --git a/arch/arm/include/asm/mach-imx/boot_mode.h b/arch/arm/include/asm/mach-imx/boot_mode.h index e3ed046b25..300868a45e 100644 --- a/arch/arm/include/asm/mach-imx/boot_mode.h +++ b/arch/arm/include/asm/mach-imx/boot_mode.h @@ -31,6 +31,15 @@ enum boot_device { BOOT_DEV_NUM = UNKNOWN_BOOT, }; +/* Boot device type */ +#define BOOT_TYPE_SD 0x1 +#define BOOT_TYPE_MMC 0x2 +#define BOOT_TYPE_NAND 0x3 +#define BOOT_TYPE_QSPI 0x4 +#define BOOT_TYPE_WEIM 0x5 +#define BOOT_TYPE_SPINOR 0x6 +#define BOOT_TYPE_USB 0xF + struct boot_mode { const char *name; unsigned cfg_val; diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index fd6d08c533..a7d89f2033 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -409,6 +410,43 @@ u32 get_cpu_temp_grade(int *minc, int *maxc) } #endif +#if defined(CONFIG_MX7) +enum boot_device get_boot_device(void) +{ + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)(ulong)ROM_SW_INFO_ADDR; + + enum boot_device boot_dev = SD1_BOOT; + u8 boot_type = (*p)->boot_dev_type; + u8 boot_instance = (*p)->boot_dev_instance; + + switch (boot_type) { + case BOOT_TYPE_SD: + boot_dev = boot_instance + SD1_BOOT; + break; + case BOOT_TYPE_MMC: + boot_dev = boot_instance + MMC1_BOOT; + break; + case BOOT_TYPE_NAND: + boot_dev = NAND_BOOT; + break; + case BOOT_TYPE_QSPI: + boot_dev = QSPI_BOOT; + break; + case BOOT_TYPE_WEIM: + boot_dev = WEIM_NOR_BOOT; + break; + case BOOT_TYPE_SPINOR: + boot_dev = SPI_NOR_BOOT; + break; + default: + break; + } + + return boot_dev; +} +#endif + #ifdef CONFIG_NXP_BOARD_REVISION int nxp_board_rev(void) { diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 72dbd625c9..62bd3a0e5f 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -250,41 +250,6 @@ const struct boot_mode soc_boot_modes[] = { {NULL, 0}, }; -enum boot_device get_boot_device(void) -{ - struct bootrom_sw_info **p = - (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - - enum boot_device boot_dev = SD1_BOOT; - u8 boot_type = (*p)->boot_dev_type; - u8 boot_instance = (*p)->boot_dev_instance; - - switch (boot_type) { - case BOOT_TYPE_SD: - boot_dev = boot_instance + SD1_BOOT; - break; - case BOOT_TYPE_MMC: - boot_dev = boot_instance + MMC1_BOOT; - break; - case BOOT_TYPE_NAND: - boot_dev = NAND_BOOT; - break; - case BOOT_TYPE_QSPI: - boot_dev = QSPI_BOOT; - break; - case BOOT_TYPE_WEIM: - boot_dev = WEIM_NOR_BOOT; - break; - case BOOT_TYPE_SPINOR: - boot_dev = SPI_NOR_BOOT; - break; - default: - break; - } - - return boot_dev; -} - #ifdef CONFIG_ENV_IS_IN_MMC __weak int board_mmc_get_env_dev(int devno) { From patchwork Wed Jan 10 03:05:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857903 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="f6GUJ9MA"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ5f2wBSz9s7M for ; Wed, 10 Jan 2018 14:20:38 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 07598C21DF1; Wed, 10 Jan 2018 03:15:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 05519C220E1; Wed, 10 Jan 2018 03:07:58 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 15ED8C220D5; Wed, 10 Jan 2018 03:07:21 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0045.outbound.protection.outlook.com [104.47.1.45]) by lists.denx.de (Postfix) with ESMTPS id 9F7DEC2204D for ; Wed, 10 Jan 2018 03:07:16 +0000 (UTC) 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=vPopDqLxsUicIzcozG/4mHs1VrDFGavuhFffBPCHnF4=; b=f6GUJ9MAqN3jv35CBT1e8B8rmWuP2kEm9rjt9e7KncwgTIviETEalqHNPq2wZX2VW4Jvbs4YKC1YE9o7iul5Z8SVfeW6p82/3kr8rn8tuuH7tdTZIwwwlZlv1aeHbaypSPFy8L1K0zIz+Pbw0yidsId9N9EoHnqz2uX44ESFEXM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:12 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:50 +0800 Message-Id: <20180110030603.27864-20-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: be0a04a3-7315-4130-2c28-08d557d7405a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:PzfrEdwegxVPaIN2T02BINiQCo7DcdL7pQgF9eftJIAc48LffDuRXcmTxVcC0o32rJh56Pg5S4KHc1aOofWP2JgnMT5tx5pKt5lmhUM4kkRaqe/ozM4qoA1k/zOm7/j6HYcH85LaMuhzERFHNcK9tog5/bT/EW8EYYzS/eIGP3cOYvi8NZ5ub9qvi2uFgvrDZ3tsnI2IMxT+D3x4sks4zJaYkWvOgeUO6BvYZNDRZOk+L+nFvqkgR6+3lgnLdmZO; 25:TvwpnBKSlJJmZrZVfpPB0iMvYP0c3oxiEEcDGAvVv1M0TKF2GIK2Ysgd3cATA6FMuWrtGmN+kNz8DtJMIJm1EJbFTmzvkxxWo/Ch8xHpOfCT64/nrXY7Zs5/rWC5DZOtyJovzdUs98Ae6y+C4nCBZrrOJW813RZghp90FihknaEhSwO5rGG3xG+oY0N8HJ8wftvnA1siYWOujwsLS1gEFmkiGfCGXc9oPk8qPR+63xnaUWLeSF8Cu1lrzbHnpZuvscSeAGRjcAQUF6b6+Gd+xoWpNIlQQbyIpow9TwTdaFlfqZtnVgofkGKlcNNIPezduw134IEHFBDFVcOT7Jf2+Q==; 31:IXFCuOa5vAfd2HKl9OXWpkeNofCTLoLbh9NBQDH2PUL+BDtfoUOB3XA8vO3PD3050zH74e+v3BycUAYhFRJrreqCwF9Ojr2r4IFGFPcCMCrVc8ruldXQUMjsUWRXqNr6G/gc2wjYa7jskWojGGAGFvj4OfG+Vah/UecQ/LlmK6EPJ+S8A/eEWikOLHp8kpGGRAx4sWU3rdwYQrKY/mZMLLMw42mV7at4vh7VCmHXD5o= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:FZwd9GtgLMcsRGebvV1i47y6NRPOR/n2gSwQ1C6vAgmOaENotKZC6WTB5c03/+ZpZ2Z9qaf27ERg16ElTqrHHo5ItOuW+PlCbwso54n8EptzUXKyf+iJIQO2KQUdnIOtn45hpd9nNcQ8VQr99mBPM19TrN/+og9CE52766BM85megCu4qRRYVQ7/QwehkIinPMX+8r0nRDv/kUxoZ06ph445ARV7BkMcpA2yEH8DqRVEzVkVKOAqOQvN8IvlQ/Rqqbuyg7DTXcLwMN1Ck1LQrh48rLGec3GyW1iBdCDs+Gxx7dBoNZ5xe/OLWLP3xUKY/ziIlzUCWKUj3eh1lk5Q8jscCK1D3mzjxGjHrmHhBjFgz9YkZhindLHp365eUa+8VouNsazhs1GDi19S67cHdJ05Yev5mkbz/KgNwQDmRYGOetbQrXUo1U5mgQYsfWxujwfQVeigUDuP5fjH2Zm+X5+kYJg8h2w3ebBiHiq6v2O1+w6Yiis3MYWevl3MJsX5; 4:6LwNhrtXTFTHCKrZ+qkIDJZLrO8XsHHycNbi7/YC2/i8K6s86Ko2vT0txjsVpFJ98gtE+s1ZL1KM58yRPghY6H0K61pLIWW4RevVXvPqR6xDlgT/tsv1fc5FkOiBUePQ1bYja/y88VmTpasfPtBEYGkcyCXNZNoT0Gp60pZqhC8iPqf7UfzeFEeR6I1piKshdg9U/FhiWtPbZ3hb5v0K1TWQGF+zRJXRsqzJHvX6T0bVFlQvoySRni3UdIWbcAzGoB3xGVMncnw1rWzdCpVONw7JaJPWuO+HmS3Ej3Uw30v1jHiVZ+L+vnueKEAbXfpp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:jaDkEWHoTGFCtnjZIewtGVtq4778nVX/Zmio3cYSO?= 38sHFiaHj6TxNogK2E5/VBaaP36sbb1/v6s4vYIg82tRihFf4mxVx3nhj7cxhddxqCzcE/FlYYp2fZlvmpjc+/o6bDz2UVffV2HmVuq/825Toiss+Z6JrIiDFE/4bpEcWMqtSdRVFL6LczLqeTCkDuFZ6081jdTWF1v03azTodmF3OM6+AxeoM1WVwAbOcpgCkP596ReYmWioni+GIZ0hyBCNjxONbyqrzlW27isPTmtFEzvVIAMKfYneo9utefRS+GRnS4wqEk1af+k8D3NVvpUgO2jsxHphmWEFGBrzIEt/8kNpItNc+EAbZjHqtRHUa01ZNtNecXodt79sFezP284jycNXtkbEL2tGxG7zz68jverVl6Xj7FNquqpSq0+eGYft9IPxPEQSGqfBRdGMMZAVVwxqpqNwD5WmDW3/YMov38VU3QtwA8b4db3xVqikwF6tWr3ANAH07AHeqryx2sGJzz2WtqPy1q1Qyg+9LJyTcnMASzCiwlc+YxU82lZbO5KdhfoD1iGlzNbQ8DwOcbGIgm3hc8nHnHNYrnfkrce30qWNwSJ2t4WnGnOV5bZSzpxF/bMgn5WR5x/tqDbL4w2Uag5n8f/pI1Rn1aQ4/uwwSFf3SuFZu+GhVj1X9s44ZItcZWWR3aQvnFYIC8c/PG1OBFlrONjEXyEReTMy3dii6psBweU7Zo58cuW5WIG6bD2QIffOzBz2EMB6FEnYVWuY/FhD1cR/SiIWWnmhvGcs+TT6pjTEzxcJZF6OA8kun77jpl6ZRK87le4Q/2hqfmue+zKYaIwBh4KThAfLvQtM9Nqa+izCw+J69U32+5ATxzvAROY/SBe5J1m/8swalnJ4ywqfXZNgfruZTJlkQ2lSbsgmhljR9IEjsDK/ILlBsRW6UAXijl/koDXgfGN0oKdM9ph7ESZPT4/NpNvEEu+SjXJEUhmE2jKsa9XnP4STM2Y7pOigX0jAmVhaFuRowBYvXD7zoHyye7KFxTmJQGvQIRby1C8j7uQvmRVn4q0Hx1xscD1rMCg16inpUfaO/fBEmj/IFyznQ7VjO92U+QX0DdR5KKo7IrT2eT82r3FfqTAagqkWgWNKGZhH4ftFCA X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:n4mb0E4sCm68xsG5GB2eUg7U3CnXFF1XmG5J5El+SCtmcpKScbIMFyssdJ4hPGaj4ZE9HQlly7NRq6QogrjCcTHuEUSJAUNMeHgyjIn1iQJBKTiJwvX/XemYPg+liQKZEewZMes9HCSdg7tHjJMED8kOQxzqklyDrGWRCm6EdUyEx6tloOxGFOjkknApljuCmFe7rkDEZsp3orQHTRZbC+KSNOf1A2b5/XIN35z0bl/8uHg4NBzHsybLYK/SY0JK/hrS806tYj/gWs9DrLXhPGI+O3qX2jKF67HPt617pfT52VDCca7JYyE59bp9rQr0FCsGIgOSI4f7ohO8hko27xCSAd0zbRGLjcjeonyy6fg=; 5:FY4qrqkKikGJjODtd07kx4+1qa2qP4JiEXBFxJ7/nZwZiXMxUibr09GFC7GE/JfchWDP8MCa21ibTHsnSem3bPaT5QMtTYgcRHonO03g+lJErFMifPcOhgAOBj2qY+WNrwjvdB1vJ8KgyUKoWddiA8TZp23cgvYNuw9pORpsSgo=; 24:T0+UBp9bgOUuX+kMSLaKSbKjRHKnACdNibDmZf6+hyBR0N3hqzcQ4CGheh8v63EUkJ9IlgXBpXK2y3u7s/9WUriJt6SkHFmc3AeVffduRUE=; 7:aCF7/pml/n/dnvfpU7DlpbuhdvB8oKBS3dhbHtHQ0/S67uJOqtftbXzW5mx2Yrf+4fR/oJjeGp4oYhtt4RADfdKqB/PXWUKintFFQSfgAGCWA+rh0r4B7zoyQ1eAnE/DEq5nH1DBuZPdI9g6geaSRBHOGK8YzRC2o9S5ZkGKWTRhkrzd/u5psa75S+C3z1UcgXL0b9vUk6U0fNavBVRI+PTV9GUt3pzDlTT1POEs9L/7QIj9xEiec87Tfc186Irv SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:12.5159 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: be0a04a3-7315-4130-2c28-08d557d7405a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 19/32] imx: cpu: support get_boot_device for i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Enable get_boot_device for i.MX8M, it supports boot type USB. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/mach-imx/cpu.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index a7d89f2033..4d4d434906 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -410,7 +410,7 @@ u32 get_cpu_temp_grade(int *minc, int *maxc) } #endif -#if defined(CONFIG_MX7) +#if defined(CONFIG_MX7) || defined(CONFIG_MX8M) enum boot_device get_boot_device(void) { struct bootrom_sw_info **p = @@ -439,6 +439,11 @@ enum boot_device get_boot_device(void) case BOOT_TYPE_SPINOR: boot_dev = SPI_NOR_BOOT; break; +#ifdef CONFIG_MX8M + case BOOT_TYPE_USB: + boot_dev = USB_BOOT; + break; +#endif default: break; } From patchwork Wed Jan 10 03:05:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857899 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="gMm8LAwQ"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ155059z9s7n for ; Wed, 10 Jan 2018 14:16:41 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 5281CC22042; Wed, 10 Jan 2018 03:14:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id E3F73C220CE; Wed, 10 Jan 2018 03:07:55 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D4DBCC220CA; Wed, 10 Jan 2018 03:07:25 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0078.outbound.protection.outlook.com [104.47.1.78]) by lists.denx.de (Postfix) with ESMTPS id 37AE3C22086 for ; Wed, 10 Jan 2018 03:07:20 +0000 (UTC) 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=detRSARmHmCgGuV6Ua4xfWOgi0tOg9akZq9cbhVOO4g=; b=gMm8LAwQmtrOLt4gQ46fqmgpsAlhnXgp3coIc8Y5zma2JI2BFWoT2Ga4LJs39yP44sawcExC7T9qD06sP54X+KZstPM+NS1Ct5vUw183q1j/eudbVPm2khBxryq1K45k9Bu6mchMhbdstMhsNNqxVpzopw+pM8iXduHJPeFgziY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:15 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:51 +0800 Message-Id: <20180110030603.27864-21-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 9cfc663c-d1c5-4756-0fa4-08d557d7427c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:S66hc1Dq1W1PgSywfA53nTAzxSdBekLey/kuZ2O9kzwvH2wvD4X3bMKqwkEI5hLY+LiWFkyWgB8/R/wSp6RB46bmnwy9eiu5FgrWm4gT5fqrKMmBcrTClSRFBvCh++UtdKic3eDY1NAnvpLArrgXVn7P29pJq/Y0C6RsdW2CJ3GMK1FtQbrDwp83wh4yjn3FsURqijpobCEJVBKnm9yWCWMDSqbsjpnqsB4V0ebu+0ftbJNU0sj790KCjU7ji74b; 25:Q9TzoFU2CPZij6+ejLeaQLqlkFGB6NFiDV9PHUf4g7Tnm1gTqkw6vxVFeQ626S+vnAWc06jOMK8KujKF6OcuTWEpAF+k02YR/SYVNW8i7Sd44VSY0dSkpVVhIhAQDmscTc/RbZbhK4IXWeOlsnMJEFeTdhcwKCLHO7QcXNfDYwkw7VXmRuO6mL6LLszUIfMm8L0c5uYmPruL9aJ+AF2M94A1e0Besd6Yhes/c1+ySHblWALh25D2J6eor1vYkvDop7jG906phQWEhcFs6cnFptFkdH5VWAZUVZBrlVTSTIlhs67ajAJU64subV/vXCwYZfoinkp2ZeWHMyTygl4OUg==; 31:tMRHSE/66A3j75YAnuR0/6p/Te/iVxbNdn15ZYbVOTKrUVznq2h6DwgZokZs5jkrxGyS8WCXY779lZQ3xw6L3/zPXIc4v+X2LHLsHupd43mrYkHUTZ9zC9Xs6RjXTK1RwoOW0anpdIQha5lCvEUmgGf4T6QlVtwE5lM+u4NjxLwDMVoGXRiXdYN6y+aoUqcp6KIJwjxT92YSx33XsAlsXFSO8PpE9Ta4G6iZfs7k+LE= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:WHcezJQSDFY0gstnZtcyIOb1L3Ll7kL7VL9EPPSa3yol4jjRIYXQCVytN1qZxc6fDxyera76vjBYfxZSwTZCrPG35SZ8z+q9swH+bTcOKJH7WBi+36aF0rhj7GIrXCNPITtmhPVIWa7XEfcilDGko4hMFPGhP6cHzWIxm4hMR/n0F3O9y5rYJIlINF/VlIL3DcAjBIJwMzDl8/HNIgREIZzervrmvJQwqU2cGTZyhyTeY4TskYnQ4TBfMgRw2CSh+V87wkC9WW5Hr2Kv0UjBKqmBiGLtyynMrTOC6kzS3vLG3x4ESIwNrVEr8+Dm5hGvza7UAi4owFHGtohUFlrATQUid0728Nfr5RKG/qzrhGVJsl1cMUFnNKBZUb61iDEMhfy0LLFTEcBqwj3RbmOfxxwwdTD1LDTNUiPlA68LoGKhwdTnyp4VsRIyjrtmlYkfBNKyLrWw6YB2M8rWs2A4NA4cBmqnULYPo8tIcaFNIay0i85rvYPLMivZe7z3RzP4; 4:KYUNsW+WvEAC4DhoyGOktwuhXj/jZuKpFuVWUgeH0UjwOzXPWhzURYnBAi+59Rz12Uw6LuZtjQs9VY8Fpz+B4VmLgoPNQ23X+Sm+qrzGtTj/LCpvms+gTf/vKCT8VZtCrj8P+F1YhwD11jf9UZWOobzNyhnixfqIqyoYakh8UWJV2NXM0uNQUyxLhf4dn2dnzp03YHS+GraFMb0H2zYBNI5U0vNEusDKPpw1TMayDzmlJRWoosIpO4HPcwuFbbX7yDm48BGzxL8P2Y0uDEsjVk/WgEjW3OgSnqDJaAVUBTdPJB3fVN6GCb6QPP3+hgV0 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:vJfik0+JRQhW1NztfV6L2rlHtFoncOCGYREtM0ms0?= kIEznwN9Vc+45IPS11OXI/0L+Y9j7+laaZMy5a3bHC5PpDSTT/1/MXpoh0tkDTvlLuMQrYcxUR6SWi4zJACgcUztIReVlQGeVkPadXTOsLRUgV087n+yMU/i85COPelLBeqEI+VvA9lqbpzsQRCmrT8A6oiEod90sIafve2LYm5lapt7Mz7GVm4OtORuh4bviLm2HFfyHT8VhCFms/1vbnvB+us+35Z8nirMTASeZjrDtRDLQ86+WwJ1UsPC1Hvff+rwa5WHkC+eg06FIsWbbY3cok1kU8fGCFI945Dmx56NqNLLv2mn/qJ39UzCpUFka+NbG1lbMjyxZL/FeBvXfJ2QROlQx4HvpT1rahnvIWDIk2Hr5gXfMkZnARkVzs+byBa66Tg/amhBaIO4r+tSPdN3S89ixqUkdh5QP0fcFSlmKi7C4YroP3dJGgADCXzHBeGRp/7pCD/60I7h+xVNtmkmK6sHaZBdsYGU6BxwnCkqQWcAxzPBXd8/5bOQgsnPi3cPH45rVcioqeFB0qz/fhfzg6qXJ4sy9mqrVfYOlzo/ogAegheHHs12JzZjs75fMW/Jz90/TrEpeooYJGOw1n8Aptitn6Coxw9g8XroXlpgzPuappf2BhESBFxM48z8X85CVOaNZG1R4PNH6U5mgFA0A+NeIA78VuVCXcQUkt8I4Ls/32icEI+PKMf/u3NzhZguuWEtUiOSuSo7pK6w2G8mdyz8FRIpmgTjSGj81TfCsANO71vc8h4c2Zgwws4V5KHmVEDWJ2uh7ORq7EvvGnWrR2UJi9Zo8B87X/ZNvQeLZA5klATlHP1Tnyp8N5m47U9MaUf6H/AdNMECSgCO2Wsq7BryjoChslvPHCQ3t8fYTQRhcnHaMjcQZtiid6G88d9DoqYpf1lkrJ4x3Ncs1lY8EddkyWWB6DlGFD1lZBcl5TDxq8iPS8N/Y6VmS9b6gRy/xYYk7LzhJbWHTZwb3AN+UECCGAAsMZ6ed9DRNcagtGdr5GJHimeq7R+NPImtaVNqUBNAVhYUtWUaAjFCsP2G22GcDYdr5BgrkZdpFY1+tVMkPcyaLvpuCAYImUJ4NQlp9hzVY27ne9qXgQDY/fT X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:Jb2ap/J9lwU7qcqYM7InSce5CpDmz9JMfE9QBf/S6Yuj3uiEku05VVP1j7ZC6bK8xzXm5/LycLXWrkz84pJi0m4N8gYVPp0nDJpz1sZnWgpafML+qiTp2ET202aWxBRgFOkU5GNlqxC+vj+N5fTiAikA5Ql5Q1nAxHRihX1n5z9V9tUJ+siHy0EfhMsRqVKyk8rTs1UEaql6PlUO0IJVKcPzQ1OjTrlK33PT8kAHA5yo3Dim1Gn6arC4mpMpwgCVgB839pVv2zVVrANadPcbTRzS6hh1smFZt+7E9fzT15jBIW5pQcC6PNfqNGCiKi+0TRgh5DdjIu3HOti+OHC/nSPXwvbg+m+bL7j9D0nhJm0=; 5:ABtLkr1l/N8+B6scAqB5rpqJCXLoSlnj1ezMhRRsOKxR0nROTDfw4+Y2ZY5qXsnRrtKMmJ/clizxNMwAAfQCyB2EdsQzBFwoPXFbDsCzFQRFuZlQVqgPfbRkLXLrR0HBO9g9ivBS8G6KYBluHC/RZPBceAxYxzvFHaydw5f38zk=; 24:9vRccWRuJvQlG9wY8h90jjxYGBjZcJ90LEHdiyjwwxLcdhfkOQJ9iERpIW5C/YAMGZI7/YIyA7GLOL26UF/6zX+mF9NZ+jx26F+m5nKuIhE=; 7:SvOquadn61KEcGDRvGXB2M9/waU6Jq2FcuOTUe/lDNsWv8Z1h8nxqkW6Oom6T1lhRdkQfGbqhhtjKcjvUxM9LcfoycFMXHglYEKOxvgAl9HIp0oorAA4Nhz6VkNkw4Sxaqe3uNj5OtqCJeToF0oKrn5FVC70+JHgZ6vaUo3fmKsD9P7K1eAXwRKA2hwgdXGQJXCsnjiMPAr1oES5lBkhgy3dSpWbblQJlskA839CsAOZpM+fRarS6lXGk8Aizx3j SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:15.9840 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9cfc663c-d1c5-4756-0fa4-08d557d7427c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 20/32] imx: mx7: move mmc env code to mmc_env.c X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The mx7 mmc env code is shared by i.MX8M, so move it to mmc_env.c. Signed-off-by: Peng Fan --- arch/arm/mach-imx/Makefile | 1 + arch/arm/mach-imx/mmc_env.c | 30 ++++++++++++++++++++++++++++++ arch/arm/mach-imx/mx7/soc.c | 21 --------------------- 3 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 arch/arm/mach-imx/mmc_env.c diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 714b858e73..e38b560d51 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -22,6 +22,7 @@ endif ifeq ($(SOC),$(filter $(SOC),mx7)) obj-y += cpu.o obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o +obj-$(CONFIG_ENV_IS_IN_MMC) += mmc_env.o endif ifeq ($(SOC),$(filter $(SOC),mx6 mx7)) obj-y += cache.o init.o diff --git a/arch/arm/mach-imx/mmc_env.c b/arch/arm/mach-imx/mmc_env.c new file mode 100644 index 0000000000..ccadd2c1e0 --- /dev/null +++ b/arch/arm/mach-imx/mmc_env.c @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +__weak int board_mmc_get_env_dev(int devno) +{ + return CONFIG_SYS_MMC_ENV_DEV; +} + +int mmc_get_env_dev(void) +{ + struct bootrom_sw_info **p = + (struct bootrom_sw_info **)(ulong)ROM_SW_INFO_ADDR; + int devno = (*p)->boot_dev_instance; + u8 boot_type = (*p)->boot_dev_type; + + /* If not boot from sd/mmc, use default value */ + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) + return CONFIG_SYS_MMC_ENV_DEV; + + return board_mmc_get_env_dev(devno); +} diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 62bd3a0e5f..172be2ccc0 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -250,27 +250,6 @@ const struct boot_mode soc_boot_modes[] = { {NULL, 0}, }; -#ifdef CONFIG_ENV_IS_IN_MMC -__weak int board_mmc_get_env_dev(int devno) -{ - return CONFIG_SYS_MMC_ENV_DEV; -} - -int mmc_get_env_dev(void) -{ - struct bootrom_sw_info **p = - (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; - int devno = (*p)->boot_dev_instance; - u8 boot_type = (*p)->boot_dev_type; - - /* If not boot from sd/mmc, use default value */ - if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) - return CONFIG_SYS_MMC_ENV_DEV; - - return board_mmc_get_env_dev(devno); -} -#endif - void s_init(void) { #if !defined CONFIG_SPL_BUILD From patchwork Wed Jan 10 03:05:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857904 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="Qm3Z9QN6"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ614Szxz9s7M for ; Wed, 10 Jan 2018 14:20:57 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 4F0D7C2204D; Wed, 10 Jan 2018 03:14:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 62204C22099; Wed, 10 Jan 2018 03:07:40 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 59C71C22089; Wed, 10 Jan 2018 03:07:30 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0087.outbound.protection.outlook.com [104.47.1.87]) by lists.denx.de (Postfix) with ESMTPS id C5E0DC220B0 for ; Wed, 10 Jan 2018 03:07:23 +0000 (UTC) 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=VIUK2hyywNsZrJbx9WsFFdrqZ7LwoAgCCas8yncp9b0=; b=Qm3Z9QN69mJd33SJ+Rnr04sS/q7atwKaLXkIG0h2MQ+1LwSFKq8Zfk/7h7vPvyTKRTStX2gXTitoR5+T3AfU7dpp6i3qjC1Mza1WUzyM6yweegtjeCHsqWVeJgy6tLdXMM9g4ksZPBXWFXiBo08vGXk/7zLw1T7SDgUg1dSzuPI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:19 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:52 +0800 Message-Id: <20180110030603.27864-22-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7e118978-5b9f-4d85-f5c8-08d557d7447e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:7Oozi7XoXhP5N13gRS9Ooq6fuKNolINsHyW+zm2a5D9L+nSf+7dfy+CxHmCiKMJ3qwYzHdKEK1oEeFC7f3jejD4U0Dg59QaQymWQJnFs7QSxwdZhzlZBqFm6Ev4+uYRsIc7n2Cq9QeZVM75BU32XWwmC9jaAccdBeQmyKHWCvTjXe9P9vtldWq+uqxm3CgtY7GVGxA5spBEFzsOJi3F3V549KpJBuQ4cH5BZC6uZRp0ZNxvpwKNo685xYNErHx1k; 25:GRYMzk+7w6nk1yLTyRuc9p+D2iTlxvzHgVAYdOj6AW9yix6+diy0OIK023+MDT+5zxWmXPd+uSQtXanGpeyVfkrJZTg+njdz2oikU+3n9u1TIXqe2txPRZk1LhDjuK+X72VW3VrtWk9orHOV5xLPn/kYsqiVn6Ko4oc5zq34GOsiXnP7Fvq3uzGh5yS2nLjo7nuWPGmI6ul0kCXcYx/Q3aGtB8d82BtmNVuWSL2J/XvYCUEHKVHkJckzmHsNU8vKATHtPDO2FIb0zanXtxpZ8PkmrBVyweanJuIOTey3Z6iUbwRFpN9fXVUZweuW5hKIvghJPyHuNUPBabTaAkEbjw==; 31:mysFzfPjVOPk55uIKZaXzamwLAHMBML5erL6YRiOff1+5aK/Uz21PjaezWADoB1piGTpJ7/8IU9kdjHCyGbjFeTPMpUShQ2RVSnyBtTcyYJNO5ebkqA5osn22wsSHWZE8r7lhxUGnMDdkG2qNGAhV7AVAw03waEQE621h7BUXigUpllX9AhazoF7RsgvslNKzpYjsgfBm04bdSNAIduikxgc4BP1xGzk23HCK0LcPl0= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:EBfGRH99ruOxP5uRl9A97rxXxFjC4qvZe4b8DIyya+k7nqlK/k3DSnY353EnwDkx2qWeHKMLrHPTi9Ea2dLzuNQEUFE4qDePvLJC2NgrpKh9HFRjLtIUhAGGfvjyC2I3RsRis3JE54aFYqIEh7cvSJOL7ef18D7CS9Ucyzz8XHi+qyTZyFHVxdt7wRadrZCZvqbRFGgmE97HIfRtT7rgYpAT7cZnZeteecMT4xoAq3Tf5FYFJXpaz048bTs8wIxaP30pQBed6N+J6H/LbCA0u7OuhptBDkjHpHKRZ2X6qunIlJ2u5qlxmDSk9VKwaHAHqTan3FXDU/TIiTB8Dmb4yofz+JGL4Wx/HvaAIBp1DkeSjr9LKiWw5xha3qd6LjwgIeleYEie0KBPyppQy16iMUoDRQ/kg1+bKncrCMTXol9roiuU1/ROdX8QIe/3v4tMptPD8VdN1GDZw1Le+M+657Z/G8pfMvOldap7oiR3ujDTzGJoba5eM+5dBJMVJI/5; 4:9I+bvaKKX6u7plKy5CaLaGm4QMPpOZW1R3hSXQM/UNkxupieFp/VOPKUcIA6Yqn5JJWLSHnW2WuN/zDvSDHCwAZs5vaSFm7ddDJh8S/CCcAWJXuysXruOK110DZV3IDp+XSc/LmxOcSFXmCN+W5ruj8nKHKt5nQ04gkvyDtYcUyPXb3W0VJYZrN/rToFC/bw4vPMmx3uOqpD8ny3QfPmrj0qvWYqOS0WWyGunJI8iipm1/vRzamySb71nTvX8Bi0fODsJwCRk7Szh1Jyt/bNXoFEhg8w/gJfjlvp88B3ALrjBLBhHLYEJKQHh8ABBBwh X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:5k8eBDoZpuR7yiqiIM5AA9IbZJoldMm7ILRmRCNmq?= pGgtHX6Ki66n0vwLowyt6X2e32IkVPIJMbebujEHJrTTiUp2GfHn3+1c+gTwk3+Qr2lgjBUjkYsE8izjPZAXwJjhhUXwfjtQafai04MGRK8iVDgSH0khUnoaMTEe2p77ddCPUAKsDcf2gHrfuEmVv2ltD4f3V6OdolbMRssNoCGMFcVLNiTlLyFgxjWPXzUEdPHtgSnccFZ03zgfhDT9ojmRV+UAVYGhejAbZIqFTYFlLRj6i796JjXLFoHqzIHEhyHtA1ibww5X0U944Jaz1q9nWw1r5/TYaldzGkokvOfZs1/nzkUwnJGALdXKSyiGWXvFnPFSi39JPZb7eINhJrkY0wg/B+a199KyCwZ6bK2AmGPt4UC/JrP7PjRiQ9WQgYIooT2C0dqJLIfX73flu17SfcC2QJkGpKSfll33sMcUdyTeZJ3U9k5cCdMFEjfYLuQyvO0q2EttBHivK82SUSqRqYJgXqPF4LIcXJZ8361eYEBEvHYlYbjZmpfSHU+VJM+UsvfgjgOkEUZ8qJAfJ8IfNWWQ8uEG6a+R6MA1fUA3cv/FoWvI3oz32LVuOGdsNeQLVNn1K2XOQHzVDoUw+bdbme/9/KYGs0G8VvjrUUZs1DGIlYM1LxszuES/8WL/ChSwCsg2L0iYwFIDwg/syVSCXWhf4AI8pVzTdpJbvWflVORYas1bSUa/MKD3fqW0K7Xz1c58cM5VuZEhWqYxPJ9uYTEHqJdY+zvfIjPQgtbPmxdxRP48ezTtg3ZJkKiT8mi0IoFHjh+mAcZadjY2+uYhtAgsIM7Lutf73J6pWHsuaYZPt8+4jdH8XH1vlqhSsXqKB7QgkmEEd/4Ng2rax6VihYKFElDMLQmoBzXnbAGv8u0nAmFa4jW9eYJJ3MqcyxuINoHBoaYWDjVXC/5w5n/x5S/1rj+7uRkCF+NIOVXXo1LB9qVeByqiD5gnyvIOu+stRY6zmuFHy4YFzzoCjk4zvl0biQYj/jzwTCoMYPPpsN4J62Bl5sjcK1+j4Y4r2YcybWI4wA/nZQwXqE/EWS5quoLjwrX6xyFqHEfLBKWnzYgCLWL8ak/dNPNn7K0+JoaSdO/56uJMEJqSQTjYtH5KicKnRjZAj2lP+Hw3J5u21iYGsqRUxU8de760tldWyc= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:npe9TNs/VzZu7PPHRQgIzj3FgpIpl2XhGIcyqm/uhUAdL0xlRstO09udnvS605Ozri/RmA9rsLCmhr0IEMcH+6Z13VP/8NVlfzoGEwu69laGfQO2rnUgU0EbtHWAZughcYuYLgIlhOqxUcO+GCY0wI56GRffUqTW5ZE/p/1Vuabi+GQowxw8o3hbRNQqBPQnIZ+A+oufG9/+jSftLNl/agTjgSNkS9Z7yDM4vek7dzZgBRyiCxoBUpA2u/Ei7RrRB9roL4WIYo1oNqJTdED+q9Q8Q61ROKzluT5+LNEvi4ENLjQrm3Jd3OWFpTfdBF5Pm+VYcQ5dIqCUXHf36y3L2uE1MnLk1gUmQktNBqNQjFU=; 5:bh/b0SLZVBIhD7zHnK3poM0I139kNWzsSWkvGctndQU4onYpwwEvDK5Nm9CbFCWwHAa1Bk0/hA1pXEK5Dqzdw88v4bW9dZXwYm97L1+09bnxMYYGD4kPejmcHdn4smCMX9q2iWxH4hKvkjO2zV755qgvGb6FOkDdB/Kivv3WsOw=; 24:66UFscGRBB84MqqYxj7c0j5jAJy+t1mZUUF+1RBxR3m6HoJ7aDW98P9n/2SsVKm83uif8MnSlt8lxAN99a/ljDhT3X05xsfXHkgDyqEIjz0=; 7:krY91KvwSRirOpTXzCfTMnAbT2+PTY0+iYChWpCl23/gLrpJ0NIFEdvo5xJzmDUM4a/xYW0/Tby4U9Hb05sH13AdHGm8Tu/rgHbdAPh6pLDSh/RZbsixAf3tylOYmqZ6QEMG0fMDi3zcFzgJPUsX05iXOn/pPchlw9wMP1TWNLuRPw0rkjucMaFYfz2N2tWr58mDRln5alaxZ0+qJVFSfA7+5RHCNYZRrVr1SRlGjUNfNjyjdqLfnGVW2d4ZmiZV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:19.5147 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e118978-5b9f-4d85-f5c8-08d557d7447e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 21/32] imx: mx8m: add soc related settings and files X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add SoC level initialization code - arch_cpu_init - mmu table - detect cpu revision - reset cpu and wdog settings - timer init - wdog settings - lowlevel init to save/restore registers - a few dummy header file to avoid build failure - ft_system_setup Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/include/asm/arch-mx8m/crm_regs.h | 10 ++ arch/arm/include/asm/arch-mx8m/gpio.h | 12 ++ arch/arm/include/asm/arch-mx8m/sys_proto.h | 18 +++ arch/arm/mach-imx/Makefile | 2 +- arch/arm/mach-imx/mx8m/Makefile | 3 +- arch/arm/mach-imx/mx8m/lowlevel_init.S | 63 ++++++++ arch/arm/mach-imx/mx8m/soc.c | 227 +++++++++++++++++++++++++++++ 7 files changed, 333 insertions(+), 2 deletions(-) create mode 100644 arch/arm/include/asm/arch-mx8m/crm_regs.h create mode 100644 arch/arm/include/asm/arch-mx8m/gpio.h create mode 100644 arch/arm/include/asm/arch-mx8m/sys_proto.h create mode 100644 arch/arm/mach-imx/mx8m/lowlevel_init.S create mode 100644 arch/arm/mach-imx/mx8m/soc.c diff --git a/arch/arm/include/asm/arch-mx8m/crm_regs.h b/arch/arm/include/asm/arch-mx8m/crm_regs.h new file mode 100644 index 0000000000..6582318983 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/crm_regs.h @@ -0,0 +1,10 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _ASM_ARCH_MX8M_CRM_REGS_H +#define _ASM_ARCH_MX8M_CRM_REGS_H +/* Dummy header, some imx-common code needs this file */ +#endif diff --git a/arch/arm/include/asm/arch-mx8m/gpio.h b/arch/arm/include/asm/arch-mx8m/gpio.h new file mode 100644 index 0000000000..b666d37700 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/gpio.h @@ -0,0 +1,12 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_MX8M_GPIO_H +#define __ASM_ARCH_MX8M_GPIO_H + +#include + +#endif diff --git a/arch/arm/include/asm/arch-mx8m/sys_proto.h b/arch/arm/include/asm/arch-mx8m/sys_proto.h new file mode 100644 index 0000000000..8bf9ac6697 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/sys_proto.h @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ARCH_MX8M_SYS_PROTO_H +#define __ARCH_MX8M_SYS_PROTO_H + +#include + +void set_wdog_reset(struct wdog_regs *wdog); +void enable_tzc380(void); +void restore_boot_params(void); +extern unsigned long rom_pointer[]; +enum boot_device get_boot_device(void); +bool is_usb_boot(void); +#endif diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index e38b560d51..4c4e15c6e7 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -132,4 +132,4 @@ obj-$(CONFIG_MX5) += mx5/ obj-$(CONFIG_MX6) += mx6/ obj-$(CONFIG_MX7) += mx7/ obj-$(CONFIG_ARCH_MX7ULP) += mx7ulp/ - +obj-$(CONFIG_MX8M) += mx8m/ diff --git a/arch/arm/mach-imx/mx8m/Makefile b/arch/arm/mach-imx/mx8m/Makefile index 05f38842f0..b1c5d74aab 100644 --- a/arch/arm/mach-imx/mx8m/Makefile +++ b/arch/arm/mach-imx/mx8m/Makefile @@ -4,4 +4,5 @@ # SPDX-License-Identifier: GPL-2.0+ # -obj-y += clock.o clock_slice.o +obj-y += lowlevel_init.o +obj-y += clock.o clock_slice.o soc.o diff --git a/arch/arm/mach-imx/mx8m/lowlevel_init.S b/arch/arm/mach-imx/mx8m/lowlevel_init.S new file mode 100644 index 0000000000..d388f3ba95 --- /dev/null +++ b/arch/arm/mach-imx/mx8m/lowlevel_init.S @@ -0,0 +1,63 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include + +.align 8 +.global rom_pointer +rom_pointer: + .space 256 + +/* + * Routine: save_boot_params (called after reset from start.S) + */ + +.global save_boot_params +save_boot_params: + /* The firmware provided ATAG/FDT address can be found in r2/x0 */ + adr x0, rom_pointer + stp x1, x2, [x0], #16 + stp x3, x4, [x0], #16 + stp x5, x6, [x0], #16 + stp x7, x8, [x0], #16 + stp x9, x10, [x0], #16 + stp x11, x12, [x0], #16 + stp x13, x14, [x0], #16 + stp x15, x16, [x0], #16 + stp x17, x18, [x0], #16 + stp x19, x20, [x0], #16 + stp x21, x22, [x0], #16 + stp x23, x24, [x0], #16 + stp x25, x26, [x0], #16 + stp x27, x28, [x0], #16 + stp x29, x30, [x0], #16 + mov x30, sp + str x30, [x0], #8 + + /* Returns */ + b save_boot_params_ret + +.global restore_boot_params +restore_boot_params: + adr x0, rom_pointer + ldp x1, x2, [x0], #16 + ldp x3, x4, [x0], #16 + ldp x5, x6, [x0], #16 + ldp x7, x8, [x0], #16 + ldp x9, x10, [x0], #16 + ldp x11, x12, [x0], #16 + ldp x13, x14, [x0], #16 + ldp x15, x16, [x0], #16 + ldp x17, x18, [x0], #16 + ldp x19, x20, [x0], #16 + ldp x21, x22, [x0], #16 + ldp x23, x24, [x0], #16 + ldp x25, x26, [x0], #16 + ldp x27, x28, [x0], #16 + ldp x29, x30, [x0], #16 + ldr x0, [x0] + mov sp, x0 + ret diff --git a/arch/arm/mach-imx/mx8m/soc.c b/arch/arm/mach-imx/mx8m/soc.c new file mode 100644 index 0000000000..fe6c19c787 --- /dev/null +++ b/arch/arm/mach-imx/mx8m/soc.c @@ -0,0 +1,227 @@ +/* + * Copyright 2017 NXP + * + * Peng Fan + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +#if defined(CONFIG_SECURE_BOOT) +struct imx_sec_config_fuse_t const imx_sec_config_fuse = { + .bank = 1, + .word = 3, +}; +#endif + +int timer_init(void) +{ +#ifdef CONFIG_SPL_BUILD + struct sctr_regs *sctr = (struct sctr_regs *)SYSCNT_CTRL_BASE_ADDR; + unsigned long freq = readl(&sctr->cntfid0); + + /* Update with accurate clock frequency */ + asm volatile("msr cntfrq_el0, %0" : : "r" (freq) : "memory"); + + clrsetbits_le32(&sctr->cntcr, SC_CNTCR_FREQ0 | SC_CNTCR_FREQ1, + SC_CNTCR_FREQ0 | SC_CNTCR_ENABLE | SC_CNTCR_HDBG); +#endif + + gd->arch.tbl = 0; + gd->arch.tbu = 0; + + return 0; +} + +void enable_tzc380(void) +{ + struct iomuxc_gpr_base_regs *gpr = + (struct iomuxc_gpr_base_regs *)IOMUXC_GPR_BASE_ADDR; + + /* Enable TZASC and lock setting */ + setbits_le32(&gpr->gpr[10], GPR_TZASC_EN); + setbits_le32(&gpr->gpr[10], GPR_TZASC_EN_LOCK); +} + +void set_wdog_reset(struct wdog_regs *wdog) +{ + /* + * Output WDOG_B signal to reset external pmic or POR_B decided by + * the board design. Without external reset, the peripherals/DDR/ + * PMIC are not reset, that may cause system working abnormal. + * WDZST bit is write-once only bit. Align this bit in kernel, + * otherwise kernel code will have no chance to set this bit. + */ + setbits_le16(&wdog->wcr, WDOG_WDT_MASK | WDOG_WDZST_MASK); +} + +static struct mm_region imx8m_mem_map[] = { + { + /* ROM */ + .virt = 0x0UL, + .phys = 0x0UL, + .size = 0x100000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_OUTER_SHARE + }, { + /* OCRAM */ + .virt = 0x900000UL, + .phys = 0x900000UL, + .size = 0x200000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_OUTER_SHARE + }, { + /* AIPS */ + .virt = 0xB00000UL, + .phys = 0xB00000UL, + .size = 0x3f500000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, { + /* DRAM1 */ + .virt = 0x40000000UL, + .phys = 0x40000000UL, + .size = 0xC0000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_OUTER_SHARE + }, { + /* DRAM2 */ + .virt = 0x100000000UL, + .phys = 0x100000000UL, + .size = 0x040000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_OUTER_SHARE + }, { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = imx8m_mem_map; + +u32 get_cpu_rev(void) +{ + struct anamix_pll *ana_pll = (struct anamix_pll *)ANATOP_BASE_ADDR; + u32 reg = readl(&ana_pll->digprog); + u32 type = (reg >> 16) & 0xff; + u32 rom_version; + + reg &= 0xff; + + if (reg == CHIP_REV_1_0) { + /* + * For B0 chip, the DIGPROG is not updated, still TO1.0. + * we have to check ROM version further + */ + rom_version = readl((void __iomem *)ROM_VERSION_A0); + if (rom_version != CHIP_REV_1_0) { + rom_version = readl((void __iomem *)ROM_VERSION_B0); + if (rom_version >= CHIP_REV_2_0) + reg = CHIP_REV_2_0; + } + } + + return (type << 12) | reg; +} + +static void imx_set_wdog_powerdown(bool enable) +{ + struct wdog_regs *wdog1 = (struct wdog_regs *)WDOG1_BASE_ADDR; + struct wdog_regs *wdog2 = (struct wdog_regs *)WDOG2_BASE_ADDR; + struct wdog_regs *wdog3 = (struct wdog_regs *)WDOG3_BASE_ADDR; + + /* Write to the PDE (Power Down Enable) bit */ + writew(enable, &wdog1->wmcr); + writew(enable, &wdog2->wmcr); + writew(enable, &wdog3->wmcr); +} + +int arch_cpu_init(void) +{ + /* + * Init timer at very early state, because sscg pll setting + * will use it + */ + timer_init(); + + if (IS_ENABLED(CONFIG_SPL_BUILD)) { + clock_init(); + imx_set_wdog_powerdown(false); + } + + return 0; +} + +bool is_usb_boot(void) +{ + return get_boot_device() == USB_BOOT; +} + +#ifdef CONFIG_OF_SYSTEM_SETUP +int ft_system_setup(void *blob, bd_t *bd) +{ + int i = 0; + int rc; + int nodeoff; + + /* Disable the CPU idle for A0 chip since the HW does not support it */ + if (is_soc_rev(CHIP_REV_1_0)) { + static const char * const nodes_path[] = { + "/cpus/cpu@0", + "/cpus/cpu@1", + "/cpus/cpu@2", + "/cpus/cpu@3", + }; + + for (i = 0; i < ARRAY_SIZE(nodes_path); i++) { + nodeoff = fdt_path_offset(blob, nodes_path[i]); + if (nodeoff < 0) + continue; /* Not found, skip it */ + + printf("Found %s node\n", nodes_path[i]); + + rc = fdt_delprop(blob, nodeoff, "cpu-idle-states"); + if (rc) { + printf("Unable to update property %s:%s, err=%s\n", + nodes_path[i], "status", fdt_strerror(rc)); + return rc; + } + + printf("Remove %s:%s\n", nodes_path[i], + "cpu-idle-states"); + } + } + + return 0; +} +#endif + +void reset_cpu(ulong addr) +{ + struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR; + + /* Clear WDA to trigger WDOG_B immediately */ + writew((WCR_WDE | WCR_SRS), &wdog->wcr); + + while (1) { + /* + * spin for .5 seconds before reset + */ + } +} From patchwork Wed Jan 10 03:05:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857900 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="UMYSZT/E"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ1K4XP8z9s7n for ; Wed, 10 Jan 2018 14:16:53 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 48C11C22094; Wed, 10 Jan 2018 03:16:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 76A07C220F1; Wed, 10 Jan 2018 03:08:22 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1F5E8C220D9; Wed, 10 Jan 2018 03:07:34 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0074.outbound.protection.outlook.com [104.47.1.74]) by lists.denx.de (Postfix) with ESMTPS id EEB23C220B3 for ; Wed, 10 Jan 2018 03:07:26 +0000 (UTC) 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=FBh+PA9BojTiAfJrtyreH+tlMd916rlFfIHCgdlXOmI=; b=UMYSZT/EHH1iNsp+efiWrMdgMdVLI6R0O9pY4RcaicymUChv25e5UqznFysjQLI4XagLR1OVJ8F8ciAG3Rs/eh0M15V9xtigf5JMvMIMTIOojHenUFhccCsWS8tii2XxIMF8URF8+tCypXYgVqNjdHHjB4v+zGqPSqHuFBF/zlc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:23 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:53 +0800 Message-Id: <20180110030603.27864-23-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8b4d0661-f1ed-4bcb-64f3-08d557d7468b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:cFZsuHSomzw7T6vgEzovQkZSpQxuhMbTA1Ai29hMu1DjXTpE/0iICSCT3EtMmhZSldR4ILx9mg6sjYMm2srLUOSRRIaEmXvLAf8EQiNi7BUqXbJhQpbgnAv4AT6B/SLBAGoWP9M019bxa2zfIceHXFGvZ6rjTaNuE1inuarcp0e0KRz5aTvffAbWYm8Ci57FBho7gZoqMMWPGDIa+3QY9B41AMrpt2VMmuVm9++a6GN6slLkavB5bync/injBdVX; 25:jEFkjsW7aViRtVgHy854siP/viptTyR6k8Yu+s5LDdmmBGl7NbR4/VOek8BkOqml9E9Ml+1ZxMuG9CVXTfvznQp4zsfUIMv4wTuINTNHRuLkeVu6s+JZn9uw10bG/2aOhCvJS0TStUzFNHobXJhahhvqIkcq50DWGd16/GkrQ8cMFw2707eElsj8x3zpZiwUOneomA9+Fu1NipPBgzQZxWvX1g6jJqYAYhjodvdD7NUonOVWFjbfpvDPoGrR/uDgMEK8JNfT8IQd5db3UMGBedqMOOhIpmHI/NzUWys25rx4OgCpBRR3SFBu9d7ICn7ILI5X4pAuEeVCpLryrZ/eEw==; 31:uiDVo+dB5JXvTKUSkypuCsz3BtLHt3tNLzUDVSGFQpfjhZe68W12mFSjYMUKR5F7ltpcEOUXvoPlbMo1M9VwmEXuDHK8GtmmWnaDUlJJbojYj+hzNqmS862JMAKM3K/Au/EYY0+/9I9+jWU7NaM2nWJZV8UpuxAgo1jiLGGQjEbSQlAOyP8HHdTWFFkmbbhQYAHpOj1wX/RHaq/tY0u8SUtyZqdQ3YHIxEyWoYRzZ98= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:vTq87M3AL94ZS7+otU9qV4tf+UFE5oFWB/vzxqg9MNFb3vI02tewV8+xI6SwWWi9RUtoCY6fK4FfsrCyLqL3qLGwENh5KD8ruufgWycuLLFS/FoVqdHSbE9GCB4I7peiKyc/wZUAkrpqjIhgS5SzoBD4sQhj74iWuo5QYjK0qx9N/IL+8ytuWcftm9mNrJ3ylOpGVotfs7xXpax8zgL41J+LTnBFxWqse0rE2Y4KvDsQg6sYp85CocCHqWcyDcSiVMGU6XzGYe8593BnmkbyxsS2GDBBUeDxhlFZ0luPwLjEOw5DUdfFikdFxjN8HuGnIdy/dnXpMHO6hE2PbNdzRKHo06wu2n38mR6EDhX7BUPhOKqE4CFO0aRR8NHYYtBLY+PhXkvtM3KXPDGf5Nb/m34hdlQFRDBJxyNeSDuPRBEPA1dusgn9KEyAVng+FOBpQ41wGOGenWoXZMKB8+83Luoyf9zBaLkNOMOkkzahbWL3WX64nsh+0UmYkD1l8AQ0; 4:HSt3WTJwwOUybLSEbJOc0sHHp7STIbPxC3OubBI2c5i3sR9kRpSMXBkh365auFlf0FGitc0pP1FOiaS+cjFOz5NdxVPSUytIaeumG7ndumXd8xkREaHEzUDsdWSORkEF7zKK/unLw2oN8kGnFeQvbCSDuxttSYPyfdCBBzHsYjZF/l+OjQshQ6hXdqfNM7WbVt5DNJcC9rrRmMmBa3CoVz6cZVwQ28NfhlYrvuR0BjgyE1xPmGPmWVtFvoTD3SY5xdu0HVTo+GQZdTsXQqxwzwv04lj42AER0j8oCwNKgtsvfKK/bgafWfrWIX6rgKAQ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:w4EuAW2XMZQevd499rCAuvNBOxmCebFjWm4Aplptx?= AjZ+MyMXXIMtcOdnQw28VzQIP1RNS7ws9B86Jti8LUqT/AAd5KCtuFFQhexNzMtMME+Bgj2Rev2656HD2ATlH3Em9nxQwLLhmBJ8rT5XEKq3yXXbVsZZbbqQFJFl3Lwcg9U2rwJycJqLVk5zcLJlnGa4krfmGBc6/7VdwWUVRngF5IcweUkA7Ykc2+TnnUOC1EMcWta1LDN2+pbqLjHw/MMbXGBLKBfETeaQBgg95SDKHvfvJRjXyigggdl8lihYDCXLl9geDUMDCCWQSKV72FuqSVeDMMN1OiScLlEo00QWA2AubV/5ghao0XiwOOrMW5C/nEekI/YV2WGLe1m5zyaOyAPggDVHlmBVJ8L56b+NUfHNY3SrhxiFuGUTsqijmOn7/l+UaezAQWfwKgmT61+aCgFJ6SRzrlE1zxpJwrppEXC38Nj8a5sv4Jq9NltrRuLqSADpCG8rvcQTWpF8tMvemm5i2QIZcqP5Nu4Btd1vkSWGswgYzQS/t73Ib1ZH5a8JWtNb3kXP47SuPGk6NT6UenfUJzUfn/1jEGz4+8dGgKl+skTyCzfm0Pb76HbkG8aud3S89cvFVMxpSjTiSptfudc31T1R6ErPLCFjseWS5pS9VWbSAX1lrvoI/FvxtZXh3xLZDs/Q9tfxNMIaIzPdC4L10M8LfoAUj8d8a43AELkTFkkm/eLtwq8HdcmHEhR09Wzfp+LXUcgHski8/DdE2PGhhfQTxT0hDjU2L8I2KxkLKKPGk6bwLzJFboKauLFBAdfpKlZH/wt1iZ5XclZuQIM5I81bOeoASmpAGpBTWhtryV4/kK1xklllnvEh3exczdTGTuWC9CUUD4U4CpL3WuRJcbbenwCPbdUBSIhLtNdXVuKNGEijSW7DsBph49iMTiGKFicFrPLOvXUUzwDzP/LVDwvnLeXf1EYjm3cz4imca6kW6k19JvlU3m3gAQn7rjQolcp8NRhdA6Elu3Cpo15St2q0eIdjhSqgF51sXqY1fzSWTPidxALOWqFhO+j1vR94dTEbQQlzjCm65aJ/Ep1//xIqYTWsd3PomXRkn9tOmRhxN2xbhhzL72hRjk= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:5SldZUdW2FmtES9t8FKEQNJjBeXTaFphkPs+LK1wLtxcEu4eU3MMnqyBi2F06bcvnlPMiAnxYACKYOQfTu8u43WE5aFOtg8N0FFqMHW+4K/Dvl0k7r4qtCcqkDXYpkK9L4fuPGc4yZZVnxb/iamgSUAAsoUyuBlYEwFVOTmj5PgZOut3qBZlSqUybA18vqHiK0TCyVof7cu68+XALSmeR8rbhgcSNmCKMBaOI0S1mFOA+uQjGZRV2/PQ+kb7UuqNLQZooEvOOjhx2FSHCbgQ4PX7Tm+wxNX8ZqkOTT/eTump1+Ov0k9dDA+1a9U5Y0D5KFmrJlspB9gxZmllN0R2We2bU1GtOLx5bQUlPcyJszs=; 5:zlgHYvKuhejsuWWuDNh+4DeZqWYTL0JO+t7KUYxuCf9LbwYxEcU1QjgTkHX2YnhojbGx+Pso5Kf2V9d1XoMSD9IEA1VPnnTWepp6zaTkC8Trpv/RwKxQebg5mAWIBNk4DHhVMoMU5JSmDuPW1EwCgPUJz4PVTu3jaVDEERZ2AvI=; 24:YjXfd3n3zF2tspjQ0Cei1Nd/lDy44rPrTkv3FqyvtoQcHvuhmhhRzkBahXoeCsjme0E0xNfL+KqSQWs6F1gtKYQA3NB3VEXAugierC4WPjc=; 7:Oej2Wt/s8Qc/HvgknieXoRoql1vF4DECfV9dcB+o34ObeXkWH29j/At60zLgS5jK/2HO2PEZ6vsvjUUHQnLcjfH9mBdbhPTGlaIVFpJn5pLrRLQJW9YarVPIKNzmZv9DsCUQxWJla/ZE5FGR8jQgKpNAXHXZqRJQRikRXlP99+ecbPeMWyfKu9rMkiQI+mwKGUBg05wcLH+iNZqslX8yGb1+Ale4fWGK7ekt32+nUO+L2anbjdtP/LhIT/zN43uJ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:23.0141 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8b4d0661-f1ed-4bcb-64f3-08d557d7468b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 22/32] imx: makefile: compile files for i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Compile files for i.MX8M Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/mach-imx/Makefile | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 4c4e15c6e7..95a542fa01 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -7,15 +7,24 @@ # SPDX-License-Identifier: GPL-2.0+ # -ifeq ($(SOC),$(filter $(SOC),mx25 mx35 mx5 mx6 mx7 vf610)) +ifeq ($(SOC),$(filter $(SOC),mx25 mx35 mx5 mx6 mx7 mx8m vf610)) obj-y = iomux-v3.o endif + +ifeq ($(SOC),$(filter $(SOC),mx8m)) +obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o +obj-$(CONFIG_ENV_IS_IN_MMC) += mmc_env.o +obj-$(CONFIG_FEC_MXC) += mac.o +obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o +obj-y += cpu.o +endif + ifeq ($(SOC),$(filter $(SOC),mx5 mx6)) obj-y += cpu.o speed.o obj-$(CONFIG_GPT_TIMER) += timer.o obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o endif -ifeq ($(SOC),$(filter $(SOC),mx7 mx6 mxs)) +ifeq ($(SOC),$(filter $(SOC),mx7 mx6 mxs mx8m)) obj-y += misc.o obj-$(CONFIG_SPL_BUILD) += spl.o endif From patchwork Wed Jan 10 03:05:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857922 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="BlkiXRXi"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZL16BcYz9sBZ for ; Wed, 10 Jan 2018 14:31:21 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 42877C220AD; Wed, 10 Jan 2018 03:28:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id CB41AC22116; Wed, 10 Jan 2018 03:10:51 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1C7B1C21F74; Wed, 10 Jan 2018 03:07:37 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0084.outbound.protection.outlook.com [104.47.1.84]) by lists.denx.de (Postfix) with ESMTPS id 4A238C220AF for ; Wed, 10 Jan 2018 03:07:30 +0000 (UTC) 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=ih9uy+hqZeKXcSZmvEpmKm52KnRjHMKARwXKKzlpmMQ=; b=BlkiXRXiIe/Oy0U3VC390B7ARu9Lzv6hYxIc11Gal9Lk050KinayspUl15ruy3mDj3ILNpxGKm7yruT/RAW9WbMsMcF4M2mI8um1XARbLhAOfF1D3FPR6t82CAjTxICkYQX/wqX64JBrljmZgJi/46PUzZ0pUByKvj/RsiKQJp8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:26 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:54 +0800 Message-Id: <20180110030603.27864-24-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 0878f8c6-72e4-4484-c21c-08d557d74884 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:iqVIjzmwT8qTO2GrVDgOuElBiUou3AjdAwG0PKgrbjLOAuXwnorLzntpJFNLrZdz7+tssX+fMFETbyO1/rm6C+YFL6Ohbid/4viGixE/V9ckFn/9sLJUeol1Bdhv4IOWbuLRQcCkNLNKtaEqgPN1Yf8HEG7ySSWP5mcIPKBh7gDdu92YBFdBguk0kf9eD/nt9a7XG2Slw+aZhNJS6EqBcyrNnEG3jWkmKLJz27wCKfOWU/qn1AONddbnvIlpa/8a; 25:nH2zmEh+wBoi2QqMsHiB9oAvbnosSfNEqa4YYhbE+muQp38kkdQJnip/8tD5uAcDpOWVwZTemk2FqqntFiwjQTz0TMqx6uG4zUQstjWS0PMIsa5VKFq4qSs4eXE/2kayt1hTZneKvFg3TrV0ch5ero7/SPTiJTvv/50LK3MtCI7TRnJqD81n0nqr1QGm4KIhF6HB8UeY+1tTdWAOH2dIiUvlAbeAQgAkN59jkUisI5qxFclfCRzjloqACNNJRrnlCD2OdExcQC6zgLlDO4EQYn0aE9Nf2YU5f1t4HZ0xrdTdKRRVoO3f646sV4aDb1lrW+yj2zjVCgja6YgDQrJTXg==; 31:F/A+k8cKaFWw9mV2mgOwpL4nqzWD2C+Vg5fEtkNWLSUgp3DUAN+akwnIcB0zQWpmttbzaJwhL9CF0YWXWB/NlIoRfQpBHBeLoPiYCHpzA2gubACMQ8L9LQBH1aM9teyLlbX75Ya9Tp5FUt+bqiEegAbNmkLbt0Yp1PV1eaxEJXMjkhDJhNyNzVem8zlkH+UCgbmmPHil+IcG0gFN61S5ZNN1rHa1mQSFGwSpGaEuors= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:bYSDSshNa5jiQ+NOVfZ/mouk2+uCcg7p9J11mnpNQLCVc/G4lZC0C3CQYc+g1NPtmU7kyV/b6BZ0qFwB+gN/OWSBom0y6rCghEBMu0q+s6/Y3+ppI5ldTEaE/hvHd5UK15NpibIUMeCJJbLrgegRyJsns1aK0DPDSeeCd69U21eKL9MXP+mAzWzcS/y+haHhZjNfEeEreelxucBATnD3IauWFJ2vxiAVWEe2Fy8HGya+kIr2E0mzqy1lBAr40TSfIODH/tJ54V7CpVU8hx0iJORweSYhNyhXWOWcnFsziW4Qs8IDc31sePF6pBcpch3AvGyETu1DQQ4l0g7akxhSyD85uxeT/T0t5GUmIhnEwztVzOlA9jjwpeqbqp9NZsf0i0JRzn7X87M8xL+5j5OPnVWlpBWltkyCSVb+ODLxHuxfjueITzaB0rZ7oEsaVCcSFHQ2lCCYssAYlDQbtkENg1qdQnigJbYcfqWUjnlkI1F++rMnGePcwtC2wVZNdYyQ; 4:OpFedlFjzhubBNBN+Bt9c5se0EbguEvzHu9UD8OPsqx021t7xoNTvkeWkTFHD1Gt86BvNcuK2JvUwY1yVIdQ71Uy9GSgE7GZEsTHiXBXT+ZjKh3c91ZMpViqv6dHT5XzvECAS1Tm/d5b9a9yaBl8XDC0P2opDNFbbcQ4PlSNos4cEHmd6EIX3eXe6V4GajisK9E7p51TT1/idbOjX5Uxzd5zlEMhS/HT2RIiIojNypy5idm5eKEOWRPygl+zDSOr7Zbio9p7hZpqxoBSbztqXXqsyGWolMb+Gnn8UYEeWcdBNtqwXvMtWceVR/OE8sVt X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:dMqnXmqYwOV7rlwIFvKx4aWnB8tmPG61/88GwK6PR?= DZWlVrAPkL8TKdZ6wlUDJwKcBe0BdrtNMBZzz5QHuNZdyOfdr9e13NR1wcQEsr6l4T2WixrjBeauBg+UDtFQZwVJ9WdAN+3Q/eSqZvGKsplIe3kdFB6ripylbe8ClAxwCCDuSksrrwTa65lAvUvr8LkqbweOtAiHSmhxq27OKpmYbTrul50yOHKmX+uXQSWj9bOlpUXgb7GJcXvRdBWKrCOociGRAUC0NPzv/tTeTOn4+zHsxPmYSNILPoWDcB7b07rlRS53Af6N0VKWd61nnlId9zctmd5SIrEtS7JR6/Moqu03koKjtIJm65s2JAUG2pxCcisnSku5RnT54wX11Wx+nw0DNMRZ8PZIG4thEbzmgtRgLNvtkfT8/L64XimWp/Wn1iENjmTx6QmpR1FsRaNyz0NBIosOz+Ur4/EXX3apy8nAXJawUT4NcJC7nKc7yj0xFLoKG5OE8xYvpJTkJjju6MipL3S/dMgGksq8Qe9p0q0B9B5UJw+/6toCubj+JSoFHZYS0xdQ//88SQX+YJzgE1itAUiFT8siM1Reubyrf1kmn0isd7sH2O+dBWsEMO5cKAWT9BRXvvGNFuWsGe7tZODf0z1fM063DlszmFker4UuIukNnxSZCo5c2Vod6X6h0QA7zCJmx8VkGLDWVVsUq2gU+wsevj2hvyCPx9tW1IMhyEXyst+Me69gP481y9ZxLH4NleVrYHbgjDWXjq4PQssFBn+9hKLdFAcMice7ps1s0JLv1zkZkXOYtefX36W2j1VkIyTyTMZjCoIuNwkjcpe/0R0/T0mNThHuMc9PmMSn4bD453ncyjMb89mnX7bK7aTsWijBh0mSX/KKX/tStLMoqXQhsiYBOas+SwIsOwFOUpuw0V6YRIOu1xaF6E4u7MLbU1r7QHJm7hnSNOaRex4M1g9ikmmibVurUke34ebSZX9PHVxaeUyxQTv9uYXacSzXGw+kKA/ZoiNQ/J57ezjG7M1CUYNk6hguze7BDAVmHDbbhOVCQlm1Cg1sS5n+UUfCCdO0YX8I4jJqgvfCp34SQXricFT3YsKmY6Q2eSJEtKfYZoOavrMrBbUdIXogn80elEef2AsoYgOnkiy X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:zf4yp/2qKAgWPLaJ9gYUwkG9tmfXHDE0ahDtpXuK9kSoxRXpBNAso0QDeleq8KDSM13FlcPIdzJ5lq/vJ6TfGazvylknZjiCzhD+8opZVLHMu73i0tyJDhMdlQUPd6TzGfVoeKRFo2G4LJdsXP0P33+FwtW5iy3oHk/ZgzIgWM4x2i36PmTKGobUfuJN8efHKxOoKA9I0sK6uAITccCqrIk7C62G78jGbuDlvjNIi0lJSKvdrt3/Nn6e6OomOuTXUcyD1wxTQzD0AAV8Lj47GbfNMhf8tNnphBSfnuS3Gk2oUoxfWZK10guyQ4YOhBB/q40tdgjHRADFGrwbcW9+SbBJUoc72pQ2km9KOdSNpPU=; 5:wPl/idWUMfctyJp5n7aIvGY2pJjsaFmlYb1GhqbB9oFUV6XgWgtXVeMgjo81VvtBGNQVjZNEp1Fspbqhj3dBzuqIMRnm1L9Bn8Pd/0hEKVR/SBDIXiZX+2hIy3e3pQUycbL7Pavb9OWpdMWDkWcTxJOUGNl1TF7E74G9dCIGn4g=; 24:NbkTF5kw0TaioJZHww3C7dZKaXTpilaFtEig6B9tW7czgJPcUoGOMOIxKn19F05oxe72UCYJ43gfglUfCC2Gom+yVDPAY0mTBbBLOGdmEVs=; 7:NOvz3T6fp/5uBit78ceuF435kRDL6AZ+xTwpzzeUzhRtpMRpmuzV4prGkc907afaJy0UGmXeYW/6yeEq9uph1mTyHWlgyx+/d2a8J/KuwdPxdQ5hlORaqtHwsGQvU3U9VuHrIeddN+B4XOh+xLTSMoB6aRNLZzHvK+QVCRKHXClwwDhT0FPg7AmdpcNoPWahLuN0cFk5030tbRKh1D/rSZdXo+H+8E45RIUHcDGe3afuReDXFrkznHue+5K/IhuY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:26.3886 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0878f8c6-72e4-4484-c21c-08d557d74884 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 23/32] misc: ocotp: add i.MX8M support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" i.MX8M OCOTP follow same flow as i.MX6Q, but it has 64 banks and each bank 4 words. Signed-off-by: Peng Fan Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- drivers/misc/mxc_ocotp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/misc/mxc_ocotp.c b/drivers/misc/mxc_ocotp.c index 8986bb4ad0..0cf24a4c88 100644 --- a/drivers/misc/mxc_ocotp.c +++ b/drivers/misc/mxc_ocotp.c @@ -35,6 +35,8 @@ #define BM_OUT_STATUS_DED 0x00000400 #define BM_OUT_STATUS_LOCKED 0x00000800 #define BM_OUT_STATUS_PROGFAIL 0x00001000 +#elif defined(CONFIG_MX8M) +#define BM_CTRL_ADDR 0x000000ff #else #define BM_CTRL_ADDR 0x0000007f #endif @@ -79,6 +81,9 @@ #elif defined(CONFIG_MX7ULP) #define FUSE_BANK_SIZE 0x80 #define FUSE_BANKS 31 +#elif defined(CONFIG_MX8M) +#define FUSE_BANK_SIZE 0x40 +#define FUSE_BANKS 64 #else #error "Unsupported architecture\n" #endif @@ -294,6 +299,8 @@ static void setup_direct_access(struct ocotp_regs *regs, u32 bank, u32 word, u32 wr_unlock = write ? BV_CTRL_WR_UNLOCK_KEY : 0; #ifdef CONFIG_MX7 u32 addr = bank; +#elif defined CONFIG_MX8M + u32 addr = bank << 2 | word; #else u32 addr; /* Bank 7 and Bank 8 only supports 4 words each for i.MX6ULL */ From patchwork Wed Jan 10 03:05:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857912 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="lnUvz8xu"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZCj08nQz9sBZ for ; Wed, 10 Jan 2018 14:25:52 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id A27F9C220AD; Wed, 10 Jan 2018 03:18:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id ACC9DC22103; Wed, 10 Jan 2018 03:09:40 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 26EA4C2210D; Wed, 10 Jan 2018 03:07:40 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0084.outbound.protection.outlook.com [104.47.1.84]) by lists.denx.de (Postfix) with ESMTPS id C53A1C220B7 for ; Wed, 10 Jan 2018 03:07:33 +0000 (UTC) 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=8ll7B36PQEuqsFTdzs2bY/R01Pj9zrsofkL2VG3BknA=; b=lnUvz8xuEdBMEBKZhn9VQw5yEy1r5SnompA17ig84gpZCVEqQmyy0Av+QToFhMu19aYL7ywH8847hff7UU909CzP1XufqO14RIvteyKt81jRua3jWzkF1FL0ITh7dG3JFNj21mQbB2RiWJY+n35pq/SG1NM5F7/GiKFoy0NWHRw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:29 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:55 +0800 Message-Id: <20180110030603.27864-25-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 93db946e-9e7f-439f-6f86-08d557d74a6d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:HcgmMxke8Ah1+wFdl9NNYhJoiHsX0o9efAos03JHALR4K6gZ7OeKEX/L0kgrWPrOQgcOd/YJtNpaiTzbK3Lhq/qpIItsOuwdXmEkMaVKp6Zm4OA2yNwBHruqWGGypIT1Fzc8QyOKpQurL3v65ebngSYgk1JzIm3gPhq8SM1VjDSpEh5Rul9W43ervCXd4PW72mrN3E78I4TditCTvMoejpSCuNIuvBkn4I5Iw+tbTwH/ia65bVciB3VWkLupVWHM; 25:LqoD+coCU4we9NedeVbtLncm9e2OGdJPL28iZOb4coP6CPRSNca0i9vfy7Y0bvqt5Vuxl7A6RiQ6BmPDTNXBER7BGKOUASC/tJjYTD1eAOwmExVOFvN0NznlJNdnB31DQAGtr9hNkdPK7U4A2UZLJUfGuSfbODxQAenNijH1WtKs/vDEk7NvaG4y+fCoxaRe2z0DyC1okrRxs9JC47hj2p50OEz/F+rAn5SR1T/1a8p/GHGOGXzgRROMlmo349dJKo5R3tld6OQeSPZ4jQmvBV+mtMkTaHxi5ogwnQLXW6zyTel0Y0hy7P8DWGPRgsJk9yOvepSOzqFZqBEN2EnzKQ==; 31:TQ4HDyFkDud5WznXT+u8ADuhJMjoJQuK6e0vjt100GWJGXBKroLP43SAEzsHncujE2101HnJEcUIo9HsQz6QS1JoKvKMcBEsUNfFVV5p43yLHEOHorHyjUgQQxLkj15PZXC/4+loa2a4CySZ9ohVtvVnXoZsKPfll/4txAAz3aDEsGRkQVtZbIn2iLBXWoXiWqyj15dsAUGCo2/lNe1IY+kx2oRxkvCFCUwBYv/sUxE= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:2UZeQtti6gv/8UxjQMxQVxDOdguWFVaUmq+1IGdRu1ltToSzJ5OohRfNCJ+NsTx5B3zBHyjdQh7cHidWID01wPVc8tbO2t5Lt6RYcVYsAMJDiyt+vKP7EJ4pOe2jf8J61WvQI6XU18HKUkuCofDTqC/zIL/Tms/YRgvHp/3ZPUTcg0KKqDE7srkPR0nM26C3cFZ/KPNvuovvEQ5e2X/++k8VOYA1mf2oEdobQ/fMbEa7fHuEaepho1s0872cT39SEcEFsGOwR6rnTQ+dRyeSPH8rQEWAsPZJsslROu8kmEh4t+qvAQMNg1xv6xFOW6DH/kO2glUN4u/c+Kros3gX3VG7CWvN396RlfUD6A24DtvSjV5n3azt4omk8Um8SNMmW1mTFtR3PSUlx43mibM/pBmDIoPshJDPvhUfKL5oi68TiIfGNsk5B0S8YFd9y53DwT44Ou+wMyAgTYUsinaF7Vd4sQ6QdmUnbDoid5Ir+NVsdV/oK9E9RgqzAdBGsg3c; 4:lF54gnqdECcRz8ZU5Gt8TSj6efoxINF+npCg2mb1PTHo79JTu0kwuVU5F+fpJuQ9wpbpiKrcPpQvE+r1FEcDEbUwju2SdMgCb7LEb3dI7iIPIvrvcTkOvJbJDJFTE1HaYMGcFrf7CHyFprzGwoqXPPXD9ZLlrcZpPXCjhODCGOlaZo0abPXFulEFEomSiq7o38DFe5S/lG02TLQtWXOhVc912u94BtNfeQn0b6ycRYaPmrezyVrI10NLBt03jTi8A98LFLtIpb9FJpDukBgCqidysGsW6cGSrfZl/3WhRc7YTkErobwaxJ+2vJ+sTCoo X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:Ox+HlWoR0gAXDN354hPPmXZ7J80PDswcWpqTp55Tr?= LzGcGsdnUTX54N9UYwnX8vtCSqj3xuSoIUa/iJoJmRBOcZ0pltaXvPyMii8jVLk+jvkif1mbriHgMcvZVJO7ltyjoGKrdG/085u46p2XXGRmzQzRo4aoZBTCC62t/IHkzjzIfYjMIqqYBorDoRbkSWU6M83DJzWk185d7ABNwwoFE2CAOYq3F8D6pKqfC+5QWKnEKLMgE1Kc8y0BLRPU46+WpQhHF+XSlRwrBKkHqGGUyAXqriywGv2Tqvw5qNt58YDxRAJSUcA9eBGXMqX+sRiWNsm6UM6TpWdpCItfDWalqTMOXa3dgYUroy5FeX8B7vWuLbt9JkVsVf80eObHy4cR7ylr57/SQpI8Md6zpPgLMpCQG2YdJcWgb1C1lP5aM2IB0a0YFDxJoMp0D+wIL9T8Ong6tFiLXM5C48dD0AdhUHF1tt8ETbznzBHM3n+Ky+yKVoq5/1xZhHOjsoAIVwHincSjJo7egWwwZMOao3QrVfdBUxFeRwZAZikXKvX5GEaw04Y178TjnAmYVZbpBH79RM4qhrM2y0TCd3SSyi50CvU4q1GGE6ooJkibbD9h40YIbFnqxkfOnxrEAFXKog4Kbp0FdOQabDYFBKWyFRe16Xg9n2GieVMjCTKVOKw/xyV9G8YB16xjfqFnATocv0MT8ovMLpoz9nicVwv3L29PR4re8DnJ5fz2E4pS+YsurIkL52/t4RVPT5swDjhpzWeBoqEkcpGBfQ6rn47Q4eSi3P7Kmw/qhqsY07vh9vBOGV8pnoK7gqeIfD81V0HKhu5GBvVxmDWqzRoNcMJjgd5fYQVIlYqwI3oFUHWz4CegxJAy91XirrKuOEF85F/3Vx3rKgQbGOQqrRlQEnAWMB8GX0KcqDnZovAnZGhaZaJ4Ntxz09bDFqaLWn5C3fhtWSjgnN35vPkcsXeEFWE/23T4is8WQjFi8vgUQTrC2wWMFCn8Wq9QRPKp1q6Nm/QVlciuiI6I/NhqTr7A/HwULbQegVKQl/g04MXT4eiSoYJW7OkYNGNsR/hwV+WWSHe4+863XykntwL5pFZtOXbjwvgdzxUOcUw772JaR6xNJu+m9M= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:yhyXYAAFNxw7IkSAM1gzaR9+/AWA3b9uWhvB//BI/yJV02iV3Px9tLbaZZFVk9VPx+j1hRriZjMcA1FBKyHuKypmBUixaxnT88em1vJ1WpyFGG9Q7+bWq0T17XgEnAUoBvK6h3MBRgkUFjDmMNdTekkSnq8M93F+9Qes5Rt1YuUj43wK2CXi+GQByE2QOSm68mGx1czxZQYzArSJL69iAWLwtWFqVpMJFyTvt2DvD8AJU0hD4kxSWEEN4pNgekLHk/AeXTLyopCGcppQW7Tj7O81S9zICCjgBCJ0gOGRAZWibKv14hXr8a85Vn4w3xJ6yQa2PnMtD8d255EWyqkzhrEQfwAagMZinvlImDYuSOc=; 5:Rr/eaYlFhiL1D3Gl2w2lnr+MN72ri9eTwoYF3tMo9DwMxLYH5FjafBK2OAxigpMpFwncb/lcUMl+TVJJSBsu/wePnFEkHEHvKECG7EtR13iCKhB4OrSEu3H7fIniojUN9JDHyLxZ+q18k8BB0vp/7atJVYE+caveRW5eRQRDcMk=; 24:z5Pvj/f7sD2S3OCzeBohfg3Y8LHi8BP4zqO+NeMXPpfoeRXo3XVDUSGjGbXx41keKVESiVvzsPGXoKKQFDmAiN7ey78BdqoJGUsvdROO8to=; 7:XnuFLMrMrtqTGFXBZ4/LSvqJuH/wx0Q7Bcb0uiK/bLWBrj8ZlZnE/eIX5lsCOi/JssYIm7GAxU7Y8sJqC+ikQ2Gk33T3grbFY8KfEGYOStDWOhuTmvdhWmCHqhizsGXrldyTcJ5WptOUkEmHcxMkWjqaQ1hEi8vKIP0srDjmMzyhK4zzdd1jf9TD0STWrA5WdxtIEVRhPzvJyHFvgXiLx1rb6uEgl8xkhMogF2PCFnKMx6zJXV5DI7QaMHR6qG2a SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:29.6537 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 93db946e-9e7f-439f-6f86-08d557d74a6d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 24/32] mmc: fsl_esdhc: support i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Support i.MX8M in fsl esdhc driver. Signed-off-by: Peng Fan Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- drivers/mmc/fsl_esdhc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 499d622c6d..3a56f7c2bc 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -228,7 +228,8 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, { int timeout; struct fsl_esdhc *regs = priv->esdhc_regs; -#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) +#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) || \ + defined(CONFIG_MX8M) dma_addr_t addr; #endif uint wml_value; @@ -241,7 +242,8 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, esdhc_clrsetbits32(®s->wml, WML_RD_WML_MASK, wml_value); #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO -#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) +#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) || \ + defined(CONFIG_MX8M) addr = virt_to_phys((void *)(data->dest)); if (upper_32_bits(addr)) printf("Error found for upper 32 bits\n"); @@ -270,7 +272,8 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, esdhc_clrsetbits32(®s->wml, WML_WR_WML_MASK, wml_value << 16); #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO -#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) +#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) || \ + defined(CONFIG_MX8M) addr = virt_to_phys((void *)(data->src)); if (upper_32_bits(addr)) printf("Error found for upper 32 bits\n"); @@ -335,7 +338,8 @@ static void check_and_invalidate_dcache_range unsigned end = 0; unsigned size = roundup(ARCH_DMA_MINALIGN, data->blocks*data->blocksize); -#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) +#if defined(CONFIG_FSL_LAYERSCAPE) || defined(CONFIG_S32V234) || \ + defined(CONFIG_MX8M) dma_addr_t addr; addr = virt_to_phys((void *)(data->dest)); From patchwork Wed Jan 10 03:05:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857919 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="PrdBfNFl"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZH41nWJz9sBZ for ; Wed, 10 Jan 2018 14:28:48 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id F0616C220B0; Wed, 10 Jan 2018 03:18:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id B5AB7C220AB; Wed, 10 Jan 2018 03:09:42 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 04560C22118; Wed, 10 Jan 2018 03:07:42 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0056.outbound.protection.outlook.com [104.47.1.56]) by lists.denx.de (Postfix) with ESMTPS id DF0D9C220C2 for ; Wed, 10 Jan 2018 03:07:36 +0000 (UTC) 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=wEoDhbOZKU834QY6U0YW3fxaAn92QG3ahNK40QCIVro=; b=PrdBfNFlvVlI1bwRM9LMjR9S6C4V+sg3yV/XDHMHPTYP5KsqlEB8DfIhmHOvQ8Zn3F/VRGGKgPT+DOsH7bYjw8J2IvmA1s6zttNyTCqNfDxi1Nu0W4ynDUyK75mnn23Z2Yq0jT/V4Y3OydVxLMqv22XSobYrTCfPVP/s+2ceEJg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:32 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:56 +0800 Message-Id: <20180110030603.27864-26-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b08cb8f6-b387-43e3-40f7-08d557d74c7c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:WiUaryfo0mokYllz8gc5Cgu7eexshb/liVUdMD2NIuDPAFLAg6JFt3GmYUMgb/a7HgNxF2TNDCVCM9e6zNdChGCKHlp//rycjybwwFDBIZfRWmIxrvJ8Hab8S60wHp6xZrvpZs62ddm8W0jkbkEFj5x4ZcMilEUO6lpvdWa+fgdRd7xtV9Nz/qWlgUzC8hecEuQVrp5Y6l1FG17QxMx9hTRyV1FY6zrs9LlOU4ifKXIlv75BlMt5jjxw+aVVOU71; 25:L/b2QtJO/8rkH3gvO7BQw9YhbGfMqPGVeRlLkgcGEtZAQ/rNJ/+dEgQctaupXKOsWLr7sQadVHi7liNr1Tagspas4LladXHv8OSViWhgQEht4qUVH16tYh0lsgK76S0iN3+n8MYhPCS40nUPEmDaiRYoya4RyuNQ0IJUnf+hdYjOgxqS5kf3nYNyF6cODqUc4+Opu484cKw2ZQDYG0yUAttJvSYBqpDOEAGn+a/OCuYLfLHHRpTrzbE5WfHoIL6dlJbykxBD6TXyXpLnlLFs5OYLdr6GalDqCrXGZz+RRbntSHuDYcpd569nscJtnuKHBiWrpqkno1+4s/wD+2HAag==; 31:Pev5E7YkywVDnm6Gg9df49mbDfhRjjH35kMDBQSF0cAOIGoQ3PabpQn/G7BplVoyt356qH/rW/8YjHrTEu47z0xZL1nMloQD3MZJUqrWZg01bT/+mhiW/vsDqQCeVhB7Zm1DDJ/4L6iPW5rIGSlLvTH8I4rAw4UMHMm5XzQXmxK7YiA2S+ib2f1TeyuXn1EgOzWvVAleSg8Qu15cLQWotzifTrRYSjgsMSdFOa4/pwk= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:o/0tigf1bU+cBDwcmjFzlIsgaNnKQvmOLCu6R8VQlvmdwdEd+dVi+jptP40sPE7ZVl7jRS2qPv1ln0ovF2A9HCH6f3Dw2JqAXGd5WjHk8u0bd+g36XNKYdf51m8gIillPg7UFkCl1IcDgOc/xMNs5wNAUtsZu8bjYV5+ocsoS20+RBoE7qEmFHZnxfLzbMbjA65ZN49em7NgIUqeKSiAjomo5l3S93XxmwfeEkO12+IAstFMPgms05/95JRlEm5qawyxATrDclXvB7W1txj6SMDFpeEpmmLZ1dvFhvIGFx6Jv7uLv/tbR9n4OtQKY0Epzc2EzpZCNcOCU7el0B7lFINsNBtVmJ39Gse7lxzlfGTmrHU5E+b4Lb6gZD35VMzOckHZ8FLYwcsrS4xO5y+hWOBjK4iVC43Yxc8e44x3XrvpAeik9ALyRCuMHXla64oNpJ6wACPPeTa9Pi7DwC0CBuPYaE1ss+1bZJqg2kY4qEVgaya81rpXPJZyzywYiASw; 4:Of74Eu6CzrQGcmyGpI5LgDFh+m7gyrTOl0nx6QHa/8QJVq2jg+w/MccKcwjlEyHw/mjbWPVFtdy2fWaCvSF44XQdj6G1ppUWkiHMNPVfOFBuKcj39hNY7wonlwZZ4qSO8JyYHy290vuboQwcG4ibXC2lPRJ04wO3Y0bFJnJ04AJiIF+1R1+qucDnq0oAdIm2DKg2HxHeIOCNqprT4ciQg41PiVUuTXBQDENA5oMpYZC6cllrYatarye1lZ6lPoqxn0u+eeXtYmt2y8XMB+8SrD4ryS0eIzfQ4WsldLJNkDo6FOQ613Vl4oPhpwUbDVMN X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:1s7ohQCUNYPBVGWmobiBSomaoNaVpKjIcL0hhejRO?= gqEjuhQQ1zHWCgIcOvI7hasH8a91vdnvxWNuzruo8h2UHdZIah+gY9ZsEzvxux+f4UqEZD0UT63+o/NfCaHZf3qqVy59mestJlLiL6lasDjBqDuL/06XASBDd+4+EfQCeYhXKtEBTHz+26knxtQUX6NswVjXu3r4U+xDqQUuEfAWKfsj9Vtzo1ekEz0AL3cmdI8sntXP8yd0/3ZW4y8/D2RSlTGcTOcKb2vOlKku+E72COwGN2ty+Afl1PXAtSbg1XiDS6Mb97vke2MBmOJqMYrNu93jL6+sBjMxS2AhZ7HE5xOm9EB++J2H5psisagy7R4P9WAxQEK1kYcKXSab4lSvrN2bhuT9xKUKdLLt0lQ98iv0dfI2pSzZxuQ0DdrS99iFuphRoNo/Oe9WwElAeYFwJy4/wviD7mwPuyRXbO8l9cev1DcqoC60/YHw3Fd5GUEp2HMOzSIZA/tyRhRGl+vWay9XPjHri0MeO3rVNaILG+hbHUQs5n8osbnEOt9LXue396ZKgAxqQh8nvQ2+lEHNCI0AxLqHevZX+YwUb/3P/odxuXJ54gLHjlpfztxdIJnQ0tL7TCL5wZzkX+QuUWOwlJ6Ybz3rNB1NH1ZDNht1iZ9Ap+8XG1oBYPf39fPq+MqmHE+M3RYJiS/TqIz3j8Gb3Y7jRIUB5jbmYA+1fD1XKcuWgbobj6TCsCHYZFi7WXo0f3pQEubsBtBHpsgMWdX4dCEdK4wSwo3G928aXPApEs+hn+MUaeqL3zlpF0vJLmoQTRspEudikc7M8B7dSIEw/w8ztc6hD0JtZAnrNSa4rSBy8QPi5tVy5bSfj2ZO6tiPVYOpRhai8/9ZcZpz0vnr9ZNtM0rC6oFQyDOOXqy+RgcYWEJNQFhR3kVu0b7Y5XIAG1byOIvctSKTtPg6wSMlolfdCYWDRKW+iQstL1kEeIMGnhe6RMr9HIs6M8HVYs0HxQkYjF7LKKU5ep5J4oglEBMhBsckXHPkf4e1y4UC8sscfgT538RUHBMFndmqj/b2UlzeCG1xoYdynKuvoIxuIjyvqDWfoeKPPLPXIb6bvrJh769k48nAS9vAJaCzMg= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:9ORVs0ryUVBPnkoncT2vu5T4QUId9hvVqyXUB5j1PaigeLP7Px4Xooz4ZVuRAvMZecWVpNDd19Dpqhp49p01uxqKV8+nBG0uLXT4RJ+99PT//fCqFQpJtDl7UGT+Ms3jsUizS+913aO6UpOSRBZyoBa78DeaV2kVuGYAmFN/cqWJhJ9pxl3BQ/Ql4nfhi4caHNKEev+BEmjxRx2NCsmOavKpVztnPIA0auoIUd5jxHbnB+nTqcKKbXcFwUN98woFNr2d0bbRWUMQ8USOHilNnMuwopImv7hFhy5CTaLoPQR8JJQHRFAGSkqDPVrxr2E+YM10s71tPBdRqelm2TU+9J6xBKNKk/zu8jw5uqfxq9o=; 5:rtU/VA6YlGEnjnSOvSny1WxQtB3uJzdhFNVIdTLivjfYNqgdSpbUA3cW4+WIlubOG3SqxtMjNWQyNBjQJcJOgWJjDqLlrwYype4LFPwkdnyDIwBN5Nbi7syYl82JVJPV+eYnC52dxGBQ1lEQ4kliXnsKIbM+FMgBCabA6Tip+ak=; 24:TLnacIwP4wfr1GVng5PSOYwPWF5p0AZYo8ayUPOikXWb3Df5xUhS9l6MgUVNR+O2DAxjpqMezRSSKmXoEWP7s699DKN0LqpB40pR35JLsGA=; 7:UG9SfS88ugkHvH5p4/P1vs78J/WnMnyrfJCB+wS1Q5qpnRPQUhFmec2uA+Kilr1i1B5wj20bbV2pbCuLiIdxs3c6snma4jjlJXfRUODWboxhGe3ASdR+TRsyF5qy7PVaanR9ubm5OZ+e+6im/9YW59EiXJDOc0s+wuh8/IL8rx2j+oM/gSyT9dhi5Da+XBLXlS/y5lEPG0+rshjC2Mm+xtknW1acwrHyOaCw0lIchbhcZqjlnUME15ai1/L7H3yG SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:32.8875 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b08cb8f6-b387-43e3-40f7-08d557d74c7c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 25/32] imx: lcdif: include i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Include i.MX8M in lcdif register layout map. Also included i.MX7ULP in this patch, since share same with i.MX8M. Signed-off-by: Peng Fan Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- arch/arm/include/asm/mach-imx/regs-lcdif.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm/include/asm/mach-imx/regs-lcdif.h b/arch/arm/include/asm/mach-imx/regs-lcdif.h index c6cf03bf5a..38a2c6d4ee 100644 --- a/arch/arm/include/asm/mach-imx/regs-lcdif.h +++ b/arch/arm/include/asm/mach-imx/regs-lcdif.h @@ -19,11 +19,11 @@ struct mxs_lcdif_regs { mxs_reg_32(hw_lcdif_ctrl) /* 0x00 */ mxs_reg_32(hw_lcdif_ctrl1) /* 0x10 */ - #if defined(CONFIG_MX28) || defined(CONFIG_MX6SX) || \ defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL) || \ defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL) || \ - defined(CONFIG_MX7) + defined(CONFIG_MX7) || defined(CONFIG_MX7ULP) || \ + defined(CONFIG_MX8M) mxs_reg_32(hw_lcdif_ctrl2) /* 0x20 */ #endif mxs_reg_32(hw_lcdif_transfer_count) /* 0x20/0x30 */ @@ -61,7 +61,8 @@ struct mxs_lcdif_regs { #if defined(CONFIG_MX28) || defined(CONFIG_MX6SX) || \ defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL) || \ defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL) || \ - defined(CONFIG_MX7) + defined(CONFIG_MX7) || defined(CONFIG_MX7ULP) || \ + defined(CONFIG_MX8M) mxs_reg_32(hw_lcdif_crc_stat) /* 0x1a0 */ #endif mxs_reg_32(hw_lcdif_lcdif_stat) /* 0x1d0/0x1b0 */ @@ -72,7 +73,8 @@ struct mxs_lcdif_regs { #if defined(CONFIG_MX6SX) || \ defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL) || \ defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL) || \ - defined(CONFIG_MX7) + defined(CONFIG_MX7) || defined(CONFIG_MX7ULP) || \ + defined(CONFIG_MX8M) mxs_reg_32(hw_lcdif_thres) mxs_reg_32(hw_lcdif_as_ctrl) mxs_reg_32(hw_lcdif_as_buf) From patchwork Wed Jan 10 03:05:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857920 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="raLFuuyv"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZHL6bh4z9sBZ for ; Wed, 10 Jan 2018 14:29:02 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 86B9DC22099; Wed, 10 Jan 2018 03:18:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 6FC8AC220B7; Wed, 10 Jan 2018 03:09:54 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5D3EAC2210F; Wed, 10 Jan 2018 03:07:48 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0042.outbound.protection.outlook.com [104.47.1.42]) by lists.denx.de (Postfix) with ESMTPS id 7989BC2209E for ; Wed, 10 Jan 2018 03:07:40 +0000 (UTC) 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=8d1mKfepc/W4/HaYeq2UsTXplbSR4Peu/1lJ2dMq7wI=; b=raLFuuyv0qX+y5e88ccZ2OCDnE4gtJZWMrA3IfkeyCaxV3y/QevfmBlUq1dCtcD+wv5+tERbTBuvPBySHpBSXINRxgQcVVL3hND6t8RiKbSgWiM7VRKG2WXrtCfob80KcHnPDPEHaF/SLyGwbifoLHU1/Nej3TZHsdeRRXcYNE0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:36 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:57 +0800 Message-Id: <20180110030603.27864-27-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 500fde8e-2d86-4a59-d6e8-08d557d74e8f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:SE5sjcthcUtLFYKd2c/cWAxqS+kmPPdTUg7V4SQ5f9dU741oPF0Wvg8wCgO4pl4MK7lOBQe1jbW518aFEz7pHUHgQOy6MFT7fin/Vy6T6AJx29F6hcnkIyR+z0qCbtJqseGo4R46TlWYuy7g/13wrUn/lJoZ5kaKIjOVE15+HdP8Ix++i4maTuDiA15kneRes9IU3B4SOjOksXUvr2vmYyXsBIeLnBqmlDT9uE9PIbbHGSJGxQKTlTTW/3n/ShOW; 25:nXAJkPSrGRssng6M9l8O5MjUKy/xWzdvmnxrRthfY0ef92Gy+reNFhppvdniMe5LI1+5yhxbPkzEmOMzd63AFf8dl0KuJF+YScmD8+4NVMPSG+sn/UoxIPUY+s7PAgQTlEJMBjrbE02v2FT6NUnM4ksNZIQqiwICeUF5mtpE00so3BZyosOgrfn1NGCw5qcpz6j58lAHxmW9xFdvkoiWUrzG9fdg9aFbAa6KDxitmoJssA3Uns0HtiXyAW2nYqVQZZLzApe0MTvd4gL5gDYVHPM/Lf7vtx3hsYFpkA6W4vbPtur+yrgO0J5f2f6MftiKMCkeGl3mRV51TrZKQHFcBQ==; 31:tIWM8Na89ZRgay7oZRwdb2gwNZaAEXGaosGds9tQjsWaPp4QjmF+eZ4QZGMtAp55D7+PI/lRRPp2zP+4BBE/MN137RKCyYjbkD6r3dxQag3hvpitNBPwlXg4PLK2EiOXtoGZJIU/4GnuAxzuE/DT4MgYRJ+u3ifKxbQ8hF0s8GzcVAljwwZtcbL46dIWL3HHqyd8KNM5cCqeZeBpoH5Kd+aD/0FKqRpiPlyq2nfdv1c= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:GgaojnrAyiKgxAOztWOS2Woz/8ek09ufxTCij9I+OSryvNdiglKA1hRjn0VBwf5HTMfbo3hqimvtcXfcbD6lmaXpdmlNkLaqU+YiOp8qOmdDr8Tp6pxOJQJWcY4dtsLnkONhkHVI+FKeKu/Q7m7ccLX9rJLef1a4Hah1WqmSagWxVLlYuwZnaDA06V3xjUuFL/zwzh1K5Y7xKmktReP78jVBGNKgiwIREmnabGf7QSfWrdxpOMYbVZn7ITkAn77/eh62Yz/8kxfVoV3TmuJkFYoHbPD51JnBE5QI0vH3mf/uuVcEMaLWqlPHgXQHQtgK6a66FvRFL+nhJaL9gcQ2OY40eQu3NJ+UsbW8zi5yNeEt4HYOAtLjQKbQGDXKWHHjPgrUVjYc/iASaeoUudQ4zpHjFqbWwGXdKt0e73A7IdyayMuruqd7kw9BvWXidVnlTzgYBlKhlns17dJiPB+EOXbHOsfGM7DUZpsnzqP7tmOxv3cQFHv+V3Sa9E+MHlux; 4:QAT+Fd46EMynYlEX8lKvP4GEGNKApg5U+IXJnj9TH440iTFATCQcbPwurUYeJ9Vy8403om/A4ShhZwyi1oRMOUQZtB9aKSoPyOUkRd+9o8OgnIA67J+d8lEnj9fK4gBNPXnyGOCBkt4YWZutL1GshBkASeYgrL7AYetZ9XaN/7A8ZuqCRQlFqFglFpHtyvVYof8UUBJwZ43RyaJwnU/yIVVvi0pnW/bM+dwbIet6slWzcYiA28vXrJ9EduFyKW5IS6ujjnoEbsUQrS2KtEBj1MqzKaqUUjUtng7Jquq59srf350iAJbGbN2YgCdBRx2f X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:OXf5n8pVFHfHCIAKdQ5BakEOrA85DiomgbfB89xHg?= opmc/HxSUFjgv58b2pe+hqQ1o4/uygESS6FRIvXB4IOdFeJV8wm9NZ0mwkYPoESWS45y4ITjEmL+4Yf8654fYKGUx6BRW0onAG8cRbsc3DP555Cj2pyRJOw2BxagUHF4VSytouqZ4+5otbBnCbA0+US/eFIEXTGzJRZestxt6LhlMaFHFQgrrr/9ePmitTDyUAuDsxcGGY4hHexSbpbWM87HBPWMSA5cUijL5ob3vfMz9oBbhAb9uVZlw9Z8rZVh7ajfwxBRNJsu1nJW/vBUdxhaz6CjIYLbcgL0McZUVRh63ABN9/YnjajiUU2iqzx3ZcqomoaspzmvstPrz/VY2uwTxrpQt3Hh7BJYLxeeVnbGDekyOmWqGdY52lQMYlTz9BrF/Jb7+XVL6jydfd+Nj3QX18OnBAniW2uRk5a8Zc3cfuF257zk2Vc6vTFVI5H6eu+5fI+Gx4+Si43lr7MC136J6th6dd1SU3k/4bQcIa+wcf6AkKgTB9SCa7TRTpfSdVpuQsRhe6t1lINLuiYbmBF0Qb6Z7veFfURMc9DvfHTRS+Y87zQAyFYKUZgQpeA8ZG3ZsQevEDywU7ShLVeU6xrshUvwMdU7bV1mT7ApV0reTWjyHGJ9eu6omr/RB0gy7ZOtP4POe+fsNymCevpz9/NjyrZVv8sDBRUPyw6s2dyvrST3tqKRBBR362nMtxoLf6aEodiLxserdfBAYA/iWyYvBWx7sBc36KTIIN5hJeE+YSgv40lEgAPYo4h28iUh+kRRZopazruUQG889GSO63qknBsB95f+V1U56J0CD7q2oDWYKs4NYbyAlhubHq1K/LKh1DixNDDg9NuC33Owg9PFWATWDvvIq/6PSnkpD0Qvqtz+IqZlYy8ayQh0a6JfXUD0/GcQcbjUYyWqsAD5KK1YYH+hir14rVHXRAo7/Lpfy/Uv6BF7eFEnmKPYLY08K/4ZY6rR4cXUs84lPpX5cgO44ps4PFSVN7KZOir12lcX3JX7wE01NpqWGIWE+ClZZpFrmdZPY/vtxz4zopZlmNNI7DKGM69eUFaXL634R3xxH1hgWECa9i6skR4pmalgvfmRtmInwuNV2s7Ft+Ri0EE X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:iH5noiz63bRoyyZbT5D8fka1EQQFq3m2AEKyZfRmTVdR0Co4HI1GoTEMKPJNnRmnOF2CCkQ3hjl+35eZOYHbaLBKMAoGEVXIfxlE7lIZthxGX5pK+sUu0PN6gQ4e5dyWrVjUOpPYBrbuHKhDhfXfoSAOAjlBha3+GzY6agoRopq31F/cOYt0SZm81d3TsZhzxnIAdEr07NfpkTRuSYt9CpuDFrIE3S7B5a9vteztKw+5ngMrC63RxJXzUkWf16XuNgXYVp8VGzmAHusWlNG65HzQLVz82Tau24HarfKSlwAHepvvfd2DPZ0fhwDifwGXDW9jQsygHOMplBT/sq2N/G8XOL+ftcS1GhrM4luNuGo=; 5:WBP0vRkK4oAT364kevtScHeJD5WaOh8Dr18kRgz3GZBN9LUKE+nWrRguGXjHSzFouV+wwqKChdiFmG4aKrRV7wNO3axsCu+A46Fu2IB3Z37sT0atXB1ow4Y8FeBdQ5L1VbHDeutKe9DT2yOFtOXslXCSt2xTOUMAyhq9DoSQt6A=; 24:EGISYkKfuaN/h003ynKP7ITGBJY1WSLDNfc6G+9s6TM/rnG94kwKwRfN8vAOc435BoBLUlCpnlhlM4FuhQP52XWWsCvpbzFJwjaZAUaA6wo=; 7:g/qEArs9UR8YrgCsIW6wqJr2YjBHJsNnVsWKOe2uPd8FSCVwgwhv2cKY4/zD5J2rh9j26VP51BWDeaU50t89gGZ6zqICasvLbyEtaVcXjObwNuLYCZ5R3dOuq4S5sf0prBzGbh2jM0VQGDXpAEHeCAdImZu9EunzZix2culoypkn7AprjuK+xzARfNDeasQ3Ia+m/+eCdV601XKbzA0xTdc37Gro/V9J7LaMEcIGqf0vk5W6EH5uvRL3aQJpRen6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:36.2932 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 500fde8e-2d86-4a59-d6e8-08d557d74e8f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 26/32] gpio: mxc: add i.MX8M support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add i.MX8M GPIO support. There are 4 GPIO banks on i.MX8M. Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- drivers/gpio/mxc_gpio.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/mxc_gpio.c b/drivers/gpio/mxc_gpio.c index cfa620bceb..d0e365a54b 100644 --- a/drivers/gpio/mxc_gpio.c +++ b/drivers/gpio/mxc_gpio.c @@ -41,13 +41,13 @@ static unsigned long gpio_ports[] = { [2] = GPIO3_BASE_ADDR, #if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \ defined(CONFIG_MX53) || defined(CONFIG_MX6) || \ - defined(CONFIG_MX7) + defined(CONFIG_MX7) || defined(CONFIG_MX8M) [3] = GPIO4_BASE_ADDR, #endif #if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \ - defined(CONFIG_MX7) + defined(CONFIG_MX7) || defined(CONFIG_MX8M) [4] = GPIO5_BASE_ADDR, -#if !(defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL)) +#if !(defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL) || defined(CONFIG_MX8M)) [5] = GPIO6_BASE_ADDR, #endif #endif @@ -349,13 +349,17 @@ static const struct mxc_gpio_plat mxc_plat[] = { { 1, (struct gpio_regs *)GPIO2_BASE_ADDR }, { 2, (struct gpio_regs *)GPIO3_BASE_ADDR }, #if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \ - defined(CONFIG_MX53) || defined(CONFIG_MX6) + defined(CONFIG_MX53) || defined(CONFIG_MX6) || \ + defined(CONFIG_MX8M) { 3, (struct gpio_regs *)GPIO4_BASE_ADDR }, #endif -#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) +#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \ + defined(CONFIG_MX8M) { 4, (struct gpio_regs *)GPIO5_BASE_ADDR }, +#ifndef CONFIG_MX8M { 5, (struct gpio_regs *)GPIO6_BASE_ADDR }, #endif +#endif #if defined(CONFIG_MX53) || defined(CONFIG_MX6) { 6, (struct gpio_regs *)GPIO7_BASE_ADDR }, #endif @@ -366,13 +370,17 @@ U_BOOT_DEVICES(mxc_gpios) = { { "gpio_mxc", &mxc_plat[1] }, { "gpio_mxc", &mxc_plat[2] }, #if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \ - defined(CONFIG_MX53) || defined(CONFIG_MX6) + defined(CONFIG_MX53) || defined(CONFIG_MX6) || \ + defined(CONFIG_MX8M) { "gpio_mxc", &mxc_plat[3] }, #endif -#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) +#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \ + defined(CONFIG_MX8M) { "gpio_mxc", &mxc_plat[4] }, +#ifndef CONFIG_MX8M { "gpio_mxc", &mxc_plat[5] }, #endif +#endif #if defined(CONFIG_MX53) || defined(CONFIG_MX6) { "gpio_mxc", &mxc_plat[6] }, #endif From patchwork Wed Jan 10 03:05:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857913 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="xl8iYVSS"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZCt2L4Qz9sBZ for ; Wed, 10 Jan 2018 14:26:02 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id C3679C220C2; Wed, 10 Jan 2018 03:17:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 31F6BC22110; Wed, 10 Jan 2018 03:09:06 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 488FEC22096; Wed, 10 Jan 2018 03:07:51 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0047.outbound.protection.outlook.com [104.47.1.47]) by lists.denx.de (Postfix) with ESMTPS id 8BF5CC220C9 for ; Wed, 10 Jan 2018 03:07:43 +0000 (UTC) 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=rxiCbzxKr57NVdjJLQntDVlnVh7e7KuylT/2zxRK1yY=; b=xl8iYVSSmRQP9aRqpOydGEml/DVszEQMVRxbkJuz9HQFqQdETZZ6VL8DK9yRsOK0CScwFim7pNZLuMULvogmpZGY8RHXr/9g7sk8x02pet/x9JkcuWC/a7TZi+m2LllrPwwjit/FZzKbvRayh859K9WqELNCJlr6MdNxb/ed2o0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:39 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:58 +0800 Message-Id: <20180110030603.27864-28-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3b612ed5-93c3-4bdb-d489-08d557d75067 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:XeW0zfQ7Bk6abS6e9P9UwSmtL4/OEVZB1113h/BOCNUGIAGG+Xdl+580Xj1zPhr2hgTEPBpbasgA4cHLHdlTTjJIpyyDkqywy+UISydtDY542YqcZgqX6sXxJdAF9y7me1biuWlOVhJ9/gMFTttTHsXlQn1bk40BhZTWLU59tY1I7k8MP9WELC3LOU6hZuaROvmizxIX/p+KncufTVNfe1Y27nUY2Fu3BrPvhBVPV9Flok8uJDpKv8LNUikRGlCY; 25:tpLu83HP6hIJTZMA1X8yGwF7nitFr8/Ylgb2oCK53tUFMZcphyfx64UFbTKgZfEVF1K+Mr0QP9PnrRaMb7ub5LS8LwXM4Aj4XQWkwDVNkG2iPjfLsjgHJB38KvRUP6JszgHA9FpRkOvLjXkgHSxkG0qOKe/EnP0xXsLer6fzbBRgZHns+Mr4paGpUE6C2lpS3NzRv03dqRjN4jJ9THiUFxb4vl6e8XSEbOOhr7NX4069LasUGEKv04nU7JiVyltR3Lwi6oR0evOKmUyhGtLyFOP5m9td796jixSWth/9otVunCmltXmg3ERjzO2+hO+5o7ilsRNM8CJK2On8vOvVrA==; 31:C9Bj0ukODuXy1Pkw5BK1zlxXYwp+Wc2P6BhJoMnkxvpMw631EYaJfukFNDZQcWC38gYgd3mjD5IarbyuabEWUKiEMv5oueQK+dLYk+2QKWHce9z6tUKiXS9uLM2Xx9PYeIduLx0sfx4rNjxlJMvEwRbUoD0XrzQzNPx8h35c9uvsDhvyKiqWxTTrdLdoIKLljZtfqcu8sg150gZhmogFfIbhy3bZlEaOS6ewWMp1SZM= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:9mBk2MiBYcRS0ej+/lkAtntpsQMNOtIiNDEUqtNbbIjB6pCBx9uaZ592XQs9wCm8UcOCUVxtNEN8+q4V+hGYvJGJa1o8/MQqdD6/RDL7VAkC2YHzuA52koTfc4ofl3S5useIbsP/LfJHDnGbNy07whjGvC4XH5R/VFTKgaExPSUHSJ+Hmg7VMMFbvcYF/TepqcfbPQye09kj8xBP63t3uY0SF1LLhOHtzqi3YQWejuKzfp1W+EFi0U7MKtLJL98zzP3i5fwJWFf84xr+RnisYx2JSgPQn2M4m5FoGdM8E91m8zcAlsbY+Qi9P7/E4irmo/jYpmfmzjNgMGDUa2XrHrl6glgaWRbw82+mVtO+1a8+M0haByYBqIeI4Jfuyk3NJlqIKI/hEMDMRuT57AiwTjo2RTo0vPwqzJfM/kjb0/kSaxWflhamGmMOK9I4TnSuPEDlytTHIbr5rHWrF0gJ/HBRqePcGmaN7k/Tlw96u7DrFSWgpspajkCHO3EWJTPQ; 4:KLLaIRNCYyfhIqG3gAB+ZvV3PlFcXnekYAfayrfr43XkN8xLWDzWqMYHfEijkEH8UZk+j25bN0BJYiX+SvJqIuPDfnuMYz0ZFA7b8uzznR8e+G9Gtvbsf3OLJ1hTY6jkVWIV4QKWUhBL1CdMTzqc3epapqkLAxNjk5djN6o0f2lClhHN8EcnkzRzSoW/MpGLZ94N/ftd0/AUmRy8U9jb6mVl7UsXsRkaS1HVq+hbie45wBZtH+GpiQ4TocZFirrd8t55gKUVa/4FtLopuOGapz6Q3VHnKmpWcq6JzsOTY/L5SO9GN153EKF8DwrN80M3B8waJCFcLV6rtLstLCfsUjShZ34aAJNwCr0tmCUjXac= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(145744241990776); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:cPcAj7WwXjahsDD2wL5/VfglZEikhqQFyotGVrGTy?= 6kLVBJlm8JhRKbPGE2zgjenNRnNN7TaynScD4EhYpYG6ondhuNGJtON7sddhC/a5Hpg5temACXWSCYsgXGUL8leufy9zWJDcNlUaBjBUX9Wr095fnCeIl6WLvjpc/X/YkWPjobZ+7Y3vAgrCheuBkAH/JpXCR4yq1JJ7F39ThI51Y0uKeNoBD21rT8J+Cu4m8FrgsccEjd+0W24DnTSU7w6FW4lLjm5PL5HhkJxvNaSOtyPuxQBREVbPo8eDPKb9XzPQ8yJUF43V1ba4XO6rkDaQQsEcUt5io11IQZipL3Iqt/Y2XaUTTryFEntWAC+YSVBxUCISx/BEDvW0s58NDCncCeJSAtFa218ZUiXVj+iLlw+CZWniD0vlrWkascAy6eYJng6GSaxwyS4gVsSv2vef1OhmvhyFbbhSdR1xFowPsYdE3mudOPv7HOsIh2AKFwelQI+84AeD17e34v4sbAaYcMfShkO38kekIWO5AsIsE+VeF2f7a6c+iWtB6LcTMxsWvh1LgIJ4XPTEwYjxqW5BiT55aprHQL6zLYy6L+aHOGYrZgbiIzumqrRgny/zikUR6Fbs9NUfKoKKV/fPtY+xlRtuCQ7KTgIQV//tLMhO/uv3WhwoHtS0x5ntn/k1T3pj1o+jzA1k8XjeY8gm/QNVYkeer019tK9W1wCx8nyi55MT/F5IN1DTItN5RuLIP1DNGQHHdqNxroRSXzdW4pezRjAvHG+CYS5KxcY+85qGiudvmzc1ruJgtGZizXo798C14Xa98y1eFthVsX4l2Ec8PWkn5ckC/HNUmsZMqlFPSnLxv6i9nPpnfBZb4+C8LmYpuCehQ5THyPUtSS30ZqIilsldnQK+oQeQ2REZoq4pSVCuqoSdlNBbyM6jcqhIuDJ09/u/tlWhyF45cqZkUhBtYiGCPoUF1ujJLDmTJD3j5+GGo+OA4wr0zH9Av8rMGrcfn2AayjuRlbGY3HtXckpOnBQKPpD1zLc/y75hvtRe01/64ifqmbGwcvCw3uXMBVwFotTUGEtltVKswRHhjkhUB51blyUO8UxxtkM6G5bDi94P/diiARDlbs0fCZClUAuIEsRXt6mvTkER4UWQHlv+F4mMoQlEQfsx90A9evnBg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:diyP3CWti0tnEA+Q8c2zgSh4kIA2M89Cq4w9wkjkTy9L+JdtqUd4z1ANNMEEdDHHbLNWrrFhZy2GyPKnuP/Wa8xgX00ykzHQufILUUrnJrA2A2CarSphatdOYj0u488ItfSR35bCo50j+NBWLQjWG/gplrUlBtc2PpVwXfezdsTWm301o0YmhzYArQ8R0gv3Rs5NDuNy3eP1WCEdBbEITSzhLMo2XJsM+/4pUBiEBgX9Jm1c1Qe6ZooRWjO2UetxwHwS3CxKVES3ndHs0kU9kzA71895uT/Aub/tLxSAVONT7xGgShBQ/RGxK/EUR4tV7sHDJYAwdgJj+WiyAkTg/Z9WlxLkr1R8iOK5sszRGw8=; 5:r8GHXxsDuETPaOGE+oXEMBg0dKylD7r+j1j3JxD+I2AVFgVAM3nTHz8FImCJjjRiFqNsgVznX2pyJFimR0cHEwpy57Jw9mpMhZhCn8DvBMa1hLJCje4IvrwKY716A9GU/V1lRR/pLTCik8jhLN+dLPGPjVzjHNxe92tQW0ORhdk=; 24:OmZbN+ST/FwGcnxDu6wMBgOMOX2NsOLejGw+F2MBsSoauR+LFbt/BcUz9XrUqcIuT3HRJqXIaFvtsxUR1szuVO56GDMnLCcczqadc+EUuAU=; 7:UHJBPWVQOaUkHd0PuIjcWswu6QO35SS71loO3VWrPOxAVxfTvYdfIArApLZmHIRvXisrdWYeEn+kLQFBG9sGAyUk3xi05NNXRAWtCMj+B0RPVJutnGTxN6hV8BhvOjuCcTvkHz7LPKo4Tbs8MXVKaGjGzBFAsylHcHZsOlV1PkzOnwiPjO6B4FP0baZrad7ezh3kmMqz2KdLElLuFfmX/kwjWRTPiPbgCU2qCC/5WXkW8tFTaiaqft+I684itTMT SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:39.7457 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3b612ed5-93c3-4bdb-d489-08d557d75067 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 27/32] net: fec: do not access reserved register for i.MX8M X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The MIB RAM and FIFO receive start register does not exist on i.MX8M. Accessing these register will cause system hang. Signed-off-by: Peng Fan Acked-by: Joe Hershberger Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- drivers/net/fec_mxc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 433e19f0f8..4cbc8cbbfd 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -562,8 +562,8 @@ static int fec_init(struct eth_device *dev, bd_t *bd) writel(0x00000000, &fec->eth->gaddr1); writel(0x00000000, &fec->eth->gaddr2); - /* Do not access reserved register for i.MX6UL */ - if (!is_mx6ul() && !is_mx6ull()) { + /* Do not access reserved register */ + if (!is_mx6ul() && !is_mx6ull() && !is_mx8m()) { /* clear MIB RAM */ for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4) writel(0, i); From patchwork Wed Jan 10 03:05:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857921 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="pusy8+l7"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZHd0Dj6z9sBZ for ; Wed, 10 Jan 2018 14:29:16 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id A7708C22099; Wed, 10 Jan 2018 03:24:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8A205C2212A; Wed, 10 Jan 2018 03:10:34 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 00900C22080; Wed, 10 Jan 2018 03:07:53 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50084.outbound.protection.outlook.com [40.107.5.84]) by lists.denx.de (Postfix) with ESMTPS id 6F3E5C21F74 for ; Wed, 10 Jan 2018 03:07:47 +0000 (UTC) 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=w5Osb0XmAmlVvB121ZPyAqaBk8nfTzIc8DcqluCsIkM=; b=pusy8+l7v7bYlqiiDurl/AtIzeXr8wd0u6m0v50PhG4R6PU3KWAe+EgEol4KCtpDRZ9S0JdhQxE14CXI4DqatLMLS9M6m5SXvzkiO8CUX9ooHMdwTjA16BJiHeWIvfnPRD/wQgCuZj63XEHw2VoWE0n7VyTiobkRLjHgFQbr2Jo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:42 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:59 +0800 Message-Id: <20180110030603.27864-29-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7d6c578f-6f58-4569-d629-08d557d7529c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:Pa3y7Me4YRcUolDFtK6a39QN1WloHRaiuinGsdZt5JOyVlbQCWrVkd5wpK26e4RO6NVFJSg2fqmtnQCbUHyU2H6VfCdgNls6xO99NlMcY2rT4MESYNUfZwtPZ44Gla3IBWXr1bey1Z/goGKUlep8myQnzdZJmWDGZRMBHbrjYx1c3biyEGSLdqMyDJDbnF9Eg6GptsaNMyeJMbQ0941y/OwTmYIyEyH0cQLZRrcVVWknQmlNbClLxOpWaeOvFUHr; 25:g0EvW2uNGA3GWO7v73mOI4PccipX+27dhTkQda7ALKcjHbX2ooqI/DcBaThZWPMSsJye5FZOs5QkRkFsJ9vx/yCYdO+2Qeg7DHLToMAPhqpmkv76d1NNTK68Uo3NebNM1nhdpfPj+AmYd7SyD14WU1zN2zXSlPVqUBsDT1MhYHxlVRl9nNx/NTaByuUyICNyuFMKJmJzuyyIrzyy6P25ztmJV8wE0c+HaLpxjMSBy2dAz/Gn0ZiyvZ/EElBwA704/IKA+n5fdSOPWyD4V809KgUi32eLPmv2BEC5l0uDyLlTvIJKh3i7lfFSrcLw/0LAeZR92GDoz78CxZNgbPNyFQ==; 31:0c/j8qZWALCvylA2K6AY5XDLjUp6d7tAH0/kBrJCFDGQluQfOuC6NR2yxieSj8o/EFdRAVBr2SYXWa0JFhq91uH87yOVYtVQ6qkiQNn6ts1pBCTT2LU6fqqUsPtf4vMVOPr11fJfrjbdbBWc7l+SNwxUXUhkRhe4nIxPr5A+CHKNz6NSkDuaTJA0xfT8DeZIn1R2M6QanMX117IK8ztGGEQNIguvwH5lBBTuRZj5mhA= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:wGkEPgxYS5+54zNp5+laYdbPQXnCX1uZBW5hDg6WzZV+2uJZzwNRVV0ksHSdXmCP5+VKrEyTdbtOk0+c2E9aNp2zPv2HathX7ulVafBykQ251xyEMwewvWkgwj0l1ZBdx4+FqJzalJi7JmazvSIQL4MbIUSsn+iKc1E+VT2Z/+ibWRIo6Jk+500DJJpma6cTwzQ1aktTf7Ulsjuc9vKjAAXZYm1uwf0MU2tpwtrgd1uUjH24+2v2/UpV5sq5V7HuEdBeFkX5GYZzck0xK6al3JNM9kpPOZYDfyNoj7ff3O2oytb/ai/UAE+5G4wU41ddcyRv6ne+GyoGTK0EWsx7/qRMbjKAbs80c12ppH/reE/7aZ3JwIZ4db7fWj8kJOPep6lMLNkX7XAflqWAKwd4sMX4uDGECWD3b2Ogcm7DqaM7bxDgnRRl95Sb9dqh2RReYlLpZinemGbgNIoTYgwOIsKxfuFCyshIkD3mPWbOdg4UJeIK95xdOuwHmSXFcmpq; 4:JazHFgHGFKDvq2GPAl+0dPcmJbm/X7aOQioSowE8sszM/TIDECPq0X9UsMyXJ0nfwTFxPa+IwkcIfiOz/OWv+kHZ1wRTOM2jQvjxCLOdGlipzb9eKzzPxDrp7C9Bmz37LDNrKARNzAKPWm8GbGtbo+F7sRJqlTVT7B7jWdtF1y8wcqNKm/TzQG0R166BrhgD4XItLKS6+oECuXZ7e5ONwoz0birN1A73Gsj+XHLq8XzecgPT7GCgo3T9dsFtQs0P5Z9i+2+EeJZSoHDNMQUl4Qcts1jiv4vRvmUGuRhdXlqNNGoAYFuFWb1eJR2vWdTVKO6pQKNZeZa/ScjYRbQ001/SmswRYpd/B3oHunRBnVc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(145744241990776); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(54906003)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:6IvTUMBv65Yey4IH8tIm1HbbsawZAwESzOb3qyfZf?= eukyqfulRh3b9wSVga8YEX3KSMddVeJoUhgYJPFP37GAngkUawBZs3F8DYMayhZqRXG9fwOs8bes1XZgOkg2eQp9YTFJDQFScEx9MfPWxLAl5sI0YHPuTq7x/SvyZhA8TyfKRyaNpqCBeame3MmFWO3gIlX0i0UsF7VLVDxI18FZAPRKIvN4CzzNede4FxkQh8wql61N/+STFswk1o+nZZx5CtIufJEN1Rp1No58qhtdC0aJH2x57wvkQZuA8lCTXoU7g8YkvHP5JrrdfPifDIw5KzMNzFYaWyOcCaAdf3Lm39u7G+o8BeElZ5dw9k/hw7eL46MMDxgDKBmqaT8Y8U9X+zuh9gTc8NgIWEVTCE6BxJ/3e1AB1il/hX+KBopgiVzc0Obd2p4uWV8i9xbO+hIZgct8bhLEHI1GiZdfiIZDU2r575QDwQcPhfsxWM37BjVXkPOtbtaDmjDfLZm6KOxZi1VrTs5nveedgyPxxX1WlIJZ9XxJZn1w173WG2FjYwgThbPgj3JnGVYd8f+4yoTP0nejQHYDwEUgOCEJCve2BklFo2sFAVpp8exHrhAWkPGUWaDqtMENdZ1bTEMWMuJx6npseGAL1WpzmaED0v+ynO8sTxm2WHhNA5dNM3O+EtuiOf3Xr7+q8gSdV5A/V0hEvVovo8KSRYmQAANeZn5Hv0KF/nqxrQCPT9GEaOFd5vhUbvW+B1ba5uHh51negUcVb3qQT5ap0qGGsC5Ek1anfxPfbzBoCWM2qCNyfTthnPYzofXrjc2ZRs8r/squx5UnT9sCn5zBiNsvYSq/a/nwW9C09aIPShwYxk+dkHcsoGBpLsjn7b0iCM4J+MPb+6x+UJRRLDXKBZlrtUXtcXgs48w04eHAmaomfEi+yqy5mCeO7ldu8jcUEIz9l+r3g5sAWdP9vKgLjxzmj1FxwJdRjNAJ9NxEkOr8QFP6yHkGpInQksaJTQn4GTeep8zU8FBy0uHZkkEMM9ouZigkqKGY/KVXacV8VPFc2H+vgCZxaWwosKi9Lm2hdp05Fvo+dlPsrxnpDsbEmo3wxnsd9K0FJrSlxV7Bz0SUM/WBjjba/wahQKWHn5pnfXHHsxD5D5rxIPCJADIkafw9qUHJdEIRA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:b/3DocqzdKFcSmiVXn6Q9TKwPJRnk/ym1UxevXJnwwh75xnH3TWnA5nS1CoIKJcHzz8LCcevlbhgjrcPIJvvEzvoUF0MWvfzac7aCyvzf7H32047ATgBotLCGoR/C4oEFigd1Yk4ldtSom2gCM3JvaQT87X2+gmPyoteiwNPiqUp7oEwkobJWhS9V8fLbjB79tS8Kvc8yPeyVcFC8yiOSxBbT3/bUDWkZe7NBqioqSc/+8Q6YowvCpDamBS6zn9CFwf6zLpDvvlYeiwzp6j4IMTVWPG22LgelnlkRtOrxHC3E1cqpPK4CLPgyQ0K8rZlKzZs8+QPCi09wZ7yBHOhvAGteZJjiIVLR4+A/rZa+Cw=; 5:5sH29dxiNfQ/KQ/xPpJ7gM2/TuG+DXwdPu2rWIJqr1hHG0NzCVpJacoQFFAvTPpyoTznYMQDUbvGC1guYi5IpQBW/4Hr0YzLl/qVUquAogERSuz+FSSanBRCqBszbQkNW1a7KqKyFo7aqIyBmU76lN5JhqIim3th4DzPCQTM/Yk=; 24:xwFTexvir5bSd7upHXrsnVDXjskfocBPmt3hHyzfH3Rn64Iwo54Q9Z9t0AAob8Bp6Nh16OW7yKt6yK297YdvtIpfeY11iVB+vhAlmw61En8=; 7:Yly5ZLqtNWtEUb885hbxRZM37BW4sHeAlVnc3DwYznetldrl9l8VfmqvzaGcwHdxZP71YlOpEoQg9H9RFR+vbV3BMV5it8B7qboMqSZPkEAqvixXO2s3FvFM3KR8aVjVW1bseOFzSJOYXqF2o3uzEhWOriixQacHJjW1mexMPx37WYL4d/zC4uJoPiDFXVoFsNyoJsoGtx8G+u0ppzmDwQtcxoRA13LVLfPO9lAO72/RHmQaVIbu6WHk9ciMtqu0 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:42.9171 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d6c578f-6f58-4569-d629-08d557d7529c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 28/32] net: fec: fix build warnings for 64bits support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Ye Li When building for 64bits system, we get some warnings about type cast between pointer and integer. This patch eliminates the warnings by using ulong/long type which is 32bits on 32bits system or 64bits on 64bits system. Signed-off-by: Ye Li Signed-off-by: Peng Fan Acked-by: Joe Hershberger Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- drivers/net/fec_mxc.c | 74 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 4cbc8cbbfd..ff7ad91116 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -284,7 +284,7 @@ static int fec_tx_task_disable(struct fec_priv *fec) static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) { uint32_t size; - uint8_t *data; + ulong data; int i; /* @@ -293,9 +293,9 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) */ size = roundup(dsize, ARCH_DMA_MINALIGN); for (i = 0; i < count; i++) { - data = (uint8_t *)fec->rbd_base[i].data_pointer; - memset(data, 0, dsize); - flush_dcache_range((uint32_t)data, (uint32_t)data + size); + data = fec->rbd_base[i].data_pointer; + memset((void *)data, 0, dsize); + flush_dcache_range(data, data + size); fec->rbd_base[i].status = FEC_RBD_EMPTY; fec->rbd_base[i].data_length = 0; @@ -305,8 +305,8 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) fec->rbd_base[i - 1].status = FEC_RBD_WRAP | FEC_RBD_EMPTY; fec->rbd_index = 0; - flush_dcache_range((unsigned)fec->rbd_base, - (unsigned)fec->rbd_base + size); + flush_dcache_range((ulong)fec->rbd_base, + (ulong)fec->rbd_base + size); } /** @@ -323,7 +323,7 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) */ static void fec_tbd_init(struct fec_priv *fec) { - unsigned addr = (unsigned)fec->tbd_base; + ulong addr = (ulong)fec->tbd_base; unsigned size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); @@ -423,7 +423,7 @@ static int fec_open(struct eth_device *edev) struct fec_priv *fec = (struct fec_priv *)edev->priv; #endif int speed; - uint32_t addr, size; + ulong addr, size; int i; debug("fec_open: fec_open(dev)\n"); @@ -439,7 +439,7 @@ static int fec_open(struct eth_device *edev) /* Flush the descriptors into RAM */ size = roundup(FEC_RBD_NUM * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); - addr = (uint32_t)fec->rbd_base; + addr = (ulong)fec->rbd_base; flush_dcache_range(addr, addr + size); #ifdef FEC_QUIRK_ENET_MAC @@ -533,8 +533,9 @@ static int fec_init(struct eth_device *dev, bd_t *bd) #else struct fec_priv *fec = (struct fec_priv *)dev->priv; #endif - uint32_t mib_ptr = (uint32_t)&fec->eth->rmon_t_drop; - int i; + u8 *mib_ptr = (uint8_t *)&fec->eth->rmon_t_drop; + u8 *i; + ulong addr; /* Initialize MAC address */ #ifdef CONFIG_DM_ETH @@ -574,8 +575,12 @@ static int fec_init(struct eth_device *dev, bd_t *bd) /* size and address of each buffer */ writel(FEC_MAX_PKT_SIZE, &fec->eth->emrbr); - writel((uint32_t)fec->tbd_base, &fec->eth->etdsr); - writel((uint32_t)fec->rbd_base, &fec->eth->erdsr); + + addr = (ulong)fec->tbd_base; + writel((uint32_t)addr, &fec->eth->etdsr); + + addr = (ulong)fec->rbd_base; + writel((uint32_t)addr, &fec->eth->erdsr); #ifndef CONFIG_PHYLIB if (fec->xcv_type != SEVENWIRE) @@ -640,8 +645,8 @@ static int fec_send(struct eth_device *dev, void *packet, int length) #endif { unsigned int status; - uint32_t size, end; - uint32_t addr; + u32 size; + ulong addr, end; int timeout = FEC_XFER_TIMEOUT; int ret = 0; @@ -672,13 +677,13 @@ static int fec_send(struct eth_device *dev, void *packet, int length) swap_packet((uint32_t *)packet, length); #endif - addr = (uint32_t)packet; + addr = (ulong)packet; end = roundup(addr + length, ARCH_DMA_MINALIGN); addr &= ~(ARCH_DMA_MINALIGN - 1); flush_dcache_range(addr, end); writew(length, &fec->tbd_base[fec->tbd_index].data_length); - writel(addr, &fec->tbd_base[fec->tbd_index].data_pointer); + writel((uint32_t)addr, &fec->tbd_base[fec->tbd_index].data_pointer); /* * update BD's status now @@ -698,7 +703,7 @@ static int fec_send(struct eth_device *dev, void *packet, int length) * can start DMA. */ size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); - addr = (uint32_t)fec->tbd_base; + addr = (ulong)fec->tbd_base; flush_dcache_range(addr, addr + size); /* @@ -799,7 +804,7 @@ static int fec_recv(struct eth_device *dev) unsigned long ievent; int frame_length, len = 0; uint16_t bd_status; - uint32_t addr, size, end; + ulong addr, size, end; int i; ALLOC_CACHE_ALIGN_BUFFER(uchar, buff, FEC_MAX_PKT_SIZE); @@ -854,7 +859,7 @@ static int fec_recv(struct eth_device *dev) * the descriptor. The solution is to mark the whole cache line when all * descriptors in the cache line are processed. */ - addr = (uint32_t)rbd; + addr = (ulong)rbd; addr &= ~(ARCH_DMA_MINALIGN - 1); size = roundup(sizeof(struct fec_bd), ARCH_DMA_MINALIGN); invalidate_dcache_range(addr, addr + size); @@ -882,8 +887,8 @@ static int fec_recv(struct eth_device *dev) len = frame_length; } else { if (bd_status & FEC_RBD_ERR) - debug("error frame: 0x%08x 0x%08x\n", - addr, bd_status); + debug("error frame: 0x%08lx 0x%08x\n", + addr, bd_status); } /* @@ -895,7 +900,7 @@ static int fec_recv(struct eth_device *dev) size = RXDESC_PER_CACHELINE - 1; if ((fec->rbd_index & size) == size) { i = fec->rbd_index - size; - addr = (uint32_t)&fec->rbd_base[i]; + addr = (ulong)&fec->rbd_base[i]; for (; i <= fec->rbd_index ; i++) { fec_rbd_clean(i == (FEC_RBD_NUM - 1), &fec->rbd_base[i]); @@ -922,6 +927,7 @@ static int fec_alloc_descs(struct fec_priv *fec) unsigned int size; int i; uint8_t *data; + ulong addr; /* Allocate TX descriptors. */ size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); @@ -950,11 +956,12 @@ static int fec_alloc_descs(struct fec_priv *fec) memset(data, 0, size); - fec->rbd_base[i].data_pointer = (uint32_t)data; + addr = (ulong)data; + fec->rbd_base[i].data_pointer = (uint32_t)addr; fec->rbd_base[i].status = FEC_RBD_EMPTY; fec->rbd_base[i].data_length = 0; /* Flush the buffer to memory. */ - flush_dcache_range((uint32_t)data, (uint32_t)data + size); + flush_dcache_range(addr, addr + size); } /* Mark the last RBD to close the ring. */ @@ -966,8 +973,10 @@ static int fec_alloc_descs(struct fec_priv *fec) return 0; err_ring: - for (; i >= 0; i--) - free((void *)fec->rbd_base[i].data_pointer); + for (; i >= 0; i--) { + addr = fec->rbd_base[i].data_pointer; + free((void *)addr); + } free(fec->rbd_base); err_rx: free(fec->tbd_base); @@ -978,9 +987,12 @@ err_tx: static void fec_free_descs(struct fec_priv *fec) { int i; + ulong addr; - for (i = 0; i < FEC_RBD_NUM; i++) - free((void *)fec->rbd_base[i].data_pointer); + for (i = 0; i < FEC_RBD_NUM; i++) { + addr = fec->rbd_base[i].data_pointer; + free((void *)addr); + } free(fec->rbd_base); free(fec->tbd_base); } @@ -995,7 +1007,7 @@ struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id) struct fec_priv *priv = dev_get_priv(dev); struct ethernet_regs *eth = priv->eth; #else - struct ethernet_regs *eth = (struct ethernet_regs *)base_addr; + struct ethernet_regs *eth = (struct ethernet_regs *)(ulong)base_addr; #endif struct mii_dev *bus; int ret; @@ -1065,7 +1077,7 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, edev->halt = fec_halt; edev->write_hwaddr = fec_set_hwaddr; - fec->eth = (struct ethernet_regs *)base_addr; + fec->eth = (struct ethernet_regs *)(ulong)base_addr; fec->bd = bd; fec->xcv_type = CONFIG_FEC_XCV_TYPE; From patchwork Wed Jan 10 03:06:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857906 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="nhPSVv9F"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ7g40xzz9s7M for ; Wed, 10 Jan 2018 14:22:23 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 510F9C2206E; Wed, 10 Jan 2018 03:19:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id DB189C21E09; Wed, 10 Jan 2018 03:10:20 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 91051C22098; Wed, 10 Jan 2018 03:08:00 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50059.outbound.protection.outlook.com [40.107.5.59]) by lists.denx.de (Postfix) with ESMTPS id 34449C220D4 for ; Wed, 10 Jan 2018 03:07:53 +0000 (UTC) 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=Cf79SvVG2k86ynOwSGKaPtjaEGuyqkVMK2trlnsnX1U=; b=nhPSVv9FL0kviD60vRzK9yEzWjVdwxCSiKZBDZwNFNFGuZ5Wq+Hlq3QzHDAmhW72GU8qEdh8o4lZtF7kwyTN1IXUJarksKN0IYX0hyWsJF29eAPDgRkSv2ScPMnEHAej426laBvZ0vKZGN/6p3KSxMn9+CGGOJbm0Dt9WixiwQ0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:46 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:06:00 +0800 Message-Id: <20180110030603.27864-30-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c92fe735-3542-48e9-de10-08d557d754b2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:vEHGPXigZi0ibSKeTW+99F0lKsIMbgx/X2ASz6u/fdWlb3Z8shPgt/0A3X9YYMqWxwAWyuBM0qe7rXPy6IaOWAfSvRJ3EdAYrgUBQh+NyEURv9TeGI9qLqhnj+ZUOpqw6GBFMdgC2bZpe0wUaLRK4gRF+B0NURKo9oiqi/hRCbknzbENQWhzCgxdDTwwORt8xPBXwyk8RBc5aFH0YIlKqHx0Pxq322Jt/vSgiPa8I27vkbOuMgxTq1NnlhfWeFBH; 25:KRelGD+GSPPYk1PjH+npzhxPkcJ++b/3xg4L4xaRQJZH5c9zOIAKQyuB/8wOGudl23ELdz4FZp8ilRsKe1aPRrSBe9yr+y7ul6GTNjkohvIrHUp9qYVX/sHg/Tyv/68kp2q6zKTrErgjBv6c+rvpZiJWXpBpXY8YgAuPAdlx5ZasZSflsMK5AmE6Lh0UrnobbIoq08DR1ji01Kr9YGqAH/m+d/Suc+UbNYYaiK8GN+0b3udvhKHIQv6/6MSjXQ4HrjkE5FBIPlexIIhRiIa5a2bEs3OAanjeqg7eQT1YBI0gzwbHbDOOcizbBubufhBerXO3ol5EQNjYZJZa7/Qigg==; 31:wqWJhjH/gs2uPZVHNXpE0kQkAawYPZPsDiS2cFM/eEaTUiBe8asqONJwnUKtBoNh0sB5WtCt49hU5HWIRCBVIgSNVhRpSjJ5EzhJ39FEPly6wJEdyimsEaax8Cu7tQVNivrh5ZZMQd75n41IFfc/Lwl1kF3nDtJMGTKpvc9SSphvIjL2/0wNSHhOu419YrK1HPnrXHrNsrzU2RK9JWXkjGZj/n+S3QirXa4AU6nsIXY= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:z6n2hAgBksr80JcFoHSobXzN9jKZo1UOq4VlnB6th773blU7xc7a+Qj3krs5jTGun2YsvpWoUmZQ35vk7tMOOSorNKugnY/pdaRm3r7+xsbQALEUnJoXPyV/eHl5jBdh4X/Pk9FqITDnt8DGXvzjBdSmTjAHt1f0zlNEli3g+jxItYks3hJgm4clpuCTOGPJAky4abMYh3qEyrwr0hIuoQjtxqnyHZT/Gy+b/nLmBnr0qxJsP0kCbp2xaSvGCdlui1ePgMvjrRUAAFS5Czfrd80OnpJq1BWEfFV7EpnoWpplOn8ox5L/U7fUqIRyL4VfSF66CMP85qlOez9zakOs2ncaYyoelAxQNQoxWYtnsk6XXY2iENdYFL6w1p1dv1V2D52WS8bj6cuEK4/TZEgqshFliYPfkK9cG7MPRNxS6kNAlb5YylzIg99585TiZ8O4PX1rSkMPSrEJb/Mqstt7u2BRtF6qSgM2GX+iFnDaMJ58NITGcd6ezmCS1RKDkn2S; 4:09GrJRk7B37zuUq9rWYAyZ/ofwBJDTGYj0QMfojOHD89CMMC2MeJ32Sk77huqEXJBettt1mcWVo/m4Mj14sMNJdZmYz7WO9WSnsi1PUx878LOb4c2cp2dEYGl5v8dmBAUnaJDdwKiNBTyjI5y8KmgTz4mjx/sqjg+j7I6e8iWBhhrCkGrrbU6WosY83lpnjUzLUbU4q4Y5CIpijAGYoNlwTxpA0Fm+ky1CJ5tOFbGuX8/69jHR3w4asPMprQ3NI59D7f3rotSxZcXS+IHBXRVlxOL5au4dhUOS1T95u3oMeyGmOTnytAE4jPfOvQRhmS X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(53946003)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(16200700003)(47776003)(2004002)(32563001)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:disoMIY1QBfXuxBHLQSED+ebkWLTnQQes40m0z/o6?= +YviYZrxV9w/2tqUxwmIEQztlR7GXpqzNZTSNEkfJ50WNFR4ltiFoYn+2pEsx9OBUKGxXiqLOCq3+vuLlHjspGdyqvjzBFkRf3C+knAkdEUqS/O/5FG5iSK4xmLGJ3ju24WVcQAyco4tZYRVYUKynLwqEF9/WFxm27VjDiioEpLWazSY1d6phcXqTupcv1A8zUVnRGhpCnxtreYdoYg7EbQw5MNCbpgLcTkoNE0r1jgUYTKAEd5GEvHpHs5dt7Xfs76v2mYCaesafaSp5QF40Zxctt2Z4C963sq3avs4eyOP6aETC+aTq99jbM+k2DzKVLFu5NZ/yccRUz/zOWTGr553y4hicEnDQM74hIOu7JhNDOBAUvdz0IgiiS7WxApkPI/PtmHkq+6YbSdLRxeZjzQYLmgJu9buLD3NoMej1JafYtSJ0nWMIpxPwfCLrgz0Jpctq5flALuQEut8Vq3SNPyxTpZmcEi95jQU4XHx4ATdP9d0yow64sKOaOLqAqkE6QIkfvBfuVMBytCwDh9E6l+si6reuFGQFsIe6GngvROwD8YEUj2CiOsrULKMFkjr23npO4OrYGZJe1IsqNcFAiVtgdfe8tggSZawy1o2lWNoUp8t5F3ujl0KNc/vU27KDuDxYHxI+f4EOh+q19m1g5bVlfiVwYRCeCQ6VfjWOEXyOoGj8JhUoIPGAc5j+320yrpwwO7jOCbtbpbnAQMQzED49U9SvSY4f8WBL/qz3pAF41elETu/7spk/ujVPk30gh/XT6608AOSVjesINSxWjGRFngdcHMJ45Ls1fvQeBUwpI/7Th2PDJYoX57Gf3BU2D1xBC42UAQpYyzO3CdxlBoeBaOKWMansS4NNQ7kJYvqERE0vAK9e4RiyBm03707rdIOTuphROLerBx3IePCiaeZ5xH9n52bb+5P9Bcl7Tvu1wtXlKGUqYE+q8xItBDm4oMCBz89lVDHp9Xw+nXtO9yzlhqEccFunO3LjyTHoJ7oa+fenilbhUfuhQ+yM/xEszsWWkme88cmtlpEVnLtb4wwbDETDkAS4Ptpx43GDGVfE475zI6rfpbU51hHLaJ5+fHDXfQJTHXKB8qDJ0djAK/9uN+UE1b7Y8qRxrZj6rH4WxZVxasG3En/QrMl+bvhoQzxF7toXTUIIkJx4nGAQsBg465s6bGG0F59ywfk9wrDXqVgdCNmfN8jTg1hkUzRro/EGGXfnQgqG2amlPYGW3FamDHiC2R5jlm1fHiPsWzcJFLOTZp25f1zISLHgo9kmY= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:I39G4COT5UJ29beHLN552vo2IDTHM6oX5EWjAhIbPeJC0hUF7348iYXV6zC/EIWcjlI9YMVVpRqa8Qi2k0v3RaSgbmv452J3pvPsGalHB1LBmK+gSa4HGelpAiEArQKYKBstWnJRAdCOv/aDwKJOwX7qa5xTbA9qhjnvMnDEW65HuQ1pbYCDJeOkqci3iCgz+y4k/Fpx8Js0CblnikCz+hF0MVmQ4fRg34oaL2tGvcOpYJA2eOhRqZviE2L2P1/CsjFXlt4LZPREO6Psu7WQEP0ELABhchJfOzMXaWASJhdx9ZKpYZw2TFtYybnG0fsTIV2VoeI+oDqMmul3KwktFknqrspO8pzZi/d3NnqPwq0=; 5:2YP3+A3fWPMHezVxtPIbpa5fy0UubBpT70Fa6dYfIGYUM7Hfb4jJ34F4i6MtCicQMNjnxmV0mXPRxTB1qZvZ4UrtZGHERP1WEWi8puj5XMVhdVunwg+XLGmxT1mkAfhflSCKl4f1ffEAzMwtuDSYDiULwHiJQJaE4uL+10xRdww=; 24:jxk88oRr/ZOxM77gypow1T0zQOb65+YGUo0JJYy3G62bIRZU68L04KBI8SHNLrwKlQzy4DmgZ7GMkHYKLg2SluKAE8b9BuIlMo7zeR0cfc8=; 7:TTI/SLT84zGdq400Im9v+IrXzO/7bzlvsVqnPwaVOKZKZGdWZqsUulnEUd5ovPujHSsGyGGkxZdlXKgaFGHW06PzEqc6nSeuFti9fVZ8cwvlmGN/+Q7uMOKMVMhxz1XjFFnBY1iE/7FpZkIB6dlt2jr7t3jLe15pZ8y/VDWYMPcXHeIBlyLg68NZvFSBNnmKQq0smg6v8cBiFJ8uTrZbAfbZ/p8UJ3QYdM4FKp6tz6mbe9+dooBHdKXp+c/eLyk5 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:46.6669 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c92fe735-3542-48e9-de10-08d557d754b2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 29/32] imx: imx8mq: add dtsi file X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add dtsi file for i.MX8MQ. Signed-off-by: Peng Fan Reviewed-by: Fabio Estevam Cc: Stefano Babic --- arch/arm/dts/fsl-imx8-ca53.dtsi | 92 +++++ arch/arm/dts/fsl-imx8mq.dtsi | 429 ++++++++++++++++++++ include/dt-bindings/clock/imx8mq-clock.h | 612 +++++++++++++++++++++++++++++ include/dt-bindings/pinctrl/pins-imx8mq.h | 632 ++++++++++++++++++++++++++++++ 4 files changed, 1765 insertions(+) create mode 100644 arch/arm/dts/fsl-imx8-ca53.dtsi create mode 100644 arch/arm/dts/fsl-imx8mq.dtsi create mode 100644 include/dt-bindings/clock/imx8mq-clock.h create mode 100644 include/dt-bindings/pinctrl/pins-imx8mq.h diff --git a/arch/arm/dts/fsl-imx8-ca53.dtsi b/arch/arm/dts/fsl-imx8-ca53.dtsi new file mode 100644 index 0000000000..6a2292a51e --- /dev/null +++ b/arch/arm/dts/fsl-imx8-ca53.dtsi @@ -0,0 +1,92 @@ +/* + * Copyright 2017 NXP + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/{ + cpus { + #address-cells = <2>; + #size-cells = <0>; + + idle-states { + entry-method = "psci"; + + CPU_SLEEP: cpu-sleep { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x0000000>; + entry-latency-us = <700>; + exit-latency-us = <250>; + min-residency-us = <1000>; + }; + + CLUSTER_SLEEP: cluster-sleep { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x1000000>; + entry-latency-us = <1000>; + exit-latency-us = <700>; + min-residency-us = <2700>; + wakeup-latency-us = <1500>; + }; + }; + + /* We have 1 clusters having 4 Cortex-A53 cores */ + A53_0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x0 0x0>; + enable-method = "psci"; + next-level-cache = <&A53_L2>; + cpu-idle-states = <&CPU_SLEEP>; + }; + + A53_1: cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x0 0x1>; + enable-method = "psci"; + next-level-cache = <&A53_L2>; + cpu-idle-states = <&CPU_SLEEP>; + }; + + A53_2: cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x0 0x2>; + enable-method = "psci"; + next-level-cache = <&A53_L2>; + cpu-idle-states = <&CPU_SLEEP>; + }; + + A53_3: cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x0 0x3>; + enable-method = "psci"; + next-level-cache = <&A53_L2>; + cpu-idle-states = <&CPU_SLEEP>; + }; + + A53_L2: l2-cache0 { + compatible = "cache"; + }; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + cpu_suspend = <0xc4000001>; + cpu_off = <0xc4000002>; + cpu_on = <0xc4000003>; + }; +}; diff --git a/arch/arm/dts/fsl-imx8mq.dtsi b/arch/arm/dts/fsl-imx8mq.dtsi new file mode 100644 index 0000000000..814a1b7df4 --- /dev/null +++ b/arch/arm/dts/fsl-imx8mq.dtsi @@ -0,0 +1,429 @@ +/* + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * Copyright 2017 NXP + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "fsl-imx8-ca53.dtsi" +#include +#include +#include +#include +#include +#include + +/ { + compatible = "fsl,imx8mq"; + interrupt-parent = <&gpc>; + #address-cells = <2>; + #size-cells = <2>; + + aliases { + ethernet0 = &fec1; + mmc0 = &usdhc1; + mmc1 = &usdhc2; + gpio0 = &gpio1; + gpio1 = &gpio2; + gpio2 = &gpio3; + gpio3 = &gpio4; + gpio4 = &gpio5; + i2c0 = &i2c1; + i2c1 = &i2c2; + i2c2 = &i2c3; + i2c3 = &i2c4; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x00000000 0x40000000 0 0xc0000000>; + }; + + gic: interrupt-controller@38800000 { + compatible = "arm,gic-v3"; + reg = <0x0 0x38800000 0 0x10000>, /* GIC Dist */ + <0x0 0x38880000 0 0xC0000>; /* GICR (RD_base + SGI_base) */ + #interrupt-cells = <3>; + interrupt-controller; + interrupts = ; + interrupt-parent = <&gic>; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = , /* Physical Secure */ + , /* Physical Non-Secure */ + , /* Virtual */ + ; /* Hypervisor */ + clock-frequency = <8333333>; + interrupt-parent = <&gic>; + }; + + power: power-controller { + compatible = "fsl,imx8mq-pm-domain"; + num-domains = <11>; + #power-domain-cells = <1>; + }; + + pwm2: pwm@30670000 { + compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm"; + reg = <0x0 0x30670000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>, + <&clk IMX8MQ_CLK_PWM2_ROOT>; + clock-names = "ipg", "per"; + #pwm-cells = <2>; + status = "disabled"; + }; + + gpio1: gpio@30200000 { + compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; + reg = <0x0 0x30200000 0x0 0x10000>; + interrupts = , + ; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio2: gpio@30210000 { + compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; + reg = <0x0 0x30210000 0x0 0x10000>; + interrupts = , + ; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio3: gpio@30220000 { + compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; + reg = <0x0 0x30220000 0x0 0x10000>; + interrupts = , + ; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio4: gpio@30230000 { + compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; + reg = <0x0 0x30230000 0x0 0x10000>; + interrupts = , + ; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpio5: gpio@30240000 { + compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; + reg = <0x0 0x30240000 0x0 0x10000>; + interrupts = , + ; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + tmu: tmu@30260000 { + compatible = "fsl,imx8mq-tmu"; + reg = <0x0 0x30260000 0x0 0x10000>; + interrupt = ; + little-endian; + u-boot,dm-pre-reloc; + fsl,tmu-range = <0xa0000 0x90026 0x8004a 0x1006a>; + fsl,tmu-calibration = <0x00000000 0x00000020 + 0x00000001 0x00000028 + 0x00000002 0x00000030 + 0x00000003 0x00000038 + 0x00000004 0x00000040 + 0x00000005 0x00000048 + 0x00000006 0x00000050 + 0x00000007 0x00000058 + 0x00000008 0x00000060 + 0x00000009 0x00000068 + 0x0000000a 0x00000070 + 0x0000000b 0x00000077 + + 0x00010000 0x00000057 + 0x00010001 0x0000005b + 0x00010002 0x0000005f + 0x00010003 0x00000063 + 0x00010004 0x00000067 + 0x00010005 0x0000006b + 0x00010006 0x0000006f + 0x00010007 0x00000073 + 0x00010008 0x00000077 + 0x00010009 0x0000007b + 0x0001000a 0x0000007f + + 0x00020000 0x00000002 + 0x00020001 0x0000000e + 0x00020002 0x0000001a + 0x00020003 0x00000026 + 0x00020004 0x00000032 + 0x00020005 0x0000003e + 0x00020006 0x0000004a + 0x00020007 0x00000056 + 0x00020008 0x00000062 + + 0x00030000 0x00000000 + 0x00030001 0x00000008 + 0x00030002 0x00000010 + 0x00030003 0x00000018 + 0x00030004 0x00000020 + 0x00030005 0x00000028 + 0x00030006 0x00000030 + 0x00030007 0x00000038>; + #thermal-sensor-cells = <0>; + }; + + thermal-zones { + /* cpu thermal */ + cpu-thermal { + polling-delay-passive = <250>; + polling-delay = <2000>; + thermal-sensors = <&tmu>; + trips { + cpu_alert0: trip0 { + temperature = <85000>; + hysteresis = <2000>; + type = "passive"; + }; + cpu_crit0: trip1 { + temperature = <125000>; + hysteresis = <2000>; + type = "critical"; + }; + }; + + cooling-maps { + map0 { + trip = <&cpu_alert0>; + cooling-device = + <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + }; + + lcdif: lcdif@30320000 { + compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif"; + reg = <0x0 0x30320000 0x0 0x10000>; + clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL_DIV>, + <&clk IMX8MQ_CLK_DUMMY>, + <&clk IMX8MQ_CLK_DUMMY>; + clock-names = "pix", "axi", "disp_axi"; + assigned-clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL_SRC>; + assigned-clock-parents = <&clk IMX8MQ_VIDEO_PLL1_OUT>; + assigned-clock-rate = <594000000>; + interrupts = ; + status = "disabled"; + }; + + iomuxc: iomuxc@30330000 { + compatible = "fsl,imx8mq-iomuxc"; + reg = <0x0 0x30330000 0x0 0x10000>; + }; + + gpr: iomuxc-gpr@30340000 { + compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx7d-iomuxc-gpr", "syscon"; + reg = <0x0 0x30340000 0x0 0x10000>; + }; + + ocotp: ocotp-ctrl@30350000 { + compatible = "fsl,imx8mq-ocotp", "fsl,imx7d-ocotp", "syscon"; + reg = <0x0 0x30350000 0x0 0x10000>; + }; + + anatop: anatop@30360000 { + compatible = "fsl,imx8mq-anatop", "fsl,imx6q-anatop", + "syscon", "simple-bus"; + reg = <0x0 0x30360000 0x0 0x10000>; + interrupts = ; + }; + + clk: ccm@30380000 { + compatible = "fsl,imx8mq-ccm"; + reg = <0x0 0x30380000 0x0 0x10000>; + interrupts = , + ; + #clock-cells = <1>; + }; + + gpc: gpc@303a0000 { + compatible = "fsl,imx8mq-gpc", "fsl,imx7d-gpc", "syscon"; + reg = <0x0 0x303a0000 0x0 0x10000>; + interrupt-controller; + interrupts = ; + #interrupt-cells = <3>; + interrupt-parent = <&gic>; + }; + + usdhc1: usdhc@30b40000 { + compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc"; + reg = <0x0 0x30b40000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_DUMMY>, + <&clk IMX8MQ_CLK_NAND_USDHC_BUS_DIV>, + <&clk IMX8MQ_CLK_USDHC1_ROOT>; + clock-names = "ipg", "ahb", "per"; + assigned-clocks = <&clk IMX8MQ_CLK_USDHC1_DIV>; + assigned-clock-rates = <400000000>; + fsl,tuning-start-tap = <20>; + fsl,tuning-step= <2>; + bus-width = <4>; + status = "disabled"; + }; + + usdhc2: usdhc@30b50000 { + compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc"; + reg = <0x0 0x30b50000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_DUMMY>, + <&clk IMX8MQ_CLK_NAND_USDHC_BUS_DIV>, + <&clk IMX8MQ_CLK_USDHC2_ROOT>; + clock-names = "ipg", "ahb", "per"; + fsl,tuning-start-tap = <20>; + fsl,tuning-step= <2>; + bus-width = <4>; + status = "disabled"; + }; + + fec1: ethernet@30be0000 { + compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec"; + reg = <0x0 0x30be0000 0x0 0x10000>; + interrupts = , + , + ; + clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>, + <&clk IMX8MQ_CLK_ENET1_ROOT>, + <&clk IMX8MQ_CLK_ENET_TIMER_DIV>, + <&clk IMX8MQ_CLK_ENET_REF_DIV>, + <&clk IMX8MQ_CLK_ENET_PHY_REF_DIV>; + clock-names = "ipg", "ahb", "ptp", + "enet_clk_ref", "enet_out"; + assigned-clocks = <&clk IMX8MQ_CLK_ENET_AXI_SRC>, + <&clk IMX8MQ_CLK_ENET_TIMER_SRC>, + <&clk IMX8MQ_CLK_ENET_REF_SRC>, + <&clk IMX8MQ_CLK_ENET_TIMER_DIV>; + assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>, + <&clk IMX8MQ_SYS2_PLL_100M>, + <&clk IMX8MQ_SYS2_PLL_125M>; + assigned-clock-rates = <0>, <0>, <125000000>, <100000000>; + stop-mode = <&gpr 0x10 3>; + fsl,num-tx-queues=<3>; + fsl,num-rx-queues=<3>; + fsl,wakeup_irq = <2>; + status = "disabled"; + }; + + imx_ion { + compatible = "fsl,mxc-ion"; + fsl,heap-id = <0>; + }; + + i2c1: i2c@30a20000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx21-i2c"; + reg = <0x0 0x30a20000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>; + status = "disabled"; + }; + + i2c2: i2c@30a30000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx21-i2c"; + reg = <0x0 0x30a30000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>; + status = "disabled"; + }; + + i2c3: i2c@30a40000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx21-i2c"; + reg = <0x0 0x30a40000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>; + status = "disabled"; + }; + + i2c4: i2c@30a50000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx21-i2c"; + reg = <0x0 0x30a50000 0x0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>; + status = "disabled"; + }; + + wdog1: wdog@30280000 { + compatible = "fsl,imx21-wdt"; + reg = <0 0x30280000 0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>; + status = "disabled"; + }; + + wdog2: wdog@30290000 { + compatible = "fsl,imx21-wdt"; + reg = <0 0x30290000 0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>; + status = "disabled"; + }; + + wdog3: wdog@302a0000 { + compatible = "fsl,imx21-wdt"; + reg = <0 0x302a0000 0 0x10000>; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>; + status = "disabled"; + }; + + dma_cap: dma_cap { + compatible = "dma-capability"; + only-dma-mask32 = <1>; + }; + + qspi: qspi@30bb0000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx7d-qspi"; + reg = <0 0x30bb0000 0 0x10000>, <0 0x08000000 0 0x10000000>; + reg-names = "QuadSPI", "QuadSPI-memory"; + interrupts = ; + clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>, + <&clk IMX8MQ_CLK_QSPI_ROOT>; + clock-names = "qspi_en", "qspi"; + status = "disabled"; + }; +}; + +&A53_0 { + #cooling-cells = <2>; +}; diff --git a/include/dt-bindings/clock/imx8mq-clock.h b/include/dt-bindings/clock/imx8mq-clock.h new file mode 100644 index 0000000000..11dcafcfde --- /dev/null +++ b/include/dt-bindings/clock/imx8mq-clock.h @@ -0,0 +1,612 @@ +/* + * Copyright 2016 Freescale Semiconductor, Inc. + * Copyright 2017 NXP + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __DT_BINDINGS_CLOCK_IMX8MQ_H +#define __DT_BINDINGS_CLOCK_IMX8MQ_H + +#define IMX8MQ_CLK_DUMMY 0 +#define IMX8MQ_CLK_32K 1 +#define IMX8MQ_CLK_25M 2 +#define IMX8MQ_CLK_27M 3 +#define IMX8MQ_CLK_EXT1 4 +#define IMX8MQ_CLK_EXT2 5 +#define IMX8MQ_CLK_EXT3 6 +#define IMX8MQ_CLK_EXT4 7 + +/* ANAMIX PLL clocks */ +/* FRAC PLLs */ +/* ARM PLL */ +#define IMX8MQ_ARM_PLL_REF_SEL 8 +#define IMX8MQ_ARM_PLL_REF_DIV 9 +#define IMX8MQ_ARM_PLL 10 +#define IMX8MQ_ARM_PLL_BYPASS 11 +#define IMX8MQ_ARM_PLL_OUT 12 + +/* GPU PLL */ +#define IMX8MQ_GPU_PLL_REF_SEL 13 +#define IMX8MQ_GPU_PLL_REF_DIV 14 +#define IMX8MQ_GPU_PLL 15 +#define IMX8MQ_GPU_PLL_BYPASS 16 +#define IMX8MQ_GPU_PLL_OUT 17 + +/* VPU PLL */ +#define IMX8MQ_VPU_PLL_REF_SEL 18 +#define IMX8MQ_VPU_PLL_REF_DIV 19 +#define IMX8MQ_VPU_PLL 20 +#define IMX8MQ_VPU_PLL_BYPASS 21 +#define IMX8MQ_VPU_PLL_OUT 22 + +/* AUDIO PLL1 */ +#define IMX8MQ_AUDIO_PLL1_REF_SEL 23 +#define IMX8MQ_AUDIO_PLL1_REF_DIV 24 +#define IMX8MQ_AUDIO_PLL1 25 +#define IMX8MQ_AUDIO_PLL1_BYPASS 26 +#define IMX8MQ_AUDIO_PLL1_OUT 27 + +/* AUDIO PLL2 */ +#define IMX8MQ_AUDIO_PLL2_REF_SEL 28 +#define IMX8MQ_AUDIO_PLL2_REF_DIV 29 +#define IMX8MQ_AUDIO_PLL2 30 +#define IMX8MQ_AUDIO_PLL2_BYPASS 31 +#define IMX8MQ_AUDIO_PLL2_OUT 32 + +/* VIDEO PLL1 */ +#define IMX8MQ_VIDEO_PLL1_REF_SEL 33 +#define IMX8MQ_VIDEO_PLL1_REF_DIV 34 +#define IMX8MQ_VIDEO_PLL1 35 +#define IMX8MQ_VIDEO_PLL1_BYPASS 36 +#define IMX8MQ_VIDEO_PLL1_OUT 37 + +/* SYS1 PLL */ +#define IMX8MQ_SYS1_PLL1_REF_SEL 38 +#define IMX8MQ_SYS1_PLL1_REF_DIV 39 +#define IMX8MQ_SYS1_PLL1 40 +#define IMX8MQ_SYS1_PLL1_OUT 41 +#define IMX8MQ_SYS1_PLL1_OUT_DIV 42 +#define IMX8MQ_SYS1_PLL2 43 +#define IMX8MQ_SYS1_PLL2_DIV 44 +#define IMX8MQ_SYS1_PLL2_OUT 45 + +/* SYS2 PLL */ +#define IMX8MQ_SYS2_PLL1_REF_SEL 46 +#define IMX8MQ_SYS2_PLL1_REF_DIV 47 +#define IMX8MQ_SYS2_PLL1 48 +#define IMX8MQ_SYS2_PLL1_OUT 49 +#define IMX8MQ_SYS2_PLL1_OUT_DIV 50 +#define IMX8MQ_SYS2_PLL2 51 +#define IMX8MQ_SYS2_PLL2_DIV 52 +#define IMX8MQ_SYS2_PLL2_OUT 53 + +/* SYS3 PLL */ +#define IMX8MQ_SYS3_PLL1_REF_SEL 54 +#define IMX8MQ_SYS3_PLL1_REF_DIV 55 +#define IMX8MQ_SYS3_PLL1 56 +#define IMX8MQ_SYS3_PLL1_OUT 57 +#define IMX8MQ_SYS3_PLL1_OUT_DIV 58 +#define IMX8MQ_SYS3_PLL2 59 +#define IMX8MQ_SYS3_PLL2_DIV 60 +#define IMX8MQ_SYS3_PLL2_OUT 61 + +/* DRAM PLL */ +#define IMX8MQ_DRAM_PLL1_REF_SEL 62 +#define IMX8MQ_DRAM_PLL1_REF_DIV 63 +#define IMX8MQ_DRAM_PLL1 64 +#define IMX8MQ_DRAM_PLL1_OUT 65 +#define IMX8MQ_DRAM_PLL1_OUT_DIV 66 +#define IMX8MQ_DRAM_PLL2 67 +#define IMX8MQ_DRAM_PLL2_DIV 68 +#define IMX8MQ_DRAM_PLL2_OUT 69 + +/* SYS PLL DIV */ +#define IMX8MQ_SYS1_PLL_40M 70 +#define IMX8MQ_SYS1_PLL_80M 71 +#define IMX8MQ_SYS1_PLL_100M 72 +#define IMX8MQ_SYS1_PLL_133M 73 +#define IMX8MQ_SYS1_PLL_160M 74 +#define IMX8MQ_SYS1_PLL_200M 75 +#define IMX8MQ_SYS1_PLL_266M 76 +#define IMX8MQ_SYS1_PLL_400M 77 +#define IMX8MQ_SYS1_PLL_800M 78 + +#define IMX8MQ_SYS2_PLL_50M 79 +#define IMX8MQ_SYS2_PLL_100M 80 +#define IMX8MQ_SYS2_PLL_125M 81 +#define IMX8MQ_SYS2_PLL_166M 82 +#define IMX8MQ_SYS2_PLL_200M 83 +#define IMX8MQ_SYS2_PLL_250M 84 +#define IMX8MQ_SYS2_PLL_333M 85 +#define IMX8MQ_SYS2_PLL_500M 86 +#define IMX8MQ_SYS2_PLL_1000M 87 + +/* CCM ROOT clocks */ +/* A53 */ +#define IMX8MQ_CLK_A53_SRC 88 +#define IMX8MQ_CLK_A53_CG 89 +#define IMX8MQ_CLK_A53_DIV 90 +/* M4 */ +#define IMX8MQ_CLK_M4_SRC 91 +#define IMX8MQ_CLK_M4_CG 92 +#define IMX8MQ_CLK_M4_DIV 93 +/* VPU */ +#define IMX8MQ_CLK_VPU_SRC 94 +#define IMX8MQ_CLK_VPU_CG 95 +#define IMX8MQ_CLK_VPU_DIV 96 +/* GPU CORE */ +#define IMX8MQ_CLK_GPU_CORE_SRC 97 +#define IMX8MQ_CLK_GPU_CORE_CG 98 +#define IMX8MQ_CLK_GPU_CORE_DIV 99 +/* GPU SHADER */ +#define IMX8MQ_CLK_GPU_SHADER_SRC 100 +#define IMX8MQ_CLK_GPU_SHADER_CG 101 +#define IMX8MQ_CLK_GPU_SHADER_DIV 102 + +/* BUS TYPE */ +/* MAIN AXI */ +#define IMX8MQ_CLK_MAIN_AXI_SRC 103 +#define IMX8MQ_CLK_MAIN_AXI_CG 104 +#define IMX8MQ_CLK_MAIN_AXI_PRE_DIV 105 +#define IMX8MQ_CLK_MAIN_AXI_DIV 106 +/* ENET AXI */ +#define IMX8MQ_CLK_ENET_AXI_SRC 107 +#define IMX8MQ_CLK_ENET_AXI_CG 108 +#define IMX8MQ_CLK_ENET_AXI_PRE_DIV 109 +#define IMX8MQ_CLK_ENET_AXI_DIV 110 +/* NAND_USDHC_BUS */ +#define IMX8MQ_CLK_NAND_USDHC_BUS_SRC 111 +#define IMX8MQ_CLK_NAND_USDHC_BUS_CG 112 +#define IMX8MQ_CLK_NAND_USDHC_BUS_PRE_DIV 113 +#define IMX8MQ_CLK_NAND_USDHC_BUS_DIV 114 +/* VPU BUS */ +#define IMX8MQ_CLK_VPU_BUS_SRC 115 +#define IMX8MQ_CLK_VPU_BUS_CG 116 +#define IMX8MQ_CLK_VPU_BUS_PRE_DIV 117 +#define IMX8MQ_CLK_VPU_BUS_DIV 118 +/* DISP_AXI */ +#define IMX8MQ_CLK_DISP_AXI_SRC 119 +#define IMX8MQ_CLK_DISP_AXI_CG 120 +#define IMX8MQ_CLK_DISP_AXI_PRE_DIV 121 +#define IMX8MQ_CLK_DISP_AXI_DIV 122 +/* DISP APB */ +#define IMX8MQ_CLK_DISP_APB_SRC 123 +#define IMX8MQ_CLK_DISP_APB_CG 124 +#define IMX8MQ_CLK_DISP_APB_PRE_DIV 125 +#define IMX8MQ_CLK_DISP_APB_DIV 126 +/* DISP RTRM */ +#define IMX8MQ_CLK_DISP_RTRM_SRC 127 +#define IMX8MQ_CLK_DISP_RTRM_CG 128 +#define IMX8MQ_CLK_DISP_RTRM_PRE_DIV 129 +#define IMX8MQ_CLK_DISP_RTRM_DIV 130 +/* USB_BUS */ +#define IMX8MQ_CLK_USB_BUS_SRC 131 +#define IMX8MQ_CLK_USB_BUS_CG 132 +#define IMX8MQ_CLK_USB_BUS_PRE_DIV 133 +#define IMX8MQ_CLK_USB_BUS_DIV 134 +/* GPU_AXI */ +#define IMX8MQ_CLK_GPU_AXI_SRC 135 +#define IMX8MQ_CLK_GPU_AXI_CG 136 +#define IMX8MQ_CLK_GPU_AXI_PRE_DIV 137 +#define IMX8MQ_CLK_GPU_AXI_DIV 138 +/* GPU_AHB */ +#define IMX8MQ_CLK_GPU_AHB_SRC 139 +#define IMX8MQ_CLK_GPU_AHB_CG 140 +#define IMX8MQ_CLK_GPU_AHB_PRE_DIV 141 +#define IMX8MQ_CLK_GPU_AHB_DIV 142 +/* NOC */ +#define IMX8MQ_CLK_NOC_SRC 143 +#define IMX8MQ_CLK_NOC_CG 144 +#define IMX8MQ_CLK_NOC_PRE_DIV 145 +#define IMX8MQ_CLK_NOC_DIV 146 +/* NOC_APB */ +#define IMX8MQ_CLK_NOC_APB_SRC 147 +#define IMX8MQ_CLK_NOC_APB_CG 148 +#define IMX8MQ_CLK_NOC_APB_PRE_DIV 149 +#define IMX8MQ_CLK_NOC_APB_DIV 150 + +/* AHB */ +#define IMX8MQ_CLK_AHB_SRC 151 +#define IMX8MQ_CLK_AHB_CG 152 +#define IMX8MQ_CLK_AHB_PRE_DIV 153 +#define IMX8MQ_CLK_AHB_DIV 154 +/* AUDIO AHB */ +#define IMX8MQ_CLK_AUDIO_AHB_SRC 155 +#define IMX8MQ_CLK_AUDIO_AHB_CG 156 +#define IMX8MQ_CLK_AUDIO_AHB_PRE_DIV 157 +#define IMX8MQ_CLK_AUDIO_AHB_DIV 158 + +/* DRAM_ALT */ +#define IMX8MQ_CLK_DRAM_ALT_SRC 159 +#define IMX8MQ_CLK_DRAM_ALT_CG 160 +#define IMX8MQ_CLK_DRAM_ALT_PRE_DIV 161 +#define IMX8MQ_CLK_DRAM_ALT_DIV 162 +/* DRAM APB */ +#define IMX8MQ_CLK_DRAM_APB_SRC 163 +#define IMX8MQ_CLK_DRAM_APB_CG 164 +#define IMX8MQ_CLK_DRAM_APB_PRE_DIV 165 +#define IMX8MQ_CLK_DRAM_APB_DIV 166 +/* VPU_G1 */ +#define IMX8MQ_CLK_VPU_G1_SRC 167 +#define IMX8MQ_CLK_VPU_G1_CG 168 +#define IMX8MQ_CLK_VPU_G1_PRE_DIV 169 +#define IMX8MQ_CLK_VPU_G1_DIV 170 +/* VPU_G2 */ +#define IMX8MQ_CLK_VPU_G2_SRC 171 +#define IMX8MQ_CLK_VPU_G2_CG 172 +#define IMX8MQ_CLK_VPU_G2_PRE_DIV 173 +#define IMX8MQ_CLK_VPU_G2_DIV 174 +/* DISP_DTRC */ +#define IMX8MQ_CLK_DISP_DTRC_SRC 175 +#define IMX8MQ_CLK_DISP_DTRC_CG 176 +#define IMX8MQ_CLK_DISP_DTRC_PRE_DIV 177 +#define IMX8MQ_CLK_DISP_DTRC_DIV 178 +/* DISP_DC8000 */ +#define IMX8MQ_CLK_DISP_DC8000_SRC 179 +#define IMX8MQ_CLK_DISP_DC8000_CG 180 +#define IMX8MQ_CLK_DISP_DC8000_PRE_DIV 181 +#define IMX8MQ_CLK_DISP_DC8000_DIV 182 +/* PCIE_CTRL */ +#define IMX8MQ_CLK_PCIE1_CTRL_SRC 183 +#define IMX8MQ_CLK_PCIE1_CTRL_CG 184 +#define IMX8MQ_CLK_PCIE1_CTRL_PRE_DIV 185 +#define IMX8MQ_CLK_PCIE1_CTRL_DIV 186 +/* PCIE_PHY */ +#define IMX8MQ_CLK_PCIE1_PHY_SRC 187 +#define IMX8MQ_CLK_PCIE1_PHY_CG 188 +#define IMX8MQ_CLK_PCIE1_PHY_PRE_DIV 189 +#define IMX8MQ_CLK_PCIE1_PHY_DIV 190 +/* PCIE_AUX */ +#define IMX8MQ_CLK_PCIE1_AUX_SRC 191 +#define IMX8MQ_CLK_PCIE1_AUX_CG 192 +#define IMX8MQ_CLK_PCIE1_AUX_PRE_DIV 193 +#define IMX8MQ_CLK_PCIE1_AUX_DIV 194 +/* DC_PIXEL */ +#define IMX8MQ_CLK_DC_PIXEL_SRC 195 +#define IMX8MQ_CLK_DC_PIXEL_CG 196 +#define IMX8MQ_CLK_DC_PIXEL_PRE_DIV 197 +#define IMX8MQ_CLK_DC_PIXEL_DIV 198 +/* LCDIF_PIXEL */ +#define IMX8MQ_CLK_LCDIF_PIXEL_SRC 199 +#define IMX8MQ_CLK_LCDIF_PIXEL_CG 200 +#define IMX8MQ_CLK_LCDIF_PIXEL_PRE_DIV 201 +#define IMX8MQ_CLK_LCDIF_PIXEL_DIV 202 +/* SAI1~6 */ +#define IMX8MQ_CLK_SAI1_SRC 203 +#define IMX8MQ_CLK_SAI1_CG 204 +#define IMX8MQ_CLK_SAI1_PRE_DIV 205 +#define IMX8MQ_CLK_SAI1_DIV 206 + +#define IMX8MQ_CLK_SAI2_SRC 207 +#define IMX8MQ_CLK_SAI2_CG 208 +#define IMX8MQ_CLK_SAI2_PRE_DIV 209 +#define IMX8MQ_CLK_SAI2_DIV 210 + +#define IMX8MQ_CLK_SAI3_SRC 211 +#define IMX8MQ_CLK_SAI3_CG 212 +#define IMX8MQ_CLK_SAI3_PRE_DIV 213 +#define IMX8MQ_CLK_SAI3_DIV 214 + +#define IMX8MQ_CLK_SAI4_SRC 215 +#define IMX8MQ_CLK_SAI4_CG 216 +#define IMX8MQ_CLK_SAI4_PRE_DIV 217 +#define IMX8MQ_CLK_SAI4_DIV 218 + +#define IMX8MQ_CLK_SAI5_SRC 219 +#define IMX8MQ_CLK_SAI5_CG 220 +#define IMX8MQ_CLK_SAI5_PRE_DIV 221 +#define IMX8MQ_CLK_SAI5_DIV 222 + +#define IMX8MQ_CLK_SAI6_SRC 223 +#define IMX8MQ_CLK_SAI6_CG 224 +#define IMX8MQ_CLK_SAI6_PRE_DIV 225 +#define IMX8MQ_CLK_SAI6_DIV 226 +/* SPDIF1 */ +#define IMX8MQ_CLK_SPDIF1_SRC 227 +#define IMX8MQ_CLK_SPDIF1_CG 228 +#define IMX8MQ_CLK_SPDIF1_PRE_DIV 229 +#define IMX8MQ_CLK_SPDIF1_DIV 230 +/* SPDIF2 */ +#define IMX8MQ_CLK_SPDIF2_SRC 231 +#define IMX8MQ_CLK_SPDIF2_CG 232 +#define IMX8MQ_CLK_SPDIF2_PRE_DIV 233 +#define IMX8MQ_CLK_SPDIF2_DIV 234 +/* ENET_REF */ +#define IMX8MQ_CLK_ENET_REF_SRC 235 +#define IMX8MQ_CLK_ENET_REF_CG 236 +#define IMX8MQ_CLK_ENET_REF_PRE_DIV 237 +#define IMX8MQ_CLK_ENET_REF_DIV 238 +/* ENET_TIMER */ +#define IMX8MQ_CLK_ENET_TIMER_SRC 239 +#define IMX8MQ_CLK_ENET_TIMER_CG 240 +#define IMX8MQ_CLK_ENET_TIMER_PRE_DIV 241 +#define IMX8MQ_CLK_ENET_TIMER_DIV 242 +/* ENET_PHY */ +#define IMX8MQ_CLK_ENET_PHY_REF_SRC 243 +#define IMX8MQ_CLK_ENET_PHY_REF_CG 244 +#define IMX8MQ_CLK_ENET_PHY_REF_PRE_DIV 245 +#define IMX8MQ_CLK_ENET_PHY_REF_DIV 246 +/* NAND */ +#define IMX8MQ_CLK_NAND_SRC 247 +#define IMX8MQ_CLK_NAND_CG 248 +#define IMX8MQ_CLK_NAND_PRE_DIV 249 +#define IMX8MQ_CLK_NAND_DIV 250 +/* QSPI */ +#define IMX8MQ_CLK_QSPI_SRC 251 +#define IMX8MQ_CLK_QSPI_CG 252 +#define IMX8MQ_CLK_QSPI_PRE_DIV 253 +#define IMX8MQ_CLK_QSPI_DIV 254 +/* USDHC1 */ +#define IMX8MQ_CLK_USDHC1_SRC 255 +#define IMX8MQ_CLK_USDHC1_CG 256 +#define IMX8MQ_CLK_USDHC1_PRE_DIV 257 +#define IMX8MQ_CLK_USDHC1_DIV 258 +/* USDHC2 */ +#define IMX8MQ_CLK_USDHC2_SRC 259 +#define IMX8MQ_CLK_USDHC2_CG 260 +#define IMX8MQ_CLK_USDHC2_PRE_DIV 261 +#define IMX8MQ_CLK_USDHC2_DIV 262 +/* I2C1 */ +#define IMX8MQ_CLK_I2C1_SRC 263 +#define IMX8MQ_CLK_I2C1_CG 264 +#define IMX8MQ_CLK_I2C1_PRE_DIV 265 +#define IMX8MQ_CLK_I2C1_DIV 266 +/* I2C2 */ +#define IMX8MQ_CLK_I2C2_SRC 267 +#define IMX8MQ_CLK_I2C2_CG 268 +#define IMX8MQ_CLK_I2C2_PRE_DIV 269 +#define IMX8MQ_CLK_I2C2_DIV 270 +/* I2C3 */ +#define IMX8MQ_CLK_I2C3_SRC 271 +#define IMX8MQ_CLK_I2C3_CG 272 +#define IMX8MQ_CLK_I2C3_PRE_DIV 273 +#define IMX8MQ_CLK_I2C3_DIV 274 +/* I2C4 */ +#define IMX8MQ_CLK_I2C4_SRC 275 +#define IMX8MQ_CLK_I2C4_CG 276 +#define IMX8MQ_CLK_I2C4_PRE_DIV 277 +#define IMX8MQ_CLK_I2C4_DIV 278 +/* UART1 */ +#define IMX8MQ_CLK_UART1_SRC 279 +#define IMX8MQ_CLK_UART1_CG 280 +#define IMX8MQ_CLK_UART1_PRE_DIV 281 +#define IMX8MQ_CLK_UART1_DIV 282 +/* UART2 */ +#define IMX8MQ_CLK_UART2_SRC 283 +#define IMX8MQ_CLK_UART2_CG 284 +#define IMX8MQ_CLK_UART2_PRE_DIV 285 +#define IMX8MQ_CLK_UART2_DIV 286 +/* UART3 */ +#define IMX8MQ_CLK_UART3_SRC 287 +#define IMX8MQ_CLK_UART3_CG 288 +#define IMX8MQ_CLK_UART3_PRE_DIV 289 +#define IMX8MQ_CLK_UART3_DIV 290 +/* UART4 */ +#define IMX8MQ_CLK_UART4_SRC 291 +#define IMX8MQ_CLK_UART4_CG 292 +#define IMX8MQ_CLK_UART4_PRE_DIV 293 +#define IMX8MQ_CLK_UART4_DIV 294 +/* USB_CORE_REF */ +#define IMX8MQ_CLK_USB_CORE_REF_SRC 295 +#define IMX8MQ_CLK_USB_CORE_REF_CG 296 +#define IMX8MQ_CLK_USB_CORE_REF_PRE_DIV 297 +#define IMX8MQ_CLK_USB_CORE_REF_DIV 298 +/* USB_PHY_REF */ +#define IMX8MQ_CLK_USB_PHY_REF_SRC 299 +#define IMX8MQ_CLK_USB_PHY_REF_CG 300 +#define IMX8MQ_CLK_USB_PHY_REF_PRE_DIV 301 +#define IMX8MQ_CLK_USB_PHY_REF_DIV 302 +/* ECSPI1 */ +#define IMX8MQ_CLK_ECSPI1_SRC 303 +#define IMX8MQ_CLK_ECSPI1_CG 304 +#define IMX8MQ_CLK_ECSPI1_PRE_DIV 305 +#define IMX8MQ_CLK_ECSPI1_DIV 306 +/* ECSPI2 */ +#define IMX8MQ_CLK_ECSPI2_SRC 307 +#define IMX8MQ_CLK_ECSPI2_CG 308 +#define IMX8MQ_CLK_ECSPI2_PRE_DIV 309 +#define IMX8MQ_CLK_ECSPI2_DIV 310 +/* PWM1 */ +#define IMX8MQ_CLK_PWM1_SRC 311 +#define IMX8MQ_CLK_PWM1_CG 312 +#define IMX8MQ_CLK_PWM1_PRE_DIV 313 +#define IMX8MQ_CLK_PWM1_DIV 314 +/* PWM2 */ +#define IMX8MQ_CLK_PWM2_SRC 315 +#define IMX8MQ_CLK_PWM2_CG 316 +#define IMX8MQ_CLK_PWM2_PRE_DIV 317 +#define IMX8MQ_CLK_PWM2_DIV 318 +/* PWM3 */ +#define IMX8MQ_CLK_PWM3_SRC 319 +#define IMX8MQ_CLK_PWM3_CG 320 +#define IMX8MQ_CLK_PWM3_PRE_DIV 321 +#define IMX8MQ_CLK_PWM3_DIV 322 +/* PWM4 */ +#define IMX8MQ_CLK_PWM4_SRC 323 +#define IMX8MQ_CLK_PWM4_CG 324 +#define IMX8MQ_CLK_PWM4_PRE_DIV 325 +#define IMX8MQ_CLK_PWM4_DIV 326 +/* GPT1 */ +#define IMX8MQ_CLK_GPT1_SRC 327 +#define IMX8MQ_CLK_GPT1_CG 328 +#define IMX8MQ_CLK_GPT1_PRE_DIV 329 +#define IMX8MQ_CLK_GPT1_DIV 330 +/* WDOG */ +#define IMX8MQ_CLK_WDOG_SRC 331 +#define IMX8MQ_CLK_WDOG_CG 332 +#define IMX8MQ_CLK_WDOG_PRE_DIV 333 +#define IMX8MQ_CLK_WDOG_DIV 334 +/* WRCLK */ +#define IMX8MQ_CLK_WRCLK_SRC 335 +#define IMX8MQ_CLK_WRCLK_CG 336 +#define IMX8MQ_CLK_WRCLK_PRE_DIV 337 +#define IMX8MQ_CLK_WRCLK_DIV 338 +/* DSI_CORE */ +#define IMX8MQ_CLK_DSI_CORE_SRC 339 +#define IMX8MQ_CLK_DSI_CORE_CG 340 +#define IMX8MQ_CLK_DSI_CORE_PRE_DIV 341 +#define IMX8MQ_CLK_DSI_CORE_DIV 342 +/* DSI_PHY */ +#define IMX8MQ_CLK_DSI_PHY_REF_SRC 343 +#define IMX8MQ_CLK_DSI_PHY_REF_CG 344 +#define IMX8MQ_CLK_DSI_PHY_REF_PRE_DIV 345 +#define IMX8MQ_CLK_DSI_PHY_REF_DIV 346 +/* DSI_DBI */ +#define IMX8MQ_CLK_DSI_DBI_SRC 347 +#define IMX8MQ_CLK_DSI_DBI_CG 348 +#define IMX8MQ_CLK_DSI_DBI_PRE_DIV 349 +#define IMX8MQ_CLK_DSI_DBI_DIV 350 +/*DSI_ESC */ +#define IMX8MQ_CLK_DSI_ESC_SRC 351 +#define IMX8MQ_CLK_DSI_ESC_CG 352 +#define IMX8MQ_CLK_DSI_ESC_PRE_DIV 353 +#define IMX8MQ_CLK_DSI_ESC_DIV 354 +/* CSI1_CORE */ +#define IMX8MQ_CLK_CSI1_CORE_SRC 355 +#define IMX8MQ_CLK_CSI1_CORE_CG 356 +#define IMX8MQ_CLK_CSI1_CORE_PRE_DIV 357 +#define IMX8MQ_CLK_CSI1_CORE_DIV 358 +/* CSI1_PHY */ +#define IMX8MQ_CLK_CSI1_PHY_REF_SRC 359 +#define IMX8MQ_CLK_CSI1_PHY_REF_CG 360 +#define IMX8MQ_CLK_CSI1_PHY_REF_PRE_DIV 361 +#define IMX8MQ_CLK_CSI1_PHY_REF_DIV 362 +/* CSI_ESC */ +#define IMX8MQ_CLK_CSI1_ESC_SRC 363 +#define IMX8MQ_CLK_CSI1_ESC_CG 364 +#define IMX8MQ_CLK_CSI1_ESC_PRE_DIV 365 +#define IMX8MQ_CLK_CSI1_ESC_DIV 366 +/* CSI2_CORE */ +#define IMX8MQ_CLK_CSI2_CORE_SRC 367 +#define IMX8MQ_CLK_CSI2_CORE_CG 368 +#define IMX8MQ_CLK_CSI2_CORE_PRE_DIV 369 +#define IMX8MQ_CLK_CSI2_CORE_DIV 370 +/* CSI2_PHY */ +#define IMX8MQ_CLK_CSI2_PHY_REF_SRC 371 +#define IMX8MQ_CLK_CSI2_PHY_REF_CG 372 +#define IMX8MQ_CLK_CSI2_PHY_REF_PRE_DIV 373 +#define IMX8MQ_CLK_CSI2_PHY_REF_DIV 374 +/* CSI2_ESC */ +#define IMX8MQ_CLK_CSI2_ESC_SRC 375 +#define IMX8MQ_CLK_CSI2_ESC_CG 376 +#define IMX8MQ_CLK_CSI2_ESC_PRE_DIV 377 +#define IMX8MQ_CLK_CSI2_ESC_DIV 378 +/* PCIE2_CTRL */ +#define IMX8MQ_CLK_PCIE2_CTRL_SRC 379 +#define IMX8MQ_CLK_PCIE2_CTRL_CG 380 +#define IMX8MQ_CLK_PCIE2_CTRL_PRE_DIV 381 +#define IMX8MQ_CLK_PCIE2_CTRL_DIV 382 +/* PCIE2_PHY */ +#define IMX8MQ_CLK_PCIE2_PHY_SRC 383 +#define IMX8MQ_CLK_PCIE2_PHY_CG 384 +#define IMX8MQ_CLK_PCIE2_PHY_PRE_DIV 385 +#define IMX8MQ_CLK_PCIE2_PHY_DIV 386 +/* PCIE2_AUX */ +#define IMX8MQ_CLK_PCIE2_AUX_SRC 387 +#define IMX8MQ_CLK_PCIE2_AUX_CG 388 +#define IMX8MQ_CLK_PCIE2_AUX_PRE_DIV 389 +#define IMX8MQ_CLK_PCIE2_AUX_DIV 390 +/* ECSPI3 */ +#define IMX8MQ_CLK_ECSPI3_SRC 391 +#define IMX8MQ_CLK_ECSPI3_CG 392 +#define IMX8MQ_CLK_ECSPI3_PRE_DIV 393 +#define IMX8MQ_CLK_ECSPI3_DIV 394 + +/* CCGR clocks */ +#define IMX8MQ_CLK_A53_ROOT 395 +#define IMX8MQ_CLK_DRAM_ROOT 396 +#define IMX8MQ_CLK_ECSPI1_ROOT 397 +#define IMX8MQ_CLK_ECSPI2_ROOT 398 +#define IMX8MQ_CLK_ECSPI3_ROOT 399 +#define IMX8MQ_CLK_ENET1_ROOT 400 +#define IMX8MQ_CLK_GPT1_ROOT 401 +#define IMX8MQ_CLK_I2C1_ROOT 402 +#define IMX8MQ_CLK_I2C2_ROOT 403 +#define IMX8MQ_CLK_I2C3_ROOT 404 +#define IMX8MQ_CLK_I2C4_ROOT 405 +#define IMX8MQ_CLK_M4_ROOT 406 +#define IMX8MQ_CLK_PCIE1_ROOT 407 +#define IMX8MQ_CLK_PCIE2_ROOT 408 +#define IMX8MQ_CLK_PWM1_ROOT 409 +#define IMX8MQ_CLK_PWM2_ROOT 410 +#define IMX8MQ_CLK_PWM3_ROOT 411 +#define IMX8MQ_CLK_PWM4_ROOT 412 +#define IMX8MQ_CLK_QSPI_ROOT 413 +#define IMX8MQ_CLK_SAI1_ROOT 414 +#define IMX8MQ_CLK_SAI2_ROOT 415 +#define IMX8MQ_CLK_SAI3_ROOT 416 +#define IMX8MQ_CLK_SAI4_ROOT 417 +#define IMX8MQ_CLK_SAI5_ROOT 418 +#define IMX8MQ_CLK_SAI6_ROOT 419 +#define IMX8MQ_CLK_UART1_ROOT 420 +#define IMX8MQ_CLK_UART2_ROOT 421 +#define IMX8MQ_CLK_UART3_ROOT 422 +#define IMX8MQ_CLK_UART4_ROOT 423 +#define IMX8MQ_CLK_USB1_CTRL_ROOT 424 +#define IMX8MQ_CLK_USB2_CTRL_ROOT 425 +#define IMX8MQ_CLK_USB1_PHY_ROOT 426 +#define IMX8MQ_CLK_USB2_PHY_ROOT 427 +#define IMX8MQ_CLK_USDHC1_ROOT 428 +#define IMX8MQ_CLK_USDHC2_ROOT 429 +#define IMX8MQ_CLK_WDOG1_ROOT 430 +#define IMX8MQ_CLK_WDOG2_ROOT 431 +#define IMX8MQ_CLK_WDOG3_ROOT 432 +#define IMX8MQ_CLK_GPU_ROOT 433 +#define IMX8MQ_CLK_HEVC_ROOT 434 +#define IMX8MQ_CLK_AVC_ROOT 435 +#define IMX8MQ_CLK_VP9_ROOT 436 +#define IMX8MQ_CLK_HEVC_INTER_ROOT 437 +#define IMX8MQ_CLK_DISP_ROOT 438 +#define IMX8MQ_CLK_HDMI_ROOT 439 +#define IMX8MQ_CLK_HDMI_PHY_ROOT 440 +#define IMX8MQ_CLK_VPU_DEC_ROOT 441 +#define IMX8MQ_CLK_CSI1_ROOT 442 +#define IMX8MQ_CLK_CSI2_ROOT 443 +#define IMX8MQ_CLK_RAWNAND_ROOT 444 +#define IMX8MQ_CLK_SDMA1_ROOT 445 +#define IMX8MQ_CLK_SDMA2_ROOT 446 +#define IMX8MQ_CLK_VPU_G1_ROOT 447 +#define IMX8MQ_CLK_VPU_G2_ROOT 448 + +/* SCCG PLL GATE */ +#define IMX8MQ_SYS1_PLL_OUT 449 +#define IMX8MQ_SYS2_PLL_OUT 450 +#define IMX8MQ_SYS3_PLL_OUT 451 +#define IMX8MQ_DRAM_PLL_OUT 452 + +#define IMX8MQ_GPT_3M_CLK 453 + +#define IMX8MQ_CLK_IPG_ROOT 454 +#define IMX8MQ_CLK_IPG_AUDIO_ROOT 455 +#define IMX8MQ_CLK_SAI1_IPG 456 +#define IMX8MQ_CLK_SAI2_IPG 457 +#define IMX8MQ_CLK_SAI3_IPG 458 +#define IMX8MQ_CLK_SAI4_IPG 459 +#define IMX8MQ_CLK_SAI5_IPG 460 +#define IMX8MQ_CLK_SAI6_IPG 461 + +/* DSI AHB/IPG clocks */ +/* rxesc clock */ +#define IMX8MQ_CLK_DSI_AHB_SRC 462 +#define IMX8MQ_CLK_DSI_AHB_CG 463 +#define IMX8MQ_CLK_DSI_AHB_PRE_DIV 464 +#define IMX8MQ_CLK_DSI_AHB_DIV 465 +/* txesc clock */ +#define IMX8MQ_CLK_DSI_IPG_DIV 466 + +/* VIDEO2 PLL */ +#define IMX8MQ_VIDEO2_PLL1_REF_SEL 467 +#define IMX8MQ_VIDEO2_PLL1_REF_DIV 468 +#define IMX8MQ_VIDEO2_PLL1 469 +#define IMX8MQ_VIDEO2_PLL1_OUT 470 +#define IMX8MQ_VIDEO2_PLL1_OUT_DIV 471 +#define IMX8MQ_VIDEO2_PLL2 472 +#define IMX8MQ_VIDEO2_PLL2_DIV 473 +#define IMX8MQ_VIDEO2_PLL2_OUT 474 +#define IMX8MQ_CLK_TMU_ROOT 475 + +#define IMX8MQ_CLK_END 476 +#endif /* __DT_BINDINGS_CLOCK_IMX8MQ_H */ diff --git a/include/dt-bindings/pinctrl/pins-imx8mq.h b/include/dt-bindings/pinctrl/pins-imx8mq.h new file mode 100644 index 0000000000..0e1d67d414 --- /dev/null +++ b/include/dt-bindings/pinctrl/pins-imx8mq.h @@ -0,0 +1,632 @@ +/* + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * Copyright 2017 NXP + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef __DTS_IMX8MQ_PINFUNC_H +#define __DTS_IMX8MQ_PINFUNC_H + +/* + * The pin function ID is a tuple of + * + */ + +#define MX8MQ_IOMUXC_PMIC_STBY_REQ_CCMSRCGPCMIX_PMIC_STBY_REQ 0x014 0x27C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_PMIC_ON_REQ_SNVSMIX_PMIC_ON_REQ 0x018 0x280 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ONOFF_SNVSMIX_ONOFF 0x01C 0x284 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_POR_B_SNVSMIX_POR_B 0x020 0x288 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_RTC_RESET_B_SNVSMIX_RTC_RESET_B 0x024 0x28C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO00_GPIO1_IO0 0x028 0x290 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO00_CCMSRCGPCMIX_ENET_PHY_REF_CLK_ROOT 0x028 0x290 0x4C0 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K 0x028 0x290 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO00_CCMSRCGPCMIX_EXT_CLK1 0x028 0x290 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO00_SJC_FAIL 0x028 0x290 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x02C 0x294 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO01_PWM1_OUT 0x02C 0x294 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO01_ANAMIX_REF_CLK_24M 0x02C 0x294 0x4BC 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO01_CCMSRCGPCMIX_EXT_CLK2 0x02C 0x294 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO01_SJC_ACTIVE 0x02C 0x294 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO02_GPIO1_IO2 0x030 0x298 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x030 0x298 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_ANY 0x030 0x298 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO02_SJC_DE_B 0x030 0x298 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x034 0x29C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO03_USDHC1_VSELECT 0x034 0x29C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO03_SDMA1_EXT_EVENT0 0x034 0x29C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO03_ANAMIX_XTAL_OK 0x034 0x29C 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO03_SJC_DONE 0x034 0x29C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x038 0x2A0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x038 0x2A0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO04_SDMA1_EXT_EVENT1 0x038 0x2A0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO04_ANAMIX_XTAL_OK_LV 0x038 0x2A0 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO04_USDHC1_TEST_TRIG 0x038 0x2A0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x03C 0x2A4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO05_M4_NMI 0x03C 0x2A4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO05_CCMSRCGPCMIX_PMIC_READY 0x03C 0x2A4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO05_CCMSRCGPCMIX_INT_BOOT 0x03C 0x2A4 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO05_USDHC2_TEST_TRIG 0x03C 0x2A4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x040 0x2A8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO06_ENET1_MDC 0x040 0x2A8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO06_USDHC1_CD_B 0x040 0x2A8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO06_CCMSRCGPCMIX_EXT_CLK3 0x040 0x2A8 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO06_ECSPI1_TEST_TRIG 0x040 0x2A8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x044 0x2AC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO07_ENET1_MDIO 0x044 0x2AC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO07_USDHC1_WP 0x044 0x2AC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO07_CCMSRCGPCMIX_EXT_CLK4 0x044 0x2AC 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO07_ECSPI2_TEST_TRIG 0x044 0x2AC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x048 0x2B0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO08_ENET1_1588_EVENT0_IN 0x048 0x2B0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO08_USDHC2_RESET_B 0x048 0x2B0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO08_CCMSRCGPCMIX_WAIT 0x048 0x2B0 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO08_QSPI_TEST_TRIG 0x048 0x2B0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x04C 0x2B4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO09_ENET1_1588_EVENT0_OUT 0x04C 0x2B4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO09_SDMA2_EXT_EVENT0 0x04C 0x2B4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO09_CCMSRCGPCMIX_STOP 0x04C 0x2B4 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO09_RAWNAND_TEST_TRIG 0x04C 0x2B4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x050 0x2B8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO10_USB1_OTG_ID 0x050 0x2B8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO10_OCOTP_CTRL_WRAPPER_FUSE_LATCHED 0x050 0x2B8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x054 0x2BC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO11_USB2_OTG_ID 0x054 0x2BC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO11_CCMSRCGPCMIX_PMIC_READY 0x054 0x2BC 0x4BC 0x5 0x1 +#define MX8MQ_IOMUXC_GPIO1_IO11_CCMSRCGPCMIX_OUT0 0x054 0x2BC 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO11_CAAM_WRAPPER_RNG_OSC_OBS 0x054 0x2BC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x058 0x2C0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO12_USB1_OTG_PWR 0x058 0x2C0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO12_SDMA2_EXT_EVENT1 0x058 0x2C0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO12_CCMSRCGPCMIX_OUT1 0x058 0x2C0 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO12_CSU_CSU_ALARM_AUT0 0x058 0x2C0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO13_GPIO1_IO13 0x05C 0x2C4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x05C 0x2C4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO13_PWM2_OUT 0x05C 0x2C4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO13_CCMSRCGPCMIX_OUT2 0x05C 0x2C4 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO13_CSU_CSU_ALARM_AUT1 0x05C 0x2C4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x060 0x2C8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO14_USB2_OTG_PWR 0x060 0x2C8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO14_PWM3_OUT 0x060 0x2C8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO14_CCMSRCGPCMIX_CLKO1 0x060 0x2C8 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO14_CSU_CSU_ALARM_AUT2 0x060 0x2C8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO15_GPIO1_IO15 0x064 0x2CC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO15_USB2_OTG_OC 0x064 0x2CC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO15_PWM4_OUT 0x064 0x2CC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2 0x064 0x2CC 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_GPIO1_IO15_CSU_CSU_INT_DEB 0x064 0x2CC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x068 0x2D0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_MDC_GPIO1_IO16 0x068 0x2D0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x06C 0x2D4 0x4C0 0x0 0x1 +#define MX8MQ_IOMUXC_ENET_MDIO_GPIO1_IO17 0x06C 0x2D4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x070 0x2D8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_TD3_GPIO1_IO18 0x070 0x2D8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x074 0x2DC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_TD2_ENET1_TX_CLK 0x074 0x2DC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ENET_TD2_GPIO1_IO19 0x074 0x2DC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x078 0x2E0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_TD1_GPIO1_IO20 0x078 0x2E0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x07C 0x2E4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_TD0_GPIO1_IO21 0x07C 0x2E4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x080 0x2E8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_TX_CTL_GPIO1_IO22 0x080 0x2E8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x084 0x2EC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_TXC_ENET1_TX_ER 0x084 0x2EC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ENET_TXC_GPIO1_IO23 0x084 0x2EC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x088 0x2F0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_RX_CTL_GPIO1_IO24 0x088 0x2F0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x08C 0x2F4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_RXC_ENET1_RX_ER 0x08C 0x2F4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ENET_RXC_GPIO1_IO25 0x08C 0x2F4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x090 0x2F8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_RD0_GPIO1_IO26 0x090 0x2F8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x094 0x2FC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_RD1_GPIO1_IO27 0x094 0x2FC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x098 0x300 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_RD2_GPIO1_IO28 0x098 0x300 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x09C 0x304 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ENET_RD3_GPIO1_IO29 0x09C 0x304 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x0A0 0x308 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_CLK_GPIO2_IO0 0x0A0 0x308 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0x0A4 0x30C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_CMD_GPIO2_IO1 0x0A4 0x30C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x0A8 0x310 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA0_GPIO2_IO2 0x0A8 0x31 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x0AC 0x314 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA1_GPIO2_IO3 0x0AC 0x314 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x0B0 0x318 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA2_GPIO2_IO4 0x0B0 0x318 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x0B4 0x31C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA3_GPIO2_IO5 0x0B4 0x31C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x0B8 0x320 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA4_GPIO2_IO6 0x0B8 0x320 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x0BC 0x324 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA5_GPIO2_IO7 0x0BC 0x324 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x0C0 0x328 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA6_GPIO2_IO8 0x0C0 0x328 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x0C4 0x32C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_DATA7_GPIO2_IO9 0x0C4 0x32C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0x0C8 0x330 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x0C8 0x330 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x0CC 0x334 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD1_STROBE_GPIO2_IO11 0x0CC 0x334 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x0D0 0x338 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x0D0 0x338 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x0D4 0x33C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_CLK_GPIO2_IO13 0x0D4 0x33C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_CLK_CCMSRCGPCMIX_OBSERVE0 0x0D4 0x33C 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_CLK_OBSERVE_MUX_OUT0 0x0D4 0x33C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0x0D8 0x340 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_CMD_GPIO2_IO14 0x0D8 0x340 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_CMD_CCMSRCGPCMIX_OBSERVE1 0x0D8 0x340 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_CMD_OBSERVE_MUX_OUT1 0x0D8 0x340 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x0DC 0x344 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_DATA0_GPIO2_IO15 0x0DC 0x344 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_DATA0_CCMSRCGPCMIX_OBSERVE2 0x0DC 0x344 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_DATA0_OBSERVE_MUX_OUT2 0x0DC 0x344 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x0E0 0x348 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_DATA1_GPIO2_IO16 0x0E0 0x348 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_DATA1_CCMSRCGPCMIX_WAIT 0x0E0 0x348 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_DATA1_OBSERVE_MUX_OUT3 0x0E0 0x348 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x0E4 0x34C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_DATA2_GPIO2_IO17 0x0E4 0x34C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_DATA2_CCMSRCGPCMIX_STOP 0x0E4 0x34C 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_DATA2_OBSERVE_MUX_OUT4 0x0E4 0x34C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x0E8 0x350 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_DATA3_GPIO2_IO18 0x0E8 0x350 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_DATA3_CCMSRCGPCMIX_EARLY_RESET 0x0E8 0x350 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0x0EC 0x354 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x0EC 0x354 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_RESET_B_CCMSRCGPCMIX_SYSTEM_RESET 0x0EC 0x354 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SD2_WP_USDHC2_WP 0x0F0 0x358 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20 0x0F0 0x358 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SD2_WP_SIM_M_HMASTLOCK 0x0F0 0x358 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_ALE_RAWNAND_ALE 0x0F4 0x35C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x0F4 0x35C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_ALE_GPIO3_IO0 0x0F4 0x35C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_ALE_SIM_M_HPROT0 0x0F4 0x35C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_CE0_B_RAWNAND_CE0_B 0x0F8 0x360 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x0F8 0x360 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_CE0_B_GPIO3_IO1 0x0F8 0x360 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_CE0_B_SIM_M_HPROT1 0x0F8 0x360 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_CE1_B_RAWNAND_CE1_B 0x0FC 0x364 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_CE1_B_QSPI_A_SS1_B 0x0FC 0x364 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_CE1_B_GPIO3_IO2 0x0FC 0x364 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_CE1_B_SIM_M_HPROT2 0x0FC 0x364 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_CE2_B_RAWNAND_CE2_B 0x100 0x368 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_CE2_B_QSPI_B_SS0_B 0x100 0x368 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x100 0x368 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_CE2_B_SIM_M_HPROT3 0x100 0x368 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_CE3_B_RAWNAND_CE3_B 0x104 0x36C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_CE3_B_QSPI_B_SS1_B 0x104 0x36C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x104 0x36C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_CE3_B_SIM_M_HADDR0 0x104 0x36C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_CLE_RAWNAND_CLE 0x108 0x370 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_CLE_QSPI_B_SCLK 0x108 0x370 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5 0x108 0x370 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_CLE_SIM_M_HADDR1 0x108 0x370 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA00_RAWNAND_DATA00 0x10C 0x374 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x10C 0x374 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA00_GPIO3_IO6 0x10C 0x374 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA00_SIM_M_HADDR2 0x10C 0x374 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA01_RAWNAND_DATA01 0x110 0x378 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x110 0x378 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA01_GPIO3_IO7 0x110 0x378 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA01_SIM_M_HADDR3 0x110 0x378 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA02_RAWNAND_DATA02 0x114 0x37C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x114 0x37C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA02_GPIO3_IO8 0x114 0x37C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA02_SIM_M_HADDR4 0x114 0x37C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA03_RAWNAND_DATA03 0x118 0x380 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x118 0x380 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA03_GPIO3_IO9 0x118 0x380 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA03_SIM_M_HADDR5 0x118 0x380 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA04_RAWNAND_DATA04 0x11C 0x384 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA04_QSPI_B_DATA0 0x11C 0x384 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA04_GPIO3_IO10 0x11C 0x384 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA04_SIM_M_HADDR6 0x11C 0x384 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA05_RAWNAND_DATA05 0x120 0x388 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA05_QSPI_B_DATA1 0x120 0x388 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA05_GPIO3_IO11 0x120 0x388 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA05_SIM_M_HADDR7 0x120 0x388 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA06_RAWNAND_DATA06 0x124 0x38C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA06_QSPI_B_DATA2 0x124 0x38C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA06_GPIO3_IO12 0x124 0x38C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA06_SIM_M_HADDR8 0x124 0x38C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DATA07_RAWNAND_DATA07 0x128 0x390 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DATA07_QSPI_B_DATA3 0x128 0x390 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DATA07_GPIO3_IO13 0x128 0x390 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DATA07_SIM_M_HADDR9 0x128 0x390 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_DQS_RAWNAND_DQS 0x12C 0x394 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_DQS_QSPI_A_DQS 0x12C 0x394 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_DQS_GPIO3_IO14 0x12C 0x394 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_DQS_SIM_M_HADDR10 0x12C 0x394 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_RE_B_RAWNAND_RE_B 0x130 0x398 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_RE_B_QSPI_B_DQS 0x130 0x398 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_NAND_RE_B_GPIO3_IO15 0x130 0x398 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_RE_B_SIM_M_HADDR11 0x130 0x398 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_READY_B_RAWNAND_READY_B 0x134 0x39C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_READY_B_GPIO3_IO16 0x134 0x39C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_READY_B_SIM_M_HADDR12 0x134 0x39C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_WE_B_RAWNAND_WE_B 0x138 0x3A0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_WE_B_GPIO3_IO17 0x138 0x3A0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_WE_B_SIM_M_HADDR13 0x138 0x3A0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_NAND_WP_B_RAWNAND_WP_B 0x13C 0x3A4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_NAND_WP_B_GPIO3_IO18 0x13C 0x3A4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_NAND_WP_B_SIM_M_HADDR14 0x13C 0x3A4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI5_RXFS_SAI5_RX_SYNC 0x140 0x3A8 0x4E4 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_RXFS_SAI1_TX_DATA0 0x140 0x3A8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_RXFS_GPIO3_IO19 0x140 0x3A8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_RXC_SAI5_RX_BCLK 0x144 0x3AC 0x4D0 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_RXC_SAI1_TX_DATA1 0x144 0x3AC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20 0x144 0x3AC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0 0x148 0x3B0 0x4D4 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD0_SAI1_TX_DATA2 0x148 0x3B0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD0_GPIO3_IO21 0x148 0x3B0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD1_SAI5_RX_DATA1 0x14C 0x3B4 0x4D8 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD1_SAI1_TX_DATA3 0x14C 0x3B4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD1_SAI1_TX_SYNC 0x14C 0x3B4 0x4CC 0x2 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC 0x14C 0x3B4 0x4EC 0x3 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD1_GPIO3_IO22 0x14C 0x3B4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD2_SAI5_RX_DATA2 0x150 0x3B8 0x4DC 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD2_SAI1_TX_DATA4 0x150 0x3B8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD2_SAI1_TX_SYNC 0x150 0x3B8 0x4CC 0x2 0x1 +#define MX8MQ_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK 0x150 0x3B8 0x4E8 0x3 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD2_GPIO3_IO23 0x150 0x3B8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD3_SAI5_RX_DATA3 0x154 0x3BC 0x4E0 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD3_SAI1_TX_DATA5 0x154 0x3BC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD3_SAI1_TX_SYNC 0x154 0x3BC 0x4CC 0x2 0x2 +#define MX8MQ_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0 0x154 0x3BC 0x000 0x3 0x0 +#define MX8MQ_IOMUXC_SAI5_RXD3_GPIO3_IO24 0x154 0x3BC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_MCLK_SAI5_MCLK 0x158 0x3C0 0x52C 0x0 0x0 +#define MX8MQ_IOMUXC_SAI5_MCLK_SAI1_TX_BCLK 0x158 0x3C0 0x4C8 0x1 0x0 +#define MX8MQ_IOMUXC_SAI5_MCLK_SAI4_MCLK 0x158 0x3C0 0x000 0x2 0x0 +#define MX8MQ_IOMUXC_SAI5_MCLK_GPIO3_IO25 0x158 0x3C0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI5_MCLK_CCMSRCGPCMIX_TESTER_ACK 0x158 0x3C0 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXFS_SAI1_RX_SYNC 0x15C 0x3C4 0x4C4 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXFS_SAI5_RX_SYNC 0x15C 0x3C4 0x4E4 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_RXFS_CORESIGHT_TRACE_CLK 0x15C 0x3C4 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXFS_GPIO4_IO0 0x15C 0x3C4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXFS_SIM_M_HADDR15 0x15C 0x3C4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXC_SAI1_RX_BCLK 0x160 0x3C8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXC_SAI5_RX_BCLK 0x160 0x3C8 0x4D0 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_RXC_CORESIGHT_TRACE_CTL 0x160 0x3C8 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXC_GPIO4_IO1 0x160 0x3C8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXC_SIM_M_HADDR16 0x160 0x3C8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD0_SAI1_RX_DATA0 0x164 0x3CC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD0_SAI5_RX_DATA0 0x164 0x3CC 0x4D4 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_RXD0_CORESIGHT_TRACE0 0x164 0x3CC 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD0_GPIO4_IO2 0x164 0x3CC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD0_CCMSRCGPCMIX_BOOT_CFG0 0x164 0x3CC 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD0_SIM_M_HADDR17 0x164 0x3CC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD1_SAI1_RX_DATA1 0x168 0x3D0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD1_SAI5_RX_DATA1 0x168 0x3D0 0x4D8 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_RXD1_CORESIGHT_TRACE1 0x168 0x3D0 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD1_GPIO4_IO3 0x168 0x3D0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD1_CCMSRCGPCMIX_BOOT_CFG1 0x168 0x3D0 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD1_SIM_M_HADDR18 0x168 0x3D0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD2_SAI1_RX_DATA2 0x16C 0x3D4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD2_SAI5_RX_DATA2 0x16C 0x3D4 0x4DC 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_RXD2_CORESIGHT_TRACE2 0x16C 0x3D4 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD2_GPIO4_IO4 0x16C 0x3D4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD2_CCMSRCGPCMIX_BOOT_CFG2 0x16C 0x3D4 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD2_SIM_M_HADDR19 0x16C 0x3D4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD3_SAI1_RX_DATA3 0x170 0x3D8 0x4E0 0x0 0x1 +#define MX8MQ_IOMUXC_SAI1_RXD3_SAI5_RX_DATA3 0x170 0x3D8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD3_CORESIGHT_TRACE3 0x170 0x3D8 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD3_GPIO4_IO5 0x170 0x3D8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD3_CCMSRCGPCMIX_BOOT_CFG3 0x170 0x3D8 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD3_SIM_M_HADDR20 0x170 0x3D8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_SAI1_RX_DATA4 0x174 0x3DC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_SAI6_TX_BCLK 0x174 0x3DC 0x51C 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_SAI6_RX_BCLK 0x174 0x3DC 0x510 0x2 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_CORESIGHT_TRACE4 0x174 0x3DC 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_GPIO4_IO6 0x174 0x3DC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_CCMSRCGPCMIX_BOOT_CFG4 0x174 0x3DC 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD4_SIM_M_HADDR21 0x174 0x3DC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_SAI1_RX_DATA5 0x178 0x3E0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_SAI6_TX_DATA0 0x178 0x3E0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_SAI6_RX_DATA0 0x178 0x3E0 0x514 0x2 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_SAI1_RX_SYNC 0x178 0x3E0 0x4C4 0x3 0x1 +#define MX8MQ_IOMUXC_SAI1_RXD5_CORESIGHT_TRACE5 0x178 0x3E0 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_GPIO4_IO7 0x178 0x3E0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_CCMSRCGPCMIX_BOOT_CFG5 0x178 0x3E0 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD5_SIM_M_HADDR22 0x178 0x3E0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_SAI1_RX_DATA6 0x17C 0x3E4 0x520 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_SAI6_TX_SYNC 0x17C 0x3E4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_SAI6_RX_SYNC 0x17C 0x3E4 0x518 0x2 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_CORESIGHT_TRACE6 0x17C 0x3E4 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_GPIO4_IO8 0x17C 0x3E4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_CCMSRCGPCMIX_BOOT_CFG6 0x17C 0x3E4 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD6_SIM_M_HADDR23 0x17C 0x3E4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_SAI1_RX_DATA7 0x180 0x3E8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_SAI6_MCLK 0x180 0x3E8 0x530 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_SAI1_TX_SYNC 0x180 0x3E8 0x4CC 0x2 0x4 +#define MX8MQ_IOMUXC_SAI1_RXD7_SAI1_TX_DATA4 0x180 0x3E8 0x000 0x3 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_CORESIGHT_TRACE7 0x180 0x3E8 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_GPIO4_IO9 0x180 0x3E8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_CCMSRCGPCMIX_BOOT_CFG7 0x180 0x3E8 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_RXD7_SIM_M_HADDR24 0x180 0x3E8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC 0x184 0x3EC 0x4CC 0x0 0x3 +#define MX8MQ_IOMUXC_SAI1_TXFS_SAI5_TX_SYNC 0x184 0x3EC 0x4EC 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_TXFS_CORESIGHT_EVENTO 0x184 0x3EC 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXFS_GPIO4_IO10 0x184 0x3EC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXFS_SIM_M_HADDR25 0x184 0x3EC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXC_SAI1_TX_BCLK 0x188 0x3F0 0x4C8 0x0 0x1 +#define MX8MQ_IOMUXC_SAI1_TXC_SAI5_TX_BCLK 0x188 0x3F0 0x4E8 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_TXC_CORESIGHT_EVENTI 0x188 0x3F0 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXC_GPIO4_IO11 0x188 0x3F0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXC_SIM_M_HADDR26 0x188 0x3F0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD0_SAI1_TX_DATA0 0x18C 0x3F4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD0_SAI5_TX_DATA0 0x18C 0x3F4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD0_CORESIGHT_TRACE8 0x18C 0x3F4 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD0_GPIO4_IO12 0x18C 0x3F4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD0_CCMSRCGPCMIX_BOOT_CFG8 0x18C 0x3F4 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD0_SIM_M_HADDR27 0x18C 0x3F4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1 0x190 0x3F8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD1_SAI5_TX_DATA1 0x190 0x3F8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD1_CORESIGHT_TRACE9 0x190 0x3F8 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD1_GPIO4_IO13 0x190 0x3F8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD1_CCMSRCGPCMIX_BOOT_CFG9 0x190 0x3F8 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD1_SIM_M_HADDR28 0x190 0x3F8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD2_SAI1_TX_DATA2 0x194 0x3FC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD2_SAI5_TX_DATA2 0x194 0x3FC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD2_CORESIGHT_TRACE10 0x194 0x3FC 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD2_GPIO4_IO14 0x194 0x3FC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD2_CCMSRCGPCMIX_BOOT_CFG10 0x194 0x3FC 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD2_SIM_M_HADDR29 0x194 0x3FC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD3_SAI1_TX_DATA3 0x198 0x400 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD3_SAI5_TX_DATA3 0x198 0x400 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD3_CORESIGHT_TRACE11 0x198 0x400 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD3_GPIO4_IO15 0x198 0x400 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD3_CCMSRCGPCMIX_BOOT_CFG11 0x198 0x400 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD3_SIM_M_HADDR30 0x198 0x400 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD4_SAI1_TX_DATA4 0x19C 0x404 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD4_SAI6_RX_BCLK 0x19C 0x404 0x510 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_TXD4_SAI6_TX_BCLK 0x19C 0x404 0x51C 0x2 0x1 +#define MX8MQ_IOMUXC_SAI1_TXD4_CORESIGHT_TRACE12 0x19C 0x404 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD4_GPIO4_IO16 0x19C 0x404 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD4_CCMSRCGPCMIX_BOOT_CFG12 0x19C 0x404 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD4_SIM_M_HADDR31 0x19C 0x404 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD5_SAI1_TX_DATA5 0x1A0 0x408 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD5_SAI6_RX_DATA0 0x1A0 0x408 0x514 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_TXD5_SAI6_TX_DATA0 0x1A0 0x408 0x000 0x2 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD5_CORESIGHT_TRACE13 0x1A0 0x408 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD5_GPIO4_IO17 0x1A0 0x408 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD5_CCMSRCGPCMIX_BOOT_CFG13 0x1A0 0x408 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD5_SIM_M_HBURST0 0x1A0 0x408 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD6_SAI1_TX_DATA6 0x1A4 0x40C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD6_SAI6_RX_SYNC 0x1A4 0x40C 0x518 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_TXD6_SAI6_TX_SYNC 0x1A4 0x40C 0x520 0x2 0x1 +#define MX8MQ_IOMUXC_SAI1_TXD6_CORESIGHT_TRACE14 0x1A4 0x40C 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD6_GPIO4_IO18 0x1A4 0x40C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD6_CCMSRCGPCMIX_BOOT_CFG14 0x1A4 0x40C 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD6_SIM_M_HBURST1 0x1A4 0x40C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7 0x1A8 0x410 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD7_SAI6_MCLK 0x1A8 0x410 0x530 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_TXD7_CORESIGHT_TRACE15 0x1A8 0x410 0x000 0x4 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD7_GPIO4_IO19 0x1A8 0x410 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD7_CCMSRCGPCMIX_BOOT_CFG15 0x1A8 0x410 0x000 0x6 0x0 +#define MX8MQ_IOMUXC_SAI1_TXD7_SIM_M_HBURST2 0x1A8 0x410 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI1_MCLK_SAI1_MCLK 0x1AC 0x414 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI1_MCLK_SAI5_MCLK 0x1AC 0x414 0x52C 0x1 0x1 +#define MX8MQ_IOMUXC_SAI1_MCLK_SAI1_TX_BCLK 0x1AC 0x414 0x4C8 0x2 0x2 +#define MX8MQ_IOMUXC_SAI1_MCLK_GPIO4_IO20 0x1AC 0x414 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI1_MCLK_SIM_M_HRESP 0x1AC 0x414 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_RXFS_SAI2_RX_SYNC 0x1B0 0x418 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_RXFS_SAI5_TX_SYNC 0x1B0 0x418 0x4EC 0x1 0x2 +#define MX8MQ_IOMUXC_SAI2_RXFS_GPIO4_IO21 0x1B0 0x418 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_RXFS_SIM_M_HSIZE0 0x1B0 0x418 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_RXC_SAI2_RX_BCLK 0x1B4 0x41C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_RXC_SAI5_TX_BCLK 0x1B4 0x41C 0x4E8 0x1 0x2 +#define MX8MQ_IOMUXC_SAI2_RXC_GPIO4_IO22 0x1B4 0x41C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_RXC_SIM_M_HSIZE1 0x1B4 0x41C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0x1B8 0x420 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_RXD0_SAI5_TX_DATA0 0x1B8 0x420 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI2_RXD0_GPIO4_IO23 0x1B8 0x420 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_RXD0_SIM_M_HSIZE2 0x1B8 0x420 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0x1BC 0x424 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_TXFS_SAI5_TX_DATA1 0x1BC 0x424 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI2_TXFS_GPIO4_IO24 0x1BC 0x424 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_TXFS_SIM_M_HWRITE 0x1BC 0x424 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0x1C0 0x428 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_TXC_SAI5_TX_DATA2 0x1C0 0x428 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI2_TXC_GPIO4_IO25 0x1C0 0x428 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_TXC_SIM_M_HREADYOUT 0x1C0 0x428 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0x1C4 0x42C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_TXD0_SAI5_TX_DATA3 0x1C4 0x42C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI2_TXD0_GPIO4_IO26 0x1C4 0x42C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_TXD0_TPSMP_CLK 0x1C4 0x42C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK 0x1C8 0x430 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI2_MCLK_SAI5_MCLK 0x1C8 0x430 0x52C 0x1 0x2 +#define MX8MQ_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x1C8 0x430 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI2_MCLK_TPSMP_HDATA_DIR 0x1C8 0x430 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_RXFS_SAI3_RX_SYNC 0x1CC 0x434 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_RXFS_GPT1_CAPTURE1 0x1CC 0x434 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_RXFS_SAI5_RX_SYNC 0x1CC 0x434 0x4E4 0x2 0x2 +#define MX8MQ_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x1CC 0x434 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_RXFS_TPSMP_HTRANS0 0x1CC 0x434 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_RXC_SAI3_RX_BCLK 0x1D0 0x438 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_RXC_GPT1_CAPTURE2 0x1D0 0x438 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_RXC_SAI5_RX_BCLK 0x1D0 0x438 0x4D0 0x2 0x2 +#define MX8MQ_IOMUXC_SAI3_RXC_GPIO4_IO29 0x1D0 0x438 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_RXC_TPSMP_HTRANS1 0x1D0 0x438 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0x1D4 0x43C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_RXD_GPT1_COMPARE1 0x1D4 0x43C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_RXD_SAI5_RX_DATA0 0x1D4 0x43C 0x4D4 0x2 0x2 +#define MX8MQ_IOMUXC_SAI3_RXD_GPIO4_IO30 0x1D4 0x43C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_RXD_TPSMP_HDATA0 0x1D4 0x43C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0x1D8 0x440 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_TXFS_GPT1_CLK 0x1D8 0x440 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_TXFS_SAI5_RX_DATA1 0x1D8 0x440 0x4D8 0x2 0x2 +#define MX8MQ_IOMUXC_SAI3_TXFS_GPIO4_IO31 0x1D8 0x440 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_TXFS_TPSMP_HDATA1 0x1D8 0x440 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0x1DC 0x444 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_TXC_GPT1_COMPARE2 0x1DC 0x444 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_TXC_SAI5_RX_DATA2 0x1DC 0x444 0x4DC 0x2 0x2 +#define MX8MQ_IOMUXC_SAI3_TXC_GPIO5_IO0 0x1DC 0x444 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_TXC_TPSMP_HDATA2 0x1DC 0x444 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0x1E0 0x448 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_TXD_GPT1_COMPARE3 0x1E0 0x448 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_TXD_SAI5_RX_DATA3 0x1E0 0x448 0x4E0 0x2 0x2 +#define MX8MQ_IOMUXC_SAI3_TXD_GPIO5_IO1 0x1E0 0x448 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_TXD_TPSMP_HDATA3 0x1E0 0x448 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SAI3_MCLK_SAI3_MCLK 0x1E4 0x44C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SAI3_MCLK_PWM4_OUT 0x1E4 0x44C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SAI3_MCLK_SAI5_MCLK 0x1E4 0x44C 0x52C 0x2 0x3 +#define MX8MQ_IOMUXC_SAI3_MCLK_GPIO5_IO2 0x1E4 0x44C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SAI3_MCLK_TPSMP_HDATA4 0x1E4 0x44C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SPDIF_TX_SPDIF1_OUT 0x1E8 0x450 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SPDIF_TX_PWM3_OUT 0x1E8 0x450 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SPDIF_TX_GPIO5_IO3 0x1E8 0x450 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SPDIF_TX_TPSMP_HDATA5 0x1E8 0x450 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SPDIF_RX_SPDIF1_IN 0x1EC 0x454 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SPDIF_RX_PWM2_OUT 0x1EC 0x454 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SPDIF_RX_GPIO5_IO4 0x1EC 0x454 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SPDIF_RX_TPSMP_HDATA6 0x1EC 0x454 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_SPDIF_EXT_CLK_SPDIF1_EXT_CLK 0x1F0 0x458 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT 0x1F0 0x458 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_SPDIF_EXT_CLK_GPIO5_IO5 0x1F0 0x458 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_SPDIF_EXT_CLK_TPSMP_HDATA7 0x1F0 0x458 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK 0x1F4 0x45C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x1F4 0x45C 0x504 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SCLK_UART3_DTE_TX 0x1F4 0x45C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SCLK_GPIO5_IO6 0x1F4 0x45C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SCLK_TPSMP_HDATA8 0x1F4 0x45C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI 0x1F8 0x460 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x1F8 0x460 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MOSI_UART3_DTE_RX 0x1F8 0x460 0x504 0x1 0x1 +#define MX8MQ_IOMUXC_ECSPI1_MOSI_GPIO5_IO7 0x1F8 0x460 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MOSI_TPSMP_HDATA9 0x1F8 0x460 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MISO_ECSPI1_MISO 0x1FC 0x464 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x1FC 0x464 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MISO_UART3_DTE_RTS_B 0x1FC 0x464 0x500 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MISO_GPIO5_IO8 0x1FC 0x464 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI1_MISO_TPSMP_HDATA10 0x1FC 0x464 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SS0_ECSPI1_SS0 0x200 0x468 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x200 0x468 0x500 0x1 0x1 +#define MX8MQ_IOMUXC_ECSPI1_SS0_UART3_DTE_CTS_B 0x200 0x468 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x200 0x468 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI1_SS0_TPSMP_HDATA11 0x200 0x468 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x204 0x46C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SCLK_UART4_DCE_RX 0x204 0x46C 0x50C 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SCLK_UART4_DTE_TX 0x204 0x46C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SCLK_GPIO5_IO10 0x204 0x46C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SCLK_TPSMP_HDATA12 0x204 0x46C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x208 0x470 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MOSI_UART4_DCE_TX 0x208 0x470 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MOSI_UART4_DTE_RX 0x208 0x470 0x50C 0x1 0x1 +#define MX8MQ_IOMUXC_ECSPI2_MOSI_GPIO5_IO11 0x208 0x470 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MOSI_TPSMP_HDATA13 0x208 0x470 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x20C 0x474 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MISO_UART4_DCE_CTS_B 0x20C 0x474 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MISO_UART4_DTE_RTS_B 0x20C 0x474 0x508 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MISO_GPIO5_IO12 0x20C 0x474 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI2_MISO_TPSMP_HDATA14 0x20C 0x474 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SS0_ECSPI2_SS0 0x210 0x478 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SS0_UART4_DCE_RTS_B 0x210 0x478 0x508 0x1 0x1 +#define MX8MQ_IOMUXC_ECSPI2_SS0_UART4_DTE_CTS_B 0x210 0x478 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x210 0x478 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_ECSPI2_SS0_TPSMP_HDATA15 0x210 0x478 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x214 0x47C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C1_SCL_ENET1_MDC 0x214 0x47C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C1_SCL_GPIO5_IO14 0x214 0x47C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C1_SCL_TPSMP_HDATA16 0x214 0x47C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x218 0x480 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C1_SDA_ENET1_MDIO 0x218 0x480 0x4C0 0x1 0x2 +#define MX8MQ_IOMUXC_I2C1_SDA_GPIO5_IO15 0x218 0x480 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C1_SDA_TPSMP_HDATA17 0x218 0x480 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x21C 0x484 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C2_SCL_ENET1_1588_EVENT1_IN 0x21C 0x484 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C2_SCL_GPIO5_IO16 0x21C 0x484 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C2_SCL_TPSMP_HDATA18 0x21C 0x484 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x220 0x488 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C2_SDA_ENET1_1588_EVENT1_OUT 0x220 0x488 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C2_SDA_GPIO5_IO17 0x220 0x488 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C2_SDA_TPSMP_HDATA19 0x220 0x488 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x224 0x48C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C3_SCL_PWM4_OUT 0x224 0x48C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C3_SCL_GPT2_CLK 0x224 0x48C 0x000 0x2 0x0 +#define MX8MQ_IOMUXC_I2C3_SCL_GPIO5_IO18 0x224 0x48C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C3_SCL_TPSMP_HDATA20 0x224 0x48C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x228 0x490 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C3_SDA_PWM3_OUT 0x228 0x490 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C3_SDA_GPT3_CLK 0x228 0x490 0x000 0x2 0x0 +#define MX8MQ_IOMUXC_I2C3_SDA_GPIO5_IO19 0x228 0x490 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C3_SDA_TPSMP_HDATA21 0x228 0x490 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL 0x22C 0x494 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C4_SCL_PWM2_OUT 0x22C 0x494 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B 0x22C 0x494 0x524 0x2 0x0 +#define MX8MQ_IOMUXC_I2C4_SCL_GPIO5_IO20 0x22C 0x494 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C4_SCL_TPSMP_HDATA22 0x22C 0x494 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA 0x230 0x498 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_I2C4_SDA_PWM1_OUT 0x230 0x498 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_I2C4_SDA_PCIE2_CLKREQ_B 0x230 0x498 0x528 0x2 0x0 +#define MX8MQ_IOMUXC_I2C4_SDA_GPIO5_IO21 0x230 0x498 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_I2C4_SDA_TPSMP_HDATA23 0x230 0x498 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x234 0x49C 0x4F4 0x0 0x0 +#define MX8MQ_IOMUXC_UART1_RXD_UART1_DTE_TX 0x234 0x49C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART1_RXD_ECSPI3_SCLK 0x234 0x49C 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART1_RXD_GPIO5_IO22 0x234 0x49C 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART1_RXD_TPSMP_HDATA24 0x234 0x49C 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x238 0x4A0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART1_TXD_UART1_DTE_RX 0x238 0x4A0 0x4F4 0x0 0x0 +#define MX8MQ_IOMUXC_UART1_TXD_ECSPI3_MOSI 0x238 0x4A0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART1_TXD_GPIO5_IO23 0x238 0x4A0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART1_TXD_TPSMP_HDATA25 0x238 0x4A0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x23C 0x4A4 0x4FC 0x0 0x0 +#define MX8MQ_IOMUXC_UART2_RXD_UART2_DTE_TX 0x23C 0x4A4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART2_RXD_ECSPI3_MISO 0x23C 0x4A4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART2_RXD_GPIO5_IO24 0x23C 0x4A4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART2_RXD_TPSMP_HDATA26 0x23C 0x4A4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x240 0x4A8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART2_TXD_UART2_DTE_RX 0x240 0x4A8 0x4FC 0x0 0x1 +#define MX8MQ_IOMUXC_UART2_TXD_ECSPI3_SS0 0x240 0x4A8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART2_TXD_GPIO5_IO25 0x240 0x4A8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART2_TXD_TPSMP_HDATA27 0x240 0x4A8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x244 0x4AC 0x504 0x0 0x2 +#define MX8MQ_IOMUXC_UART3_RXD_UART3_DTE_TX 0x244 0x4AC 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART3_RXD_UART1_DCE_CTS_B 0x244 0x4AC 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART3_RXD_UART1_DTE_RTS_B 0x244 0x4AC 0x4F0 0x1 0x0 +#define MX8MQ_IOMUXC_UART3_RXD_GPIO5_IO26 0x244 0x4AC 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART3_RXD_TPSMP_HDATA28 0x244 0x4AC 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x248 0x4B0 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART3_TXD_UART3_DTE_RX 0x248 0x4B0 0x504 0x0 0x3 +#define MX8MQ_IOMUXC_UART3_TXD_UART1_DCE_RTS_B 0x248 0x4B0 0x4F0 0x1 0x1 +#define MX8MQ_IOMUXC_UART3_TXD_UART1_DTE_CTS_B 0x248 0x4B0 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART3_TXD_GPIO5_IO27 0x248 0x4B0 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART3_TXD_TPSMP_HDATA29 0x248 0x4B0 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART4_RXD_UART4_DCE_RX 0x24C 0x4B4 0x50C 0x0 0x2 +#define MX8MQ_IOMUXC_UART4_RXD_UART4_DTE_TX 0x24C 0x4B4 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART4_RXD_UART2_DCE_CTS_B 0x24C 0x4B4 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART4_RXD_UART2_DTE_RTS_B 0x24C 0x4B4 0x4F8 0x1 0x0 +#define MX8MQ_IOMUXC_UART4_RXD_PCIE1_CLKREQ_B 0x24C 0x4B4 0x524 0x2 0x1 +#define MX8MQ_IOMUXC_UART4_RXD_GPIO5_IO28 0x24C 0x4B4 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART4_RXD_TPSMP_HDATA30 0x24C 0x4B4 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_UART4_TXD_UART4_DCE_TX 0x250 0x4B8 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_UART4_TXD_UART4_DTE_RX 0x250 0x4B8 0x50C 0x0 0x3 +#define MX8MQ_IOMUXC_UART4_TXD_UART2_DCE_RTS_B 0x250 0x4B8 0x4F8 0x1 0x1 +#define MX8MQ_IOMUXC_UART4_TXD_UART2_DTE_CTS_B 0x250 0x4B8 0x000 0x1 0x0 +#define MX8MQ_IOMUXC_UART4_TXD_PCIE2_CLKREQ_B 0x250 0x4B8 0x528 0x2 0x1 +#define MX8MQ_IOMUXC_UART4_TXD_GPIO5_IO29 0x250 0x4B8 0x000 0x5 0x0 +#define MX8MQ_IOMUXC_UART4_TXD_TPSMP_HDATA31 0x250 0x4B8 0x000 0x7 0x0 +#define MX8MQ_IOMUXC_TEST_MODE 0x000 0x254 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_BOOT_MODE0 0x000 0x258 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_BOOT_MODE1 0x000 0x25C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_JTAG_MOD 0x000 0x260 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_JTAG_TRST_B 0x000 0x264 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_JTAG_TDI 0x000 0x268 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_JTAG_TMS 0x000 0x26C 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_JTAG_TCK 0x000 0x270 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_JTAG_TDO 0x000 0x274 0x000 0x0 0x0 +#define MX8MQ_IOMUXC_RTC 0x000 0x278 0x000 0x0 0x0 + +#endif /* __DTS_IMX8MQ_PINFUNC_H */ From patchwork Wed Jan 10 03:06:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857910 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="eP5Dxd+0"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ9X4MNNz9s9Y for ; Wed, 10 Jan 2018 14:24:00 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 4CB88C220AF; Wed, 10 Jan 2018 03:19:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 853DCC22115; Wed, 10 Jan 2018 03:09:58 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E442AC21FF3; Wed, 10 Jan 2018 03:08:01 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0055.outbound.protection.outlook.com [104.47.1.55]) by lists.denx.de (Postfix) with ESMTPS id B7DD2C220AF for ; Wed, 10 Jan 2018 03:07:55 +0000 (UTC) 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=HVMJSQ0tMOqVP8vwKp/pGo0evjKqD/152jP4mnoicY4=; b=eP5Dxd+057yDV7pCt/Fe4lOpyrrejpGbxM37z8igcqdm8LKAgJu71J8urO7C0kcbOCjjjo9/6VocPzcKIK/MpF0tIw6YenHtvHo1N4/eL/WASZALNRyVx+uQzgs7TuZUQGKpXmP/vrFHrIauSoi/J6UO2FLm83NuOXOgCCU6Bpg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:51 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:06:01 +0800 Message-Id: <20180110030603.27864-31-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 32028565-0b97-46f1-3b86-08d557d757a4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:lj+9JfxzkWTtbeUUTlysHt0RtQDLsYQr2pVEG5eAqMnA4eJxw/NxXRZJdIdBQKCroVKQn/PPQSHhtSk2Wm+QjGv+EOExvVNBY1WzhVcSRZDk+pAgnlYN7FVT2o9rzgyJyqKVnHxwK5z+FM+PbzdkbufaNYqDl20AnGUvegkKqYj/f58XfKiVxkkBgQZqxP4Bm5U26e6ht1LjIq7nMJ4xXm4C6nJBAjpjNyx33z2DYfMsn5LrPFQLokT6Kofggw7O; 25:CxTVNykBDLKs8hBJGFyK2bp46E4de+2Kf0r5kKbEQuhvo2tahbaKY2wFWWzc8qQjV+vUmQUbx4eH2RQh2K3J2Sefz4SCxrr4IPpl7v1jo32BSZQ7v0VW3jddIZ9fX29Wos0i0vP0eVWQiwhARUWQg5IxK184JPk+R5ZyZmujMZ87gZe02atyxCYGK4z7fw4H+MxfaYZszRicBt9LNsqw+qvvB2ZhwJ5j3ubeal17I68sj0QwR6u04w1nSNWe9Jbd0Cepbxdwg5TBYwnMQs8MLlHrvqgDoL7PxJz5Z2rN/bGY7x4sa4KkyxMMU4rDG1Ymr830GMjdNpKbYkCb+2ZulQ==; 31:GAuXU619DTI9mcWrhyJtyvHq1603+8Ux/LyET97j15SZnLsJ+zxfJG5KuSZc4JQt0Vok1/i9aVm9Z2czCLPzuileqfEJIhyzVKgW0WTxyimaa8rk461QYj1Q/Im0vkYgLo/7qce7D7PumKlXa+02wnsPHFafxBg2+y/zLKAwozFMXEF/KpmOUOVXrsHZv1H/cHVWmPYxFj/sntG+cbBSdZHtc3BBw6hYInz90WulkPE= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:xHG2h+gQTLPOEXH+aYjKD6cd0Gx53xjdDmAMcFmhumdCzMPNrpGtWZrpi94fo9B6SVgzGdRARi7NmPd56eiuTQsKxKVBhw9ZvL1pwkBv1Mk29z5eXjk+9hC67TDTtZp41hYPYj+K1DTXaUb/o30f1zMr9Mn++ipPX74n705FMh1boSCHt/Ph3tjp46+O+dVyIJwzvt1BwsaoLexarBmy+QHtoxQjjp8p/E+xrY8JHcwqS+N4tLx96L/GAWi2FC0RDZONHWdWp1kBsVbGGDslfdpvd/iPoH//BFhuA5l7JK67M/Bi0YbS21xLkHK1WNhzlcgNqbmCcRRzGvVQ2y7Gs3CMWsb/xqHt1PGGHDPMtezgssvB6PCx7t2LHerc+d9BYaoZSLvWwG9FSFxut1pXjILcc7HEkzVko8cpHuX13QItGzfMtby4+w2xjAvEMJypZeHS3Gx5JmyzpubYUzedTbsvvrvH+9gxxvCONRF0JJe1+Np0xD3Q1HSSY52FH1An; 4:gZKcizUje3AgMkI2gf40TqmgnDKJLOgzfLcww3CIKcxDz0+u52hhiwScBhsFgJVK715H9D9lACYwhcNnNSUjnWHfIJ1sWQV1WlYVD8mTEOji5iO/fT8+oF2ZeksbicZKKfC/WUdivXQwA+wC28tTM5TPkuWetdRKpg9fdr9SPIMqr7clOtGecRYuXkWUk1oU2rgtoa0StMEIDh8vzFBcBd0uGgz+6p3H5Pfbj514ioWUT7jw0HMAVBedc1q7CwmxDKeOHwhXeubMh0T1TyHXDMHa2nmWFV1ct+oJnnJOkOGk4fIBWbVDUD7tekDNF0wQNCTEp8GiIRA26UjDOXgTjA+O+tGGNCxI70WXyPS7zOs= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(7411616537696); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(54906003)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:amTBh97UAGOhJLdMY8rXxFbrsOT1VDDHhlzJ4IlSj?= klj0YSCjOTsespiYJyVikveacyXTcHfyKQyIYYl87mGtWvglMOh/Z6/Mg5rD0zozb1jKk38X0F6z07zUGPcK3faQ0e4V9BnQIGhOUKqZciIssoptxUGr49SJB2JUC3Ckb/YMZ9ETFCSGxQeUfm/JzAlcWeAGP1NEmNdnII8WkERmSOM8if2esGCa0asaieLH/dtZbfqNBsk/JQDVTDcp1dpusiqqFZ7yxZeBEdJHcRoLaKyjROW2kFMKd7lS+PVxWcj77GD6KBA5O2+sZcpjrtmmC7QqeiGY8vxzCrXW3AjkP3xVVfVkteEOtmsvpbSbxbKQ21Z7z7HqKw5sAwzx8xCuxZ5sK1KUya2DELeI8Hx3V5j10Rrm72akvlY6Ycu9V2G2QvF1FX8KRXcm1mS2ytcbn8L+r4gIGTLZ+LwdKYX+PvUK2fSDh63bK/AojG6h+QetMRU4BfNDurVTXRq8VDM/w9Z7x8jhIn0PoL3Vd8oYKj2YIGqrXMkr3vU6kQdtoQ21hEAWlDJuKhxuXrTGd7QIjtMU9nQF7BU6j2yxnuoZ4FpxEnxDLw88Arqj99LGpwsTNUhAlHKF91cUf1dLmCyeqi8GQkM+VrbFDLxlIhpJu9lYuOZrWzI926GuSIHWMC2VtstsQT2wLtPOVfeym/BPdYdn1786NiI1JqBNfSFWqLWk4Mvka05UJ5/vq7EfQoCLsuBT+JLU4maklu7lXrGHpIRXei/xXQP3cGT0XnkSww8xJ753EzajSzeM1z2/IwqF2aiP/TARCHp3p60syGcqWwPoAhVZl6vFy9lb6GA/HyHoQclPXaogrg6VXsgLRlK4O7hgGX+AVH4uTiMAsnQddadU9yaf0DcpoTDySYGbCIeAYBQc2UTpndxScXuV43HsluTIytJA3aLiEZEElz0NFgoGbKDAb21Qxk08vFwAZ6UOTWiJQ2hRKEtugdl+23p3NHBeM7+JsgL4Qco4H+C3xkP0k/8dx1vD2Jufke96+9h19VkypP5tCtedAR3VR8YqXTLrTwWjtPId4hNtfVElGM6G/V27BCNlPniLDa9KwoB63HOy61JUg1oC6AVW+foQJI1IPkbkWnZ4kf4vwSJKNZA9LhA31l5pr9KpPz7lQfDgS8gVTYX5E82rDdi6jItHAhq8GE8zhdb1Bj7Yaovvt73lgWgZJDWnIEOvV66Cg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:yW7SJ1CVtllTKmSyEGwe1uXBx+QCxTPDqFR4Na7DBjiYP8SMbEkiN2yS4X+xhFquFN9HFC1aoLgm8Kn3xSOun40LfdA2YR/01POkTuGQtumCYQUYQvY27yTthf5XVR0tYlxa85dv4YAsOHUku9iQExVCrV7dcv0TVT9ROPhw+V0JW7qvNLncpCiLFNV+Nf/AYN4sqQXbS/SWMogudgV9VT+G4MhBoIIgSadsXFAO8uGXYiFfQWIDhGosJ1lYiGO7zPAYfoeCXtriFfe3tBNK4xvv2o2pMiDKe7ml2s3wNjLxkeCSDeU0LaS51MUqKQmSVcgCljXyjr1nigwWf8vutFugP/45TvDy3uakaiDI+TI=; 5:v8XaNMe/6WVyRLFkNT9Ijx0td7K3m4nh/duu+46smVkclboUj3ssO8MsQUB/2tEHRJE+dzxdbHlaP14/QDJzzMzPo0lva21/kXbJRmBPFUeaO/jUN3UY2fo9ixRrgNhQJCblk8RLxBk2ctQKFIOhI4VK3pNMv7+7Gc6qUOM3OlY=; 24:bGGpeB5YpumTqB7rprJ2FfczCZvmxujNE9vb7dJeRApv1ZFKsMrQxAxwKv9uzVLWVVz4pOnRFxDTCPFyJby2jgApc7eb8p+pU3X0TA9t9fA=; 7:bmfOIuAz1p6mHKi8czf8uW1u2W8BekNpyJ+oo2E4UVM0eLkuj+Wz/kIJ0hD0oAc7+OlUmOWVMz+0vs3DhuF6hOkHl6lZKlAVW6rxYLBcIxbkPH9YkQ79IUIipIxLWWJ6iAGkAoNbt6a8ZUvM6kRiYkdfSVc4Sf24ciMl2xr6EFXg65XvFPQwj+TEDGoIWUeN7QrXzl4tEL9VH75HbhZR5rdPkH9y94voPJz3Bu9iOGugAAPMw69N2PM26GBh3w2S SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:51.5104 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 32028565-0b97-46f1-3b86-08d557d757a4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 30/32] power: pmic/regulator allow dm be omitted by SPL X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Allow the dm driver be omitted by SPL. Signed-off-by: Peng Fan Reviewed-by: Simon Glass Cc: Jaehoon Chung Cc: Stefano Babic Reviewed-by: Jaehoon Chung --- drivers/power/pmic/Makefile | 2 +- drivers/power/regulator/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile index 7d6c583d34..fc19fdc701 100644 --- a/drivers/power/pmic/Makefile +++ b/drivers/power/pmic/Makefile @@ -8,7 +8,7 @@ obj-$(CONFIG_DM_PMIC) += pmic-uclass.o obj-$(CONFIG_DM_PMIC_MAX77686) += max77686.o obj-$(CONFIG_DM_PMIC_MAX8998) += max8998.o -obj-$(CONFIG_DM_PMIC_PFUZE100) += pfuze100.o +obj-$(CONFIG_$(SPL_)DM_PMIC_PFUZE100) += pfuze100.o obj-$(CONFIG_PMIC_S2MPS11) += s2mps11.o obj-$(CONFIG_DM_PMIC_SANDBOX) += sandbox.o i2c_pmic_emul.o obj-$(CONFIG_PMIC_ACT8846) += act8846.o diff --git a/drivers/power/regulator/Makefile b/drivers/power/regulator/Makefile index 7a2e76dc82..353177d5f4 100644 --- a/drivers/power/regulator/Makefile +++ b/drivers/power/regulator/Makefile @@ -9,7 +9,7 @@ obj-$(CONFIG_$(SPL_)DM_REGULATOR) += regulator-uclass.o obj-$(CONFIG_REGULATOR_ACT8846) += act8846.o obj-$(CONFIG_REGULATOR_AS3722) += as3722_regulator.o obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o -obj-$(CONFIG_DM_REGULATOR_PFUZE100) += pfuze100.o +obj-$(CONFIG_$(SPL_)DM_PMIC_PFUZE100) += pfuze100.o obj-$(CONFIG_REGULATOR_PWM) += pwm_regulator.o obj-$(CONFIG_$(SPL_)DM_REGULATOR_FIXED) += fixed.o obj-$(CONFIG_$(SPL_)DM_REGULATOR_GPIO) += gpio-regulator.o From patchwork Wed Jan 10 03:06:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857902 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="h73jA9+n"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ463FfSz9s7M for ; Wed, 10 Jan 2018 14:19:18 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id D2AC5C21DB0; Wed, 10 Jan 2018 03:17:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 2C301C22119; Wed, 10 Jan 2018 03:09:09 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6B89CC220BB; Wed, 10 Jan 2018 03:08:03 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0076.outbound.protection.outlook.com [104.47.1.76]) by lists.denx.de (Postfix) with ESMTPS id C915DC220D6 for ; Wed, 10 Jan 2018 03:07:58 +0000 (UTC) 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=2HCSyrbEH/fR3800EAN9Q2uK5lsXTgpe4GQJCycbXok=; b=h73jA9+nULtuB7+rXnwevSXiY7oz0uTfYI4cZeL2IxEio6Rc3pTUczwd7qRWc13/6dzVfQkl6WDXwM/j/Kb4dBpEeUTaL0vnToJHZkNikTfXfav5RF+rweFrvtp62X4qC5qqiQPM5ApEl2NHDVGwO8viluXaWLcHcookOeWcYVs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:54 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:06:02 +0800 Message-Id: <20180110030603.27864-32-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 93994800-b6d3-4e1a-2022-08d557d75975 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:7BIuSUWS0EwJlXdswugqxrWjeEA7AHd010SuRUeHMNB/a6iE9bzaPfx4cckvoL4e6/1MAQN9y08Hbrz/96ikeO7+q3mP/dWj1V4eIgkQlsi/DH8Icyfs9H+lU9UT+qxre5kbhJsfEW+58YygDUDnPOj16WrDL+cajtzfA8PHpOcVFjTdk4w4R/DMYT1ENGy8pFYYJXnOKC2zRbcZOVIBNzzNYrPTkr8RvD04RxWEJzx5g3Okf9veEb4PGsjFJfzy; 25:sjmZ3a0e4pg2UuKmlYpUqbTtL41uHNDcsgAUazIDm9etj9ZRi0Ia6gi7RA/o+rwGcLLJxBuoQjFDw86edqMonebUbeQQFyeEnV9Ge6XvYkamTSQhl2QWvx17kpSa79710dK4ZPQC51wruWSiUoiegDF8zEP/3AGzLht83GZsvruxyw8itFSfmfNSD23U/fmZxwroQ5ZAWymFy/b4R7cBszGn2UygwWv0aS1R7c54pbTwdOyNkFtg57y76a24v555MEfGpFoea/AzcXkZAtiHvLROTM/PQSFxoA4Nt5lWnx59Aiy1xNYkodJu3QTZbqQVUKUNi8DQB/NkvP8AvFPXjA==; 31:yiX8h01D4OryJJatthyKsGitUacDg98IASCFeECJZ9veCy7E1VWu9WLYkEhinyjvt3xQ8MByffEfhpEG+smdKEcSHgwR48l8yoT/qm85aA41MAQ/GCdQubZPUWxTt9pClR+fDxkx/wWT6LtocmY2VrnyhaCcZLm8OM7OfX7raLdEKSiWYt/Xt0iPFRwbJUrfLGDEzaPh3Th62byX+W4tgGJzGlHeA7rqKxk30QXMGIQ= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:7oD6qTD/twRi7nUh9ulvf326+mYwR8g3nuXx/nWQSTXImugcfxC9kaTfmJM/HaVsK5DJoVZutHNbq8hrRDN7SddZ/N8icKYw3vzRqLG587QonVmW3bEsHXUUcXRtor4ncLpwfX8ad0OFjVmmiDh5eXOs00aqC9p/zK1PILBEwjCehmt0VE8r/CRVot+w3w059p1562hsIFOq2Hiah+QxZHnCMwm1fY8YCX5SK7i+l9B1I2naUxm87Ho/suJZhvF77t5GA0ded7ogX75qTZvKnajLgXFi7Lhq0HNVuPw05rDBvTujpxguhM3XcXLYpJ7JhY97THuXNQJvwSHFnZxZmnn5NTpSdFQPTFOMGJX/QcLw8LB/b20vlxGKk9+xWo0Vhtz4X+YBrdSdqPIGtDEGAhF5SCMWHIKC+34ZtPqZ3ZztG6cwwfQN4V3nlMiYEeZglCr57mNdw+b8reDLKh5po4uvqqwmhNwifetOGp8/3/euf7TUVA0zxnCiagI9EF/I; 4:dvBGHciFoTyJ94zmnT6flNIpUmgpPa7HGcK7z1nOx1kCvzijwQzqsJOVaFOh6qfAA1zGU1YQZ01tw3nJ9S2d6FIVEUP2xOI9X+/9opfVX1Ox9wSQY661KDoXDSQwZ74xtinBjPqCD2X2TjzOU9C7SYPknzN1GMscikb6lgCMfyfCg9KxN6kTD49AiFZpnXjhU06IZTUNcIL99KoO/hvaFk1B2g6qMJ8y3ko0rGPyuP1IZYzUs2443AWV5zQOtp8Wksy2sI4TdtAjbipbMi/3rajnIieLmqorl/Bx9Ckghh2yaB66VkMaCOpAokVBdtrk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:SeKT6pBNbg8dCfH8tNmQnGpmNUw2KlKRr7+tuES1z?= iacIOdnCw1lO5T2PBVr2GmmKto7II8RTpGUVYKPeVpqClQgmfOjURDvgTddWswUhbgDcGJ/2GidIo22RNq7u60uHqKH35tYZ6lMsU10LZ1kY69TuuR9qiPC4QeATaf2/oUogwyGosV3/QE/0TkC3Obs/3Yz87+N1rDETBYGYUEwoznnbaVsLHAwXOyhAIPtD4d4bvhdJkntjVSUKkErTxXRe4ZwSV2mGoC6RoGmkRuzgk7Yw/vWYneo124Gprm7k0PCYM8CgXx7GFtQek/Dm2T9lgpAwmSbpXSmbsgg8+iKZzUOsSB/Y3X2QmF1tk1r296q1imPUVGZj87QzbwZXKvIt9eTfNJWkscr288fsRSLEm4tR4JZKCPuBNoYWQFke/c/Ro9bN/t8hUSJhDvdBdd65q6hm25VgwzxxTWm8iwEfv+/CCW/6qZOmyBnHNKPLCuwYpEIxYHBHuDg4VUnQ+8P7FXp1tAfYcGGoeI8DHvYPXsbGKfYCQC6bmGWfoG0hG5xi2RRhweH04xxAmJg3tibD/QH/iKDMecQCx91fh0lj4N0L5OikrsRxwmz7kh4IW8E98RoMO6iVbU2OP6DLP4XX89k87z7viAE3pnEvKqYEkOVWOYPPM+Wy8yN/OcM5zAlKtPGU7JWpf6xzOzjPJc2ExZvth0UCzULyX0uvIiH7GvpPaA4ToIoa+JC5QnQAXGjrFVGzH7rd+9F4B+BHTvfCwonPLsU7ysjhhMfEfJUD4YVJM3zEzo12jmeH3OIow+IFLrbARI1N76rRHL8T6kCs7S5MYe9aViZb9ef+fx6mBNSs9VJ8JKrvBYJYDqdgkGAcDlJWENJIT2w2LC/quha/ck2acjRUJXBg+cqihmPRHGj+46xRwi2yqpxdjdW6fXumgqCXmwULHasP2Icqarfv/8R58qDrJ2hhDZ1gJmjZ27jn6j95mSOdX8jQ+RDfDYL6o7E+jnYNru94qC/J2yiMr5B7rWHuDV9WOqGhlLq34ipOrIYYhoTdsIi7n0zPz2/m+TboOYhw6pcOpPJDC+VR+9hnTV9ziTeDYrnHUwQWPITRP6M6JChoGIiO6EXTNt7JMIM5Drs91bswoWfj59K X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:QpZsbifq1ruBBKb8VJHsIwkIafm0uJ9/WeuMDlI6ztVOXuESxseCFLq2Hx8+rGoPkx+Fr9rtQkwwA6sijySLZtwLjBoJNWQcXQWK/BAfCo2EaFC0ynio2zQxUVckErKYDHARfrKXMzVaQIzTPqe4xW2uTPHkWaDn2Nipdc0PLaZCKpsOJkra2x2SCwTDY+UCRYgp1Hj1QirbvDAkThvZp8Pi3i9R3PDNK8rYq1NNUzJE+LuSWawAKRKLydTwou4ajsyebnbz1P6fwtbA1zNy/OUedkJYlsWJFi1eKqFmBYdoL05E/vxNBG8mlw325NR595Unic/NGz6bHKP9p3iReK1djIW5Fcu1V3pime0btks=; 5:PBppHaW+9nzkcEW91pI8WeDWJ/hQMYoF4RW/yeQyHxEdBbj/P0KxJST1yODaHOcsNsP4T+1lYeC0R7cmRLDL3BvtqlAm/sIpWMWD1XpT9vHocMyfXDnDesR9sUuliCPhoaNRVsuBaZNO7E7xR8zMemVC1hZ8SLHOV/NnFxAK8Bo=; 24:2DMiQwhaNTjh066JT1n4LOTW1sfXduj/177FHms7MnPnBPBLoPD6mLQWRuNa4883bYyPUmD1JGY2R0+C77QXoEMK9CJltCLRSfm0BRjskzM=; 7:rIba6BLwr0CIriQqqwYMC5opMFcOl0hhB+4uR3EjPe8XTRDBKYYRy09Rlbo3vM5mLReQ6KkgqIZDNOSgroEwLGd2OgOxizC7TLRwopa7P9BJToGiIv2eSFqbjekKxsPRckMWoS5lDwEDH0MwR52u/ZB4ZzP0qjkqIyoFTIa3406Mn68pC/eT/1xUeCruTalWVPJORDi7lfEBpVYjju+fRluI+YEzcc4UpyrbS6zVvIZ6Whi+aS+cQWcT4yfLFsue SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:54.9790 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 93994800-b6d3-4e1a-2022-08d557d75975 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 31/32] imx: mx8m: add ddr controller memory map X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add ddrc memory map and enum types used in ddr initialization. Signed-off-by: Peng Fan Cc: Fabio Estevam Cc: Stefano Babic --- arch/arm/include/asm/arch-mx8m/ddr.h | 356 +++++++++++++++++++++++++++++++++++ 1 file changed, 356 insertions(+) create mode 100644 arch/arm/include/asm/arch-mx8m/ddr.h diff --git a/arch/arm/include/asm/arch-mx8m/ddr.h b/arch/arm/include/asm/arch-mx8m/ddr.h new file mode 100644 index 0000000000..b37382eab0 --- /dev/null +++ b/arch/arm/include/asm/arch-mx8m/ddr.h @@ -0,0 +1,356 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_MX8M_DDR_H +#define __ASM_ARCH_MX8M_DDR_H + +#define DDRC_DDR_SS_GPR0 0x3d000000 +#define DDRC_IPS_BASE_ADDR_0 0x3f400000 +#define IP2APB_DDRPHY_IPS_BASE_ADDR(X) (0x3c000000 + (X * 0x2000000)) +#define DDRPHY_MEM(X) (0x3c000000 + (X * 0x2000000) + 0x50000) + +struct ddrc_freq { + u32 res0[8]; + u32 derateen; + u32 derateint; + u32 res1[10]; + u32 rfshctl0; + u32 res2[4]; + u32 rfshtmg; + u32 rfshtmg1; + u32 res3[28]; + u32 init3; + u32 init4; + u32 res; + u32 init6; + u32 init7; + u32 res4[4]; + u32 dramtmg0; + u32 dramtmg1; + u32 dramtmg2; + u32 dramtmg3; + u32 dramtmg4; + u32 dramtmg5; + u32 dramtmg6; + u32 dramtmg7; + u32 dramtmg8; + u32 dramtmg9; + u32 dramtmg10; + u32 dramtmg11; + u32 dramtmg12; + u32 dramtmg13; + u32 dramtmg14; + u32 dramtmg15; + u32 dramtmg16; + u32 dramtmg17; + u32 res5[10]; + u32 mramtmg0; + u32 mramtmg1; + u32 mramtmg4; + u32 mramtmg9; + u32 zqctl0; + u32 res6[3]; + u32 dfitmg0; + u32 dfitmg1; + u32 res7[7]; + u32 dfitmg2; + u32 dfitmg3; + u32 res8[33]; + u32 odtcfg; +}; + +struct imx8m_ddrc_regs { + u32 mstr; + u32 stat; + u32 mstr1; + u32 res1; + u32 mrctrl0; + u32 mrctrl1; + u32 mrstat; + u32 mrctrl2; + u32 derateen; + u32 derateint; + u32 mstr2; + u32 res2; + u32 pwrctl; + u32 pwrtmg; + u32 hwlpctl; + u32 hwffcctl; + u32 hwffcstat; + u32 res3[3]; + u32 rfshctl0; + u32 rfshctl1; + u32 rfshctl2; + u32 rfshctl4; + u32 rfshctl3; + u32 rfshtmg; + u32 rfshtmg1; + u32 res4; + u32 ecccfg0; + u32 ecccfg1; + u32 eccstat; + u32 eccclr; + u32 eccerrcnt; + u32 ecccaddr0; + u32 ecccaddr1; + u32 ecccsyn0; + u32 ecccsyn1; + u32 ecccsyn2; + u32 eccbitmask0; + u32 eccbitmask1; + u32 eccbitmask2; + u32 eccuaddr0; + u32 eccuaddr1; + u32 eccusyn0; + u32 eccusyn1; + u32 eccusyn2; + u32 eccpoisonaddr0; + u32 eccpoisonaddr1; + u32 crcparctl0; + u32 crcparctl1; + u32 crcparctl2; + u32 crcparstat; + u32 init0; + u32 init1; + u32 init2; + u32 init3; + u32 init4; + u32 init5; + u32 init6; + u32 init7; + u32 dimmctl; + u32 rankctl; + u32 res5; + u32 chctl; + u32 dramtmg0; + u32 dramtmg1; + u32 dramtmg2; + u32 dramtmg3; + u32 dramtmg4; + u32 dramtmg5; + u32 dramtmg6; + u32 dramtmg7; + u32 dramtmg8; + u32 dramtmg9; + u32 dramtmg10; + u32 dramtmg11; + u32 dramtmg12; + u32 dramtmg13; + u32 dramtmg14; + u32 dramtmg15; + u32 dramtmg16; + u32 dramtmg17; + u32 res6[10]; + u32 mramtmg0; + u32 mramtmg1; + u32 mramtmg4; + u32 mramtmg9; + u32 zqctl0; + u32 zqctl1; + u32 zqctl2; + u32 zqstat; + u32 dfitmg0; + u32 dfitmg1; + u32 dfilpcfg0; + u32 dfilpcfg1; + u32 dfiupd0; + u32 dfiupd1; + u32 dfiupd2; + u32 res7; + u32 dfimisc; + u32 dfitmg2; + u32 dfitmg3; + u32 dfistat; + u32 dbictl; + u32 dfiphymstr; + u32 res8[14]; + u32 addrmap0; + u32 addrmap1; + u32 addrmap2; + u32 addrmap3; + u32 addrmap4; + u32 addrmap5; + u32 addrmap6; + u32 addrmap7; + u32 addrmap8; + u32 addrmap9; + u32 addrmap10; + u32 addrmap11; + u32 res9[4]; + u32 odtcfg; + u32 odtmap; + u32 res10[2]; + u32 sched; + u32 sched1; + u32 sched2; + u32 perfhpr1; + u32 res11; + u32 perflpr1; + u32 res12; + u32 perfwr1; + u32 res13[4]; + u32 dqmap0; + u32 dqmap1; + u32 dqmap2; + u32 dqmap3; + u32 dqmap4; + u32 dqmap5; + u32 res14[26]; + u32 dbg0; + u32 dbg1; + u32 dbgcam; + u32 dbgcmd; + u32 dbgstat; + u32 res15[3]; + u32 swctl; + u32 swstat; + u32 res16[2]; + u32 ocparcfg0; + u32 ocparcfg1; + u32 ocparcfg2; + u32 ocparcfg3; + u32 ocparstat0; + u32 ocparstat1; + u32 ocparwlog0; + u32 ocparwlog1; + u32 ocparwlog2; + u32 ocparawlog0; + u32 ocparawlog1; + u32 ocparrlog0; + u32 ocparrlog1; + u32 ocpararlog0; + u32 ocpararlog1; + u32 poisoncfg; + u32 poisonstat; + u32 adveccindex; + union { + u32 adveccstat; + u32 eccapstat; + }; + u32 eccpoisonpat0; + u32 eccpoisonpat1; + u32 eccpoisonpat2; + u32 res17[6]; + u32 caparpoisonctl; + u32 caparpoisonstat; + u32 res18[2]; + u32 dynbsmstat; + u32 res19[18]; + u32 pstat; + u32 pccfg; + struct { + u32 pcfgr; + u32 pcfgw; + u32 pcfgc; + struct { + u32 pcfgidmaskch0; + u32 pcfidvaluech0; + } pcfgid[16]; + u32 pctrl; + u32 pcfgqos0; + u32 pcfgqos1; + u32 pcfgwqos0; + u32 pcfgwqos1; + u32 res[4]; + } pcfg[16]; + struct { + u32 sarbase; + u32 sarsize; + } sar[4]; + u32 sbrctl; + u32 sbrstat; + u32 sbrwdata0; + u32 sbrwdata1; + u32 pdch; + u32 res20[755]; + /* umctl2_regs_dch1 */ + u32 ch1_stat; + u32 res21[2]; + u32 ch1_mrctrl0; + u32 ch1_mrctrl1; + u32 ch1_mrstat; + u32 ch1_mrctrl2; + u32 res22[4]; + u32 ch1_pwrctl; + u32 ch1_pwrtmg; + u32 ch1_hwlpctl; + u32 res23[15]; + u32 ch1_eccstat; + u32 ch1_eccclr; + u32 ch1_eccerrcnt; + u32 ch1_ecccaddr0; + u32 ch1_ecccaddr1; + u32 ch1_ecccsyn0; + u32 ch1_ecccsyn1; + u32 ch1_ecccsyn2; + u32 ch1_eccbitmask0; + u32 ch1_eccbitmask1; + u32 ch1_eccbitmask2; + u32 ch1_eccuaddr0; + u32 ch1_eccuaddr1; + u32 ch1_eccusyn0; + u32 ch1_eccusyn1; + u32 ch1_eccusyn2; + u32 res24[2]; + u32 ch1_crcparctl0; + u32 res25[2]; + u32 ch1_crcparstat; + u32 res26[46]; + u32 ch1_zqctl2; + u32 ch1_zqstat; + u32 res27[11]; + u32 ch1_dfistat; + u32 res28[33]; + u32 ch1_odtmap; + u32 res29[47]; + u32 ch1_dbg1; + u32 ch1_dbgcam; + u32 ch1_dbgcmd; + u32 ch1_dbgstat; + u32 res30[123]; + /* umctl2_regs_freq1 */ + struct ddrc_freq freq1; + u32 res31[109]; + /* umctl2_regs_addrmap_alt */ + u32 addrmap0_alt; + u32 addrmap1_alt; + u32 addrmap2_alt; + u32 addrmap3_alt; + u32 addrmap4_alt; + u32 addrmap5_alt; + u32 addrmap6_alt; + u32 addrmap7_alt; + u32 addrmap8_alt; + u32 addrmap9_alt; + u32 addrmap10_alt; + u32 addrmap11_alt; + u32 res32[758]; + /* umctl2_regs_freq2 */ + struct ddrc_freq freq2; + u32 res33[879]; + /* umctl2_regs_freq3 */ + struct ddrc_freq freq3; +}; + +struct imx8m_ddrphy_regs { + u32 reg[0xf0000]; +}; + +/* PHY State */ +enum pstate { + PS0, + PS1, + PS2, + PS3, +}; + +enum msg_response { + TRAIN_SUCCESS = 0x7, + TRAIN_STREAM_START = 0x8, + TRAIN_FAIL = 0xff, +}; + +#endif From patchwork Wed Jan 10 03:06:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857915 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="r3Gy5/Zx"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZF83vqlz9sBZ for ; Wed, 10 Jan 2018 14:27:08 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 2554EC22093; Wed, 10 Jan 2018 03:25:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id BA4D3C22131; Wed, 10 Jan 2018 03:10:39 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 34BA6C22127; Wed, 10 Jan 2018 03:08:09 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50056.outbound.protection.outlook.com [40.107.5.56]) by lists.denx.de (Postfix) with ESMTPS id 1BE01C2209E for ; Wed, 10 Jan 2018 03:08:04 +0000 (UTC) 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=WQuDKbaOrArK6TJzvHY6KiEVH/CtJ9VUENjgJrpsoAU=; b=r3Gy5/ZxCGD0ftAWahOWznlWBBST4suhiKu9Ac9kKmKQJCdYs8+dxSMG1YEqoFzdjNXBbilFLjteR7Nsi1hAwOGAma7rK63klxp98nM+9vVLKYhBfJzXuOkSv4KrOBIw6fkxwv73HALJDTjNn+1NKEmF/YIcm3K7hRaUMk6L/YE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:07:58 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:06:03 +0800 Message-Id: <20180110030603.27864-33-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: afb9f315-ff3f-4e21-29dd-08d557d75b6c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:z1k5SC14LEOAqYM3O4W7y05WHyQDB3mjRrQNeO23DI8d2I7nWTS/SUmabGKn9YqKgJUjyQ10cp51nsk8Hmt3iR5rU93W71CzeEtXTcPhWkLwhB4AcMiyMv7AySuBA43otp8uwaHxHZ3WbQlGBziJ7Sr67QUWVzbyX1V8KdRR2G+uHScrC6cMHvvxoed5vtYaQLwh8WKcHm6PIoTSejn4hA68RjmdzaH/0yJ+WXhJf/pjXoWd0BgloxDVwlCEpQB2; 25:P8+NMPt2SPQwxmmecsrM9fFac+lUuFMvLZm3vqYaEIZ29xOE3OSkjZno6ufneuA6uV6pIktF6rvR8ZOLLrB6JNYIXbb8cVdcBDo5ye09teTwsr0KQd45mmGk7BfHV/J2/TiQoP0uV1GShyEv/KwGRp7Y4rGrDO8SQJOYlynLstE04qgnqTuxmFBmOnXbLFHcbXFJhuyhfncWIiSWs5+arQu5DluFBZFRnENNE7jzKQy8FkKLxSyytAOT5nk8pcwGI+hsJwXg2mUSfyFxab80t2qWeBp5Iw1oiWUxrpFO+U65c7uPchelBxbnaLgMfAPvLtV5HNDqVwq7fRY7av8LiQ==; 31:ZcLv44o5PGWlgeHKiNIUuYmufyb6TnikFkOgDaUsbvFKpikA8hbjpwWuue7wdZlORuiFnGO4arPv0FVWOpm/64lfomd8Lf8nnaku3svtZI4yfObPoyc+dyqqOvC+0FRuIRl/o23QUFOSCQEK0BUpPOXt8SjJsMHKcrWdyfHnC9o0cLi69JmkgFnFrT5OtG6BFM7ZcU9PDXI2nKinASam0OrVEKZ8JaF0Yk80lBzkZiI= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:OqV4u/f3ya8zJ2WQLnMBVEML4CWXrvjw7eesKPuWsZw+Rz1CD3LL4XqH64iMsqXTjBo481VYWfpx2hcDTKfZHx5DcOxhwQ73UwUR2rTBIUC/yERe0GEFUkvGi5cdYJ89kx8omLoS93me5qsn8EZvWnE3xthf7Thm0iqa/Ke9ixgtO5VwXWY5+0Pc7VkGQ7hx2ajNNkgHV0D2Rhy+ZiaQhmLISSIKdmT47nmG2QHH6penckunkztDrTg9NrO1bHwomF/rpwmcETEdEYeak2CB4jQ6efBxPzJvMFBeCLGKmEy2eWe/6vGQjyQE1s6/aaqGK6Ypscu5NuaK4CWq7AY3xxlUVELP7kFfQ5jhwCsg89Oh4a3kkvEsNgbWNN+pvGNLSzj1S67DDcDgLUBHbxNXBxmGaXT0sLFJ6ATGFhwUgkw52YEecku06/xzyzOco+6a7NqFlL1AIhKi8AN+XwrifZqKO3V+GqrMfrOtOrLGa/5RywhuoTws6kfb/UtGIXdM; 4:ShnFS/AHFhsdbWa2h4taVCuRTycb3q1P7DuyY8dfmISU6vtZESbCZZaneZRWqrmpOC781ktnHbttUbh2MUwcJi2mvS1cFNx0thaHwperZJAx9QUolPywviOJ6Li5XyrNmxvGTaxFK5xRi3KTAeq+ZhdRa0O90FVxwo2qRvexVcA6GhWI5iPa48gKdv0RpwbMrtQpcZgnluu6tJ1UjW8YFx9u37PVoU9yGQfAfquXZLhFMxXu+C0NfkhFmp/kQwM7hmep/ntD41NK9KMRdhuTEH5AmaG5CsVtG+KpZntMS/stmZMOMuy6Ig5fMwMnDzfJ2nUg7r7kRn75i87My+cGTO04C2KUcf/OT8E/JOkA6Q8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(264314650089876); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(966005)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(53946003)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(6306002)(106356001)(2906002)(66066001)(16200700003)(47776003)(2004002)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; VI1PR04MB3231; 23:/zujPkyIp9tGYtldkMN8n00w+D+6n6YR84cWuwI8M?= IN+Nq+jQTAGgQJcFZYZkFJzr1cWIvYOD7r74ZlmOXvC9/AthrbVCNi+ljvyv1XP9E1v4X6zY3PRBTuLbHUlHENNCtg22IEj3+m9qQt2IYO1xjOltHM5GPb788Ikmfn45WBIa/j3b2oBohmlRUTuM7SolY2f4d+mwXNSAG/XM57cOEOqCBAevatLg298+dcYbOq77vBsxEkYsKi3O9bTeTVeEXnehH7XgQq4vOL2QtPIJ/7ERpRQ+kPDtZKCAupegPLVhxPIwkPyauUmvQfyH+aAdBxoHGSuV5/E70LXjRGoXSAG9Pz2PDxMUnvJWqICQMAI/x0KE7WhRF9IVv8gMQYXYi5zp+7KUUxxmvBc294XqYtDbz2YZSvWMySGmz6IyWo6xU2a4p1JpNWQ9C9Jo4G7Q+Fh8CtE+7t3HOyp66c9BW3wB6hwSYzOKsQr2BusQQDkNH+TPzxXI2hSNaJ6wBZPGHt0fjM5krx49p+cMNiabf8r1/zxYK0swL0zjamVFZftgGNnfN5E3PrZ+hoZmV+F1LTQgt1cRIOeHFMXkjG6Ka0uwgQW3fzzHFfqGP0CdeAm3i4D44TpSm2PIte8CKHkAsLBe2MJNDvLRNPaK72135Bf8JUzRBMT57WcbGN9kv+u4zmnhBXnSeHs6rDOa7Yr4X7H0AmRwtBZe3alGqcpF9Djo40DFTXe24GAUo3+B/EkPg4DUQ6N0pQ6nfQWVzrnLOYoLWxE03FeoeGdrVqnls04qdghrk9Rvtza0yMY7fCiGtAwHIXUEpUtcTilSNpG+BVFxxj9RJmZDrodHBLQULYY0zQZ4knGoRKmBugN0ix0EGPTfmzWZNCt9crFdAibzo1d/nhiJ/uKTE7m77F9LgclZEksKqAd/9c6MvoHuziNG44nqYBC6NEX+zpiIXqjnpG1R1VoWKpDEJN+zGTu/ssk4K60Rk3Ug9cZd96052evYYz/y52WJwlgXEbtgdcla+5/6L2xWau+XV+PM9i0m45a1XgAtzKwVBLXCSfo57niGCvhHgSk//SSgN6YfqIO6N0wId8n2Ep/7w6raD5Z3+qPZjVuzQdjnemRVdTBkN1R+9mkB3FjKUrpMgYbFTwY2xGIXhgtKPeAmA/jeHYNv2It/3JWunoa5ip6ihE/x1ooMkA27zAoRoUj8/nWSSOQGFhZXjIdmPMzJdz3p/UfMRLw8bWEYMYbO7DUZ/I0K+8K8QS45qjb80CngHVnU/D3cgeUAMpgBse0W3NjBJCcDC8lDjMS0OkgdCZtefLlcfA= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:beonyzCCbiFc9XKbAFbErBrxQBZdTbHKVNPt8UrwTVle8xMjj+vDrCy55U6GcssaYFiK/d2Ia9e1mZqbEgGj78pS7QFwWHy8kPq0JckBA+Z6Xx7GiezQFCLAegDpsRkoeB0MGfLSm4yJtKuKWh87WoSDCFMUECYcPXloiYC2NevS599CCILtWpIixG7ZL8RJXG91kwiAwBnm7C5ZHBrkepaqsZJ1tGUB1zb3N0TCxkCXkbpFj6jhps5j3go/Bm98kuxQw2aL5TDjdgvHziluXFFjKZmGwju4x8aLsdOU0k6iF7W+Yhnpmo/TaT/HBh3OsQAw+FuCYyykEokfXvTtDDfhM58++QhXZtgoQ787jW0=; 5:Out4uuYRlVPOLAbqdprwggCoIBGV2T118ELmN5DU/3kmA+hO4h41ch8kMW5VKJ7ugrhE4e2v1K6FM5y8vvCr8AGt1tFo5LEj9IWCz8TKjjw/VUOSOME5gT92t7CUcjEGUZwpxwiTnyicPQu/vphCPT0+r79/u5PDYZwVZw7hEmY=; 24:DbJ5TKqsh+tg1eR90YmcxiJvJ3ciVLLCZOZKYAsqNGoz4hNOlJ7Qf0tOR6/9KxgA77sHsTw9l0zMyUHI1Y6miJtn+igBA1mkHHb/Lz8j6Wo=; 7:4NHcBJYQ8AHe+I368NZjeJAgYCIoOuUbaGK/jMu20arDueMlIi4Cx/qX74SbCpyLNxyYEtfLoF2C3vADW2EO6142ohA+wrNKjpR93REISAtAJHK+P3XwphPr2mXNbEMUoKLUUKKfIv1ldXM99HLwfOM7GzHuOy29BSfV2L7Cz58QPYqDz7HHYX1Xm5Dg4NfeeglbkDgMRQfh8dT3TSjYUYK9ZN1w30/53mtiOIKG+/U9Nz8Rya0Jw+PFM/vgpAS6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:07:58.1038 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: afb9f315-ff3f-4e21-29dd-08d557d75b6c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 32/32] imx: add i.MX8MQ EVK support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add i.MX8MQ EVK support. SPL will initialize ddr and load ddr phy firmware. Then loading FIT image, ATF to OCRAM, U-Boot and DTB to DRAM. The boot log with Arm trusted firmware console enabled: " U-Boot SPL 2018.01-rc3-00044-g0b075f6be7 (Jan 09 2018 - 17:57:28) PMIC: PFUZE100 ID=0x10 Normal Boot Trying to boot from MMC2 NOTICE: Configureing TZASC380 NOTICE: BL31: v1.4(release):o8.0.0_1.3.0_8m-prc-20171211-6-g54fb0797-dirty NOTICE: BL31: Built : 07:17:16, Jan 8 2018 NOTICE: sip svc init U-Boot 2018.01-rc3-00044-g0b075f6be7 (Jan 09 2018 - 17:57:28 +0800) CPU: Freescale i.MX8MQ rev2.0 at 1000 MHz Reset cause: POR Model: Freescale i.MX8MQ EVK DRAM: 3 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Using default environment In: serial Out: serial Err: serial Net: No ethernet found. Hit any key to stop autoboot: 0 u-boot=> " Signed-off-by: Peng Fan Cc: Fabio Estevam Cc: Stefano Babic --- arch/arm/dts/Makefile | 2 + arch/arm/dts/fsl-imx8mq-evk.dts | 424 +++++++++ arch/arm/include/asm/arch-mx8m/ddr.h | 9 + arch/arm/mach-imx/mx8m/Kconfig | 12 + board/freescale/mx8mq_evk/Kconfig | 12 + board/freescale/mx8mq_evk/Makefile | 12 + board/freescale/mx8mq_evk/README | 47 + board/freescale/mx8mq_evk/ddr/ddr_init.c | 238 +++++ board/freescale/mx8mq_evk/ddr/ddrphy_train.c | 1253 ++++++++++++++++++++++++++ board/freescale/mx8mq_evk/ddr/helper.c | 101 +++ board/freescale/mx8mq_evk/mx8mq_evk.c | 156 ++++ board/freescale/mx8mq_evk/spl.c | 230 +++++ configs/mx8mq_evk_defconfig | 27 + include/configs/mx8mq_evk.h | 269 ++++++ 14 files changed, 2792 insertions(+) create mode 100644 arch/arm/dts/fsl-imx8mq-evk.dts create mode 100644 board/freescale/mx8mq_evk/Kconfig create mode 100644 board/freescale/mx8mq_evk/Makefile create mode 100644 board/freescale/mx8mq_evk/README create mode 100644 board/freescale/mx8mq_evk/ddr/ddr_init.c create mode 100644 board/freescale/mx8mq_evk/ddr/ddrphy_train.c create mode 100644 board/freescale/mx8mq_evk/ddr/helper.c create mode 100644 board/freescale/mx8mq_evk/mx8mq_evk.c create mode 100644 board/freescale/mx8mq_evk/spl.c create mode 100644 configs/mx8mq_evk_defconfig create mode 100644 include/configs/mx8mq_evk.h diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index a895c70284..299107977f 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -391,6 +391,8 @@ dtb-$(CONFIG_MX7) += imx7-colibri.dtb \ dtb-$(CONFIG_ARCH_MX7ULP) += imx7ulp-evk.dtb +dtb-$(CONFIG_ARCH_MX8M) += fsl-imx8mq-evk.dtb + dtb-$(CONFIG_RCAR_GEN3) += \ r8a7795-h3ulcb.dtb \ r8a7795-salvator-x.dtb \ diff --git a/arch/arm/dts/fsl-imx8mq-evk.dts b/arch/arm/dts/fsl-imx8mq-evk.dts new file mode 100644 index 0000000000..f0aa3485e6 --- /dev/null +++ b/arch/arm/dts/fsl-imx8mq-evk.dts @@ -0,0 +1,424 @@ +/* + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * Copyright 2017 NXP + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +/* First 128KB is for PSCI ATF. */ +/memreserve/ 0x40000000 0x00020000; + +#include "fsl-imx8mq.dtsi" + +/ { + model = "Freescale i.MX8MQ EVK"; + compatible = "fsl,imx8mq-evk", "fsl,imx8mq"; + + chosen { + bootargs = "console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200"; + }; + + regulators { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + + reg_usdhc2_vmmc: usdhc2_vmmc { + compatible = "regulator-fixed"; + regulator-name = "VSD_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + + ledpwm2 { + label = "PWM2"; + pwms = <&pwm2 0 50000>; + max-brightness = <255>; + }; + }; +}; + +&iomuxc { + pinctrl-names = "default"; + + imx8mq-evk { + pinctrl_fec1: fec1grp { + fsl,pins = < + MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3 + MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23 + MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f + MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f + MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f + MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f + MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91 + MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91 + MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91 + MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91 + MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f + MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91 + MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91 + MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f + MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x19 + >; + }; + + pinctrl_i2c1: i2c1grp { + fsl,pins = < + MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f + MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f + >; + }; + + pinctrl_i2c2: i2c2grp { + fsl,pins = < + MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x4000007f + MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x4000007f + >; + }; + + pinctrl_pwm2: pwm2grp { + fsl,pins = < + MX8MQ_IOMUXC_GPIO1_IO13_PWM2_OUT 0x16 + >; + }; + + pinctrl_qspi: qspigrp { + fsl,pins = < + MX8MQ_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x82 + MX8MQ_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82 + MX8MQ_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82 + MX8MQ_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82 + MX8MQ_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82 + MX8MQ_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82 + + >; + }; + + pinctrl_usdhc1: usdhc1grp { + fsl,pins = < + MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83 + MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3 + MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3 + MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3 + MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3 + MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3 + MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3 + MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3 + MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3 + MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3 + MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83 + MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc1_100mhz: usdhc1grp100mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x85 + MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc5 + MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc5 + MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc5 + MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc5 + MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc5 + MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc5 + MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc5 + MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc5 + MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc5 + MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x85 + MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc1_200mhz: usdhc1grp200mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x87 + MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc7 + MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc7 + MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc7 + MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc7 + MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc7 + MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc7 + MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc7 + MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc7 + MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc7 + MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x87 + MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc2_gpio: usdhc2grpgpio { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41 + MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41 + >; + }; + + pinctrl_usdhc2: usdhc2grp { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83 + MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3 + MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3 + MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3 + MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3 + MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3 + MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1 + >; + }; + + pinctrl_usdhc2_100mhz: usdhc2grp100mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x85 + MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc5 + MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc5 + MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc5 + MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc5 + MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc5 + MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1 + >; + }; + + pinctrl_usdhc2_200mhz: usdhc2grp200mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x87 + MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc7 + MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc7 + MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc7 + MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc7 + MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc7 + MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1 + >; + }; + + pinctrl_sai2: sai2grp { + fsl,pins = < + MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6 + MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6 + MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6 + MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6 + MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8 0xd6 + >; + }; + + pinctrl_wdog: wdoggrp { + fsl,pins = < + MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6 + >; + }; + }; +}; + +&fec1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_fec1>; + phy-mode = "rgmii-id"; + phy-handle = <ðphy0>; + fsl,magic-packet; + status = "okay"; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + ethphy0: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0>; + at803x,led-act-blind-workaround; + at803x,eee-disabled; + }; + }; +}; + +&i2c1 { + clock-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c1>; + status = "okay"; + + pmic: pfuze100@08 { + compatible = "fsl,pfuze100"; + reg = <0x08>; + + regulators { + sw1a_reg: sw1ab { + regulator-min-microvolt = <300000>; + regulator-max-microvolt = <1875000>; + regulator-always-on; + }; + + sw1c_reg: sw1c { + regulator-min-microvolt = <300000>; + regulator-max-microvolt = <1875000>; + regulator-always-on; + }; + + sw2_reg: sw2 { + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + sw3a_reg: sw3ab { + regulator-min-microvolt = <400000>; + regulator-max-microvolt = <1975000>; + regulator-always-on; + }; + + sw4_reg: sw4 { + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + swbst_reg: swbst { + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5150000>; + }; + + snvs_reg: vsnvs { + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <3000000>; + regulator-always-on; + }; + + vref_reg: vrefddr { + regulator-always-on; + }; + + vgen1_reg: vgen1 { + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1550000>; + }; + + vgen2_reg: vgen2 { + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1550000>; + regulator-always-on; + }; + + vgen3_reg: vgen3 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vgen4_reg: vgen4 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vgen5_reg: vgen5 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vgen6_reg: vgen6 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + }; + }; +}; + +&i2c2 { + clock-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c2>; + status = "disabled"; +}; + +&pwm2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm2>; + status = "okay"; +}; + +&lcdif { + status = "okay"; + disp-dev = "mipi_dsi_northwest"; + display = <&display0>; + + display0: display@0 { + bits-per-pixel = <24>; + bus-width = <24>; + + display-timings { + native-mode = <&timing0>; + timing0: timing0 { + clock-frequency = <9200000>; + hactive = <480>; + vactive = <272>; + hfront-porch = <8>; + hback-porch = <4>; + hsync-len = <41>; + vback-porch = <2>; + vfront-porch = <4>; + vsync-len = <10>; + + hsync-active = <0>; + vsync-active = <0>; + de-active = <1>; + pixelclk-active = <0>; + }; + }; + }; +}; + +&qspi { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_qspi>; + status = "okay"; + + flash0: n25q256a@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + compatible = "micron,n25q256a"; + spi-max-frequency = <29000000>; + spi-nor,ddr-quad-read-dummy = <6>; + }; +}; + +&usdhc1 { + pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc1>; + pinctrl-1 = <&pinctrl_usdhc1_100mhz>; + pinctrl-2 = <&pinctrl_usdhc1_200mhz>; + bus-width = <8>; + non-removable; + status = "okay"; +}; + +&usdhc2 { + pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; + pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; + pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; + bus-width = <4>; + cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; + vmmc-supply = <®_usdhc2_vmmc>; + status = "okay"; +}; + +&wdog1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_wdog>; + fsl,ext-reset-output; + status = "okay"; +}; diff --git a/arch/arm/include/asm/arch-mx8m/ddr.h b/arch/arm/include/asm/arch-mx8m/ddr.h index b37382eab0..11016c9278 100644 --- a/arch/arm/include/asm/arch-mx8m/ddr.h +++ b/arch/arm/include/asm/arch-mx8m/ddr.h @@ -353,4 +353,13 @@ enum msg_response { TRAIN_FAIL = 0xff, }; +enum fw_type { + FW_1D_IMAGE, + FW_2D_IMAGE, +}; + +void ddr_init(void); +void ddr_load_train_code(enum fw_type type); +void lpddr4_800M_cfg_phy(void); +void dram_pll_init(void); #endif diff --git a/arch/arm/mach-imx/mx8m/Kconfig b/arch/arm/mach-imx/mx8m/Kconfig index 3a84c2f2b0..e3b57b7915 100644 --- a/arch/arm/mach-imx/mx8m/Kconfig +++ b/arch/arm/mach-imx/mx8m/Kconfig @@ -7,4 +7,16 @@ config MX8M config SYS_SOC default "mx8m" +choice + prompt "NXP i.MX8M board select" + optional + +config TARGET_MX8MQ_EVK + bool "mx8mq_evk" + select MX8M + +endchoice + +source "board/freescale/mx8mq_evk/Kconfig" + endif diff --git a/board/freescale/mx8mq_evk/Kconfig b/board/freescale/mx8mq_evk/Kconfig new file mode 100644 index 0000000000..4e23002803 --- /dev/null +++ b/board/freescale/mx8mq_evk/Kconfig @@ -0,0 +1,12 @@ +if TARGET_MX8MQ_EVK + +config SYS_BOARD + default "mx8mq_evk" + +config SYS_VENDOR + default "freescale" + +config SYS_CONFIG_NAME + default "mx8mq_evk" + +endif diff --git a/board/freescale/mx8mq_evk/Makefile b/board/freescale/mx8mq_evk/Makefile new file mode 100644 index 0000000000..286396ee96 --- /dev/null +++ b/board/freescale/mx8mq_evk/Makefile @@ -0,0 +1,12 @@ +# +# Copyright 2017 NXP +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += mx8mq_evk.o + +ifdef CONFIG_SPL_BUILD +obj-y += spl.o +obj-y += ddr/ddr_init.o ddr/ddrphy_train.o ddr/helper.o +endif diff --git a/board/freescale/mx8mq_evk/README b/board/freescale/mx8mq_evk/README new file mode 100644 index 0000000000..e214401a8a --- /dev/null +++ b/board/freescale/mx8mq_evk/README @@ -0,0 +1,47 @@ +U-Boot for the NXP i.MX8MQ EVK board + +Quick Start +==================== +- Build the ARM Trusted firmware binary +- Build U-Boot +- Get ddr fimware and tools +- Generate flash.bin using imx-mkimage +- Boot + +Get and Build the ARM Trusted firmware +==================== +Get ATF from: https://source.codeaurora.org/external/imx/imx-atf +$ make PLAT=imx8mq bl31 + +Build U-Boot +==================== +$ export ARCH=arm64 +$ export CROSS_COMPILE=aarch64-poky-linux- +$ make mx8mq_evk_defconfig +$ make + +Get the ddr firmware and tools +==================== +Note: Better to use NXP released yocto to get the firmare in case + there is new releases. +https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-7.2.bin +imx-mkimage: https://source.codeaurora.org/external/imx/imx-mkimage/ + +Generate flash.bin using imx-mkimage +==================== +Copy bl31.bin u-boot-nodtb.bin u-boot-spl.bin fsl-imx8mq-evk.dtb to + imx-mkimage/iMX8M +Copy lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_1d_imem.bin + lpddr4_pmu_train_2d_dmem.bin lpddr4_pmu_train_2d_imem.bin to + imx-mkimage/iMX8M +If you want to run with HDMI, copy signed_hdmi_imx8m.bin to imx-mkimage/iMX8M + +make SOC=iMX8M flash_hdmi_spl_uboot or make SOC=iMX8M flash_spl_uboot to +generate flash.bin. + +Burn the flash.bin to MicroSD card offset 33KB +$sudo dd if=iMX8M/flash.bin of=/dev/sd[x] bs=1024 seek=33 + +Boot +==================== +Set Boot switch SW801: 1100 and Bmode: 10 to boot from Micro SD. diff --git a/board/freescale/mx8mq_evk/ddr/ddr_init.c b/board/freescale/mx8mq_evk/ddr/ddr_init.c new file mode 100644 index 0000000000..3d62bca403 --- /dev/null +++ b/board/freescale/mx8mq_evk/ddr/ddr_init.c @@ -0,0 +1,238 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include + +struct imx8m_ddrc_regs *ddrc_regs = (struct imx8m_ddrc_regs *)DDRC_IPS_BASE_ADDR(0); +static struct gpc_reg *gpc_reg = (struct gpc_reg *)GPC_BASE_ADDR; +static struct src *src = (struct src *)SRC_BASE_ADDR; + +void lpddr4_800mhz_cfg_umctl2(void) +{ + writel(0x00000001, &ddrc_regs->dbg1); + writel(0x00000001, &ddrc_regs->pwrctl); + writel(0x83080020, &ddrc_regs->mstr); + writel(0x006180e0, &ddrc_regs->rfshtmg); + writel(0xc003061b, &ddrc_regs->init0); + writel(0x009d0000, &ddrc_regs->init1); + writel(0x0000fe05, &ddrc_regs->init2); + writel(0x00d4002d, &ddrc_regs->init3); + writel(0x00310008, &ddrc_regs->init4); + writel(0x00040009, &ddrc_regs->init5); + writel(0x0046004d, &ddrc_regs->init6); + writel(0x0005004d, &ddrc_regs->init7); + writel(0x00000979, &ddrc_regs->rankctl); + writel(0x1a203522, &ddrc_regs->dramtmg0); + writel(0x00060630, &ddrc_regs->dramtmg1); + writel(0x070e1214, &ddrc_regs->dramtmg2); + writel(0x00b0c006, &ddrc_regs->dramtmg3); + writel(0x0f04080f, &ddrc_regs->dramtmg4); + writel(0x0d0d0c0c, &ddrc_regs->dramtmg5); + writel(0x01010007, &ddrc_regs->dramtmg6); + writel(0x0000060a, &ddrc_regs->dramtmg7); + writel(0x01010101, &ddrc_regs->dramtmg8); + writel(0x40000008, &ddrc_regs->dramtmg9); + writel(0x00050d01, &ddrc_regs->dramtmg10); + writel(0x01010008, &ddrc_regs->dramtmg11); + writel(0x00020000, &ddrc_regs->dramtmg12); + writel(0x18100002, &ddrc_regs->dramtmg13); + writel(0x00000dc2, &ddrc_regs->dramtmg14); + writel(0x80000000, &ddrc_regs->dramtmg15); + writel(0x00a00050, &ddrc_regs->dramtmg17); + writel(0x53200018, &ddrc_regs->zqctl0); + writel(0x02800070, &ddrc_regs->zqctl1); + writel(0x00000000, &ddrc_regs->zqctl2); + writel(0x0397820a, &ddrc_regs->dfitmg0); + writel(0x0397820a, &ddrc_regs->freq1.dfitmg0); + writel(0x0397820a, &ddrc_regs->freq2.dfitmg0); + writel(0x00020103, &ddrc_regs->dfitmg1); + writel(0xe0400018, &ddrc_regs->dfiupd0); + writel(0x00df00e4, &ddrc_regs->dfiupd1); + writel(0x00000000, &ddrc_regs->dfiupd2); + writel(0x00000011, &ddrc_regs->dfimisc); + writel(0x0000170a, &ddrc_regs->dfitmg2); + writel(0x00000001, &ddrc_regs->dbictl); + writel(0x00000000, &ddrc_regs->dfiphymstr); + /* Address map is from MSB 29: r15, r14, cs, r13-r0, b2-b0, c9-c0 */ + writel(0x00000015, &ddrc_regs->addrmap0); + writel(0x00001f1f, &ddrc_regs->addrmap4); + /* bank interleave */ + writel(0x00080808, &ddrc_regs->addrmap1); + writel(0x07070707, &ddrc_regs->addrmap5); + writel(0x08080707, &ddrc_regs->addrmap6); + writel(0x020f0c54, &ddrc_regs->odtcfg); + writel(0x00000000, &ddrc_regs->odtmap); + writel(0x00000001, &ddrc_regs->pcfg[0].pctrl); + + /* performance setting */ + writel(0x0b060908, &ddrc_regs->odtcfg); + writel(0x00000000, &ddrc_regs->odtmap); + writel(0x29511505, &ddrc_regs->sched); + writel(0x0000002c, &ddrc_regs->sched1); + writel(0x5900575b, &ddrc_regs->perfhpr1); + writel(0x900093e7, &ddrc_regs->perflpr1); + writel(0x02005574, &ddrc_regs->perfwr1); + writel(0x00000016, &ddrc_regs->dbg0); + writel(0x00000000, &ddrc_regs->dbg1); + writel(0x00000000, &ddrc_regs->dbgcmd); + writel(0x00000001, &ddrc_regs->swctl); + writel(0x00000011, &ddrc_regs->poisoncfg); + writel(0x00000111, &ddrc_regs->pccfg); + writel(0x000010f3, &ddrc_regs->pcfg[0].pcfgr); + writel(0x000072ff, &ddrc_regs->pcfg[0].pcfgw); + writel(0x00000001, &ddrc_regs->pcfg[0].pctrl); + writel(0x01110d00, &ddrc_regs->pcfg[0].pcfgqos0); + writel(0x00620790, &ddrc_regs->pcfg[0].pcfgqos1); + writel(0x00100001, &ddrc_regs->pcfg[0].pcfgwqos0); + writel(0x0000041f, &ddrc_regs->pcfg[0].pcfgwqos1); + writel(0x00000202, &ddrc_regs->freq1.derateen); + writel(0xec78f4b5, &ddrc_regs->freq1.derateint); + writel(0x00618040, &ddrc_regs->freq1.rfshctl0); + writel(0x00610090, &ddrc_regs->freq1.rfshtmg); +} + +void lpddr4_100mhz_cfg_umctl2(void) +{ + writel(0x0d0b010c, &ddrc_regs->freq1.dramtmg0); + writel(0x00030410, &ddrc_regs->freq1.dramtmg1); + writel(0x0305090c, &ddrc_regs->freq1.dramtmg2); + writel(0x00505006, &ddrc_regs->freq1.dramtmg3); + writel(0x05040305, &ddrc_regs->freq1.dramtmg4); + writel(0x0d0e0504, &ddrc_regs->freq1.dramtmg5); + writel(0x0a060004, &ddrc_regs->freq1.dramtmg6); + writel(0x0000090e, &ddrc_regs->freq1.dramtmg7); + writel(0x00000032, &ddrc_regs->freq1.dramtmg14); + writel(0x00000000, &ddrc_regs->freq1.dramtmg15); + writel(0x0036001b, &ddrc_regs->freq1.dramtmg17); + writel(0x7e9fbeb1, &ddrc_regs->freq1.derateint); + writel(0x0020d040, &ddrc_regs->freq1.rfshctl0); + writel(0x03818200, &ddrc_regs->freq1.dfitmg0); + writel(0x0a1a096c, &ddrc_regs->freq1.odtcfg); + writel(0x00000000, &ddrc_regs->freq1.dfitmg2); + writel(0x00038014, &ddrc_regs->freq1.rfshtmg); + writel(0x00840000, &ddrc_regs->freq1.init3); + writel(0x0000004d, &ddrc_regs->freq1.init6); + writel(0x0000004d, &ddrc_regs->freq1.init7); + writel(0x00310000, &ddrc_regs->freq1.init4); +} + +void lpddr4_25mhz_cfg_umctl2(void) +{ + writel(0x0d0b010c, &ddrc_regs->freq2.dramtmg0); + writel(0x00030410, &ddrc_regs->freq2.dramtmg1); + writel(0x0305090c, &ddrc_regs->freq2.dramtmg2); + writel(0x00505006, &ddrc_regs->freq2.dramtmg3); + writel(0x05040305, &ddrc_regs->freq2.dramtmg4); + writel(0x0d0e0504, &ddrc_regs->freq2.dramtmg5); + writel(0x0a060004, &ddrc_regs->freq2.dramtmg6); + writel(0x0000090e, &ddrc_regs->freq2.dramtmg7); + writel(0x00000032, &ddrc_regs->freq2.dramtmg14); + writel(0x00000000, &ddrc_regs->freq2.dramtmg15); + writel(0x0036001b, &ddrc_regs->freq2.dramtmg17); + writel(0x7e9fbeb1, &ddrc_regs->freq2.derateint); + writel(0x0020d040, &ddrc_regs->freq2.rfshctl0); + writel(0x03818200, &ddrc_regs->freq2.dfitmg0); + writel(0x0a1a096c, &ddrc_regs->freq2.odtcfg); + writel(0x00000000, &ddrc_regs->freq2.dfitmg2); + writel(0x0003800c, &ddrc_regs->freq2.rfshtmg); + writel(0x00840000, &ddrc_regs->freq2.init3); + writel(0x0000004d, &ddrc_regs->freq2.init6); + writel(0x0000004d, &ddrc_regs->freq2.init7); + writel(0x00310000, &ddrc_regs->freq2.init4); +} + +void ddr_init(void) +{ + /* change the clock source of dram_apb_clk_root */ + clock_set_target_val(DRAM_APB_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(4) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV4)); + + /* disable the clock gating */ + writel(0xFFFF, &gpc_reg->pgc_cpu_0_1_mapping); + setbits_le32(&gpc_reg->pu_pgc_up_trg, BIT(5)); + + writel(SRC_DDR2_ENABLE_MASK, &src->ddr2_rcr); + + dram_pll_init(); + + writel(SRC_DDR1_ENABLE_MASK | SRC_DDR1_RCR_PHY_RESET_MASK | + SRC_DDR1_RCR_CORE_RESET_N_MASK, &src->ddr1_rcr); + + /* Configure uMCTL2's registers */ + lpddr4_800mhz_cfg_umctl2(); + + writel(SRC_DDR1_ENABLE_MASK | SRC_DDR1_RCR_PHY_RESET_MASK, + &src->ddr1_rcr); + writel(SRC_DDR1_ENABLE_MASK, &src->ddr1_rcr); + + writel(0x00000000, &ddrc_regs->dbg1); + writel(0x000000a8, &ddrc_regs->pwrctl); + /* writel(0x0000018a, DDRC_PWRCTL(0), )*/ + writel(0x00000000, &ddrc_regs->swctl); + writel(0x01, DDRC_DDR_SS_GPR0); + writel(0x00000010, &ddrc_regs->dfimisc); + + /* Configure LPDDR4 PHY's registers */ + lpddr4_800M_cfg_phy(); + + writel(0x00000000, &ddrc_regs->rfshctl3); + writel(0x0000, &ddrc_regs->swctl); + /* + * ------------------- 9 ------------------- + * Set DFIMISC.dfi_init_start to 1 + * ----------------------------------------- + */ + writel(0x00000030, &ddrc_regs->dfimisc); + writel(0x0001, &ddrc_regs->swctl); + + /* wait DFISTAT.dfi_init_complete to 1 */ + while (!(readl(&ddrc_regs->dfistat) & BIT(0))) + ; + + writel(0x0000, &ddrc_regs->swctl); + + /* clear DFIMISC.dfi_init_complete_en */ + writel(0x00000010, &ddrc_regs->dfimisc); + writel(0x00000011, &ddrc_regs->dfimisc); + writel(0x00000088, &ddrc_regs->pwrctl); + + /* + * set SWCTL.sw_done to enable quasi-dynamic register + * programming outside reset. + */ + writel(0x00000001, &ddrc_regs->swctl); + + /* wait SWSTAT.sw_done_ack to 1 */ + while ((readl(&ddrc_regs->swstat) & BIT(0)) == 0) + ; + + /* wait STAT.operating_mode([1:0] for ddr3) to normal state */ + while ((readl(&ddrc_regs->stat) & 0x3) != 0x1) + ; + + writel(0x00000088, &ddrc_regs->pwrctl); + + /* enable port 0 */ + writel(0x00000001, &ddrc_regs->pcfg[0].pctrl); + writel(0x00000000, &ddrc_regs->rfshctl3); + + writel(0x0, &ddrc_regs->swctl); + lpddr4_100mhz_cfg_umctl2(); + lpddr4_25mhz_cfg_umctl2(); + writel(0x1, &ddrc_regs->swctl); + + /* wait SWSTAT.sw_done_ack to 1 */ + while ((readl(&ddrc_regs->swstat) & BIT(0)) == 0) + ; + + writel(0x0, &ddrc_regs->swctl); +} diff --git a/board/freescale/mx8mq_evk/ddr/ddrphy_train.c b/board/freescale/mx8mq_evk/ddr/ddrphy_train.c new file mode 100644 index 0000000000..9aeae1207f --- /dev/null +++ b/board/freescale/mx8mq_evk/ddr/ddrphy_train.c @@ -0,0 +1,1253 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +static struct ccm_reg *ccm_reg = (struct ccm_reg *)CCM_BASE_ADDR; +static struct imx8m_ddrphy_regs *regs = (struct imx8m_ddrphy_regs *)IP2APB_DDRPHY_IPS_BASE_ADDR(0); +static struct gpc_reg *gpc_reg = (struct gpc_reg *)GPC_BASE_ADDR; + +static inline void poll_pmu_message_ready(void) +{ + /* When BIT0 set to 0, the PMU has a message for the user*/ + while (readl(®s->reg[0xd0004]) & BIT(0)) + ; +} + +static inline void ack_pmu_message_receive(void) +{ + /* + * By setting this register to 0, the user acknowledges the + * receipt of the message. + */ + writel(0x0, ®s->reg[0xd0031]); + + while (!(readl(®s->reg[0xd0004]) & BIT(0))) + ; + + writel(0x1, ®s->reg[0xd0031]); +} + +static inline unsigned int get_mail(void) +{ + unsigned int reg; + + poll_pmu_message_ready(); + + /* Get the major message ID */ + reg = readl(®s->reg[0xd0032]); + + ack_pmu_message_receive(); + + return reg; +} + +static inline unsigned int get_stream_message(void) +{ + unsigned int reg, reg2; + + poll_pmu_message_ready(); + + reg = readl(®s->reg[0xd0032]); + reg2 = readl(®s->reg[0xd0034]); + reg2 = (reg2 << 16) | reg; + + ack_pmu_message_receive(); + + return reg2; +} + +static inline void decode_major_message(unsigned int mail) +{ + debug("[PMU Major message = 0x%08x]\n", mail); +} + +static inline void decode_streaming_message(void) +{ + unsigned int string_index, arg __maybe_unused; + int i = 0; + + string_index = get_stream_message(); + debug(" PMU String index = 0x%08x\n", string_index); + while (i < (string_index & 0xffff)) { + arg = get_stream_message(); + debug(" arg[%d] = 0x%08x\n", i, arg); + i++; + } + + debug("\n"); +} + +static void wait_ddrphy_training_complete(void) +{ + unsigned int mail; + + while (true) { + mail = get_mail(); + decode_major_message(mail); + if (mail == TRAIN_STREAM_START) { + decode_streaming_message(); + } else if (mail == TRAIN_SUCCESS) { + debug("Training PASS\n"); + break; + } else if (mail == TRAIN_FAIL) { + printf("Training FAILED\n"); + break; + } + } +} + +static void ddr_pll_bypass_100mts(void) +{ + /* change the clock source of dram_alt_clk_root to source 2 --100MHZ */ + clock_set_target_val(DRAM_ALT_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(2) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1)); + + /* change the clock source of dram_apb_clk_root to source 2 --40MHZ */ + clock_set_target_val(DRAM_APB_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(2) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV2)); + + /* disable the clock gating */ + writel(0xFFFF, &gpc_reg->pgc_cpu_0_1_mapping); + /* configure ddr1_sw_pup_req */ + setbits_le32(&gpc_reg->pu_pgc_up_trg, BIT(5)); + + /* configure pll bypass mode */ + writel(BIT(24), &ccm_reg->dram_sel.target_root_set); + + debug("PLL bypass to 100MTS setting done\n"); +} + +static void ddr_pll_bypass_400mts(void) +{ + /* change the clock source of dram_alt_clk_root to source 2 --400MHZ */ + clock_set_target_val(DRAM_ALT_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(5) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1)); + + /* change the clock source of dram_apb_clk_root to source 2 --40MHZ/2 */ + clock_set_target_val(DRAM_APB_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(2) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV2)); + + /* disable the clock gating */ + writel(0xFFFF, &gpc_reg->pgc_cpu_0_1_mapping); + /* configure ddr1_sw_pup_req */ + setbits_le32(&gpc_reg->pu_pgc_up_trg, BIT(5)); + + /* configure pll bypass mode */ + writel(BIT(24), &ccm_reg->dram_sel.target_root_set); + + debug("PLL bypass to 400MTS setting done\n"); +} + +static void dwc_ddrphy_phyinit_usercustom_e_setdficlk(enum pstate state) +{ + if (state == PS2) { + ddr_pll_bypass_100mts(); + } else if (state == PS1) { + ddr_pll_bypass_400mts(); + } else { + clock_set_target_val(DRAM_APB_CLK_ROOT, CLK_ROOT_ON | + CLK_ROOT_SOURCE_SEL(4) | + CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV4)); + writel(BIT(24), &ccm_reg->dram_sel.target_root_set); + } +} + +void lpddr4_800M_cfg_phy(void) +{ + writel(0x02, ®s->reg[0x20110]); + writel(0x03, ®s->reg[0x20111]); + writel(0x04, ®s->reg[0x20112]); + writel(0x05, ®s->reg[0x20113]); + writel(0x00, ®s->reg[0x20114]); + writel(0x01, ®s->reg[0x20115]); + writel(0x1ff, ®s->reg[0x1005f]); + writel(0x1ff, ®s->reg[0x1015f]); + writel(0x1ff, ®s->reg[0x1105f]); + writel(0x1ff, ®s->reg[0x1115f]); + writel(0x1ff, ®s->reg[0x1205f]); + writel(0x1ff, ®s->reg[0x1215f]); + writel(0x1ff, ®s->reg[0x1305f]); + writel(0x1ff, ®s->reg[0x1315f]); + writel(0x1ff, ®s->reg[0x11005f]); + writel(0x1ff, ®s->reg[0x11015f]); + writel(0x1ff, ®s->reg[0x11105f]); + writel(0x1ff, ®s->reg[0x11115f]); + writel(0x1ff, ®s->reg[0x11205f]); + writel(0x1ff, ®s->reg[0x11215f]); + writel(0x1ff, ®s->reg[0x11305f]); + writel(0x1ff, ®s->reg[0x11315f]); + writel(0x1ff, ®s->reg[0x21005f]); + writel(0x1ff, ®s->reg[0x21015f]); + writel(0x1ff, ®s->reg[0x21105f]); + writel(0x1ff, ®s->reg[0x21115f]); + writel(0x1ff, ®s->reg[0x21205f]); + writel(0x1ff, ®s->reg[0x21215f]); + writel(0x1ff, ®s->reg[0x21305f]); + writel(0x1ff, ®s->reg[0x21315f]); + writel(0x1ff, ®s->reg[0x55]); + writel(0x1ff, ®s->reg[0x1055]); + writel(0x1ff, ®s->reg[0x2055]); + writel(0x1ff, ®s->reg[0x3055]); + writel(0x1ff, ®s->reg[0x4055]); + writel(0x1ff, ®s->reg[0x5055]); + writel(0x1ff, ®s->reg[0x6055]); + writel(0x1ff, ®s->reg[0x7055]); + writel(0x1ff, ®s->reg[0x8055]); + writel(0x1ff, ®s->reg[0x9055]); + writel(0x19, ®s->reg[0x200c5]); + writel(0x7, ®s->reg[0x1200c5]); + writel(0x7, ®s->reg[0x2200c5]); + writel(0x2, ®s->reg[0x2002e]); + writel(0x2, ®s->reg[0x12002e]); + writel(0x2, ®s->reg[0x22002e]); + writel(0x0, ®s->reg[0x90204]); + writel(0x0, ®s->reg[0x190204]); + writel(0x0, ®s->reg[0x290204]); + writel(0xab, ®s->reg[0x20024]); + writel(0x0, ®s->reg[0x2003a]); + writel(0xab, ®s->reg[0x120024]); + writel(0x0, ®s->reg[0x2003a]); + writel(0xab, ®s->reg[0x220024]); + writel(0x0, ®s->reg[0x2003a]); + writel(0x3, ®s->reg[0x20056]); + writel(0xa, ®s->reg[0x120056]); + writel(0xa, ®s->reg[0x220056]); + writel(0xe00, ®s->reg[0x1004d]); + writel(0xe00, ®s->reg[0x1014d]); + writel(0xe00, ®s->reg[0x1104d]); + writel(0xe00, ®s->reg[0x1114d]); + writel(0xe00, ®s->reg[0x1204d]); + writel(0xe00, ®s->reg[0x1214d]); + writel(0xe00, ®s->reg[0x1304d]); + writel(0xe00, ®s->reg[0x1314d]); + writel(0xe00, ®s->reg[0x11004d]); + writel(0xe00, ®s->reg[0x11014d]); + writel(0xe00, ®s->reg[0x11104d]); + writel(0xe00, ®s->reg[0x11114d]); + writel(0xe00, ®s->reg[0x11204d]); + writel(0xe00, ®s->reg[0x11214d]); + writel(0xe00, ®s->reg[0x11304d]); + writel(0xe00, ®s->reg[0x11314d]); + writel(0xe00, ®s->reg[0x21004d]); + writel(0xe00, ®s->reg[0x21014d]); + writel(0xe00, ®s->reg[0x21104d]); + writel(0xe00, ®s->reg[0x21114d]); + writel(0xe00, ®s->reg[0x21204d]); + writel(0xe00, ®s->reg[0x21214d]); + writel(0xe00, ®s->reg[0x21304d]); + writel(0xe00, ®s->reg[0x21314d]); + writel(0xe38, ®s->reg[0x10049]); + writel(0xe38, ®s->reg[0x10149]); + writel(0xe38, ®s->reg[0x11049]); + writel(0xe38, ®s->reg[0x11149]); + writel(0xe38, ®s->reg[0x12049]); + writel(0xe38, ®s->reg[0x12149]); + writel(0xe38, ®s->reg[0x13049]); + writel(0xe38, ®s->reg[0x13149]); + writel(0xe38, ®s->reg[0x110049]); + writel(0xe38, ®s->reg[0x110149]); + writel(0xe38, ®s->reg[0x111049]); + writel(0xe38, ®s->reg[0x111149]); + writel(0xe38, ®s->reg[0x112049]); + writel(0xe38, ®s->reg[0x112149]); + writel(0xe38, ®s->reg[0x113049]); + writel(0xe38, ®s->reg[0x113149]); + writel(0xe38, ®s->reg[0x210049]); + writel(0xe38, ®s->reg[0x210149]); + writel(0xe38, ®s->reg[0x211049]); + writel(0xe38, ®s->reg[0x211149]); + writel(0xe38, ®s->reg[0x212049]); + writel(0xe38, ®s->reg[0x212149]); + writel(0xe38, ®s->reg[0x213049]); + writel(0xe38, ®s->reg[0x213149]); + writel(0x21, ®s->reg[0x43]); + writel(0x21, ®s->reg[0x1043]); + writel(0x21, ®s->reg[0x2043]); + writel(0x21, ®s->reg[0x3043]); + writel(0x21, ®s->reg[0x4043]); + writel(0x21, ®s->reg[0x5043]); + writel(0x21, ®s->reg[0x6043]); + writel(0x21, ®s->reg[0x7043]); + writel(0x21, ®s->reg[0x8043]); + writel(0x21, ®s->reg[0x9043]); + writel(0x3, ®s->reg[0x20018]); + writel(0x4, ®s->reg[0x20075]); + writel(0x0, ®s->reg[0x20050]); + writel(0x320, ®s->reg[0x20008]); + writel(0x64, ®s->reg[0x120008]); + writel(0x19, ®s->reg[0x220008]); + writel(0x9, ®s->reg[0x20088]); + writel(0x19c, ®s->reg[0x200b2]); + writel(0x5a1, ®s->reg[0x10043]); + writel(0x5a1, ®s->reg[0x10143]); + writel(0x5a1, ®s->reg[0x11043]); + writel(0x5a1, ®s->reg[0x11143]); + writel(0x5a1, ®s->reg[0x12043]); + writel(0x5a1, ®s->reg[0x12143]); + writel(0x5a1, ®s->reg[0x13043]); + writel(0x5a1, ®s->reg[0x13143]); + writel(0x19c, ®s->reg[0x1200b2]); + writel(0x5a1, ®s->reg[0x110043]); + writel(0x5a1, ®s->reg[0x110143]); + writel(0x5a1, ®s->reg[0x111043]); + writel(0x5a1, ®s->reg[0x111143]); + writel(0x5a1, ®s->reg[0x112043]); + writel(0x5a1, ®s->reg[0x112143]); + writel(0x5a1, ®s->reg[0x113043]); + writel(0x5a1, ®s->reg[0x113143]); + writel(0x19c, ®s->reg[0x2200b2]); + writel(0x5a1, ®s->reg[0x210043]); + writel(0x5a1, ®s->reg[0x210143]); + writel(0x5a1, ®s->reg[0x211043]); + writel(0x5a1, ®s->reg[0x211143]); + writel(0x5a1, ®s->reg[0x212043]); + writel(0x5a1, ®s->reg[0x212143]); + writel(0x5a1, ®s->reg[0x213043]); + writel(0x5a1, ®s->reg[0x213143]); + writel(0x1, ®s->reg[0x200fa]); + writel(0x1, ®s->reg[0x1200fa]); + writel(0x1, ®s->reg[0x2200fa]); + writel(0x1, ®s->reg[0x20019]); + writel(0x1, ®s->reg[0x120019]); + writel(0x1, ®s->reg[0x220019]); + writel(0x660, ®s->reg[0x200f0]); + writel(0x0, ®s->reg[0x200f1]); + writel(0x4444, ®s->reg[0x200f2]); + writel(0x8888, ®s->reg[0x200f3]); + writel(0x5555, ®s->reg[0x200f4]); + writel(0x0, ®s->reg[0x200f5]); + writel(0x0, ®s->reg[0x200f6]); + writel(0xf000, ®s->reg[0x200f7]); + writel(0x65, ®s->reg[0x2000b]); + writel(0xc9, ®s->reg[0x2000c]); + writel(0x7d1, ®s->reg[0x2000d]); + writel(0x2c, ®s->reg[0x2000e]); + writel(0xd, ®s->reg[0x12000b]); + writel(0x1a, ®s->reg[0x12000c]); + writel(0xfb, ®s->reg[0x12000d]); + writel(0x10, ®s->reg[0x12000e]); + writel(0x4, ®s->reg[0x22000b]); + writel(0x7, ®s->reg[0x22000c]); + writel(0x3f, ®s->reg[0x22000d]); + writel(0x10, ®s->reg[0x22000e]); + writel(0x0, ®s->reg[0x20025]); + writel(0x0, ®s->reg[0x2002d]); + writel(0x0, ®s->reg[0x12002d]); + writel(0x0, ®s->reg[0x22002d]); + writel(0x2, ®s->reg[0x20060]); + writel(0x0, ®s->reg[0xd0000]); + + /* load the 1D training image */ + ddr_load_train_code(FW_1D_IMAGE); + + writel(0x0, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + + /* set the PHY input clock to the desired frequency for pstate 2 */ + dwc_ddrphy_phyinit_usercustom_e_setdficlk(PS2); + + writel(0x0, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0x54000]); + writel(0x0, ®s->reg[0x54001]); + writel(0x102, ®s->reg[0x54002]); + writel(0x64, ®s->reg[0x54003]); + writel(0x2, ®s->reg[0x54004]); + writel(0x2828, ®s->reg[0x54005]); + writel(0x14, ®s->reg[0x54006]); + writel(0x0, ®s->reg[0x54007]); + writel(0x121f, ®s->reg[0x54008]); + writel(0xc8, ®s->reg[0x54009]); + writel(0x0, ®s->reg[0x5400a]); + writel(0x2, ®s->reg[0x5400b]); + writel(0x0, ®s->reg[0x5400c]); + writel(0x0, ®s->reg[0x5400d]); + writel(0x0, ®s->reg[0x5400e]); + writel(0x0, ®s->reg[0x5400f]); + writel(0x0, ®s->reg[0x54010]); + writel(0x0, ®s->reg[0x54011]); + writel(0x310, ®s->reg[0x54012]); + writel(0x0, ®s->reg[0x54013]); + writel(0x0, ®s->reg[0x54014]); + writel(0x0, ®s->reg[0x54015]); + writel(0x0, ®s->reg[0x54016]); + writel(0x0, ®s->reg[0x54017]); + writel(0x0, ®s->reg[0x54018]); + writel(0x4, ®s->reg[0x54019]); + writel(0x31, ®s->reg[0x5401a]); + writel(0x4d46, ®s->reg[0x5401b]); + writel(0x4d08, ®s->reg[0x5401c]); + writel(0x0, ®s->reg[0x5401d]); + writel(0x5, ®s->reg[0x5401e]); + writel(0x4, ®s->reg[0x5401f]); + writel(0x31, ®s->reg[0x54020]); + writel(0x4d46, ®s->reg[0x54021]); + writel(0x4d08, ®s->reg[0x54022]); + writel(0x0, ®s->reg[0x54023]); + writel(0x5, ®s->reg[0x54024]); + writel(0x0, ®s->reg[0x54025]); + writel(0x0, ®s->reg[0x54026]); + writel(0x0, ®s->reg[0x54027]); + writel(0x0, ®s->reg[0x54028]); + writel(0x0, ®s->reg[0x54029]); + writel(0x0, ®s->reg[0x5402a]); + writel(0x1000, ®s->reg[0x5402b]); + writel(0x3, ®s->reg[0x5402c]); + writel(0x0, ®s->reg[0x5402d]); + writel(0x0, ®s->reg[0x5402e]); + writel(0x0, ®s->reg[0x5402f]); + writel(0x0, ®s->reg[0x54030]); + writel(0x0, ®s->reg[0x54031]); + writel(0x400, ®s->reg[0x54032]); + writel(0x3100, ®s->reg[0x54033]); + writel(0x4600, ®s->reg[0x54034]); + writel(0x84d, ®s->reg[0x54035]); + writel(0x4d, ®s->reg[0x54036]); + writel(0x500, ®s->reg[0x54037]); + writel(0x400, ®s->reg[0x54038]); + writel(0x3100, ®s->reg[0x54039]); + writel(0x4600, ®s->reg[0x5403a]); + writel(0x84d, ®s->reg[0x5403b]); + writel(0x4d, ®s->reg[0x5403c]); + writel(0x500, ®s->reg[0x5403d]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x9, ®s->reg[0xd0099]); + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0099]); + + wait_ddrphy_training_complete(); + + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + + /* set the PHY input clock to the desired frequency for pstate 1 */ + dwc_ddrphy_phyinit_usercustom_e_setdficlk(PS1); + + writel(0x0, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0x54000]); + writel(0x0, ®s->reg[0x54001]); + writel(0x101, ®s->reg[0x54002]); + writel(0x190, ®s->reg[0x54003]); + writel(0x2, ®s->reg[0x54004]); + writel(0x2828, ®s->reg[0x54005]); + writel(0x14, ®s->reg[0x54006]); + writel(0x0, ®s->reg[0x54007]); + writel(0x121f, ®s->reg[0x54008]); + writel(0xc8, ®s->reg[0x54009]); + writel(0x0, ®s->reg[0x5400a]); + writel(0x2, ®s->reg[0x5400b]); + writel(0x0, ®s->reg[0x5400c]); + writel(0x0, ®s->reg[0x5400d]); + writel(0x0, ®s->reg[0x5400e]); + writel(0x0, ®s->reg[0x5400f]); + writel(0x0, ®s->reg[0x54010]); + writel(0x0, ®s->reg[0x54011]); + writel(0x310, ®s->reg[0x54012]); + writel(0x0, ®s->reg[0x54013]); + writel(0x0, ®s->reg[0x54014]); + writel(0x0, ®s->reg[0x54015]); + writel(0x0, ®s->reg[0x54016]); + writel(0x0, ®s->reg[0x54017]); + writel(0x0, ®s->reg[0x54018]); + writel(0x4, ®s->reg[0x54019]); + writel(0x31, ®s->reg[0x5401a]); + writel(0x4d46, ®s->reg[0x5401b]); + writel(0x4d08, ®s->reg[0x5401c]); + writel(0x0, ®s->reg[0x5401d]); + writel(0x5, ®s->reg[0x5401e]); + writel(0x4, ®s->reg[0x5401f]); + writel(0x31, ®s->reg[0x54020]); + writel(0x4d46, ®s->reg[0x54021]); + writel(0x4d08, ®s->reg[0x54022]); + writel(0x0, ®s->reg[0x54023]); + writel(0x5, ®s->reg[0x54024]); + writel(0x0, ®s->reg[0x54025]); + writel(0x0, ®s->reg[0x54026]); + writel(0x0, ®s->reg[0x54027]); + writel(0x0, ®s->reg[0x54028]); + writel(0x0, ®s->reg[0x54029]); + writel(0x0, ®s->reg[0x5402a]); + writel(0x1000, ®s->reg[0x5402b]); + writel(0x3, ®s->reg[0x5402c]); + writel(0x0, ®s->reg[0x5402d]); + writel(0x0, ®s->reg[0x5402e]); + writel(0x0, ®s->reg[0x5402f]); + writel(0x0, ®s->reg[0x54030]); + writel(0x0, ®s->reg[0x54031]); + writel(0x400, ®s->reg[0x54032]); + writel(0x3100, ®s->reg[0x54033]); + writel(0x4600, ®s->reg[0x54034]); + writel(0x84d, ®s->reg[0x54035]); + writel(0x4d, ®s->reg[0x54036]); + writel(0x500, ®s->reg[0x54037]); + writel(0x400, ®s->reg[0x54038]); + writel(0x3100, ®s->reg[0x54039]); + writel(0x4600, ®s->reg[0x5403a]); + writel(0x84d, ®s->reg[0x5403b]); + writel(0x4d, ®s->reg[0x5403c]); + writel(0x500, ®s->reg[0x5403d]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x9, ®s->reg[0xd0099]); + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0099]); + + wait_ddrphy_training_complete(); + + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + + /* set the PHY input clock to the desired frequency for pstate 0 */ + dwc_ddrphy_phyinit_usercustom_e_setdficlk(PS0); + + writel(0x0, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0x54000]); + writel(0x0, ®s->reg[0x54001]); + writel(0x0, ®s->reg[0x54002]); + writel(0xc80, ®s->reg[0x54003]); + writel(0x2, ®s->reg[0x54004]); + writel(0x2828, ®s->reg[0x54005]); + writel(0x14, ®s->reg[0x54006]); + writel(0x0, ®s->reg[0x54007]); + writel(0x131f, ®s->reg[0x54008]); + writel(0x5, ®s->reg[0x54009]); + writel(0x0, ®s->reg[0x5400a]); + writel(0x2, ®s->reg[0x5400b]); + writel(0x0, ®s->reg[0x5400c]); + writel(0x0, ®s->reg[0x5400d]); + writel(0x0, ®s->reg[0x5400e]); + writel(0x0, ®s->reg[0x5400f]); + writel(0x0, ®s->reg[0x54010]); + writel(0x0, ®s->reg[0x54011]); + writel(0x310, ®s->reg[0x54012]); + writel(0x0, ®s->reg[0x54013]); + writel(0x0, ®s->reg[0x54014]); + writel(0x0, ®s->reg[0x54015]); + writel(0x0, ®s->reg[0x54016]); + writel(0x0, ®s->reg[0x54017]); + writel(0x0, ®s->reg[0x54018]); + writel(0x2dd4, ®s->reg[0x54019]); + writel(0x31, ®s->reg[0x5401a]); + writel(0x4d46, ®s->reg[0x5401b]); + writel(0x4d08, ®s->reg[0x5401c]); + writel(0x0, ®s->reg[0x5401d]); + writel(0x5, ®s->reg[0x5401e]); + writel(0x2dd4, ®s->reg[0x5401f]); + writel(0x31, ®s->reg[0x54020]); + writel(0x4d46, ®s->reg[0x54021]); + writel(0x4d08, ®s->reg[0x54022]); + writel(0x0, ®s->reg[0x54023]); + writel(0x5, ®s->reg[0x54024]); + writel(0x0, ®s->reg[0x54025]); + writel(0x0, ®s->reg[0x54026]); + writel(0x0, ®s->reg[0x54027]); + writel(0x0, ®s->reg[0x54028]); + writel(0x0, ®s->reg[0x54029]); + writel(0x0, ®s->reg[0x5402a]); + writel(0x1000, ®s->reg[0x5402b]); + writel(0x3, ®s->reg[0x5402c]); + writel(0x0, ®s->reg[0x5402d]); + writel(0x0, ®s->reg[0x5402e]); + writel(0x0, ®s->reg[0x5402f]); + writel(0x0, ®s->reg[0x54030]); + writel(0x0, ®s->reg[0x54031]); + writel(0xd400, ®s->reg[0x54032]); + writel(0x312d, ®s->reg[0x54033]); + writel(0x4600, ®s->reg[0x54034]); + writel(0x84d, ®s->reg[0x54035]); + writel(0x4d, ®s->reg[0x54036]); + writel(0x500, ®s->reg[0x54037]); + writel(0xd400, ®s->reg[0x54038]); + writel(0x312d, ®s->reg[0x54039]); + writel(0x4600, ®s->reg[0x5403a]); + writel(0x84d, ®s->reg[0x5403b]); + writel(0x4d, ®s->reg[0x5403c]); + writel(0x500, ®s->reg[0x5403d]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x9, ®s->reg[0xd0099]); + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0099]); + + wait_ddrphy_training_complete(); + + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0xd0000]); + + /* load the 2D training image */ + ddr_load_train_code(FW_2D_IMAGE); + + writel(0x0, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0xd0000]); + + writel(0x0, ®s->reg[0x54000]); + writel(0x0, ®s->reg[0x54001]); + writel(0x0, ®s->reg[0x54002]); + writel(0xc80, ®s->reg[0x54003]); + writel(0x2, ®s->reg[0x54004]); + writel(0x2828, ®s->reg[0x54005]); + writel(0x14, ®s->reg[0x54006]); + writel(0x0, ®s->reg[0x54007]); + writel(0x61, ®s->reg[0x54008]); + writel(0xc8, ®s->reg[0x54009]); + writel(0x0, ®s->reg[0x5400a]); + writel(0x2, ®s->reg[0x5400b]); + writel(0x0, ®s->reg[0x5400c]); + writel(0x100, ®s->reg[0x5400d]); + writel(0x0, ®s->reg[0x5400e]); + writel(0x100, ®s->reg[0x5400f]); + writel(0x1f7f, ®s->reg[0x54010]); + writel(0x0, ®s->reg[0x54011]); + writel(0x310, ®s->reg[0x54012]); + writel(0x0, ®s->reg[0x54013]); + writel(0x0, ®s->reg[0x54014]); + writel(0x0, ®s->reg[0x54015]); + writel(0x0, ®s->reg[0x54016]); + writel(0x0, ®s->reg[0x54017]); + writel(0x0, ®s->reg[0x54018]); + writel(0x2dd4, ®s->reg[0x54019]); + writel(0x31, ®s->reg[0x5401a]); + writel(0x4d46, ®s->reg[0x5401b]); + writel(0x4d08, ®s->reg[0x5401c]); + writel(0x0, ®s->reg[0x5401d]); + writel(0x5, ®s->reg[0x5401e]); + writel(0x2dd4, ®s->reg[0x5401f]); + writel(0x31, ®s->reg[0x54020]); + writel(0x4d46, ®s->reg[0x54021]); + writel(0x4d08, ®s->reg[0x54022]); + writel(0x0, ®s->reg[0x54023]); + writel(0x5, ®s->reg[0x54024]); + writel(0x0, ®s->reg[0x54025]); + writel(0x0, ®s->reg[0x54026]); + writel(0x0, ®s->reg[0x54027]); + writel(0x0, ®s->reg[0x54028]); + writel(0x0, ®s->reg[0x54029]); + writel(0x0, ®s->reg[0x5402a]); + writel(0x1000, ®s->reg[0x5402b]); + writel(0x3, ®s->reg[0x5402c]); + writel(0x0, ®s->reg[0x5402d]); + writel(0x0, ®s->reg[0x5402e]); + writel(0x0, ®s->reg[0x5402f]); + writel(0x0, ®s->reg[0x54030]); + writel(0x0, ®s->reg[0x54031]); + writel(0xd400, ®s->reg[0x54032]); + writel(0x312d, ®s->reg[0x54033]); + writel(0x4600, ®s->reg[0x54034]); + writel(0x084d, ®s->reg[0x54035]); + writel(0x4d, ®s->reg[0x54036]); + writel(0x500, ®s->reg[0x54037]); + writel(0xd400, ®s->reg[0x54038]); + writel(0x312d, ®s->reg[0x54039]); + writel(0x4600, ®s->reg[0x5403a]); + writel(0x084d, ®s->reg[0x5403b]); + writel(0x4d, ®s->reg[0x5403c]); + writel(0x500, ®s->reg[0x5403d]); + writel(0x1, ®s->reg[0xd0000]); + /* Execute the Training Firmware */ + writel(0x1, ®s->reg[0xd0000]); + writel(0x9, ®s->reg[0xd0099]); + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0099]); + /* wait for 2D training complete */ + wait_ddrphy_training_complete(); + + writel(0x1, ®s->reg[0xd0099]); + writel(0x0, ®s->reg[0xd0000]); + writel(0x1, ®s->reg[0xd0000]); + + /* (I) Load PHY Init Engine Image */ + writel(0x0, ®s->reg[0xd0000]); + writel(0x10, ®s->reg[0x90000]); + writel(0x400, ®s->reg[0x90001]); + writel(0x10e, ®s->reg[0x90002]); + writel(0x0, ®s->reg[0x90003]); + writel(0x0, ®s->reg[0x90004]); + writel(0x8, ®s->reg[0x90005]); + writel(0xb, ®s->reg[0x90029]); + writel(0x480, ®s->reg[0x9002a]); + writel(0x109, ®s->reg[0x9002b]); + writel(0x8, ®s->reg[0x9002c]); + writel(0x448, ®s->reg[0x9002d]); + writel(0x139, ®s->reg[0x9002e]); + writel(0x8, ®s->reg[0x9002f]); + writel(0x478, ®s->reg[0x90030]); + writel(0x109, ®s->reg[0x90031]); + writel(0x0, ®s->reg[0x90032]); + writel(0xe8, ®s->reg[0x90033]); + writel(0x109, ®s->reg[0x90034]); + writel(0x2, ®s->reg[0x90035]); + writel(0x10, ®s->reg[0x90036]); + writel(0x139, ®s->reg[0x90037]); + writel(0xf, ®s->reg[0x90038]); + writel(0x7c0, ®s->reg[0x90039]); + writel(0x139, ®s->reg[0x9003a]); + writel(0x44, ®s->reg[0x9003b]); + writel(0x630, ®s->reg[0x9003c]); + writel(0x159, ®s->reg[0x9003d]); + writel(0x14f, ®s->reg[0x9003e]); + writel(0x630, ®s->reg[0x9003f]); + writel(0x159, ®s->reg[0x90040]); + writel(0x47, ®s->reg[0x90041]); + writel(0x630, ®s->reg[0x90042]); + writel(0x149, ®s->reg[0x90043]); + writel(0x4f, ®s->reg[0x90044]); + writel(0x630, ®s->reg[0x90045]); + writel(0x179, ®s->reg[0x90046]); + writel(0x8, ®s->reg[0x90047]); + writel(0xe0, ®s->reg[0x90048]); + writel(0x109, ®s->reg[0x90049]); + writel(0x0, ®s->reg[0x9004a]); + writel(0x7c8, ®s->reg[0x9004b]); + writel(0x109, ®s->reg[0x9004c]); + writel(0x0, ®s->reg[0x9004d]); + writel(0x1, ®s->reg[0x9004e]); + writel(0x8, ®s->reg[0x9004f]); + writel(0x0, ®s->reg[0x90050]); + writel(0x45a, ®s->reg[0x90051]); + writel(0x9, ®s->reg[0x90052]); + writel(0x0, ®s->reg[0x90053]); + writel(0x448, ®s->reg[0x90054]); + writel(0x109, ®s->reg[0x90055]); + writel(0x40, ®s->reg[0x90056]); + writel(0x630, ®s->reg[0x90057]); + writel(0x179, ®s->reg[0x90058]); + writel(0x1, ®s->reg[0x90059]); + writel(0x618, ®s->reg[0x9005a]); + writel(0x109, ®s->reg[0x9005b]); + writel(0x40c0, ®s->reg[0x9005c]); + writel(0x630, ®s->reg[0x9005d]); + writel(0x149, ®s->reg[0x9005e]); + writel(0x8, ®s->reg[0x9005f]); + writel(0x4, ®s->reg[0x90060]); + writel(0x48, ®s->reg[0x90061]); + writel(0x4040, ®s->reg[0x90062]); + writel(0x630, ®s->reg[0x90063]); + writel(0x149, ®s->reg[0x90064]); + writel(0x0, ®s->reg[0x90065]); + writel(0x4, ®s->reg[0x90066]); + writel(0x48, ®s->reg[0x90067]); + writel(0x40, ®s->reg[0x90068]); + writel(0x630, ®s->reg[0x90069]); + writel(0x149, ®s->reg[0x9006a]); + writel(0x10, ®s->reg[0x9006b]); + writel(0x4, ®s->reg[0x9006c]); + writel(0x18, ®s->reg[0x9006d]); + writel(0x0, ®s->reg[0x9006e]); + writel(0x4, ®s->reg[0x9006f]); + writel(0x78, ®s->reg[0x90070]); + writel(0x549, ®s->reg[0x90071]); + writel(0x630, ®s->reg[0x90072]); + writel(0x159, ®s->reg[0x90073]); + writel(0xd49, ®s->reg[0x90074]); + writel(0x630, ®s->reg[0x90075]); + writel(0x159, ®s->reg[0x90076]); + writel(0x94a, ®s->reg[0x90077]); + writel(0x630, ®s->reg[0x90078]); + writel(0x159, ®s->reg[0x90079]); + writel(0x441, ®s->reg[0x9007a]); + writel(0x630, ®s->reg[0x9007b]); + writel(0x149, ®s->reg[0x9007c]); + writel(0x42, ®s->reg[0x9007d]); + writel(0x630, ®s->reg[0x9007e]); + writel(0x149, ®s->reg[0x9007f]); + writel(0x1, ®s->reg[0x90080]); + writel(0x630, ®s->reg[0x90081]); + writel(0x149, ®s->reg[0x90082]); + writel(0x0, ®s->reg[0x90083]); + writel(0xe0, ®s->reg[0x90084]); + writel(0x109, ®s->reg[0x90085]); + writel(0xa, ®s->reg[0x90086]); + writel(0x10, ®s->reg[0x90087]); + writel(0x109, ®s->reg[0x90088]); + writel(0x9, ®s->reg[0x90089]); + writel(0x3c0, ®s->reg[0x9008a]); + writel(0x149, ®s->reg[0x9008b]); + writel(0x9, ®s->reg[0x9008c]); + writel(0x3c0, ®s->reg[0x9008d]); + writel(0x159, ®s->reg[0x9008e]); + writel(0x18, ®s->reg[0x9008f]); + writel(0x10, ®s->reg[0x90090]); + writel(0x109, ®s->reg[0x90091]); + writel(0x0, ®s->reg[0x90092]); + writel(0x3c0, ®s->reg[0x90093]); + writel(0x109, ®s->reg[0x90094]); + writel(0x18, ®s->reg[0x90095]); + writel(0x4, ®s->reg[0x90096]); + writel(0x48, ®s->reg[0x90097]); + writel(0x18, ®s->reg[0x90098]); + writel(0x4, ®s->reg[0x90099]); + writel(0x58, ®s->reg[0x9009a]); + writel(0xa, ®s->reg[0x9009b]); + writel(0x10, ®s->reg[0x9009c]); + writel(0x109, ®s->reg[0x9009d]); + writel(0x2, ®s->reg[0x9009e]); + writel(0x10, ®s->reg[0x9009f]); + writel(0x109, ®s->reg[0x900a0]); + writel(0x5, ®s->reg[0x900a1]); + writel(0x7c0, ®s->reg[0x900a2]); + writel(0x109, ®s->reg[0x900a3]); + writel(0x10, ®s->reg[0x900a4]); + writel(0x10, ®s->reg[0x900a5]); + writel(0x109, ®s->reg[0x900a6]); + writel(0x811, ®s->reg[0x40000]); + writel(0x880, ®s->reg[0x40020]); + writel(0x0, ®s->reg[0x40040]); + writel(0x0, ®s->reg[0x40060]); + writel(0x4016, ®s->reg[0x40001]); + writel(0x83, ®s->reg[0x40021]); + writel(0x4f, ®s->reg[0x40041]); + writel(0x0, ®s->reg[0x40061]); + writel(0x4040, ®s->reg[0x40002]); + writel(0x83, ®s->reg[0x40022]); + writel(0x51, ®s->reg[0x40042]); + writel(0x0, ®s->reg[0x40062]); + writel(0x811, ®s->reg[0x40003]); + writel(0x880, ®s->reg[0x40023]); + writel(0x0, ®s->reg[0x40043]); + writel(0x0, ®s->reg[0x40063]); + writel(0x720, ®s->reg[0x40004]); + writel(0xf, ®s->reg[0x40024]); + writel(0x1740, ®s->reg[0x40044]); + writel(0x0, ®s->reg[0x40064]); + writel(0x16, ®s->reg[0x40005]); + writel(0x83, ®s->reg[0x40025]); + writel(0x4b, ®s->reg[0x40045]); + writel(0x0, ®s->reg[0x40065]); + writel(0x716, ®s->reg[0x40006]); + writel(0xf, ®s->reg[0x40026]); + writel(0x2001, ®s->reg[0x40046]); + writel(0x0, ®s->reg[0x40066]); + writel(0x716, ®s->reg[0x40007]); + writel(0xf, ®s->reg[0x40027]); + writel(0x2800, ®s->reg[0x40047]); + writel(0x0, ®s->reg[0x40067]); + writel(0x716, ®s->reg[0x40008]); + writel(0xf, ®s->reg[0x40028]); + writel(0xf00, ®s->reg[0x40048]); + writel(0x0, ®s->reg[0x40068]); + writel(0x720, ®s->reg[0x40009]); + writel(0xf, ®s->reg[0x40029]); + writel(0x1400, ®s->reg[0x40049]); + writel(0x0, ®s->reg[0x40069]); + writel(0xe08, ®s->reg[0x4000a]); + writel(0xc15, ®s->reg[0x4002a]); + writel(0x0, ®s->reg[0x4004a]); + writel(0x0, ®s->reg[0x4006a]); + writel(0x623, ®s->reg[0x4000b]); + writel(0x15, ®s->reg[0x4002b]); + writel(0x0, ®s->reg[0x4004b]); + writel(0x0, ®s->reg[0x4006b]); + writel(0x4004, ®s->reg[0x4000c]); + writel(0x80, ®s->reg[0x4002c]); + writel(0x0, ®s->reg[0x4004c]); + writel(0x0, ®s->reg[0x4006c]); + writel(0xe08, ®s->reg[0x4000d]); + writel(0xc1a, ®s->reg[0x4002d]); + writel(0x0, ®s->reg[0x4004d]); + writel(0x0, ®s->reg[0x4006d]); + writel(0x623, ®s->reg[0x4000e]); + writel(0x1a, ®s->reg[0x4002e]); + writel(0x0, ®s->reg[0x4004e]); + writel(0x0, ®s->reg[0x4006e]); + writel(0x4040, ®s->reg[0x4000f]); + writel(0x80, ®s->reg[0x4002f]); + writel(0x0, ®s->reg[0x4004f]); + writel(0x0, ®s->reg[0x4006f]); + writel(0x2604, ®s->reg[0x40010]); + writel(0x15, ®s->reg[0x40030]); + writel(0x0, ®s->reg[0x40050]); + writel(0x0, ®s->reg[0x40070]); + writel(0x708, ®s->reg[0x40011]); + writel(0x5, ®s->reg[0x40031]); + writel(0x0, ®s->reg[0x40051]); + writel(0x2002, ®s->reg[0x40071]); + writel(0x8, ®s->reg[0x40012]); + writel(0x80, ®s->reg[0x40032]); + writel(0x0, ®s->reg[0x40052]); + writel(0x0, ®s->reg[0x40072]); + writel(0x2604, ®s->reg[0x40013]); + writel(0x1a, ®s->reg[0x40033]); + writel(0x0, ®s->reg[0x40053]); + writel(0x0, ®s->reg[0x40073]); + writel(0x708, ®s->reg[0x40014]); + writel(0xa, ®s->reg[0x40034]); + writel(0x0, ®s->reg[0x40054]); + writel(0x2002, ®s->reg[0x40074]); + writel(0x4040, ®s->reg[0x40015]); + writel(0x80, ®s->reg[0x40035]); + writel(0x0, ®s->reg[0x40055]); + writel(0x0, ®s->reg[0x40075]); + writel(0x60a, ®s->reg[0x40016]); + writel(0x15, ®s->reg[0x40036]); + writel(0x1200, ®s->reg[0x40056]); + writel(0x0, ®s->reg[0x40076]); + writel(0x61a, ®s->reg[0x40017]); + writel(0x15, ®s->reg[0x40037]); + writel(0x1300, ®s->reg[0x40057]); + writel(0x0, ®s->reg[0x40077]); + writel(0x60a, ®s->reg[0x40018]); + writel(0x1a, ®s->reg[0x40038]); + writel(0x1200, ®s->reg[0x40058]); + writel(0x0, ®s->reg[0x40078]); + writel(0x642, ®s->reg[0x40019]); + writel(0x1a, ®s->reg[0x40039]); + writel(0x1300, ®s->reg[0x40059]); + writel(0x0, ®s->reg[0x40079]); + writel(0x4808, ®s->reg[0x4001a]); + writel(0x880, ®s->reg[0x4003a]); + writel(0x0, ®s->reg[0x4005a]); + writel(0x0, ®s->reg[0x4007a]); + writel(0x0, ®s->reg[0x900a7]); + writel(0x790, ®s->reg[0x900a8]); + writel(0x11a, ®s->reg[0x900a9]); + writel(0x8, ®s->reg[0x900aa]); + writel(0x7aa, ®s->reg[0x900ab]); + writel(0x2a, ®s->reg[0x900ac]); + writel(0x10, ®s->reg[0x900ad]); + writel(0x7b2, ®s->reg[0x900ae]); + writel(0x2a, ®s->reg[0x900af]); + writel(0x0, ®s->reg[0x900b0]); + writel(0x7c8, ®s->reg[0x900b1]); + writel(0x109, ®s->reg[0x900b2]); + writel(0x10, ®s->reg[0x900b3]); + writel(0x2a8, ®s->reg[0x900b4]); + writel(0x129, ®s->reg[0x900b5]); + writel(0x8, ®s->reg[0x900b6]); + writel(0x370, ®s->reg[0x900b7]); + writel(0x129, ®s->reg[0x900b8]); + writel(0xa, ®s->reg[0x900b9]); + writel(0x3c8, ®s->reg[0x900ba]); + writel(0x1a9, ®s->reg[0x900bb]); + writel(0xc, ®s->reg[0x900bc]); + writel(0x408, ®s->reg[0x900bd]); + writel(0x199, ®s->reg[0x900be]); + writel(0x14, ®s->reg[0x900bf]); + writel(0x790, ®s->reg[0x900c0]); + writel(0x11a, ®s->reg[0x900c1]); + writel(0x8, ®s->reg[0x900c2]); + writel(0x4, ®s->reg[0x900c3]); + writel(0x18, ®s->reg[0x900c4]); + writel(0xc, ®s->reg[0x900c5]); + writel(0x408, ®s->reg[0x900c6]); + writel(0x199, ®s->reg[0x900c7]); + writel(0x8, ®s->reg[0x900c8]); + writel(0x8568, ®s->reg[0x900c9]); + writel(0x108, ®s->reg[0x900ca]); + writel(0x18, ®s->reg[0x900cb]); + writel(0x790, ®s->reg[0x900cc]); + writel(0x16a, ®s->reg[0x900cd]); + writel(0x8, ®s->reg[0x900ce]); + writel(0x1d8, ®s->reg[0x900cf]); + writel(0x169, ®s->reg[0x900d0]); + writel(0x10, ®s->reg[0x900d1]); + writel(0x8558, ®s->reg[0x900d2]); + writel(0x168, ®s->reg[0x900d3]); + writel(0x70, ®s->reg[0x900d4]); + writel(0x788, ®s->reg[0x900d5]); + writel(0x16a, ®s->reg[0x900d6]); + writel(0x1ff8, ®s->reg[0x900d7]); + writel(0x85a8, ®s->reg[0x900d8]); + writel(0x1e8, ®s->reg[0x900d9]); + writel(0x50, ®s->reg[0x900da]); + writel(0x798, ®s->reg[0x900db]); + writel(0x16a, ®s->reg[0x900dc]); + writel(0x60, ®s->reg[0x900dd]); + writel(0x7a0, ®s->reg[0x900de]); + writel(0x16a, ®s->reg[0x900df]); + writel(0x8, ®s->reg[0x900e0]); + writel(0x8310, ®s->reg[0x900e1]); + writel(0x168, ®s->reg[0x900e2]); + writel(0x8, ®s->reg[0x900e3]); + writel(0xa310, ®s->reg[0x900e4]); + writel(0x168, ®s->reg[0x900e5]); + writel(0xa, ®s->reg[0x900e6]); + writel(0x408, ®s->reg[0x900e7]); + writel(0x169, ®s->reg[0x900e8]); + writel(0x6e, ®s->reg[0x900e9]); + writel(0x0, ®s->reg[0x900ea]); + writel(0x68, ®s->reg[0x900eb]); + writel(0x0, ®s->reg[0x900ec]); + writel(0x408, ®s->reg[0x900ed]); + writel(0x169, ®s->reg[0x900ee]); + writel(0x0, ®s->reg[0x900ef]); + writel(0x8310, ®s->reg[0x900f0]); + writel(0x168, ®s->reg[0x900f1]); + writel(0x0, ®s->reg[0x900f2]); + writel(0xa310, ®s->reg[0x900f3]); + writel(0x168, ®s->reg[0x900f4]); + writel(0x1ff8, ®s->reg[0x900f5]); + writel(0x85a8, ®s->reg[0x900f6]); + writel(0x1e8, ®s->reg[0x900f7]); + writel(0x68, ®s->reg[0x900f8]); + writel(0x798, ®s->reg[0x900f9]); + writel(0x16a, ®s->reg[0x900fa]); + writel(0x78, ®s->reg[0x900fb]); + writel(0x7a0, ®s->reg[0x900fc]); + writel(0x16a, ®s->reg[0x900fd]); + writel(0x68, ®s->reg[0x900fe]); + writel(0x790, ®s->reg[0x900ff]); + writel(0x16a, ®s->reg[0x90100]); + writel(0x8, ®s->reg[0x90101]); + writel(0x8b10, ®s->reg[0x90102]); + writel(0x168, ®s->reg[0x90103]); + writel(0x8, ®s->reg[0x90104]); + writel(0xab10, ®s->reg[0x90105]); + writel(0x168, ®s->reg[0x90106]); + writel(0xa, ®s->reg[0x90107]); + writel(0x408, ®s->reg[0x90108]); + writel(0x169, ®s->reg[0x90109]); + writel(0x58, ®s->reg[0x9010a]); + writel(0x0, ®s->reg[0x9010b]); + writel(0x68, ®s->reg[0x9010c]); + writel(0x0, ®s->reg[0x9010d]); + writel(0x408, ®s->reg[0x9010e]); + writel(0x169, ®s->reg[0x9010f]); + writel(0x0, ®s->reg[0x90110]); + writel(0x8b10, ®s->reg[0x90111]); + writel(0x168, ®s->reg[0x90112]); + writel(0x0, ®s->reg[0x90113]); + writel(0xab10, ®s->reg[0x90114]); + writel(0x168, ®s->reg[0x90115]); + writel(0x0, ®s->reg[0x90116]); + writel(0x1d8, ®s->reg[0x90117]); + writel(0x169, ®s->reg[0x90118]); + writel(0x80, ®s->reg[0x90119]); + writel(0x790, ®s->reg[0x9011a]); + writel(0x16a, ®s->reg[0x9011b]); + writel(0x18, ®s->reg[0x9011c]); + writel(0x7aa, ®s->reg[0x9011d]); + writel(0x6a, ®s->reg[0x9011e]); + writel(0xa, ®s->reg[0x9011f]); + writel(0x0, ®s->reg[0x90120]); + writel(0x1e9, ®s->reg[0x90121]); + writel(0x8, ®s->reg[0x90122]); + writel(0x8080, ®s->reg[0x90123]); + writel(0x108, ®s->reg[0x90124]); + writel(0xf, ®s->reg[0x90125]); + writel(0x408, ®s->reg[0x90126]); + writel(0x169, ®s->reg[0x90127]); + writel(0xc, ®s->reg[0x90128]); + writel(0x0, ®s->reg[0x90129]); + writel(0x68, ®s->reg[0x9012a]); + writel(0x9, ®s->reg[0x9012b]); + writel(0x0, ®s->reg[0x9012c]); + writel(0x1a9, ®s->reg[0x9012d]); + writel(0x0, ®s->reg[0x9012e]); + writel(0x408, ®s->reg[0x9012f]); + writel(0x169, ®s->reg[0x90130]); + writel(0x0, ®s->reg[0x90131]); + writel(0x8080, ®s->reg[0x90132]); + writel(0x108, ®s->reg[0x90133]); + writel(0x8, ®s->reg[0x90134]); + writel(0x7aa, ®s->reg[0x90135]); + writel(0x6a, ®s->reg[0x90136]); + writel(0x0, ®s->reg[0x90137]); + writel(0x8568, ®s->reg[0x90138]); + writel(0x108, ®s->reg[0x90139]); + writel(0xb7, ®s->reg[0x9013a]); + writel(0x790, ®s->reg[0x9013b]); + writel(0x16a, ®s->reg[0x9013c]); + writel(0x1d, ®s->reg[0x9013d]); + writel(0x0, ®s->reg[0x9013e]); + writel(0x68, ®s->reg[0x9013f]); + writel(0x8, ®s->reg[0x90140]); + writel(0x8558, ®s->reg[0x90141]); + writel(0x168, ®s->reg[0x90142]); + writel(0xf, ®s->reg[0x90143]); + writel(0x408, ®s->reg[0x90144]); + writel(0x169, ®s->reg[0x90145]); + writel(0xc, ®s->reg[0x90146]); + writel(0x0, ®s->reg[0x90147]); + writel(0x68, ®s->reg[0x90148]); + writel(0x0, ®s->reg[0x90149]); + writel(0x408, ®s->reg[0x9014a]); + writel(0x169, ®s->reg[0x9014b]); + writel(0x0, ®s->reg[0x9014c]); + writel(0x8558, ®s->reg[0x9014d]); + writel(0x168, ®s->reg[0x9014e]); + writel(0x8, ®s->reg[0x9014f]); + writel(0x3c8, ®s->reg[0x90150]); + writel(0x1a9, ®s->reg[0x90151]); + writel(0x3, ®s->reg[0x90152]); + writel(0x370, ®s->reg[0x90153]); + writel(0x129, ®s->reg[0x90154]); + writel(0x20, ®s->reg[0x90155]); + writel(0x2aa, ®s->reg[0x90156]); + writel(0x9, ®s->reg[0x90157]); + writel(0x0, ®s->reg[0x90158]); + writel(0x400, ®s->reg[0x90159]); + writel(0x10e, ®s->reg[0x9015a]); + writel(0x8, ®s->reg[0x9015b]); + writel(0xe8, ®s->reg[0x9015c]); + writel(0x109, ®s->reg[0x9015d]); + writel(0x0, ®s->reg[0x9015e]); + writel(0x8140, ®s->reg[0x9015f]); + writel(0x10c, ®s->reg[0x90160]); + writel(0x10, ®s->reg[0x90161]); + writel(0x8138, ®s->reg[0x90162]); + writel(0x10c, ®s->reg[0x90163]); + writel(0x8, ®s->reg[0x90164]); + writel(0x7c8, ®s->reg[0x90165]); + writel(0x101, ®s->reg[0x90166]); + writel(0x8, ®s->reg[0x90167]); + writel(0x0, ®s->reg[0x90168]); + writel(0x8, ®s->reg[0x90169]); + writel(0x8, ®s->reg[0x9016a]); + writel(0x448, ®s->reg[0x9016b]); + writel(0x109, ®s->reg[0x9016c]); + writel(0xf, ®s->reg[0x9016d]); + writel(0x7c0, ®s->reg[0x9016e]); + writel(0x109, ®s->reg[0x9016f]); + writel(0x0, ®s->reg[0x90170]); + writel(0xe8, ®s->reg[0x90171]); + writel(0x109, ®s->reg[0x90172]); + writel(0x47, ®s->reg[0x90173]); + writel(0x630, ®s->reg[0x90174]); + writel(0x109, ®s->reg[0x90175]); + writel(0x8, ®s->reg[0x90176]); + writel(0x618, ®s->reg[0x90177]); + writel(0x109, ®s->reg[0x90178]); + writel(0x8, ®s->reg[0x90179]); + writel(0xe0, ®s->reg[0x9017a]); + writel(0x109, ®s->reg[0x9017b]); + writel(0x0, ®s->reg[0x9017c]); + writel(0x7c8, ®s->reg[0x9017d]); + writel(0x109, ®s->reg[0x9017e]); + writel(0x8, ®s->reg[0x9017f]); + writel(0x8140, ®s->reg[0x90180]); + writel(0x10c, ®s->reg[0x90181]); + writel(0x0, ®s->reg[0x90182]); + writel(0x1, ®s->reg[0x90183]); + writel(0x8, ®s->reg[0x90184]); + writel(0x8, ®s->reg[0x90185]); + writel(0x4, ®s->reg[0x90186]); + writel(0x8, ®s->reg[0x90187]); + writel(0x8, ®s->reg[0x90188]); + writel(0x7c8, ®s->reg[0x90189]); + writel(0x101, ®s->reg[0x9018a]); + writel(0x0, ®s->reg[0x90006]); + writel(0x0, ®s->reg[0x90007]); + writel(0x8, ®s->reg[0x90008]); + writel(0x0, ®s->reg[0x90009]); + writel(0x0, ®s->reg[0x9000a]); + writel(0x0, ®s->reg[0x9000b]); + writel(0x400, ®s->reg[0xd00e7]); + writel(0x0, ®s->reg[0x90017]); + writel(0x2a, ®s->reg[0x9001f]); + writel(0x6a, ®s->reg[0x90026]); + writel(0x0, ®s->reg[0x400d0]); + writel(0x101, ®s->reg[0x400d1]); + writel(0x105, ®s->reg[0x400d2]); + writel(0x107, ®s->reg[0x400d3]); + writel(0x10f, ®s->reg[0x400d4]); + writel(0x202, ®s->reg[0x400d5]); + writel(0x20a, ®s->reg[0x400d6]); + writel(0x20b, ®s->reg[0x400d7]); + writel(0x2, ®s->reg[0x2003a]); + writel(0x0, ®s->reg[0x9000c]); + writel(0x173, ®s->reg[0x9000d]); + writel(0x60, ®s->reg[0x9000e]); + writel(0x6110, ®s->reg[0x9000f]); + writel(0x2152, ®s->reg[0x90010]); + writel(0xdfbd, ®s->reg[0x90011]); + writel(0x60, ®s->reg[0x90012]); + writel(0x6152, ®s->reg[0x90013]); + writel(0x5a, ®s->reg[0x20010]); + writel(0x3, ®s->reg[0x20011]); + writel(0xe0, ®s->reg[0x40080]); + writel(0x12, ®s->reg[0x40081]); + writel(0xe0, ®s->reg[0x40082]); + writel(0x12, ®s->reg[0x40083]); + writel(0xe0, ®s->reg[0x40084]); + writel(0x12, ®s->reg[0x40085]); + writel(0xf, ®s->reg[0x400fd]); + writel(0x1, ®s->reg[0x10011]); + writel(0x1, ®s->reg[0x10012]); + writel(0x180, ®s->reg[0x10013]); + writel(0x1, ®s->reg[0x10018]); + writel(0x6209, ®s->reg[0x10002]); + writel(0x1, ®s->reg[0x100b2]); + writel(0x1, ®s->reg[0x101b4]); + writel(0x1, ®s->reg[0x102b4]); + writel(0x1, ®s->reg[0x103b4]); + writel(0x1, ®s->reg[0x104b4]); + writel(0x1, ®s->reg[0x105b4]); + writel(0x1, ®s->reg[0x106b4]); + writel(0x1, ®s->reg[0x107b4]); + writel(0x1, ®s->reg[0x108b4]); + writel(0x1, ®s->reg[0x11011]); + writel(0x1, ®s->reg[0x11012]); + writel(0x180, ®s->reg[0x11013]); + writel(0x1, ®s->reg[0x11018]); + writel(0x6209, ®s->reg[0x11002]); + writel(0x1, ®s->reg[0x110b2]); + writel(0x1, ®s->reg[0x111b4]); + writel(0x1, ®s->reg[0x112b4]); + writel(0x1, ®s->reg[0x113b4]); + writel(0x1, ®s->reg[0x114b4]); + writel(0x1, ®s->reg[0x115b4]); + writel(0x1, ®s->reg[0x116b4]); + writel(0x1, ®s->reg[0x117b4]); + writel(0x1, ®s->reg[0x118b4]); + writel(0x1, ®s->reg[0x12011]); + writel(0x1, ®s->reg[0x12012]); + writel(0x180, ®s->reg[0x12013]); + writel(0x1, ®s->reg[0x12018]); + writel(0x6209, ®s->reg[0x12002]); + writel(0x1, ®s->reg[0x120b2]); + writel(0x1, ®s->reg[0x121b4]); + writel(0x1, ®s->reg[0x122b4]); + writel(0x1, ®s->reg[0x123b4]); + writel(0x1, ®s->reg[0x124b4]); + writel(0x1, ®s->reg[0x125b4]); + writel(0x1, ®s->reg[0x126b4]); + writel(0x1, ®s->reg[0x127b4]); + writel(0x1, ®s->reg[0x128b4]); + writel(0x1, ®s->reg[0x13011]); + writel(0x1, ®s->reg[0x13012]); + writel(0x180, ®s->reg[0x13013]); + writel(0x1, ®s->reg[0x13018]); + writel(0x6209, ®s->reg[0x13002]); + writel(0x1, ®s->reg[0x130b2]); + writel(0x1, ®s->reg[0x131b4]); + writel(0x1, ®s->reg[0x132b4]); + writel(0x1, ®s->reg[0x133b4]); + writel(0x1, ®s->reg[0x134b4]); + writel(0x1, ®s->reg[0x135b4]); + writel(0x1, ®s->reg[0x136b4]); + writel(0x1, ®s->reg[0x137b4]); + writel(0x1, ®s->reg[0x138b4]); + writel(0x2, ®s->reg[0x2003a]); + writel(0x2, ®s->reg[0xc0080]); + writel(0x1, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0x000d0000]); + readl(®s->reg[0x00020010]); + writel(0x6a, ®s->reg[0x00020010]); + readl(®s->reg[0x0002001d]); + writel(0x1, ®s->reg[0x0002001d]); + /* + * CalBusy.0 =1, indicates the calibrator is actively calibrating. + * Wait Calibrating done. + */ + while (readl(®s->reg[0x20097]) & BIT(1)) + ; + writel(0x0, ®s->reg[0xd0000]); + writel(0x0, ®s->reg[0x2006e]); +} diff --git a/board/freescale/mx8mq_evk/ddr/helper.c b/board/freescale/mx8mq_evk/ddr/helper.c new file mode 100644 index 0000000000..4e87991c7b --- /dev/null +++ b/board/freescale/mx8mq_evk/ddr/helper.c @@ -0,0 +1,101 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +#define IMEM_LEN 32768 +#define DMEM_LEN 16384 +#define IMEM_2D_OFFSET 49152 + +#define IMEM_OFFSET_ADDR 0x00050000 +#define DMEM_OFFSET_ADDR 0x00054000 +#define DDR_TRAIN_CODE_BASE_ADDR IP2APB_DDRPHY_IPS_BASE_ADDR(0) + +/* We need PHY iMEM PHY is 32KB padded */ +void ddr_load_train_code(enum fw_type type) +{ + u32 tmp32, i; + u32 error = 0; + unsigned long pr_to32, pr_from32; + unsigned long fw_offset = type ? IMEM_2D_OFFSET : 0; + unsigned long imem_start = (unsigned long)&_end + fw_offset; + unsigned long dmem_start = imem_start + IMEM_LEN; + + pr_from32 = imem_start; + pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * IMEM_OFFSET_ADDR; + for (i = 0x0; i < IMEM_LEN; ) { + tmp32 = readl(pr_from32); + writew(tmp32 & 0x0000ffff, pr_to32); + pr_to32 += 4; + writew((tmp32 >> 16) & 0x0000ffff, pr_to32); + pr_to32 += 4; + pr_from32 += 4; + i += 4; + } + + pr_from32 = dmem_start; + pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * DMEM_OFFSET_ADDR; + for (i = 0x0; i < DMEM_LEN;) { + tmp32 = readl(pr_from32); + writew(tmp32 & 0x0000ffff, pr_to32); + pr_to32 += 4; + writew((tmp32 >> 16) & 0x0000ffff, pr_to32); + pr_to32 += 4; + pr_from32 += 4; + i += 4; + } + + debug("check ddr4_pmu_train_imem code\n"); + pr_from32 = imem_start; + pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * IMEM_OFFSET_ADDR; + for (i = 0x0; i < IMEM_LEN;) { + tmp32 = (readw(pr_to32) & 0x0000ffff); + pr_to32 += 4; + tmp32 += ((readw(pr_to32) & 0x0000ffff) << 16); + + if (tmp32 != readl(pr_from32)) { + printf("%lx %lx\n", pr_from32, pr_to32); + error++; + } + pr_from32 += 4; + pr_to32 += 4; + i += 4; + } + if (error) + printf("check ddr4_pmu_train_imem code fail=%d\n", error); + else + debug("check ddr4_pmu_train_imem code pass\n"); + + debug("check ddr4_pmu_train_dmem code\n"); + pr_from32 = dmem_start; + pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * DMEM_OFFSET_ADDR; + for (i = 0x0; i < DMEM_LEN;) { + tmp32 = (readw(pr_to32) & 0x0000ffff); + pr_to32 += 4; + tmp32 += ((readw(pr_to32) & 0x0000ffff) << 16); + if (tmp32 != readl(pr_from32)) { + printf("%lx %lx\n", pr_from32, pr_to32); + error++; + } + pr_from32 += 4; + pr_to32 += 4; + i += 4; + } + + if (error) + printf("check ddr4_pmu_train_dmem code fail=%d", error); + else + debug("check ddr4_pmu_train_dmem code pass\n"); +} diff --git a/board/freescale/mx8mq_evk/mx8mq_evk.c b/board/freescale/mx8mq_evk/mx8mq_evk.c new file mode 100644 index 0000000000..e31678efb7 --- /dev/null +++ b/board/freescale/mx8mq_evk/mx8mq_evk.c @@ -0,0 +1,156 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../common/pfuze.h" + +DECLARE_GLOBAL_DATA_PTR; + +#define QSPI_PAD_CTRL (PAD_CTL_DSE2 | PAD_CTL_HYS) + +#define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1) + +#define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) + +static iomux_v3_cfg_t const wdog_pads[] = { + IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL), +}; + +#ifdef CONFIG_FSL_QSPI +static iomux_v3_cfg_t const qspi_pads[] = { + IMX8MQ_PAD_NAND_ALE__QSPI_A_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL), + IMX8MQ_PAD_NAND_CE0_B__QSPI_A_SS0_B | MUX_PAD_CTRL(QSPI_PAD_CTRL), + + IMX8MQ_PAD_NAND_DATA00__QSPI_A_DATA0 | MUX_PAD_CTRL(QSPI_PAD_CTRL), + IMX8MQ_PAD_NAND_DATA01__QSPI_A_DATA1 | MUX_PAD_CTRL(QSPI_PAD_CTRL), + IMX8MQ_PAD_NAND_DATA02__QSPI_A_DATA2 | MUX_PAD_CTRL(QSPI_PAD_CTRL), + IMX8MQ_PAD_NAND_DATA03__QSPI_A_DATA3 | MUX_PAD_CTRL(QSPI_PAD_CTRL), +}; + +int board_qspi_init(void) +{ + imx_iomux_v3_setup_multiple_pads(qspi_pads, ARRAY_SIZE(qspi_pads)); + + set_clk_qspi(); + + return 0; +} +#endif + +static iomux_v3_cfg_t const uart_pads[] = { + IMX8MQ_PAD_UART1_RXD__UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL), + IMX8MQ_PAD_UART1_TXD__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL), +}; + +int board_early_init_f(void) +{ + struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR; + + imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads)); + set_wdog_reset(wdog); + + imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads)); + + return 0; +} + +int dram_init(void) +{ + /* rom_pointer[1] contains the size of TEE occupies */ + if (rom_pointer[1]) + gd->ram_size = PHYS_SDRAM_SIZE - rom_pointer[1]; + else + gd->ram_size = PHYS_SDRAM_SIZE; + + return 0; +} + +#ifdef CONFIG_FEC_MXC +#define FEC_RST_PAD IMX_GPIO_NR(1, 9) +static iomux_v3_cfg_t const fec1_rst_pads[] = { + IMX8MQ_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(NO_PAD_CTRL), +}; + +static void setup_iomux_fec(void) +{ + imx_iomux_v3_setup_multiple_pads(fec1_rst_pads, + ARRAY_SIZE(fec1_rst_pads)); + + gpio_request(IMX_GPIO_NR(1, 9), "fec1_rst"); + gpio_direction_output(IMX_GPIO_NR(1, 9), 0); + udelay(500); + gpio_direction_output(IMX_GPIO_NR(1, 9), 1); +} + +static int setup_fec(void) +{ + struct iomuxc_gpr_base_regs *gpr = + (struct iomuxc_gpr_base_regs *)IOMUXC_GPR_BASE_ADDR; + + setup_iomux_fec(); + + /* Use 125M anatop REF_CLK1 for ENET1, not from external */ + clrsetbits_le32(&gpr->gpr[1], BIT(13) | BIT(17), 0); + return set_clk_enet(ENET_125MHZ); +} + +int board_phy_config(struct phy_device *phydev) +{ + /* enable rgmii rxc skew and phy mode select to RGMII copper */ + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8); + + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100); + + if (phydev->drv->config) + phydev->drv->config(phydev); + return 0; +} +#endif + +int board_init(void) +{ + board_qspi_init(); + +#ifdef CONFIG_FEC_MXC + setup_fec(); +#endif + + return 0; +} + +int board_mmc_get_env_dev(int devno) +{ + return devno; +} + +int board_late_init(void) +{ +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG + env_set("board_name", "EVK"); + env_set("board_rev", "iMX8MQ"); +#endif + + return 0; +} diff --git a/board/freescale/mx8mq_evk/spl.c b/board/freescale/mx8mq_evk/spl.c new file mode 100644 index 0000000000..3e6aa51692 --- /dev/null +++ b/board/freescale/mx8mq_evk/spl.c @@ -0,0 +1,230 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../common/pfuze.h" + +DECLARE_GLOBAL_DATA_PTR; + +void spl_dram_init(void) +{ + /* ddr init */ + ddr_init(); +} + +#define I2C_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) +#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) +struct i2c_pads_info i2c_pad_info1 = { + .scl = { + .i2c_mode = IMX8MQ_PAD_I2C1_SCL__I2C1_SCL | PC, + .gpio_mode = IMX8MQ_PAD_I2C1_SCL__GPIO5_IO14 | PC, + .gp = IMX_GPIO_NR(5, 14), + }, + .sda = { + .i2c_mode = IMX8MQ_PAD_I2C1_SDA__I2C1_SDA | PC, + .gpio_mode = IMX8MQ_PAD_I2C1_SDA__GPIO5_IO15 | PC, + .gp = IMX_GPIO_NR(5, 15), + }, +}; + +#define USDHC2_CD_GPIO IMX_GPIO_NR(2, 12) +#define USDHC1_PWR_GPIO IMX_GPIO_NR(2, 10) +#define USDHC2_PWR_GPIO IMX_GPIO_NR(2, 19) + +int board_mmc_getcd(struct mmc *mmc) +{ + struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; + int ret = 0; + + switch (cfg->esdhc_base) { + case USDHC1_BASE_ADDR: + ret = 1; + break; + case USDHC2_BASE_ADDR: + ret = !gpio_get_value(USDHC2_CD_GPIO); + return ret; + } + + return 1; +} + +#define USDHC_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE | \ + PAD_CTL_FSEL2) + +static iomux_v3_cfg_t const usdhc1_pads[] = { + IMX8MQ_PAD_SD1_CLK__USDHC1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_CMD__USDHC1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA0__USDHC1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA1__USDHC1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA2__USDHC1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA3__USDHC1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA4__USDHC1_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA5__USDHC1_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA6__USDHC1_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_DATA7__USDHC1_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD1_RESET_B__GPIO2_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL), +}; + +static iomux_v3_cfg_t const usdhc2_pads[] = { + IMX8MQ_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD2_DATA0__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD2_DATA1__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD2_DATA2__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD2_DATA3__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + IMX8MQ_PAD_SD2_CD_B__GPIO2_IO12 | MUX_PAD_CTRL(NO_PAD_CTRL), + IMX8MQ_PAD_SD2_RESET_B__GPIO2_IO19 | MUX_PAD_CTRL(NO_PAD_CTRL), +}; + +static struct fsl_esdhc_cfg usdhc_cfg[2] = { + {USDHC1_BASE_ADDR, 0, 8}, + {USDHC2_BASE_ADDR, 0, 4}, +}; + +int board_mmc_init(bd_t *bis) +{ + int i, ret; + /* + * According to the board_mmc_init() the following map is done: + * (U-Boot device node) (Physical Port) + * mmc0 USDHC1 + * mmc1 USDHC2 + */ + for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) { + switch (i) { + case 0: + init_clk_usdhc(0); + usdhc_cfg[0].sdhc_clk = mxc_get_clock(USDHC1_CLK_ROOT); + imx_iomux_v3_setup_multiple_pads( + usdhc1_pads, ARRAY_SIZE(usdhc1_pads)); + gpio_request(USDHC1_PWR_GPIO, "usdhc1_reset"); + gpio_direction_output(USDHC1_PWR_GPIO, 0); + udelay(500); + gpio_direction_output(USDHC1_PWR_GPIO, 1); + break; + case 1: + init_clk_usdhc(1); + usdhc_cfg[1].sdhc_clk = mxc_get_clock(USDHC2_CLK_ROOT); + imx_iomux_v3_setup_multiple_pads( + usdhc2_pads, ARRAY_SIZE(usdhc2_pads)); + gpio_request(USDHC2_PWR_GPIO, "usdhc2_reset"); + gpio_direction_output(USDHC2_PWR_GPIO, 0); + udelay(500); + gpio_direction_output(USDHC2_PWR_GPIO, 1); + break; + default: + printf("Warning: you configured more USDHC controllers(%d) than supported by the board\n", i + 1); + return -EINVAL; + } + + ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]); + if (ret) + return ret; + } + + return 0; +} + +#ifdef CONFIG_POWER +#define I2C_PMIC 0 +int power_init_board(void) +{ + struct pmic *p; + int ret; + unsigned int reg; + + ret = power_pfuze100_init(I2C_PMIC); + if (ret) + return -ENODEV; + + p = pmic_get("PFUZE100"); + ret = pmic_probe(p); + if (ret) + return -ENODEV; + + pmic_reg_read(p, PFUZE100_DEVICEID, ®); + printf("PMIC: PFUZE100 ID=0x%02x\n", reg); + + pmic_reg_read(p, PFUZE100_SW3AVOL, ®); + if ((reg & 0x3f) != 0x18) { + reg &= ~0x3f; + reg |= 0x18; + pmic_reg_write(p, PFUZE100_SW3AVOL, reg); + } + + ret = pfuze_mode_init(p, APS_PFM); + if (ret < 0) + return ret; + + return 0; +} +#endif + +void spl_board_init(void) +{ + enable_tzc380(); + + /* Adjust pmic voltage to 1.0V for 800M */ + setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); + + power_init_board(); + + /* DDR initialization */ + spl_dram_init(); + + /* Serial download mode */ + if (is_usb_boot()) { + puts("Back to ROM, SDP\n"); + restore_boot_params(); + } + puts("Normal Boot\n"); +} + +#ifdef CONFIG_SPL_LOAD_FIT +int board_fit_config_name_match(const char *name) +{ + /* Just empty function now - can't decide what to choose */ + debug("%s: %s\n", __func__, name); + + return 0; +} +#endif + +void board_init_f(ulong dummy) +{ + /* Clear global data */ + memset((void *)gd, 0, sizeof(gd_t)); + + arch_cpu_init(); + + init_uart_clk(0); + + board_early_init_f(); + + timer_init(); + + preloader_console_init(); + + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); + + board_init_r(NULL, 0); +} diff --git a/configs/mx8mq_evk_defconfig b/configs/mx8mq_evk_defconfig new file mode 100644 index 0000000000..5848168ac3 --- /dev/null +++ b/configs/mx8mq_evk_defconfig @@ -0,0 +1,27 @@ +CONFIG_ARM=y +CONFIG_ARCH_MX8M=y +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_TARGET_MX8MQ_EVK=y +CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8mq-evk" +CONFIG_FIT=y +CONFIG_SPL_LOAD_FIT=y +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg" +CONFIG_SPL=y +CONFIG_HUSH_PARSER=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_I2C=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_REGULATOR=y +CONFIG_OF_CONTROL=y +CONFIG_DM_GPIO=y +CONFIG_DM_I2C=y +CONFIG_DM_MMC=y +CONFIG_DM_ETH=y +CONFIG_PINCTRL=y +CONFIG_DM_PMIC_PFUZE100=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_PFUZE100=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y +CONFIG_DM_THERMAL=y +CONFIG_FS_FAT=y diff --git a/include/configs/mx8mq_evk.h b/include/configs/mx8mq_evk.h new file mode 100644 index 0000000000..6fb8669bbe --- /dev/null +++ b/include/configs/mx8mq_evk.h @@ -0,0 +1,269 @@ +/* + * Copyright 2017 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __IMX8M_EVK_H +#define __IMX8M_EVK_H + +#include +#include + +#ifdef CONFIG_SECURE_BOOT +#define CONFIG_CSF_SIZE 0x2000 /* 8K region */ +#endif + +#define CONFIG_SPL_FRAMEWORK +#define CONFIG_SPL_TEXT_BASE 0x7E1000 +#define CONFIG_SPL_MAX_SIZE (124 * 1024) +#define CONFIG_SYS_MONITOR_LEN (512 * 1024) +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 +#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 + +#ifdef CONFIG_SPL_BUILD +/*#define CONFIG_ENABLE_DDR_TRAINING_DEBUG*/ +#define CONFIG_SPL_WATCHDOG_SUPPORT +#define CONFIG_SPL_DRIVERS_MISC_SUPPORT +#define CONFIG_SPL_POWER_SUPPORT +#define CONFIG_SPL_I2C_SUPPORT +#define CONFIG_SPL_BOARD_INIT +#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds" +#define CONFIG_SPL_STACK 0x187FF0 +#define CONFIG_SPL_LIBCOMMON_SUPPORT +#define CONFIG_SPL_LIBGENERIC_SUPPORT +#define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_GPIO_SUPPORT +#define CONFIG_SPL_MMC_SUPPORT +#define CONFIG_SPL_BSS_START_ADDR 0x00180000 +#define CONFIG_SPL_BSS_MAX_SIZE 0x2000 /* 8 KB */ +#define CONFIG_SYS_SPL_MALLOC_START 0x00182000 +#define CONFIG_SYS_SPL_MALLOC_SIZE 0x2000 /* 8 KB */ +#define CONFIG_SYS_ICACHE_OFF +#define CONFIG_SYS_DCACHE_OFF + +#define CONFIG_SPL_ABORT_ON_RAW_IMAGE + +#undef CONFIG_DM_MMC +#undef CONFIG_DM_PMIC +#undef CONFIG_DM_PMIC_PFUZE100 + +#define CONFIG_SYS_I2C +#define CONFIG_SYS_I2C_MXC +#define CONFIG_SYS_I2C_MXC_I2C1 /* enable I2C bus 1 */ +#define CONFIG_SYS_I2C_MXC_I2C2 /* enable I2C bus 2 */ +#define CONFIG_SYS_I2C_MXC_I2C3 /* enable I2C bus 3 */ + +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG + +#define CONFIG_POWER +#define CONFIG_POWER_I2C +#define CONFIG_POWER_PFUZE100 +#define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08 +#endif + +#define CONFIG_REMAKE_ELF + +#define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_BOARD_LATE_INIT + +#undef CONFIG_CMD_EXPORTENV +#undef CONFIG_CMD_IMPORTENV +#undef CONFIG_CMD_IMLS + +#undef CONFIG_CMD_CRC32 +#undef CONFIG_BOOTM_NETBSD + +/* ENET Config */ +/* ENET1 */ +#if defined(CONFIG_CMD_NET) +#define CONFIG_CMD_PING +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_MII +#define CONFIG_MII +#define CONFIG_ETHPRIME "FEC" + +#define CONFIG_FEC_MXC +#define CONFIG_FEC_XCV_TYPE RGMII +#define CONFIG_FEC_MXC_PHYADDR 0 +#define FEC_QUIRK_ENET_MAC + +#define CONFIG_PHY_GIGE +#define IMX_FEC_BASE 0x30BE0000 + +#define CONFIG_PHYLIB +#define CONFIG_PHY_ATHEROS +#endif + +#define CONFIG_MFG_ENV_SETTINGS \ + "mfgtool_args=setenv bootargs console=${console},${baudrate} " \ + "rdinit=/linuxrc " \ + "g_mass_storage.stall=0 g_mass_storage.removable=1 " \ + "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\ + "g_mass_storage.iSerialNumber=\"\" "\ + "clk_ignore_unused "\ + "\0" \ + "initrd_addr=0x43800000\0" \ + "initrd_high=0xffffffff\0" \ + "bootcmd_mfg=run mfgtool_args;booti ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \ +/* Initial environment variables */ +#define CONFIG_EXTRA_ENV_SETTINGS \ + CONFIG_MFG_ENV_SETTINGS \ + "script=boot.scr\0" \ + "image=Image\0" \ + "console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200\0" \ + "fdt_addr=0x43000000\0" \ + "fdt_high=0xffffffffffffffff\0" \ + "boot_fdt=try\0" \ + "fdt_file=fsl-imx8mq-evk.dtb\0" \ + "initrd_addr=0x43800000\0" \ + "initrd_high=0xffffffffffffffff\0" \ + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \ + "mmcautodetect=yes\0" \ + "mmcargs=setenv bootargs console=${console} root=${mmcroot}\0 " \ + "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ + "source\0" \ + "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ + "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ + "mmcboot=echo Booting from mmc ...; " \ + "run mmcargs; " \ + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ + "if run loadfdt; then " \ + "booti ${loadaddr} - ${fdt_addr}; " \ + "else " \ + "echo WARN: Cannot load the DT; " \ + "fi; " \ + "else " \ + "echo wait for boot; " \ + "fi;\0" \ + "netargs=setenv bootargs console=${console} " \ + "root=/dev/nfs " \ + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ + "netboot=echo Booting from net ...; " \ + "run netargs; " \ + "if test ${ip_dyn} = yes; then " \ + "setenv get_cmd dhcp; " \ + "else " \ + "setenv get_cmd tftp; " \ + "fi; " \ + "${get_cmd} ${loadaddr} ${image}; " \ + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ + "booti ${loadaddr} - ${fdt_addr}; " \ + "else " \ + "echo WARN: Cannot load the DT; " \ + "fi; " \ + "else " \ + "booti; " \ + "fi;\0" + +#define CONFIG_BOOTCOMMAND \ + "mmc dev ${mmcdev}; if mmc rescan; then " \ + "if run loadbootscript; then " \ + "run bootscript; " \ + "else " \ + "if run loadimage; then " \ + "run mmcboot; " \ + "else run netboot; " \ + "fi; " \ + "fi; " \ + "else booti ${loadaddr} - ${fdt_addr}; fi" + +/* Link Definitions */ +#define CONFIG_LOADADDR 0x40480000 +#define CONFIG_SYS_TEXT_BASE 0x40200000 + +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR + +#define CONFIG_SYS_INIT_RAM_ADDR 0x40000000 +#define CONFIG_SYS_INIT_RAM_SIZE 0x80000 +#define CONFIG_SYS_INIT_SP_OFFSET \ + (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET) + +#define CONFIG_ENV_OVERWRITE +#define CONFIG_ENV_OFFSET (64 * SZ_64K) +#define CONFIG_ENV_SIZE 0x1000 +#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */ +#define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */ + +/* Size of malloc() pool */ +#define CONFIG_SYS_MALLOC_LEN ((CONFIG_ENV_SIZE + (2 * 1024)) * 1024) + +#define CONFIG_SYS_SDRAM_BASE 0x40000000 +#define PHYS_SDRAM 0x40000000 +#define PHYS_SDRAM_SIZE 0xC0000000 /* 3GB DDR */ +#define CONFIG_NR_DRAM_BANKS 1 + +#define CONFIG_BAUDRATE 115200 + +#define CONFIG_MXC_UART +#define CONFIG_MXC_UART_BASE UART1_BASE_ADDR + +/* Monitor Command Prompt */ +#undef CONFIG_SYS_PROMPT +#define CONFIG_SYS_PROMPT "u-boot=> " +#define CONFIG_SYS_LONGHELP +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " +#define CONFIG_AUTO_COMPLETE +#define CONFIG_SYS_CBSIZE 1024 +#define CONFIG_SYS_MAXARGS 64 +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ + sizeof(CONFIG_SYS_PROMPT) + 16) +#define CONFIG_CMDLINE_EDITING + +#define CONFIG_IMX_BOOTAUX + +#define CONFIG_CMD_MMC +#define CONFIG_FSL_ESDHC +#define CONFIG_FSL_USDHC + +#define CONFIG_SYS_FSL_USDHC_NUM 2 +#define CONFIG_SYS_FSL_ESDHC_ADDR 0 + +#define CONFIG_DOS_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_EXT4 +#define CONFIG_CMD_EXT4_WRITE +#define CONFIG_CMD_FAT + +#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */ +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1 + +#define CONFIG_FSL_QSPI /* enable the QUADSPI driver */ +#ifdef CONFIG_FSL_QSPI +#define CONFIG_CMD_SF +#define CONFIG_SPI_FLASH +#define CONFIG_SPI_FLASH_STMICRO +#define CONFIG_SPI_FLASH_BAR +#define CONFIG_SF_DEFAULT_BUS 0 +#define CONFIG_SF_DEFAULT_CS 0 +#define CONFIG_SF_DEFAULT_SPEED 40000000 +#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0 + +#define FSL_QSPI_FLASH_SIZE (SZ_32M) +#define FSL_QSPI_FLASH_NUM 1 +#endif + +#define CONFIG_MXC_GPIO + +#define CONFIG_MXC_OCOTP +#define CONFIG_CMD_FUSE + +/* I2C Configs */ +#define CONFIG_SYS_I2C_SPEED 100000 + +#define CONFIG_OF_SYSTEM_SETUP + +#ifndef CONFIG_SPL_BUILD +#define CONFIG_DM_PMIC +#endif + +#endif