From patchwork Mon May 28 12:25:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 921501 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; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="V3YfgcFZ"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40vbtv5lBsz9s0q for ; Mon, 28 May 2018 22:36:07 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 5F123C21E36; Mon, 28 May 2018 12:31:24 +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_DNSWL_NONE, 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 7E6AFC21E0D; Mon, 28 May 2018 12:25:40 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C3C9CC21E60; Mon, 28 May 2018 12:23:43 +0000 (UTC) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0086.outbound.protection.outlook.com [104.47.0.86]) by lists.denx.de (Postfix) with ESMTPS id C4278C21DD3 for ; Mon, 28 May 2018 12:23: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:X-MS-Exchange-SenderADCheck; bh=dkE7W8wYVJm6Xc12EG3XaXSdzPqPjvHLj8i/VOT4hBY=; b=V3YfgcFZKTcGl7JD8UgZAiL23bDMpEKlI2PzHSw5g6Bf4EbWEv7nO65PKOHHVwuGBo5rwMcyreTiQAlFPrInIwn1a0Hh1ieJwvA5tvQncXepqBMSKC9yUNvogFbdXHT2Y3J9L57frio0Ld3NgHoPGT5DheOcuPlNMWQTbC7cUwc= 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 VI1PR04MB3006.eurprd04.prod.outlook.com (2603:10a6:802:9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.797.11; Mon, 28 May 2018 12:23:36 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Mon, 28 May 2018 20:25:26 +0800 Message-Id: <20180528122526.20597-42-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180528122526.20597-1-peng.fan@nxp.com> References: <20180528122526.20597-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR02CA0175.apcprd02.prod.outlook.com (2603:1096:201:21::11) To VI1PR04MB3006.eurprd04.prod.outlook.com (2603:10a6:802:9::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB3006; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3006; 3:77L3iw3y5UgJe9t9qC5Gu8xB31+vFa/8sf1pwZ5uqMAKJ1mTRgOp0PFKT55JdY5MxFjUE6zor89+SihQaOL/R1+EpOJhVUcTUYICCkyGbhAlR0hYLGM5SiequAiU5TP4N7w9uNooF6n8hiE+IPzrEmn+nETEM4m+De+NdVHHbi6Ak9JlJCgLjwbWCUr2320n3JUBKFcTV8CA2qhvGEJeOhqgi11L9JDHC9XAZGOiWLlps5wu0FiAlIQR3+tLnD0L; 25:b3xVcFlqKgHl0iGmc1FIN5GDasfrGPoTpO8HSSHUco37w03h2PAo1zDTgSjVu/TlFcn9mG0wQjGvpY4eq8kUtRjB2P5awIl19NvgM8/LhHX3mzWTjgHKul3K8knhyW4b1eX0++uVLGlM0VfGMQBzu4RjBZ9vzSiMJQ8Yi6CCK4VEu/vDsMvQu+VYS533DDDWYhAEiVHptjEmSUi+o6bXqG44MJ3W7KI0nhIhd4Wb4RzZaYbbMoPnapi/PH44387UYzSs2KPq7vfVmOJOsEbUG3c2tEfcWTh9X8o6WanYqMisS5OPmez8U+Gzo1U2N6pAD1iwTxRPD2ZrxdmVfS5zWg==; 31:Q+vspR/9UPAmOTXUkuhpMcPxj4xUJffEI5qe2F6VVodpXK1HM6PCEAru8YP9gJiPB55tsFpx4j1krDGqrsJ/v1ZQCf6FzS38ahIDEseJkwFlB5XyPO4I25jPHojhBLJ9Y6khKvlNn/MqLyJtsWyJG6hitiBqR3E9qdri44btHlfLzHrrsWgxI81PWd5YWXR3VBMIqubh+SwLgpV1ErV0CUEVRXqllRBbu/Tp4LFNx2I= X-MS-TrafficTypeDiagnostic: VI1PR04MB3006: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3006; 20:EPNiLyu9isIGHaQTzXZLbOf8ZgPquNgPz5gzYg0O9AyfierXMlj9U0RsK/1Pzbf8uNiGz8x5IPJcyIRlmgLY5qffnPOeaGI2+6pq+SqQRAi2+HEV5NfTt/cP1cqo3fnuqfxPNuNKPdlz/zvTuseD8I4lVB0Qdhi9m3ChVTcrTOCNDsw/QMJnVu3W6bqchsZmNypqclBqkQ/ncypxYDaeF4Ooek9uaMR7gIOzoCISEUsZTx0rKK2F18h8DwfSUSIdAOeH1Y6jvGYM1blE2R1uwvsYPHknpjPrsw3tlVHRb0JLESscW4FFq8BeJYYMrao2yUnxSQYeigTIvRboTsiPXlwiW8FmjYwDXNYJU1HXeJJGixcep/2E6LBzzy2anIFKveOkvTfY0hBEw2nFyOvl0h+hzfbecKNLK4U8IU0Mr5Rm7bezaFBA+hU4wtTFvWXCM3BaWMHPThBk+yB4zMrO/lBbo+eMyhJgVWyQ+iMbaOTdfkd720nuZrgGOU6iD+UD; 4:SvaaBaV0sZbzlvZRFa0H/tjb7Et1axFLHd/9udEH8iW9le3Qu3L7P0T07oxFnJaB0yv90U5HxPut7ax2QN4YZ23tkIk3KsJ0jy+hk0sQnP4EsoITfXGtey0rqIOrYwaftHK7OERXp2g7mj6xQaObt1wb1ROKed0+bDcbLWqlaHlTuhyhLTe/oQtw+w9c3+j2dFZWscmtsi2MuamCfokuqqtRMpyUtMppmgswBTFDHPHnZ36jEBUjOVP6gfBaAC+HtXovGLPRkPee/wKtejiufn3EBDjSPxPPsznDeM3rXzaxEYGMcQeeJFz+uap9FDgA X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:VI1PR04MB3006; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB3006; X-Forefront-PRVS: 06860EDC7B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39380400002)(396003)(39860400002)(376002)(346002)(199004)(189003)(36756003)(97736004)(6636002)(6666003)(68736007)(86362001)(8676002)(44832011)(8936002)(114624004)(575784001)(81166006)(81156014)(47776003)(11346002)(956004)(2616005)(476003)(446003)(25786009)(486006)(48376002)(106356001)(105586002)(186003)(50466002)(16526019)(2906002)(6512007)(53936002)(1076002)(59450400001)(66066001)(26005)(51416003)(478600001)(305945005)(50226002)(6486002)(5660300001)(6116002)(76176011)(3846002)(16586007)(52116002)(6506007)(4326008)(316002)(7736002)(386003)(139555002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3006; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR04MB3006; 23:3eVoCDT26I0c7Kyea/fsVPX6h+D3eJWAzq8TJ3aOe?= j6QOHhTtl2ZbAzwHjDOnHYKoY2xEGSw1LxfH6UI2WtnCqQXpKDf3ffWhEF8qNO10uMNDHgydnEpxPQlvAPpJHV2FXH/xIcIomP8dpiyomrTH+4ygE/N2pb7cVbu7p+oFjF+9FAm3qQIHyy8cM7Y6OpNLDpoqjHzW7WZgBP/p6bRWtQ1RpttoCGfkslmZ87jCdMaZ2CmZY4olfzP4xzI2yuchD+zgAHcaPrtYzZVXhjUencsS0b52hpkq4Ae30/DBPUbdlveuQSPanP8CKL+yjySUdChYIuXkuyrmaq506DEREBIwOXr/cZgkCKk8HxGT50IN5jpPfUzwb7oSknNCJe0XIC4HEFAPWdkK+vCenI01cFlcA4hnlRrN+2a1ItAxi7eHWdwuC11/0hF/d5PeRJw2nSoVsPDqda190haNMiM6XO7XW9C+Fdy6NNqnVDfc/sFSNyhDfAiqvg/Jc9K+sp1XP7q7eQSVh5DlvukOaoZlXMbjXQ5OhNq9NFEk0gtcDIMftM9VLMhpAfIzgxrS3CEAcWYaZ9DLIUo5+FVKUl+lsHu9CPNUG9cUn91PRZ/9mg12LO8JgCS4HvIXhQcqX5om+ImZvd7sbooleFqS5Pnto9egi8d41vW9CS9fEQIT+atxmp3BWWa2hZ2iN3oqn4uU4EhQYailXTd85vGwCBFtXcrUL/hLjdsjgAZ5UU82/mqdWiRh8KG8zfoirX32/5oXFSkx1kgqeb0RP+qPd8dcPYwcjkj6yjE93GsZTXpyXOEXfAwCxrY6f4aoPmAyRz7oHP2jYPQv771+/n3ByTlE6ApS0pxNjMFUzR9+d09l95+vbXwgq0Ie6TqT22GjsHcAVzgItolB1YMmWLW8eKFaWyoTIWtXlQNYFr5zVQNZ4e7lD2U/I5aOjXVbL6chW3BpVzkLG3YLvvPDVtz/hxOeZzjYpUgU0uIwRR/BMCP8qIZMITs47i3xJnBOICC3cDXFgbubS0gNRA1swd+l+SCfLWrGBZ2CvsHoJim8pzEx+0G/UV2XaQW1gmvizkOZMb/yKXb306yNtHf7zVDF1XCJL1matJUS1Cpijn1zrA9mtKzl8RtznYWyEFUCUxGZBvHMLsWvMvOx9XhJWpU/gSpq9eCpWiWUHLeTVt8CAlBGQld2KTBnDjQ/UsNxo7ppa3FqXVBbvTJforOOIsRyHxBaIUU4o58x8EFmfKkDettvWcqvNKPpPHLbSHf5sKRMs1/4VEXsK70hgn/kOrE0DGORzPu3o++1G31fZZPdWVTZMM= X-Microsoft-Antispam-Message-Info: 4UzN5MR+MlnZzlJs/Ym71H2YfONHcmnlVhZFyJ/ky8BmjEqYN+ZJq++lDTUrPNwWbpvEP11OI/VlUB1HhRRQ2yxNYkDvqWfpE/IDOEeeD9vj8uPWaX1uohFyEaMcEYbdD/pYYJ2mc9Am5EAwpQRd3wZm5MFfBstNscEFQ6K9XqFMtZRAVCdSXXINjFGlvLsT X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3006; 6:bplWIyWKTOBs8H2mqWNLokHi2PQ6WR9aNgbD6Vars7K3zJofLCf31gYfo89qvQkdrGYYyYgvDeIlhhKT8h3pnYCP0no+ZOjeh+dFT9xJmw7pjnWxANPifzyyay6WxI5+wnh3Er0BGufDfBnyP9caRAZXEP+dsbuFQ900lRTI5X0Ji9by213UW1htpRn0wS06H+Hdzsj8P/bHoX9g8NktgoPUYnYt7uh0wF7oue6Nzku+MiphBPmkyYDYqY9fmId2lEQBi3pVxq01wRvRtWVXruM+8B6gm3y+IpnnIkUwlu9CVZZc0Xmd4oql3zV65+NfZzrVKOgzBL/Of6CZ/zZarS4Yx9dmeC5w0XO6dCrB4ISJe7ciHIs8Muflfdo0hJf/pnMdbX1ecF9f787m1jERwideZEOlocZcCNsudkTg8EUz1SsJlIFXg0UhotVBR30igOUGOeVIQQI0WNf4PRjIPQ==; 5:OMz7m9wEVdF1n+RRqBZErlvgLcJ6vpzMMdjE7c6hX2l9RTaEI0ibgegI8N9SPqcsbKMhy0X1cKnN3QskhQrXH8i5YlwmmUgxS0q+RrIWo2tVAOxQAyvy98V4JzwK3dqXr3X2/i4aUx8QnTyf3+uPbaUQYnZZhGf61avJFyIGI6M=; 24:JpQYHrWfvnASUK2BZun0SHJK5qbhvjjt/zEexcm5ylyIqCdpFQDxkbsYgMU33xH87zt/fX91v9cMncVawfOBCffsMOFX1EB90jEBui375kU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3006; 7:CIAX8P6h2bZT+shZljJOpBnCpwHK0aQiITSzNKS7RGyWAPLvIW2LNPt1JW1MkmvQa3D56wBNYZIx85Oxc95x3wkrKnVeFfIuKIIfuXarDIqMAQ3F3lchfMvUHAtjtLO3Ia47Dyi5h8zVBE4rb5tRLWS8yG/u1GJXgwx2hsGOJqPwQQjwRo56nOpSYZgpCi8BzH6FPelLgigfaaQbaDcSSmU/f5IDgwzEsUZUF1Xn0cM09BR/H1IaqoTayHSDwLvz X-MS-Office365-Filtering-Correlation-Id: fda343a3-68ab-483a-5e8d-08d5c495d73d X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2018 12:23:36.3399 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fda343a3-68ab-483a-5e8d-08d5c495d73d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3006 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH 41/41] imx: 8qxp_mek: Add i.MX8QXP MEK board 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 board level codes and configs for i.MX8QXP MEK board. - Enabled DM driver: FEC, LPUART, LPI2C, GPIO, SD/MMC, PCA953X, pinctrl, Power-domain - Board defconfigs: imx8qxp_mek_defconfig Boot log: " U-Boot 2018.05-00384-g8907416f0e (May 28 2018 - 14:06:27 +0800) CPU: Freescale i.MX8QXP revB A35 at 1200 MHz Model: Freescale i.MX8QXP MEK Board: iMX8QXP MEK Boot: SD1 DRAM: 3 GiB MMC: Actual rate for SDHC_0 is 333333333 Actual rate for SDHC_1 is 200000000 FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... OK In: serial@5a060000 Out: serial@5a060000 Err: serial@5a060000 Net: No ethernet found. Hit any key to stop autoboot: 0 " Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx8/Kconfig | 13 +++ board/freescale/imx8qxp_mek/Kconfig | 14 +++ board/freescale/imx8qxp_mek/MAINTAINERS | 6 ++ board/freescale/imx8qxp_mek/Makefile | 7 ++ board/freescale/imx8qxp_mek/imx8qxp_mek.c | 159 ++++++++++++++++++++++++++++++ configs/imx8qxp_mek_defconfig | 47 +++++++++ include/configs/imx8qxp_mek.h | 157 +++++++++++++++++++++++++++++ 7 files changed, 403 insertions(+) create mode 100644 board/freescale/imx8qxp_mek/Kconfig create mode 100644 board/freescale/imx8qxp_mek/MAINTAINERS create mode 100644 board/freescale/imx8qxp_mek/Makefile create mode 100644 board/freescale/imx8qxp_mek/imx8qxp_mek.c create mode 100644 configs/imx8qxp_mek_defconfig create mode 100644 include/configs/imx8qxp_mek.h diff --git a/arch/arm/mach-imx/imx8/Kconfig b/arch/arm/mach-imx/imx8/Kconfig index 58cb19946f..d15dfe3a6e 100644 --- a/arch/arm/mach-imx/imx8/Kconfig +++ b/arch/arm/mach-imx/imx8/Kconfig @@ -10,4 +10,17 @@ config IMX8QXP config SYS_SOC default "imx8" +choice + prompt "i.MX8 board select" + optional + +config TARGET_IMX8QXP_MEK + bool "Support i.MX8QXP MEK board" + select BOARD_LATE_INIT + select IMX8QXP + +endchoice + +source "board/freescale/imx8qxp_mek/Kconfig" + endif diff --git a/board/freescale/imx8qxp_mek/Kconfig b/board/freescale/imx8qxp_mek/Kconfig new file mode 100644 index 0000000000..b67300d816 --- /dev/null +++ b/board/freescale/imx8qxp_mek/Kconfig @@ -0,0 +1,14 @@ +if TARGET_IMX8QXP_MEK + +config SYS_BOARD + default "imx8qxp_mek" + +config SYS_VENDOR + default "freescale" + +config SYS_CONFIG_NAME + default "imx8qxp_mek" + +source "board/freescale/common/Kconfig" + +endif diff --git a/board/freescale/imx8qxp_mek/MAINTAINERS b/board/freescale/imx8qxp_mek/MAINTAINERS new file mode 100644 index 0000000000..e9bf0b35a3 --- /dev/null +++ b/board/freescale/imx8qxp_mek/MAINTAINERS @@ -0,0 +1,6 @@ +i.MX8QXP MEK BOARD +M: Peng Fan +S: Maintained +F: board/freescale/imx8qxp_mek/ +F: include/configs/imx8qxp_mek.h +F: configs/imx8qxp_mek_defconfig diff --git a/board/freescale/imx8qxp_mek/Makefile b/board/freescale/imx8qxp_mek/Makefile new file mode 100644 index 0000000000..f9ee8aeff3 --- /dev/null +++ b/board/freescale/imx8qxp_mek/Makefile @@ -0,0 +1,7 @@ +# +# Copyright 2017 NXP +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += imx8qxp_mek.o diff --git a/board/freescale/imx8qxp_mek/imx8qxp_mek.c b/board/freescale/imx8qxp_mek/imx8qxp_mek.c new file mode 100644 index 0000000000..e74c3a2547 --- /dev/null +++ b/board/freescale/imx8qxp_mek/imx8qxp_mek.c @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2018 NXP + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +#define GPIO_PAD_CTRL ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | \ + (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) | \ + (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | \ + (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT)) + +#define UART_PAD_CTRL ((SC_PAD_CONFIG_OUT_IN << PADRING_CONFIG_SHIFT) | \ + (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) | \ + (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | \ + (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT)) + +static iomux_cfg_t uart0_pads[] = { + SC_P_UART0_RX | MUX_PAD_CTRL(UART_PAD_CTRL), + SC_P_UART0_TX | MUX_PAD_CTRL(UART_PAD_CTRL), +}; + +static void setup_iomux_uart(void) +{ + imx8_iomux_setup_multiple_pads(uart0_pads, ARRAY_SIZE(uart0_pads)); +} + +int board_early_init_f(void) +{ + sc_ipc_t ipchndl; + sc_err_t scierr; + /* Set UART0 clock root to 80 MHz */ + sc_pm_clock_rate_t rate = 80000000; + + ipchndl = gd->arch.ipc_channel_handle; + + /* Power up UART0 */ + scierr = sc_pm_set_resource_power_mode(ipchndl, SC_R_UART_0, + SC_PM_PW_MODE_ON); + if (scierr != SC_ERR_NONE) + return 0; + + scierr = sc_pm_set_clock_rate(ipchndl, SC_R_UART_0, 2, &rate); + if (scierr != SC_ERR_NONE) + return 0; + + /* Enable UART0 clock root */ + scierr = sc_pm_clock_enable(ipchndl, SC_R_UART_0, 2, true, false); + if (scierr != SC_ERR_NONE) + return 0; + + setup_iomux_uart(); + + return 0; +} + +#ifdef CONFIG_MXC_GPIO +#define IOEXP_RESET IMX_GPIO_NR(1, 1) + +static iomux_cfg_t board_gpios[] = { + SC_P_SPI2_SDO | MUX_MODE_ALT(4) | MUX_PAD_CTRL(GPIO_PAD_CTRL), + SC_P_ENET0_REFCLK_125M_25M | MUX_MODE_ALT(4) | + MUX_PAD_CTRL(GPIO_PAD_CTRL), +}; + +static void board_gpio_init(void) +{ + int ret; + struct gpio_desc desc; + + ret = dm_gpio_lookup_name("gpio@1a_3", &desc); + if (ret) + return; + + ret = dm_gpio_request(&desc, "bb_per_rst_b"); + if (ret) + return; + + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT); + dm_gpio_set_value(&desc, 0); + udelay(50); + dm_gpio_set_value(&desc, 1); + + imx8_iomux_setup_multiple_pads(board_gpios, ARRAY_SIZE(board_gpios)); + + /* enable i2c port expander assert reset line */ + gpio_request(IOEXP_RESET, "ioexp_rst"); + gpio_direction_output(IOEXP_RESET, 1); +} +#endif + +int checkboard(void) +{ + puts("Board: iMX8QXP MEK\n"); + + print_bootinfo(); + + return 0; +} + +int board_init(void) +{ +#ifdef CONFIG_MXC_GPIO + board_gpio_init(); +#endif + + return 0; +} + +void detail_board_ddr_info(void) +{ + puts("\nDDR "); +} + +/* + * Board specific reset that is system reset. + */ +void reset_cpu(ulong addr) +{ + puts("SCI reboot request"); + sc_pm_reboot(SC_IPC_CH, SC_PM_RESET_TYPE_COLD); + while (1) + putc('.'); +} + +#ifdef CONFIG_OF_BOARD_SETUP +int ft_board_setup(void *blob, bd_t *bd) +{ + return 0; +} +#endif + +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", "MEK"); + env_set("board_rev", "iMX8QXP"); +#endif + + return 0; +} diff --git a/configs/imx8qxp_mek_defconfig b/configs/imx8qxp_mek_defconfig new file mode 100644 index 0000000000..15b63da839 --- /dev/null +++ b/configs/imx8qxp_mek_defconfig @@ -0,0 +1,47 @@ +CONFIG_ARM=y +CONFIG_ARCH_IMX8=y +CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8qxp-mek" +CONFIG_TARGET_IMX8QXP_MEK=y +CONFIG_SYS_TEXT_BASE=0x80020000 +CONFIG_CMD_IMPORTENV=n +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_DM=y +CONFIG_CMD_CACHE=y + +CONFIG_DM_SERIAL=y +CONFIG_FSL_LPUART=y +CONFIG_OF_CONTROL=y +CONFIG_DM_I2C=y +# CONFIG_DM_I2C_COMPAT is not set +CONFIG_SYS_I2C_IMX_LPI2C=y +CONFIG_CMD_I2C=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y + +CONFIG_CMD_GPIO=y +CONFIG_DM_GPIO=y +CONFIG_DM_PCA953X=y +CONFIG_BOOTDELAY=3 +CONFIG_IMX_BOOTAUX=y +CONFIG_FS_FAT=y +CONFIG_CMD_FAT=y +CONFIG_CMD_MMC=y +CONFIG_DM_MMC=y + +CONFIG_CMD_PING=y +CONFIG_CMD_DHCP=y +CONFIG_CMD_MII=y +CONFIG_DM_ETH=y +# CONFIG_EFI_LOADER is not set + +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y + +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX8=y + +CONFIG_POWER_DOMAIN=y +CONFIG_IMX8_POWER_DOMAIN=y + +CONFIG_ENV_IS_IN_MMC=y diff --git a/include/configs/imx8qxp_mek.h b/include/configs/imx8qxp_mek.h new file mode 100644 index 0000000000..f0aa1c7541 --- /dev/null +++ b/include/configs/imx8qxp_mek.h @@ -0,0 +1,157 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2018 NXP + */ + +#ifndef __IMX8QXP_MEK_H +#define __IMX8QXP_MEK_H + +#include +#include + +#define CONFIG_REMAKE_ELF + +#define CONFIG_BOARD_EARLY_INIT_F + +/* Flat Device Tree Definitions */ +#define CONFIG_OF_BOARD_SETUP + +#undef CONFIG_CMD_EXPORTENV +#undef CONFIG_CMD_IMPORTENV +#undef CONFIG_CMD_IMLS + +#undef CONFIG_CMD_CRC32 +#undef CONFIG_BOOTM_NETBSD + +#define CONFIG_FSL_ESDHC +#define CONFIG_FSL_USDHC +#define CONFIG_SYS_FSL_ESDHC_ADDR 0 +#define USDHC1_BASE_ADDR 0x5B010000 +#define USDHC2_BASE_ADDR 0x5B020000 +#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */ + +#define CONFIG_ENV_OVERWRITE + +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG + +/* GPIO configs */ +#define CONFIG_MXC_GPIO + +/* Initial environment variables */ +#define CONFIG_EXTRA_ENV_SETTINGS \ + "script=boot.scr\0" \ + "image=Image\0" \ + "panel=NULL\0" \ + "console=ttyLP0,${baudrate} earlycon=lpuart32,0x5a060000,${baudrate}\0" \ + "fdt_addr=0x83000000\0" \ + "fdt_high=0xffffffffffffffff\0" \ + "boot_fdt=try\0" \ + "fdt_file=fsl-imx8qxp-mek.dtb\0" \ + "initrd_addr=0x83800000\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 0x80280000 + +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR + +#define CONFIG_SYS_INIT_SP_ADDR 0x80200000 + +/* Default environment is in SD */ +#define CONFIG_ENV_SIZE 0x1000 +#define CONFIG_ENV_OFFSET (64 * SZ_64K) +#define CONFIG_SYS_MMC_ENV_PART 0 /* user area */ + +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1 + +/* On LPDDR4 board, USDHC1 is for eMMC, USDHC2 is for SD on CPU board */ +#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */ +#define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */ +#define CONFIG_SYS_FSL_USDHC_NUM 2 + +/* Size of malloc() pool */ +#define CONFIG_SYS_MALLOC_LEN ((CONFIG_ENV_SIZE + (32 * 1024)) * 1024) + +#define CONFIG_SYS_SDRAM_BASE 0x80000000 +#define CONFIG_NR_DRAM_BANKS 3 +#define PHYS_SDRAM_1 0x80000000 +#define PHYS_SDRAM_2 0x880000000 +#define PHYS_SDRAM_1_SIZE 0x80000000 /* 2 GB */ +/* LPDDR4 board total DDR is 3GB */ +#define PHYS_SDRAM_2_SIZE 0x40000000 /* 1 GB */ + +/* Serial */ +#define CONFIG_BAUDRATE 115200 + +/* Monitor Command Prompt */ +#define CONFIG_HUSH_PARSER +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " +#define CONFIG_SYS_CBSIZE 2048 +#define CONFIG_SYS_MAXARGS 64 +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ + sizeof(CONFIG_SYS_PROMPT) + 16) + +/* Generic Timer Definitions */ +#define COUNTER_FREQUENCY 8000000 /* 8MHz */ + +#ifndef CONFIG_DM_PCA953X +#define CONFIG_PCA953X +#define CONFIG_CMD_PCA953X +#define CONFIG_CMD_PCA953X_INFO +#endif + +#endif /* __IMX8QXP_MEK_H */