{"id":803043,"url":"http://patchwork.ozlabs.org/api/patches/803043/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/1503035091-28883-2-git-send-email-Ashish.Kumar@nxp.com/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1503035091-28883-2-git-send-email-Ashish.Kumar@nxp.com>","list_archive_url":null,"date":"2017-08-18T05:44:50","name":"[U-Boot,v4,2/3] armv8: ls1088ardb: Add support for LS1088ARDB platform","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"c837c7b488fd4c5ef5d4c5ba62f6b2a7f08470ac","submitter":{"id":68053,"url":"http://patchwork.ozlabs.org/api/people/68053/?format=json","name":"Ashish Kumar","email":"Ashish.kumar@nxp.com"},"delegate":{"id":2666,"url":"http://patchwork.ozlabs.org/api/users/2666/?format=json","username":"yorksun","first_name":"York","last_name":"Sun","email":"yorksun@freescale.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/1503035091-28883-2-git-send-email-Ashish.Kumar@nxp.com/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/803043/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/803043/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.denx.de\n\t(client-ip=81.169.180.215; helo=lists.denx.de;\n\tenvelope-from=u-boot-bounces@lists.denx.de;\n\treceiver=<UNKNOWN>)","spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;"],"Received":["from lists.denx.de (dione.denx.de [81.169.180.215])\n\tby ozlabs.org (Postfix) with ESMTP id 3xYXCC2wwhz9t2x\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 18 Aug 2017 15:46:47 +1000 (AEST)","by lists.denx.de (Postfix, from userid 105)\n\tid 36377C21E33; Fri, 18 Aug 2017 05:46:46 +0000 (UTC)","from lists.denx.de (localhost [IPv6:::1])\n\tby lists.denx.de (Postfix) with ESMTP id 08C5CC21EF3;\n\tFri, 18 Aug 2017 05:45:12 +0000 (UTC)","by lists.denx.de (Postfix, from userid 105)\n\tid 84885C21EAE; Fri, 18 Aug 2017 05:45:09 +0000 (UTC)","from NAM03-DM3-obe.outbound.protection.outlook.com\n\t(mail-dm3nam03on0051.outbound.protection.outlook.com [104.47.41.51])\n\tby lists.denx.de (Postfix) with ESMTPS id 21A7BC21E4C\n\tfor <u-boot@lists.denx.de>; Fri, 18 Aug 2017 05:44:56 +0000 (UTC)","from BN6PR03CA0021.namprd03.prod.outlook.com (2603:10b6:404:23::31)\n\tby BL2PR03MB548.namprd03.prod.outlook.com (2a01:111:e400:c26::12)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18;\n\tFri, 18 Aug 2017 05:44:52 +0000","from BN1BFFO11FD001.protection.gbl (2a01:111:f400:7c10::1:163) by\n\tBN6PR03CA0021.outlook.office365.com (2603:10b6:404:23::31) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18\n\tvia Frontend Transport; Fri, 18 Aug 2017 05:44:52 +0000","from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBN1BFFO11FD001.mail.protection.outlook.com (10.58.144.64) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15\n\tvia Frontend Transport; Fri, 18 Aug 2017 05:44:52 +0000","from ubuntu1604.ap.freescale.net (ubuntu1604.ap.freescale.net\n\t[10.232.133.7])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv7I5ijOd005054; Thu, 17 Aug 2017 22:44:49 -0700"],"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,\n\tRCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,\n\tSPF_HELO_PASS\n\tautolearn=unavailable autolearn_force=no version=3.4.0","Received-SPF":"Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.168.50 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;","From":"Ashish Kumar <Ashish.Kumar@nxp.com>","To":"<u-boot@lists.denx.de>","Date":"Fri, 18 Aug 2017 11:14:50 +0530","Message-ID":"<1503035091-28883-2-git-send-email-Ashish.Kumar@nxp.com>","X-Mailer":"git-send-email 2.7.4","In-Reply-To":"<1503035091-28883-1-git-send-email-Ashish.Kumar@nxp.com>","References":"<1503035091-28883-1-git-send-email-Ashish.Kumar@nxp.com>","X-EOPAttributedMessage":"0","X-Matching-Connectors":"131475086927622939;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()","X-Forefront-Antispam-Report":"CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(54906002)(47776003)(2351001)(97736004)(8936002)(76176999)(50986999)(5003940100001)(6666003)(50466002)(50226002)(6916009)(48376002)(36756003)(305945005)(2950100002)(356003)(106466001)(72206003)(8656003)(8676002)(4326008)(81156014)(81166006)(110136004)(498600001)(105606002)(5660300001)(86362001)(575784001)(85426001)(53946003)(68736007)(104016004)(626005)(189998001)(53936002)(77096006)(2906002)(579004)(357404004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB548;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; ","X-Microsoft-Exchange-Diagnostics":["1; BN1BFFO11FD001;\n\t1:u4j9smdgUZAP3Gna2IQyP6dLclFc9ez4sCfblMdsJcXlzVWDDYEcRPpBZFv9foz4D76H+CLMV/ShBGsCLivpw13ke0s3vMF34ID3a0497vVm9ciKuBLg80uOzuxQBhhF","1; BL2PR03MB548;\n\t3:mJWrgVE41FrO3tfWuYnJ5tjL9PLIdBXqOMk0bpmpWGh2fhR0+h9blZuAJ7isJoraWww5SEzWliSRFpE1rgfqI8wD6Hp+ui6V26+2t8P2UfPY9DzHG6bxfnptyefoDM4kfLVI8nUF57fSNkUSw7t3FKnJ7m1BF0QBwBR1+jlvOd6Vl1EdyV/1dNBnBusARjzPv3Qo5yZp04JRBBqmLnb18M/YQbGxxc42Xn7gzhFnoZTYh04By/RzIWIYU9+j0wWNIahxe8yL6taINC6le/bMkRBD54b7BQHw1uQ/HHoSqOj9q1xXZ+g9w41EH3rKPf3EYZ3QzZs2rWW/8pDOE+ykVdtGqpLzjnrQ2cUYRnkkOow=;\n\t25:zKeSE9/9KOnbLfXGIELY+X/SRetsb4ch1w5ls8T63gT4xZfwAgIkH+rhwbh4ClV69qBTQXGdpj5Ob+3XMR1wrjESVgpIpQyWDJI4OjodDJlUuwnuKbIuenYMIXbrAEP/79JkChoFvKBXJ8GMKXagE9OKFjN60kwWaLcSu/yBys9/s1m2XQqdJb30Tr2Bf7HL0r46GBU2aud2TCrs8EnxPBPUn82044TWOhOtlYeixzm5Zv/YKtecjTai+U9VGqIiEAVn9OTIR6f0e5XvZdyRE0RiQ7PZLf28i9HiEtw5E2Gs6Qd0U9nXM6+HogI0D3yXLbAZBJ04xBhXDtsP7W9GnA==","1; BL2PR03MB548;\n\t31:HD5AW8StEb2mHxQMoyXo+D88ZzYYqqtR60Wa2yYAze2mR7Wo1eidF4mBJjbFcr6M7+31OU0ws4zQ8nELoSRqBO7tehCa0UiPlEb+GOmdEXcA0Qr3hQ0v4+0HUHk1XZVDbB6WD9N/KOh/yUjmdp/HpOtndkdghpmDt0AcOxZ638zcTfUZ6lZwey+LNvwvf5KuAfb6pPLrrEtbauWCz1Vo1WpLdTHBpLdHOrK5wf7483w=;\n\t4:BKyBLmboDaKkHuldwYUDukW41w5o59PseOGQ5DkZW01bcaHoINutEsiPmrqZkt3fpOXHwnpX2fGleylx2vQJ8jIMG+FP+9EV953a95cYiEL0C5hUPnIhcYzWNfALsdQKsHFfiSrW98UTpOzd0Macxa0Q/5+eOcwjN49GbFWKtZB+NR5BAWbiEj4+dgMpDFOTgdkcjuJIgPfkYzNtRrupXmIMbtuAUYmIHlKG5LcomqsDnAwHq0xflJS7tbtQTzVI/U2iQr95oaxZD2YB4EO9Wy5BH0rxLDaAifarAIEcZcg=","=?us-ascii?Q?1; BL2PR03MB548;\n\t23:MD7iBeIxdqIoVv+rB1HIlAfr1b7aUghf/ow5a9n/rH?=\n\t=?us-ascii?Q?0bviYdA6FXjP3JCduTLAL7vaa+3ZLFdVMkvEMX2ExGPopqKvUh33cu9+Cs5k?=\n\t=?us-ascii?Q?0KhSgvlgC8yJuNRgj/DRV7iF1UPd7AiZ74/YNg8Hg0+6osfzKRBByYeaglrf?=\n\t=?us-ascii?Q?HyQJ+wKv5aNxW24RzxbuobJJqGDHwUW5km70fcqhmzdzSdXcySX5Ym+XbVSY?=\n\t=?us-ascii?Q?GPwHB7Rg4dYjYGf0jwwKqiTSFwgOlCzwGHEL8IaxpA7B/UV5AnLoWE6P17B2?=\n\t=?us-ascii?Q?U/vemsU/AuyxbAx/S+/eRK4gIh/I6JGWXB/rhBQfsjOcevxbYGXNUSnJkiht?=\n\t=?us-ascii?Q?f0CB254YPTrtVGOZnTf6LeGNj6Bv54X9KEqjIvdWlwviZ4PunbF35/T7P0+k?=\n\t=?us-ascii?Q?yNnIA9p4RYOrM+SzT05NWtlPeLTvuuSIXccOoUSvZg/gdJ8w8EWZaICqRFJu?=\n\t=?us-ascii?Q?f7mYoYy14dzdWzel7q6/ZJPqN+3m8Oo9c4fScOtAt0Ywi2mKU95Lhx9jOgMS?=\n\t=?us-ascii?Q?OD77/wW7DFN6LXwW9QrFG63iMdmWOMEyYhhBoIKVOAoTwhWaB6LysfR4zt5v?=\n\t=?us-ascii?Q?StPrD3n0GVzUfIrI20P5HPxeDN2tiOQkChZddQm21L7KawuqhhlcqtY5W4Gw?=\n\t=?us-ascii?Q?4vSbEvbb+E7aRVXvIXTYBaf8+ImHXOiCstKJB6yMkjFjejePbkb9Wd0i811z?=\n\t=?us-ascii?Q?hyiCffrUF4YmjBAWPaj2KNQVoQ0FAewdA1yOpC5DuoPzLOhanRokSu2GQG4x?=\n\t=?us-ascii?Q?NEca1jvJTvTtHRi1v0YaKayWUbAtWTeA2qQwzIAzAQlHFKP0dtYT9ZbvSGyr?=\n\t=?us-ascii?Q?u0Kx+pjVjnlstrz5tiPhz38P+lOcW8bueJMFWsDXTKFd3RJdO3EpPVMdm6Z9?=\n\t=?us-ascii?Q?CGZv92TMDqTDZWyFl0amafAt49ayGPmFvgFJrcS2IVq60NlX6BCOB6qjEFDe?=\n\t=?us-ascii?Q?Eiw42CuD7ikbmRFh8+7eYBoIWxeAHOV0ijwS7ETbt7FOfmrSLjd+jv7ADjBq?=\n\t=?us-ascii?Q?vKZEfS41sx2Vj+acfr6s5PE1reSzNgJdJ7EPwaHJa0ox1zr2hVyHKaFHAwcB?=\n\t=?us-ascii?Q?GlfX3zfGi7Gm1u3aujR+kRsUM07YxCbWHsRcJ5a5oQhqs7iNFpU7K/rkCvS8?=\n\t=?us-ascii?Q?CIQGv2qTJFJetqDhZcVwT3uKba5lgJ8y4hurYYV5qCOdgGC8/0JERpT41Fza?=\n\t=?us-ascii?Q?VIGalizl2LYCGNCR3IprHI+VpsnEKZZ3o5Qj848XIBZpFUm8+nI8RGTA=3D?=\n\t=?us-ascii?Q?=3D?=","1; BL2PR03MB548;\n\t6:wE5gCkRx7sOj1DWtv/o/XpYXdPlCnh5Gf/9QlXedDQr1a7WKBkNzY2MRhojo3vHT4O5KxUGMGFBTufK8qawgz/c4YMnbzLeFHLNyGC2ScCueRe/XVs7X7dAwtiKZT6Alow9NE4OepiNs1oXNlVOo6Ok+ufUCbnjPPdm7RFSfuRHu1rxLhmks1MIIzOYOL64H12lvcGqn0GtlY2pmhv30tvmH7SvTLXPO6B25f76ShPdWf57AN0gelfCv30qJ6XgJ3UPQ4yfLrW3lh37j7drP9UrGt43Q7jNSNQZt6Ru81TFqotBMcWXMktazMoXOaS9OzeHfDTNUEq+ySpwbs4XFYg==;\n\t5:kbe1bBje7n/ePIDyJk1sdkbDcMj2CXbVtVIs0HDrhv1ZJ5uzArvS+JV3mFh18nA7EoEwWvjgSZFciN0EMZqHHRXyuGfUf4PO5HB2hnrO1jf9RnVJbbQwHy0KtcHg8DK5ZSZs/BbTAKVd16+I6udWZw==;\n\t24:Wt96PQx/JD8abcgrgzMu+9YUC/HAtrnGaUrrStkfaJuVktJfN0elzbIRSWcfnUZmFTzg75liVBG2p87T9cRK4PoHzURffV1daagjLlTan6c=;\n\t7:tjHHJUXMF0o9rV/ViE1FVpoJuUXBZl6CgwYXYUyzF0uK8EV5HcvUSBiCcZecrhhIqKGBc1nGjg6TP27tFFP4urLc0Zj4jHzA766/KRGq+SScIHuSn1cLH+xMXj4HDRildad45T7htG/raZxhJ4UMxaDVzTrXR5TrqhZ+TKs4dvKcsSgSWRZIbpn6ur4FgVyp6fXATKY2e25zsgPwXVIMgZEi/16wLsHGjgcnY1JHq4w="],"MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"c2c35fba-beb5-49f5-11ba-08d4e5fc3f97","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BL2PR03MB548; ","X-MS-TrafficTypeDiagnostic":"BL2PR03MB548:","X-Exchange-Antispam-Report-Test":"UriScan:(185117386973197);","X-Microsoft-Antispam-PRVS":"<BL2PR03MB548B1F768067F6057A4B8BB95800@BL2PR03MB548.namprd03.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(5005006)(13016025)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123556025)(20161123563025)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123565025)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BL2PR03MB548; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BL2PR03MB548; ","X-Forefront-PRVS":"040359335D","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"18 Aug 2017 05:44:52.5750\n\t(UTC)","X-MS-Exchange-CrossTenant-Id":"5afe0b00-7697-4969-b663-5eab37d5f47e","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.168.50]; \n\tHelo=[tx30smr01.am.freescale.net]","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"BL2PR03MB548","Cc":"Shaohui Xie <Shaohui.Xie@nxp.com>, Alison Wang <alison.wang@nxp.com>,\n\tRaghav Dogra <raghav.dogra@nxp.com>","Subject":"[U-Boot] [PATCH v4 2/3] armv8: ls1088ardb: Add support for\n\tLS1088ARDB platform","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.18","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<http://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=subscribe>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>"},"content":"LS1088A is an ARMv8 implementation. The LS1088ARDB is an evaluatoin\nplatform that supports the LS1088A family SoCs. This patch add basic\nsupport of the platform.\n\nSigned-off-by: Alison Wang <alison.wang@nxp.com>\nSigned-off-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>\nSigned-off-by: Ashish Kumar <Ashish.Kumar@nxp.com>\nSigned-off-by: Raghav Dogra <raghav.dogra@nxp.com>\nSigned-off-by: Shaohui Xie <Shaohui.Xie@nxp.com>\n---\nv2:\nFix indentaion in commit msg\nSeparate RDB and Si specific file\n\nv3:\n1.Re-based on top of\n  commit d529124fdcf941c34074fd1ce600f4b1b4a7dd07\n  Merge: f0ca30f 6a5691e\n  Author: Tom Rini <trini@konsulko.com>\n  Date:   Tue Aug 8 17:06:19 2017 -0400\n\n    Merge git://git.denx.de/u-boot-x86\n\n2.Incorporate review comments on v2\n  Remove EMU support\n  Remove RAW timings \n  Disable default enabled CONFIG_DISPLAY_BOARDINFO and enable LATE_CONFIG_DISPLAY_BOARDINFO\n\n3.Include PPA support \n\nv4: \n some configs moved to arch/arm/Kconfig\n retimer code corrected\n README added\n\n arch/arm/Kconfig                          |  14 ++\n arch/arm/cpu/armv8/Kconfig                |   1 +\n arch/arm/cpu/armv8/fsl-layerscape/Kconfig |   1 +\n arch/arm/dts/Makefile                     |   3 +-\n arch/arm/dts/fsl-ls1088a-rdb.dts          |  40 ++++\n board/freescale/ls1088a/Kconfig           |  15 ++\n board/freescale/ls1088a/MAINTAINERS       |   7 +\n board/freescale/ls1088a/Makefile          |   9 +\n board/freescale/ls1088a/README            |  66 ++++++\n board/freescale/ls1088a/ddr.c             | 106 ++++++++++\n board/freescale/ls1088a/ddr.h             |  44 ++++\n board/freescale/ls1088a/eth_ls1088ardb.c  | 102 +++++++++\n board/freescale/ls1088a/ls1088a.c         | 335 ++++++++++++++++++++++++++++++\n board/freescale/ls1088a/ls1088a_qixis.h   |  34 +++\n configs/ls1088ardb_qspi_defconfig         |  29 +++\n include/configs/ls1088a_common.h          | 200 ++++++++++++++++++\n include/configs/ls1088ardb.h              | 316 ++++++++++++++++++++++++++++\n 17 files changed, 1321 insertions(+), 1 deletion(-)\n create mode 100644 arch/arm/dts/fsl-ls1088a-rdb.dts\n create mode 100644 board/freescale/ls1088a/Kconfig\n create mode 100644 board/freescale/ls1088a/MAINTAINERS\n create mode 100644 board/freescale/ls1088a/Makefile\n create mode 100644 board/freescale/ls1088a/README\n create mode 100644 board/freescale/ls1088a/ddr.c\n create mode 100644 board/freescale/ls1088a/ddr.h\n create mode 100644 board/freescale/ls1088a/eth_ls1088ardb.c\n create mode 100644 board/freescale/ls1088a/ls1088a.c\n create mode 100644 board/freescale/ls1088a/ls1088a_qixis.h\n create mode 100644 configs/ls1088ardb_qspi_defconfig\n create mode 100644 include/configs/ls1088a_common.h\n create mode 100644 include/configs/ls1088ardb.h","diff":"diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig\nindex 9cfeede..eaeab27 100644\n--- a/arch/arm/Kconfig\n+++ b/arch/arm/Kconfig\n@@ -892,6 +892,19 @@ config TARGET_LS1012AFRDM\n \t  development platform that supports the QorIQ LS1012A\n \t  Layerscape Architecture processor.\n \n+config TARGET_LS1088ARDB\n+\tbool \"Support ls1088ardb\"\n+\tselect ARCH_LS1088A\n+\tselect ARM64\n+\tselect ARMV8_MULTIENTRY\n+\tselect ARCH_MISC_INIT\n+\tselect BOARD_LATE_INIT\n+\thelp\n+\t  Support for NXP LS1088ARDB platform.\n+\t  The LS1088A Reference design board (RDB) is a high-performance\n+\t  development platform that supports the QorIQ LS1088A\n+\t  Layerscape Architecture processor.\n+\n config TARGET_LS1021AQDS\n \tbool \"Support ls1021aqds\"\n \tselect BOARD_LATE_INIT\n@@ -1174,6 +1187,7 @@ source \"board/creative/xfi3/Kconfig\"\n source \"board/freescale/ls2080a/Kconfig\"\n source \"board/freescale/ls2080aqds/Kconfig\"\n source \"board/freescale/ls2080ardb/Kconfig\"\n+source \"board/freescale/ls1088a/Kconfig\"\n source \"board/freescale/ls1021aqds/Kconfig\"\n source \"board/freescale/ls1043aqds/Kconfig\"\n source \"board/freescale/ls1021atwr/Kconfig\"\ndiff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig\nindex 8e4c3dd..aecdf81 100644\n--- a/arch/arm/cpu/armv8/Kconfig\n+++ b/arch/arm/cpu/armv8/Kconfig\n@@ -88,6 +88,7 @@ config PSCI_RESET\n \tdepends on !ARCH_EXYNOS7 && !ARCH_BCM283X && !TARGET_LS2080A_EMU && \\\n \t\t   !TARGET_LS2080A_SIMU && !TARGET_LS2080AQDS && \\\n \t\t   !TARGET_LS2080ARDB && !TARGET_LS1012AQDS && \\\n+\t\t   !TARGET_LS1088ARDB && \\\n \t\t   !TARGET_LS1012ARDB && !TARGET_LS1012AFRDM && \\\n \t\t   !TARGET_LS1043ARDB && !TARGET_LS1043AQDS && \\\n \t\t   !TARGET_LS1046ARDB && !TARGET_LS1046AQDS && \\\ndiff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig\nindex dfcc081..be9e401 100644\n--- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig\n@@ -207,6 +207,7 @@ config SYS_LS_PPA_FW_ADDR\n \tdefault 0x20400000 if SYS_LS_PPA_FW_IN_XIP && QSPI_BOOT && ARCH_LS2080A\n \tdefault 0x40400000 if SYS_LS_PPA_FW_IN_XIP && QSPI_BOOT\n \tdefault 0x580400000 if SYS_LS_PPA_FW_IN_XIP && ARCH_LS2080A\n+\tdefault 0x20400000 if SYS_LS_PPA_FW_IN_XIP && ARCH_LS1088A\n \tdefault 0x60400000 if SYS_LS_PPA_FW_IN_XIP\n \tdefault 0x400000 if SYS_LS_PPA_FW_IN_MMC\n \tdefault 0x400000 if SYS_LS_PPA_FW_IN_NAND\ndiff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile\nindex c2dc240..6f03a3f 100644\n--- a/arch/arm/dts/Makefile\n+++ b/arch/arm/dts/Makefile\n@@ -188,7 +188,8 @@ dtb-$(CONFIG_ARCH_LS1021A) += ls1021a-qds-duart.dtb \\\n dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \\\n \tfsl-ls2080a-rdb.dtb \\\n \tfsl-ls2081a-rdb.dtb \\\n-\tfsl-ls2088a-rdb-qspi.dtb\n+\tfsl-ls2088a-rdb-qspi.dtb \\\n+\tfsl-ls1088a-rdb.dtb\n dtb-$(CONFIG_FSL_LSCH2) += fsl-ls1043a-qds-duart.dtb \\\n \tfsl-ls1043a-qds-lpuart.dtb \\\n \tfsl-ls1043a-rdb.dtb \\\ndiff --git a/arch/arm/dts/fsl-ls1088a-rdb.dts b/arch/arm/dts/fsl-ls1088a-rdb.dts\nnew file mode 100644\nindex 0000000..30ceed8\n--- /dev/null\n+++ b/arch/arm/dts/fsl-ls1088a-rdb.dts\n@@ -0,0 +1,40 @@\n+/*\n+ * NXP ls1088a RDB board device tree source\n+ *\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+/dts-v1/;\n+\n+#include \"fsl-ls1088a.dtsi\"\n+\n+/ {\n+\tmodel = \"NXP Layerscape 1088a RDB Board\";\n+\tcompatible = \"fsl,ls1088a-rdb\", \"fsl,ls1088a\";\n+\taliases {\n+\t\tspi0 = &qspi;\n+\t};\n+};\n+\n+&qspi {\n+\tbus-num = <0>;\n+\tstatus = \"okay\";\n+\n+\tqflash0: s25fs512s@0 {\n+\t\t#address-cells = <1>;\n+\t\t#size-cells = <1>;\n+\t\tcompatible = \"spi-flash\";\n+\t\tspi-max-frequency = <50000000>;\n+\t\treg = <0>;\n+\t};\n+\n+\tqflash1: s25fs512s@1 {\n+\t\t#address-cells = <1>;\n+\t\t#size-cells = <1>;\n+\t\tcompatible = \"spi-flash\";\n+\t\tspi-max-frequency = <50000000>;\n+\t\treg = <1>;\n+\t };\n+};\ndiff --git a/board/freescale/ls1088a/Kconfig b/board/freescale/ls1088a/Kconfig\nnew file mode 100644\nindex 0000000..a4d8223\n--- /dev/null\n+++ b/board/freescale/ls1088a/Kconfig\n@@ -0,0 +1,15 @@\n+if TARGET_LS1088ARDB\n+\n+config SYS_BOARD\n+\tdefault \"ls1088a\"\n+\n+config SYS_VENDOR\n+\tdefault \"freescale\"\n+\n+config SYS_SOC\n+\tdefault \"fsl-layerscape\"\n+\n+config SYS_CONFIG_NAME\n+\tdefault \"ls1088ardb\"\n+\n+endif\ndiff --git a/board/freescale/ls1088a/MAINTAINERS b/board/freescale/ls1088a/MAINTAINERS\nnew file mode 100644\nindex 0000000..12834f6\n--- /dev/null\n+++ b/board/freescale/ls1088a/MAINTAINERS\n@@ -0,0 +1,7 @@\n+LS1088ARDB BOARD\n+M:\tPrabhakar Kushwaha <prabhakar.kushwaha@nxp.com>\n+M:\tAshish Kumar <Ashish.Kumar@nxp.com>\n+S:\tMaintained\n+F:\tboard/freescale/ls1088a/\n+F:\tinclude/configs/ls1088ardb.h\n+F:\tconfigs/ls1088ardb_qspi_defconfig\ndiff --git a/board/freescale/ls1088a/Makefile b/board/freescale/ls1088a/Makefile\nnew file mode 100644\nindex 0000000..e997cf1\n--- /dev/null\n+++ b/board/freescale/ls1088a/Makefile\n@@ -0,0 +1,9 @@\n+#\n+# Copyright 2017 NXP\n+#\n+# SPDX-License-Identifier:\tGPL-2.0+\n+#\n+\n+obj-y += ls1088a.o\n+obj-$(CONFIG_TARGET_LS1088ARDB) += eth_ls1088ardb.o\n+obj-y += ddr.o\ndiff --git a/board/freescale/ls1088a/README b/board/freescale/ls1088a/README\nnew file mode 100644\nindex 0000000..3f4d987\n--- /dev/null\n+++ b/board/freescale/ls1088a/README\n@@ -0,0 +1,66 @@\n+Overview\n+--------\n+The LS1088A Reference Design (RDB) is a high-performance computing,\n+evaluation, and development platform that supports ARM SoC LS1088A and its\n+derivatives.\n+\n+\n+LS1088A SoC Overview\n+--------------------------------------\n+Please refer arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc\n+\n+RDB Default Switch Settings (1: ON; 0: OFF)\n+-------------------------------------------\n+\n+For QSPI Boot\n+SW1 0011 0001\n+SW2 x100 0000\n+SW3 1111 0010\n+SW4 1001 0011\n+SW5 1111 0000\n+\n+For SD Boot\n+SW1 0010 0000\n+SW2 0100 0000\n+SW3 1111 0010\n+SW4 1001 0011\n+SW5 1111 0000\n+\n+For eMMC Boot\n+SW1 0010 0000\n+SW2 1100 0000\n+SW3 1111 0010\n+SW4 1001 0011\n+SW5 1111 0000\n+\n+Alternately you can use this command to switch from QSPI to SD\n+\n+=> i2c mw 66 0x60 0x20; i2c mw 66 10 10;i2c mw 66 10 21\n+\n+ LS1088ARDB board Overview\n+ -------------------------\n+ - SERDES Connections, 16 lanes supporting:\n+      - PCI Express - 3.0\n+      - SATA 3.0\n+      - XFI\n+      - QSGMII\n+ - DDR Controller\n+     - One ports of 72-bits (8-bits ECC, 64-bits DATA) DDR4. Each port supports four\n+       chip-selects on one DIMM connector. Support is up to 2133MT/s, Although MAX default\n+       with FSL refernce software is 2100MT/s\n+ - 2 QSPI-NOR Spansion(S25FS512SDSMFI011) flash of size 64MB\n+ - IFC/Local Bus\n+    - One 2 GB NAND flash with ECC support, not as boot source\n+    - CPLD of size 2K\n+ - USB 3.0\n+    - Two high speed USB 3.0 ports\n+    - First USB 3.0 port configured as Host with Type-A connector\n+    - Second USB 3.0 port configured as OTG with micro-AB connector\n+ - SDHC/eMMC\n+    - SDHC slot and onboard eMMC are muxed together\n+ - 4 I2C controllers\n+ - Two SATA onboard connectors\n+ - 2 UART\n+ - JTAG support\n+ - QSPI emulator support\n+ - TDM riser support\ndiff --git a/board/freescale/ls1088a/ddr.c b/board/freescale/ls1088a/ddr.c\nnew file mode 100644\nindex 0000000..f37cea0\n--- /dev/null\n+++ b/board/freescale/ls1088a/ddr.c\n@@ -0,0 +1,106 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+#include <common.h>\n+#include <fsl_ddr_sdram.h>\n+#include <fsl_ddr_dimm_params.h>\n+#include <asm/arch/soc.h>\n+#include <asm/arch/clock.h>\n+#include \"ddr.h\"\n+\n+DECLARE_GLOBAL_DATA_PTR;\n+\n+void fsl_ddr_board_options(memctl_options_t *popts,\n+\t\t\t   dimm_params_t *pdimm,\n+\t\t\t   unsigned int ctrl_num)\n+{\n+\tconst struct board_specific_parameters *pbsp, *pbsp_highest = NULL;\n+\tulong ddr_freq;\n+\n+\tif (ctrl_num > 1) {\n+\t\tprintf(\"Not supported controller number %d\\n\", ctrl_num);\n+\t\treturn;\n+\t}\n+\tif (!pdimm->n_ranks)\n+\t\treturn;\n+\n+\t/*\n+\t * we use identical timing for all slots. If needed, change the code\n+\t * to  pbsp = rdimms[ctrl_num] or pbsp = udimms[ctrl_num];\n+\t */\n+\tpbsp = udimms[0];\n+\n+\t/* Get clk_adjust, wrlvl_start, wrlvl_ctl, according to the board ddr\n+\t * freqency and n_banks specified in board_specific_parameters table.\n+\t */\n+\tddr_freq = get_ddr_freq(0) / 1000000;\n+\twhile (pbsp->datarate_mhz_high) {\n+\t\tif (pbsp->n_ranks == pdimm->n_ranks) {\n+\t\t\tif (ddr_freq <= pbsp->datarate_mhz_high) {\n+\t\t\t\tpopts->clk_adjust = pbsp->clk_adjust;\n+\t\t\t\tpopts->wrlvl_start = pbsp->wrlvl_start;\n+\t\t\t\tpopts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;\n+\t\t\t\tpopts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;\n+\t\t\t\tgoto found;\n+\t\t\t}\n+\t\t\tpbsp_highest = pbsp;\n+\t\t}\n+\t\tpbsp++;\n+\t}\n+\n+\tif (pbsp_highest) {\n+\t\tprintf(\"Error: board specific timing not found for %lu MT/s\\n\",\n+\t\t       ddr_freq);\n+\t\tprintf(\"Trying to use the highest speed (%u) parameters\\n\",\n+\t\t       pbsp_highest->datarate_mhz_high);\n+\t\tpopts->clk_adjust = pbsp_highest->clk_adjust;\n+\t\tpopts->wrlvl_start = pbsp_highest->wrlvl_start;\n+\t\tpopts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;\n+\t\tpopts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;\n+\t} else {\n+\t\tpanic(\"DIMM is not supported by this board\");\n+\t}\n+found:\n+\tdebug(\"Found timing match: n_ranks %d, data rate %d, rank_gb %d\\n\"\n+\t\t\"\\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x, wrlvl_ctrl_3 0x%x\\n\",\n+\t\tpbsp->n_ranks, pbsp->datarate_mhz_high, pbsp->rank_gb,\n+\t\tpbsp->clk_adjust, pbsp->wrlvl_start, pbsp->wrlvl_ctl_2,\n+\t\tpbsp->wrlvl_ctl_3);\n+\n+\n+\n+\tpopts->half_strength_driver_enable = 0;\n+\t/*\n+\t * Write leveling override\n+\t */\n+\tpopts->wrlvl_override = 1;\n+\tpopts->wrlvl_sample = 0xf;\n+\n+\n+\t/* Enable ZQ calibration */\n+\tpopts->zq_en = 1;\n+\n+\t/* Enable DDR hashing */\n+\tpopts->addr_hash = 1;\n+\n+\tpopts->ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_60ohm);\n+\tpopts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_60ohm) |\n+\t\t\t  DDR_CDR2_VREF_TRAIN_EN | DDR_CDR2_VREF_RANGE_2;\n+\n+}\n+\n+\n+int fsl_initdram()\n+{\n+\n+\n+\tputs(\"Initializing DDR....using SPD\\n\");\n+\n+\tgd->ram_size = fsl_ddr_sdram();\n+\n+\n+\treturn 0;\n+}\ndiff --git a/board/freescale/ls1088a/ddr.h b/board/freescale/ls1088a/ddr.h\nnew file mode 100644\nindex 0000000..dfcfc1f\n--- /dev/null\n+++ b/board/freescale/ls1088a/ddr.h\n@@ -0,0 +1,44 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+#ifndef __LS1088A_DDR_H__\n+#define __LS1088A_DDR_H__\n+struct board_specific_parameters {\n+\tu32 n_ranks;\n+\tu32 datarate_mhz_high;\n+\tu32 rank_gb;\n+\tu32 clk_adjust;\n+\tu32 wrlvl_start;\n+\tu32 wrlvl_ctl_2;\n+\tu32 wrlvl_ctl_3;\n+};\n+\n+/*\n+ * These tables contain all valid speeds we want to override with board\n+ * specific parameters. datarate_mhz_high values need to be in ascending order\n+ * for each n_ranks group.\n+ */\n+\n+static const struct board_specific_parameters udimm0[] = {\n+\t/*\n+\t * memory controller 0\n+\t *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl\n+\t * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3\n+\t */\n+#if defined(CONFIG_TARGET_LS1088ARDB)\n+\n+\t{2,  1666, 0, 8,     8, 0x090A0B0E, 0x0F10110D,},\n+\t{2,  1900, 0, 4,     7, 0x09090B0D, 0x0E10120B,},\n+\t{2,  2300, 0, 8,     9, 0x0A0C0E11, 0x1214160F,},\n+\t{}\n+\n+#endif\n+};\n+\n+static const struct board_specific_parameters *udimms[] = {\n+\tudimm0,\n+};\n+#endif\ndiff --git a/board/freescale/ls1088a/eth_ls1088ardb.c b/board/freescale/ls1088a/eth_ls1088ardb.c\nnew file mode 100644\nindex 0000000..91f1b45\n--- /dev/null\n+++ b/board/freescale/ls1088a/eth_ls1088ardb.c\n@@ -0,0 +1,102 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:     GPL-2.0+\n+ */\n+\n+#include <common.h>\n+#include <command.h>\n+#include <netdev.h>\n+#include <malloc.h>\n+#include <fsl_mdio.h>\n+#include <miiphy.h>\n+#include <phy.h>\n+#include <fm_eth.h>\n+#include <asm/io.h>\n+#include <exports.h>\n+#include <asm/arch/fsl_serdes.h>\n+#include <fsl-mc/ldpaa_wriop.h>\n+\n+DECLARE_GLOBAL_DATA_PTR;\n+\n+#define MC_BOOT_ENV_VAR \"mcinitcmd\"\n+int board_eth_init(bd_t *bis)\n+{\n+#if defined(CONFIG_FSL_MC_ENET)\n+\tchar *mc_boot_env_var;\n+\tint i, interface;\n+\tstruct memac_mdio_info mdio_info;\n+\tstruct mii_dev *dev;\n+\tstruct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);\n+\tstruct memac_mdio_controller *reg;\n+\tu32 srds_s1, cfg;\n+\n+\tcfg = in_le32(&gur->rcwsr[FSL_CHASSIS3_SRDS1_REGSR - 1]) &\n+\t\t\t\tFSL_CHASSIS3_SRDS1_PRTCL_MASK;\n+\tcfg >>= FSL_CHASSIS3_SRDS1_PRTCL_SHIFT;\n+\n+\tsrds_s1 = serdes_get_number(FSL_SRDS_1, cfg);\n+\n+\treg = (struct memac_mdio_controller *)CONFIG_SYS_FSL_WRIOP1_MDIO1;\n+\tmdio_info.regs = reg;\n+\tmdio_info.name = DEFAULT_WRIOP_MDIO1_NAME;\n+\n+\t/* Register the EMI 1 */\n+\tfm_memac_mdio_init(bis, &mdio_info);\n+\n+\treg = (struct memac_mdio_controller *)CONFIG_SYS_FSL_WRIOP1_MDIO2;\n+\tmdio_info.regs = reg;\n+\tmdio_info.name = DEFAULT_WRIOP_MDIO2_NAME;\n+\n+\t/* Register the EMI 2 */\n+\tfm_memac_mdio_init(bis, &mdio_info);\n+\n+\tswitch (srds_s1) {\n+\tcase 0x1D:\n+\t\t/*\n+\t\t * XFI does not need a PHY to work, but to avoid U-boot use\n+\t\t * default PHY address which is zero to a MAC when it found\n+\t\t * a MAC has no PHY address, we give a PHY address to XFI\n+\t\t * MAC error.\n+\t\t */\n+\t\twriop_set_phy_address(WRIOP1_DPMAC1, 0x0a);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC2, AQ_PHY_ADDR1);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC3, QSGMII1_PORT1_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC4, QSGMII1_PORT2_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC5, QSGMII1_PORT3_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC6, QSGMII1_PORT4_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC7, QSGMII2_PORT1_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC8, QSGMII2_PORT2_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC9, QSGMII2_PORT3_PHY_ADDR);\n+\t\twriop_set_phy_address(WRIOP1_DPMAC10, QSGMII2_PORT4_PHY_ADDR);\n+\n+\t\tbreak;\n+\tdefault:\n+\t\tprintf(\"SerDes1 protocol 0x%x is not supported on LS1088ARDB\\n\",\n+\t\t       srds_s1);\n+\t\tbreak;\n+\t}\n+\n+\tfor (i = WRIOP1_DPMAC3; i <= WRIOP1_DPMAC10; i++) {\n+\t\tinterface = wriop_get_enet_if(i);\n+\t\tswitch (interface) {\n+\t\tcase PHY_INTERFACE_MODE_QSGMII:\n+\t\t\tdev = miiphy_get_dev_by_name(DEFAULT_WRIOP_MDIO1_NAME);\n+\t\t\twriop_set_mdio(i, dev);\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\n+\tdev = miiphy_get_dev_by_name(DEFAULT_WRIOP_MDIO2_NAME);\n+\twriop_set_mdio(WRIOP1_DPMAC2, dev);\n+\n+\tmc_boot_env_var = getenv(MC_BOOT_ENV_VAR);\n+\tif (mc_boot_env_var)\n+\t\trun_command_list(mc_boot_env_var, -1, 0);\n+\tcpu_eth_init(bis);\n+#endif /* CONFIG_FMAN_ENET */\n+\n+\treturn pci_eth_init(bis);\n+}\ndiff --git a/board/freescale/ls1088a/ls1088a.c b/board/freescale/ls1088a/ls1088a.c\nnew file mode 100644\nindex 0000000..f3c20ac\n--- /dev/null\n+++ b/board/freescale/ls1088a/ls1088a.c\n@@ -0,0 +1,335 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+#include <common.h>\n+#include <i2c.h>\n+#include <malloc.h>\n+#include <errno.h>\n+#include <netdev.h>\n+#include <fsl_ifc.h>\n+#include <fsl_ddr.h>\n+#include <fsl_sec.h>\n+#include <asm/io.h>\n+#include <fdt_support.h>\n+#include <libfdt.h>\n+#include <fsl-mc/fsl_mc.h>\n+#include <environment.h>\n+#include <asm/arch-fsl-layerscape/soc.h>\n+#include <asm/arch/ppa.h>\n+\n+#include \"../common/qixis.h\"\n+#include \"ls1088a_qixis.h\"\n+\n+DECLARE_GLOBAL_DATA_PTR;\n+\n+unsigned long long get_qixis_addr(void)\n+{\n+\tunsigned long long addr;\n+\n+\tif (gd->flags & GD_FLG_RELOC)\n+\t\taddr = QIXIS_BASE_PHYS;\n+\telse\n+\t\taddr = QIXIS_BASE_PHYS_EARLY;\n+\n+\t/*\n+\t * IFC address under 256MB is mapped to 0x30000000, any address above\n+\t * is mapped to 0x5_10000000 up to 4GB.\n+\t */\n+\taddr = addr  > 0x10000000 ? addr + 0x500000000ULL : addr + 0x30000000;\n+\n+\treturn addr;\n+}\n+\n+int checkboard(void)\n+{\n+\tchar buf[64];\n+\tu8 sw;\n+\tstatic const char *const freq[] = {\"100\", \"125\", \"156.25\",\n+\t\t\t\t\t    \"100 separate SSCG\"};\n+\tint clock;\n+\n+\n+\tprintf(\"Board: LS1088A-RDB, \");\n+\n+\tsw = QIXIS_READ(arch);\n+\tprintf(\"Board Arch: V%d, \", sw >> 4);\n+\n+\tprintf(\"Board version: %c, boot from \", (sw & 0xf) + 'A');\n+\n+\n+\tmemset((u8 *)buf, 0x00, ARRAY_SIZE(buf));\n+\n+\tsw = QIXIS_READ(brdcfg[0]);\n+\tsw = (sw & QIXIS_LBMAP_MASK) >> QIXIS_LBMAP_SHIFT;\n+\n+#ifdef CONFIG_SD_BOOT\n+\tputs(\"SD card\\n\");\n+#endif\n+\tswitch (sw) {\n+\n+\tcase 0:\n+\n+\t\tputs(\"QSPI:\");\n+\t\tsw = QIXIS_READ(brdcfg[0]);\n+\t\tsw = (sw & QIXIS_QMAP_MASK) >> QIXIS_QMAP_SHIFT;\n+\t\tif (sw == 0 || sw == 4)\n+\t\t\tputs(\"0\\n\");\n+\t\telse if (sw == 1)\n+\t\t\tputs(\"1\\n\");\n+\t\telse\n+\t\t\tputs(\"EMU\\n\");\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tprintf(\"invalid setting of SW%u\\n\", QIXIS_LBMAP_SWITCH);\n+\t\tbreak;\n+\t}\n+\n+\n+\tprintf(\"CPLD: v%d.%d\\n\", QIXIS_READ(scver), QIXIS_READ(tagdata));\n+\n+\n+\t/*\n+\t * Display the actual SERDES reference clocks as configured by the\n+\t * dip switches on the board.  Note that the SWx registers could\n+\t * technically be set to force the reference clocks to match the\n+\t * values that the SERDES expects (or vice versa).  For now, however,\n+\t * we just display both values and hope the user notices when they\n+\t * don't match.\n+\t */\n+\tputs(\"SERDES1 Reference : \");\n+\tsw = QIXIS_READ(brdcfg[2]);\n+\tclock = (sw >> 6) & 3;\n+\tprintf(\"Clock1 = %sMHz \", freq[clock]);\n+\tclock = (sw >> 4) & 3;\n+\tprintf(\"Clock2 = %sMHz\", freq[clock]);\n+\n+\tputs(\"\\nSERDES2 Reference : \");\n+\tclock = (sw >> 2) & 3;\n+\tprintf(\"Clock1 = %sMHz \", freq[clock]);\n+\tclock = (sw >> 0) & 3;\n+\tprintf(\"Clock2 = %sMHz\\n\", freq[clock]);\n+\n+\treturn 0;\n+}\n+\n+bool if_board_diff_clk(void)\n+{\n+\n+\tu8 diff_conf = QIXIS_READ(dutcfg[11]);\n+\treturn diff_conf & 0x80;\n+\n+}\n+\n+unsigned long get_board_sys_clk(void)\n+{\n+\tu8 sysclk_conf = QIXIS_READ(brdcfg[1]);\n+\n+\tswitch (sysclk_conf & 0x0f) {\n+\tcase QIXIS_SYSCLK_83:\n+\t\treturn 83333333;\n+\tcase QIXIS_SYSCLK_100:\n+\t\treturn 100000000;\n+\tcase QIXIS_SYSCLK_125:\n+\t\treturn 125000000;\n+\tcase QIXIS_SYSCLK_133:\n+\t\treturn 133333333;\n+\tcase QIXIS_SYSCLK_150:\n+\t\treturn 150000000;\n+\tcase QIXIS_SYSCLK_160:\n+\t\treturn 160000000;\n+\tcase QIXIS_SYSCLK_166:\n+\t\treturn 166666666;\n+\t}\n+\n+\treturn 66666666;\n+}\n+\n+unsigned long get_board_ddr_clk(void)\n+{\n+\tu8 ddrclk_conf = QIXIS_READ(brdcfg[1]);\n+\n+\tif (if_board_diff_clk())\n+\t\treturn get_board_sys_clk();\n+\tswitch ((ddrclk_conf & 0x30) >> 4) {\n+\tcase QIXIS_DDRCLK_100:\n+\t\treturn 100000000;\n+\tcase QIXIS_DDRCLK_125:\n+\t\treturn 125000000;\n+\tcase QIXIS_DDRCLK_133:\n+\t\treturn 133333333;\n+\t}\n+\n+\treturn 66666666;\n+}\n+\n+int select_i2c_ch_pca9547(u8 ch)\n+{\n+\tint ret;\n+\n+\tret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);\n+\tif (ret) {\n+\t\tputs(\"PCA: failed to select proper channel\\n\");\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+void board_retimer_init(void)\n+{\n+\tu8 reg;\n+\n+\t/* Retimer is connected to I2C1_CH5 */\n+\tselect_i2c_ch_pca9547(I2C_MUX_CH5);\n+\n+\t/* Access to Control/Shared register */\n+\treg = 0x0;\n+\ti2c_write(I2C_RETIMER_ADDR, 0xff, 1, &reg, 1);\n+\n+\t/* Read device revision and ID */\n+\ti2c_read(I2C_RETIMER_ADDR, 1, 1, &reg, 1);\n+\tdebug(\"Retimer version id = 0x%x\\n\", reg);\n+\n+\t/* Enable Broadcast. All writes target all channel register sets */\n+\treg = 0x0c;\n+\ti2c_write(I2C_RETIMER_ADDR, 0xff, 1, &reg, 1);\n+\n+\t/* Reset Channel Registers */\n+\ti2c_read(I2C_RETIMER_ADDR, 0, 1, &reg, 1);\n+\treg |= 0x4;\n+\ti2c_write(I2C_RETIMER_ADDR, 0, 1, &reg, 1);\n+\n+\t/* Set data rate as 10.3125 Gbps */\n+\treg = 0x90;\n+\ti2c_write(I2C_RETIMER_ADDR, 0x60, 1, &reg, 1);\n+\treg = 0xb3;\n+\ti2c_write(I2C_RETIMER_ADDR, 0x61, 1, &reg, 1);\n+\treg = 0x90;\n+\ti2c_write(I2C_RETIMER_ADDR, 0x62, 1, &reg, 1);\n+\treg = 0xb3;\n+\ti2c_write(I2C_RETIMER_ADDR, 0x63, 1, &reg, 1);\n+\treg = 0xcd;\n+\ti2c_write(I2C_RETIMER_ADDR, 0x64, 1, &reg, 1);\n+\n+\t/* Select VCO Divider to full rate (000) */\n+\ti2c_read(I2C_RETIMER_ADDR, 0x2F, 1, &reg, 1);\n+\treg &= 0x0f;\n+\treg |= 0x70;\n+\ti2c_write(I2C_RETIMER_ADDR, 0x2F, 1, &reg, 1);\n+\n+\n+\t/*return the default channel*/\n+\tselect_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);\n+}\n+\n+int board_init(void)\n+{\n+\tinit_final_memctl_regs();\n+#if defined(CONFIG_TARGET_LS1088ARDB) && defined(CONFIG_FSL_MC_ENET)\n+\tu32 __iomem *irq_ccsr = (u32 __iomem *)ISC_BASE;\n+#endif\n+\n+\tselect_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);\n+\tboard_retimer_init();\n+\n+#ifdef CONFIG_ENV_IS_NOWHERE\n+\tgd->env_addr = (ulong)&default_environment[0];\n+#endif\n+\n+#if defined(CONFIG_TARGET_LS1088ARDB) && defined(CONFIG_FSL_MC_ENET)\n+\t/* invert AQR105 IRQ pins polarity */\n+\tout_le32(irq_ccsr + IRQCR_OFFSET / 4, AQR105_IRQ_MASK);\n+#endif\n+\n+#ifdef CONFIG_FSL_LS_PPA\n+       ppa_init();\n+#endif\n+\treturn 0;\n+}\n+\n+int board_early_init_f(void)\n+{\n+\tfsl_lsch3_early_init_f();\n+\treturn 0;\n+}\n+\n+void detail_board_ddr_info(void)\n+{\n+\tputs(\"\\nDDR    \");\n+\tprint_size(gd->bd->bi_dram[0].size + gd->bd->bi_dram[1].size, \"\");\n+\tprint_ddr_info(0);\n+}\n+\n+#if defined(CONFIG_ARCH_MISC_INIT)\n+int arch_misc_init(void)\n+{\n+#ifdef CONFIG_FSL_CAAM\n+\tsec_init();\n+#endif\n+\treturn 0;\n+}\n+#endif\n+\n+#ifdef CONFIG_FSL_MC_ENET\n+void fdt_fixup_board_enet(void *fdt)\n+{\n+\tint offset;\n+\n+\toffset = fdt_path_offset(fdt, \"/fsl-mc\");\n+\n+\tif (offset < 0)\n+\t\toffset = fdt_path_offset(fdt, \"/fsl,dprc@0\");\n+\n+\tif (offset < 0) {\n+\t\tprintf(\"%s: ERROR: fsl-mc node not found in device tree (error %d)\\n\",\n+\t\t       __func__, offset);\n+\t\treturn;\n+\t}\n+\n+\tif (get_mc_boot_status() == 0)\n+\t\tfdt_status_okay(fdt, offset);\n+\telse\n+\t\tfdt_status_fail(fdt, offset);\n+}\n+#endif\n+\n+#ifdef CONFIG_OF_BOARD_SETUP\n+int ft_board_setup(void *blob, bd_t *bd)\n+{\n+\tint err, i;\n+\tu64 base[CONFIG_NR_DRAM_BANKS];\n+\tu64 size[CONFIG_NR_DRAM_BANKS];\n+\n+\tft_cpu_setup(blob, bd);\n+\n+\t/* fixup DT for the two GPP DDR banks */\n+\tfor (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {\n+\t\tbase[i] = gd->bd->bi_dram[i].start;\n+\t\tsize[i] = gd->bd->bi_dram[i].size;\n+\t}\n+\n+#ifdef CONFIG_RESV_RAM\n+\t/* reduce size if reserved memory is within this bank */\n+\tif (gd->arch.resv_ram >= base[0] &&\n+\t    gd->arch.resv_ram < base[0] + size[0])\n+\t\tsize[0] = gd->arch.resv_ram - base[0];\n+\telse if (gd->arch.resv_ram >= base[1] &&\n+\t\t gd->arch.resv_ram < base[1] + size[1])\n+\t\tsize[1] = gd->arch.resv_ram - base[1];\n+#endif\n+\n+\tfdt_fixup_memory_banks(blob, base, size, CONFIG_NR_DRAM_BANKS);\n+\n+#ifdef CONFIG_FSL_MC_ENET\n+\tfdt_fixup_board_enet(blob);\n+\terr = fsl_mc_ldpaa_exit(bd);\n+\tif (err)\n+\t\treturn err;\n+#endif\n+\n+\treturn 0;\n+}\n+#endif\ndiff --git a/board/freescale/ls1088a/ls1088a_qixis.h b/board/freescale/ls1088a/ls1088a_qixis.h\nnew file mode 100644\nindex 0000000..9757d1b\n--- /dev/null\n+++ b/board/freescale/ls1088a/ls1088a_qixis.h\n@@ -0,0 +1,34 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+#ifndef __LS1088AQDS_QIXIS_H__\n+#define __LS1088AQDS_QIXIS_H__\n+\n+/* Definitions of QIXIS Registers for LS1088AQDS */\n+\n+/* SYSCLK */\n+#define QIXIS_SYSCLK_66\t\t\t0x0\n+#define QIXIS_SYSCLK_83\t\t\t0x1\n+#define QIXIS_SYSCLK_100\t\t0x2\n+#define QIXIS_SYSCLK_125\t\t0x3\n+#define QIXIS_SYSCLK_133\t\t0x4\n+#define QIXIS_SYSCLK_150\t\t0x5\n+#define QIXIS_SYSCLK_160\t\t0x6\n+#define QIXIS_SYSCLK_166\t\t0x7\n+\n+/* DDRCLK */\n+#define QIXIS_DDRCLK_66\t\t\t0x0\n+#define QIXIS_DDRCLK_100\t\t0x1\n+#define QIXIS_DDRCLK_125\t\t0x2\n+#define QIXIS_DDRCLK_133\t\t0x3\n+\n+/* BRDCFG2 - SD clock*/\n+#define QIXIS_SDCLK1_100\t\t0x0\n+#define QIXIS_SDCLK1_125\t\t0x1\n+#define QIXIS_SDCLK1_165\t\t0x2\n+#define QIXIS_SDCLK1_100_SP\t\t0x3\n+\n+#endif\ndiff --git a/configs/ls1088ardb_qspi_defconfig b/configs/ls1088ardb_qspi_defconfig\nnew file mode 100644\nindex 0000000..33e4124\n--- /dev/null\n+++ b/configs/ls1088ardb_qspi_defconfig\n@@ -0,0 +1,29 @@\n+CONFIG_ARM=y\n+CONFIG_TARGET_LS1088ARDB=y\n+# CONFIG_SYS_MALLOC_F is not set\n+CONFIG_DM_SPI=y\n+CONFIG_DM_SPI_FLASH=y\n+CONFIG_DEFAULT_DEVICE_TREE=\"fsl-ls1088a-rdb\"\n+CONFIG_FIT=y\n+CONFIG_FIT_VERBOSE=y\n+CONFIG_OF_BOARD_SETUP=y\n+CONFIG_OF_STDOUT_VIA_ALIAS=y\n+CONFIG_SYS_EXTRA_OPTIONS=\"SYS_FSL_DDR4, QSPI_BOOT\"\n+CONFIG_HUSH_PARSER=y\n+CONFIG_CMD_MMC=y\n+CONFIG_CMD_SF=y\n+CONFIG_CMD_I2C=y\n+# CONFIG_CMD_SETEXPR is not set\n+CONFIG_CMD_DHCP=y\n+CONFIG_CMD_PING=y\n+CONFIG_OF_CONTROL=y\n+CONFIG_NET_RANDOM_ETHADDR=y\n+CONFIG_DM=y\n+CONFIG_SPI_FLASH=y\n+CONFIG_NETDEVICES=y\n+CONFIG_E1000=y\n+CONFIG_SYS_NS16550=y\n+CONFIG_FSL_DSPI=y\n+CONFIG_EFI_LOADER_BOUNCE_BUFFER=y\n+# CONFIG_DISPLAY_BOARDINFO is not set\n+CONFIG_FSL_LS_PPA=y\ndiff --git a/include/configs/ls1088a_common.h b/include/configs/ls1088a_common.h\nnew file mode 100644\nindex 0000000..d01095e\n--- /dev/null\n+++ b/include/configs/ls1088a_common.h\n@@ -0,0 +1,200 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+#ifndef __LS1088_COMMON_H\n+#define __LS1088_COMMON_H\n+\n+\n+#define CONFIG_REMAKE_ELF\n+#define CONFIG_FSL_LAYERSCAPE\n+#define CONFIG_MP\n+\n+#include <asm/arch/stream_id_lsch3.h>\n+#include <asm/arch/config.h>\n+#include <asm/arch/soc.h>\n+\n+/* Link Definitions */\n+#define CONFIG_SYS_INIT_SP_ADDR\t\t(CONFIG_SYS_FSL_OCRAM_BASE + 0xfff0)\n+\n+/* Link Definitions */\n+#ifdef CONFIG_QSPI_BOOT\n+#define CONFIG_SYS_TEXT_BASE            0x20100000\n+#else\n+#define CONFIG_SYS_TEXT_BASE\t\t0x30100000\n+#endif\n+\n+#define CONFIG_SUPPORT_RAW_INITRD\n+\n+\n+#define CONFIG_SKIP_LOWLEVEL_INIT\n+\n+#define CONFIG_FSL_DDR_INTERACTIVE\t/* Interactive debugging */\n+\n+#define CONFIG_VERY_BIG_RAM\n+#define CONFIG_SYS_DDR_SDRAM_BASE\t0x80000000UL\n+#define CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY\t0\n+#define CONFIG_SYS_SDRAM_BASE\t\tCONFIG_SYS_DDR_SDRAM_BASE\n+#define CONFIG_SYS_DDR_BLOCK2_BASE\t0x8080000000ULL\n+#define CONFIG_SYS_FSL_DDR_MAIN_NUM_CTRLS\t1\n+/*\n+ * SMP Definitinos\n+ */\n+#define CPU_RELEASE_ADDR\t\tsecondary_boot_func\n+\n+/* Size of malloc() pool */\n+#define CONFIG_SYS_MALLOC_LEN\t\t(CONFIG_ENV_SIZE + 2048 * 1024)\n+\n+/* I2C */\n+#define CONFIG_SYS_I2C\n+#define CONFIG_SYS_I2C_MXC\n+#define CONFIG_SYS_I2C_MXC_I2C1\t\t/* enable I2C bus 1 */\n+#define CONFIG_SYS_I2C_MXC_I2C2\t\t/* enable I2C bus 2 */\n+#define CONFIG_SYS_I2C_MXC_I2C3\t\t/* enable I2C bus 3 */\n+#define CONFIG_SYS_I2C_MXC_I2C4\t\t/* enable I2C bus 4 */\n+\n+/* Serial Port */\n+#define CONFIG_CONS_INDEX       1\n+#define CONFIG_SYS_NS16550_SERIAL\n+#define CONFIG_SYS_NS16550_REG_SIZE     1\n+#define CONFIG_SYS_NS16550_CLK          (get_bus_freq(0) / 2)\n+\n+#define CONFIG_BAUDRATE\t\t\t115200\n+#define CONFIG_SYS_BAUDRATE_TABLE\t{ 9600, 19200, 38400, 57600, 115200 }\n+\n+/* IFC */\n+#define CONFIG_FSL_IFC\n+\n+/*\n+ * During booting, IFC is mapped at the region of 0x30000000.\n+ * But this region is limited to 256MB. To accommodate NOR, promjet\n+ * and FPGA. This region is divided as below:\n+ * 0x30000000 - 0x37ffffff : 128MB : NOR flash\n+ * 0x38000000 - 0x3BFFFFFF : 64MB  : Promjet\n+ * 0x3C000000 - 0x40000000 : 64MB  : FPGA etc\n+ *\n+ * To accommodate bigger NOR flash and other devices, we will map IFC\n+ * chip selects to as below:\n+ * 0x5_1000_0000..0x5_1fff_ffff\tMemory Hole\n+ * 0x5_2000_0000..0x5_3fff_ffff\tIFC CSx (FPGA, NAND and others 512MB)\n+ * 0x5_4000_0000..0x5_7fff_ffff\tASIC or others 1GB\n+ * 0x5_8000_0000..0x5_bfff_ffff\tIFC CS0 1GB (NOR/Promjet)\n+ * 0x5_C000_0000..0x5_ffff_ffff\tIFC CS1 1GB (NOR/Promjet)\n+ *\n+ * For e.g. NOR flash at CS0 will be mapped to 0x580000000 after relocation.\n+ * CONFIG_SYS_FLASH_BASE has the final address (core view)\n+ * CONFIG_SYS_FLASH_BASE_PHYS has the final address (IFC view)\n+ * CONFIG_SYS_FLASH_BASE_PHYS_EARLY has the temporary IFC address\n+ * CONFIG_SYS_TEXT_BASE is linked to 0x30000000 for booting\n+ */\n+\n+#define CONFIG_SYS_FLASH_BASE\t\t\t0x580000000ULL\n+#define CONFIG_SYS_FLASH_BASE_PHYS\t\t0x80000000\n+#define CONFIG_SYS_FLASH_BASE_PHYS_EARLY\t0x00000000\n+\n+#define CONFIG_SYS_FLASH1_BASE_PHYS\t\t0xC0000000\n+#define CONFIG_SYS_FLASH1_BASE_PHYS_EARLY\t0x8000000\n+\n+#ifndef __ASSEMBLY__\n+unsigned long long get_qixis_addr(void);\n+#endif\n+\n+#define QIXIS_BASE\t\t\t\tget_qixis_addr()\n+#define QIXIS_BASE_PHYS\t\t\t\t0x20000000\n+#define QIXIS_BASE_PHYS_EARLY\t\t\t0xC000000\n+\n+\n+#define CONFIG_SYS_NAND_BASE\t\t\t0x530000000ULL\n+#define CONFIG_SYS_NAND_BASE_PHYS\t\t0x30000000\n+\n+\n+/* MC firmware */\n+/* TODO Actual DPL max length needs to be confirmed with the MC FW team */\n+#define CONFIG_SYS_LS_MC_DPC_MAX_LENGTH\t    0x20000\n+#define CONFIG_SYS_LS_MC_DRAM_DPC_OFFSET    0x00F00000\n+#define CONFIG_SYS_LS_MC_DPL_MAX_LENGTH\t    0x20000\n+#define CONFIG_SYS_LS_MC_DRAM_DPL_OFFSET    0x00F20000\n+#define CONFIG_SYS_LS_MC_AIOP_IMG_MAX_LENGTH\t0x200000\n+#define CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET\t0x07000000\n+/*\n+ * Carve out a DDR region which will not be used by u-boot/Linux\n+ *\n+ * It will be used by MC and Debug Server. The MC region must be\n+ * 512MB aligned, so the min size to hide is 512MB.\n+ */\n+\n+#if defined(CONFIG_FSL_MC_ENET)\n+#define CONFIG_SYS_LS_MC_DRAM_BLOCK_MIN_SIZE\t\t(512UL * 1024 * 1024)\n+#endif\n+\n+#define CONFIG_FSL_CAAM\t\t\t/* Enable SEC/CAAM */\n+\n+/* Command line configuration */\n+#define CONFIG_CMD_GREPENV\n+#define CONFIG_CMD_CACHE\n+\n+/* Miscellaneous configurable options */\n+#define CONFIG_SYS_LOAD_ADDR\t(CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000)\n+\n+/* Physical Memory Map */\n+#define CONFIG_CHIP_SELECTS_PER_CTRL\t4\n+\n+#define CONFIG_NR_DRAM_BANKS\t\t2\n+\n+#define CONFIG_HWCONFIG\n+#define HWCONFIG_BUFFER_SIZE\t\t128\n+\n+/* #define CONFIG_DISPLAY_CPUINFO */\n+\n+/* Allow to overwrite serial and ethaddr */\n+#define CONFIG_ENV_OVERWRITE\n+\n+/* Initial environment variables */\n+#define CONFIG_EXTRA_ENV_SETTINGS\t\t\\\n+\t\"hwconfig=fsl_ddr:bank_intlv=auto\\0\"\t\\\n+\t\"loadaddr=0x80100000\\0\"\t\t\t\\\n+\t\"kernel_addr=0x100000\\0\"\t\t\\\n+\t\"ramdisk_addr=0x800000\\0\"\t\t\\\n+\t\"ramdisk_size=0x2000000\\0\"\t\t\\\n+\t\"fdt_high=0xa0000000\\0\"\t\t\t\\\n+\t\"initrd_high=0xffffffffffffffff\\0\"\t\\\n+\t\"kernel_start=0x581000000\\0\"\t\t\\\n+\t\"kernel_load=0xa0000000\\0\"\t\t\\\n+\t\"kernel_size=0x2800000\\0\"\t\t\\\n+\t\"console=ttyAMA0,38400n8\\0\"\t\t\\\n+\t\"mcinitcmd=fsl_mc start mc 0x580a00000\"\t\\\n+\t\" 0x580e00000 \\0\"\n+\n+#define CONFIG_BOOTARGS\t\t\"console=ttyS0,115200 root=/dev/ram0 \" \\\n+\t\t\t\t\"earlycon=uart8250,mmio,0x21c0500 \" \\\n+\t\t\t\t\"ramdisk_size=0x3000000 default_hugepagesz=2m\" \\\n+\t\t\t\t\" hugepagesz=2m hugepages=256\"\n+#if defined(CONFIG_QSPI_BOOT)\n+#define CONFIG_BOOTCOMMAND\t\"sf probe 0:0;sf read 0x80200000 0xd00000 0x100000;\"\\\n+\t\t\t\t\" fsl_mc apply dpl 0x80200000 &&\" \\\n+\t\t\t\t\" sf read $kernel_load $kernel_start\" \\\n+\t\t\t\t\" $kernel_size && bootm $kernel_load\"\n+#else /* NOR BOOT*/\n+#define CONFIG_BOOTCOMMAND\t\"fsl_mc apply dpl 0x580d00000 &&\" \\\n+\t\t\t\t\" cp.b $kernel_start $kernel_load\" \\\n+\t\t\t\t\" $kernel_size && bootm $kernel_load\"\n+#endif\n+\n+/* Monitor Command Prompt */\n+#define CONFIG_SYS_CBSIZE\t\t512\t/* Console I/O Buffer Size */\n+#define CONFIG_SYS_PBSIZE\t\t(CONFIG_SYS_CBSIZE + \\\n+\t\t\t\t\tsizeof(CONFIG_SYS_PROMPT) + 16)\n+#define CONFIG_SYS_PROMPT_HUSH_PS2\t\"> \"\n+#define CONFIG_SYS_BARGSIZE\t\tCONFIG_SYS_CBSIZE /* Boot args buffer */\n+#define CONFIG_SYS_LONGHELP\n+#define CONFIG_CMDLINE_EDITING\t\t1\n+#define CONFIG_AUTO_COMPLETE\n+#define CONFIG_SYS_MAXARGS\t\t64\t/* max command args */\n+\n+#define CONFIG_PANIC_HANG\t/* do not reset board on panic */\n+\n+#define CONFIG_SYS_BOOTM_LEN   (64 << 20)      /* Increase max gunzip size */\n+\n+#endif /* __LS1088_COMMON_H */\ndiff --git a/include/configs/ls1088ardb.h b/include/configs/ls1088ardb.h\nnew file mode 100644\nindex 0000000..d943fa4\n--- /dev/null\n+++ b/include/configs/ls1088ardb.h\n@@ -0,0 +1,316 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+#ifndef __LS1088A_RDB_H\n+#define __LS1088A_RDB_H\n+\n+#include \"ls1088a_common.h\"\n+\n+#define CONFIG_DISPLAY_BOARDINFO_LATE\n+\n+#if defined(CONFIG_QSPI_BOOT)\n+#define CONFIG_ENV_IS_IN_SPI_FLASH\n+#define CONFIG_ENV_SIZE\t\t\t0x2000          /* 8KB */\n+#define CONFIG_ENV_OFFSET\t\t0x300000        /* 3MB */\n+#define CONFIG_ENV_SECT_SIZE\t\t0x40000\n+#else\n+#define CONFIG_ENV_IS_IN_FLASH\n+#define CONFIG_ENV_ADDR\t\t\t(CONFIG_SYS_FLASH_BASE + 0x300000)\n+#define CONFIG_ENV_SECT_SIZE\t\t0x20000\n+#define CONFIG_ENV_SIZE\t\t\t0x20000\n+#endif\n+\n+#if defined(CONFIG_QSPI_BOOT)\n+#define CONFIG_QIXIS_I2C_ACCESS\n+#define SYS_NO_FLASH\n+#undef CONFIG_CMD_IMLS\n+#endif\n+\n+#define CONFIG_SYS_CLK_FREQ\t\t100000000\n+#define CONFIG_DDR_CLK_FREQ\t\t100000000\n+#define COUNTER_FREQUENCY_REAL\t\t25000000\t/* 25MHz */\n+#define COUNTER_FREQUENCY\t\t25000000\t/* 25MHz */\n+\n+#define CONFIG_DDR_SPD\n+#ifdef CONFIG_EMU\n+#define CONFIG_SYS_FSL_DDR_EMU\n+#define CONFIG_SYS_MXC_I2C1_SPEED\t40000000\n+#define CONFIG_SYS_MXC_I2C2_SPEED\t40000000\n+#else\n+#define CONFIG_DDR_ECC\n+#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER\n+#define CONFIG_MEM_INIT_VALUE\t\t0xdeadbeef\n+#endif\n+#define SPD_EEPROM_ADDRESS\t0x51\n+#define CONFIG_SYS_SPD_BUS_NUM\t0\t/* SPD on I2C bus 0 */\n+#define CONFIG_DIMM_SLOTS_PER_CTLR\t1\n+\n+\n+#if !defined(CONFIG_QSPI_BOOT) && !defined(CONFIG_SD_BOOT_QSPI)\n+#define CONFIG_SYS_NOR0_CSPR_EXT\t(0x0)\n+#define CONFIG_SYS_NOR_AMASK\t\tIFC_AMASK(128 * 1024 * 1024)\n+#define CONFIG_SYS_NOR_AMASK_EARLY\tIFC_AMASK(64 * 1024 * 1024)\n+\n+#define CONFIG_SYS_NOR0_CSPR\t\t\t\t\t\\\n+\t(CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS)\t\t| \\\n+\tCSPR_PORT_SIZE_16\t\t\t\t\t| \\\n+\tCSPR_MSEL_NOR\t\t\t\t\t\t| \\\n+\tCSPR_V)\n+#define CONFIG_SYS_NOR0_CSPR_EARLY\t\t\t\t\\\n+\t(CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS_EARLY)\t| \\\n+\tCSPR_PORT_SIZE_16\t\t\t\t\t| \\\n+\tCSPR_MSEL_NOR\t\t\t\t\t\t| \\\n+\tCSPR_V)\n+#define CONFIG_SYS_NOR_CSOR\tCSOR_NOR_ADM_SHIFT(6)\n+#define CONFIG_SYS_NOR_FTIM0\t(FTIM0_NOR_TACSE(0x1) | \\\n+\t\t\t\tFTIM0_NOR_TEADC(0x1) | \\\n+\t\t\t\tFTIM0_NOR_TEAHC(0x1))\n+#define CONFIG_SYS_NOR_FTIM1\t(FTIM1_NOR_TACO(0x1) | \\\n+\t\t\t\tFTIM1_NOR_TRAD_NOR(0x1))\n+#define CONFIG_SYS_NOR_FTIM2\t(FTIM2_NOR_TCS(0x0) | \\\n+\t\t\t\tFTIM2_NOR_TCH(0x0) | \\\n+\t\t\t\tFTIM2_NOR_TWP(0x1))\n+#define CONFIG_SYS_NOR_FTIM3\t0x04000000\n+#define CONFIG_SYS_IFC_CCR\t0x01000000\n+\n+#ifndef SYS_NO_FLASH\n+#define CONFIG_FLASH_CFI_DRIVER\n+#define CONFIG_SYS_FLASH_CFI\n+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE\n+#define CONFIG_SYS_FLASH_QUIET_TEST\n+#define CONFIG_FLASH_SHOW_PROGRESS\t45 /* count down from 45/5: 9..1 */\n+\n+#define CONFIG_SYS_MAX_FLASH_BANKS\t1\t/* number of banks */\n+#define CONFIG_SYS_MAX_FLASH_SECT\t1024\t/* sectors per device */\n+#define CONFIG_SYS_FLASH_ERASE_TOUT\t60000\t/* Flash Erase Timeout (ms) */\n+#define CONFIG_SYS_FLASH_WRITE_TOUT\t500\t/* Flash Write Timeout (ms) */\n+\n+#define CONFIG_SYS_FLASH_EMPTY_INFO\n+#define CONFIG_SYS_FLASH_BANKS_LIST\t{ CONFIG_SYS_FLASH_BASE }\n+#endif\n+#endif\n+#define CONFIG_NAND_FSL_IFC\n+#define CONFIG_SYS_NAND_MAX_ECCPOS\t256\n+#define CONFIG_SYS_NAND_MAX_OOBFREE\t2\n+\n+#define CONFIG_SYS_NAND_CSPR_EXT\t(0x0)\n+#define CONFIG_SYS_NAND_CSPR\t(CSPR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \\\n+\t\t\t\t| CSPR_PORT_SIZE_8 /* Port Size = 8 bit */ \\\n+\t\t\t\t| CSPR_MSEL_NAND\t/* MSEL = NAND */ \\\n+\t\t\t\t| CSPR_V)\n+#define CONFIG_SYS_NAND_AMASK\tIFC_AMASK(64 * 1024)\n+\n+#define CONFIG_SYS_NAND_CSOR    (CSOR_NAND_ECC_ENC_EN   /* ECC on encode */ \\\n+\t\t\t\t| CSOR_NAND_ECC_DEC_EN  /* ECC on decode */ \\\n+\t\t\t\t| CSOR_NAND_ECC_MODE_4  /* 4-bit ECC */ \\\n+\t\t\t\t| CSOR_NAND_RAL_3\t/* RAL = 3Byes */ \\\n+\t\t\t\t| CSOR_NAND_PGS_2K\t/* Page Size = 2K */ \\\n+\t\t\t\t| CSOR_NAND_SPRZ_64/* Spare size = 64 */ \\\n+\t\t\t\t| CSOR_NAND_PB(64))\t/*Pages Per Block = 64*/\n+\n+#define CONFIG_SYS_NAND_ONFI_DETECTION\n+\n+/* ONFI NAND Flash mode0 Timing Params */\n+#define CONFIG_SYS_NAND_FTIM0\t\t(FTIM0_NAND_TCCST(0x07) | \\\n+\t\t\t\t\tFTIM0_NAND_TWP(0x18)   | \\\n+\t\t\t\t\tFTIM0_NAND_TWCHT(0x07) | \\\n+\t\t\t\t\tFTIM0_NAND_TWH(0x0a))\n+#define CONFIG_SYS_NAND_FTIM1\t\t(FTIM1_NAND_TADLE(0x32) | \\\n+\t\t\t\t\tFTIM1_NAND_TWBE(0x39)  | \\\n+\t\t\t\t\tFTIM1_NAND_TRR(0x0e)   | \\\n+\t\t\t\t\tFTIM1_NAND_TRP(0x18))\n+#define CONFIG_SYS_NAND_FTIM2\t\t(FTIM2_NAND_TRAD(0x0f) | \\\n+\t\t\t\t\tFTIM2_NAND_TREH(0x0a) | \\\n+\t\t\t\t\tFTIM2_NAND_TWHRE(0x1e))\n+#define CONFIG_SYS_NAND_FTIM3\t\t0x0\n+\n+#define CONFIG_SYS_NAND_BASE_LIST\t{ CONFIG_SYS_NAND_BASE }\n+#define CONFIG_SYS_MAX_NAND_DEVICE\t1\n+#define CONFIG_MTD_NAND_VERIFY_WRITE\n+#define CONFIG_CMD_NAND\n+\n+#define CONFIG_SYS_NAND_BLOCK_SIZE\t(128 * 1024)\n+\n+#define CONFIG_FSL_QIXIS\n+#define CONFIG_SYS_I2C_FPGA_ADDR\t0x66\n+#define QIXIS_LBMAP_SWITCH\t\t2\n+#define QIXIS_QMAP_MASK\t\t\t0xe0\n+#define QIXIS_QMAP_SHIFT\t\t5\n+#define QIXIS_LBMAP_MASK\t\t0x1f\n+#define QIXIS_LBMAP_SHIFT\t\t5\n+#define QIXIS_LBMAP_DFLTBANK\t\t0x00\n+#define QIXIS_LBMAP_ALTBANK\t\t0x20\n+#define QIXIS_LBMAP_SD\t\t\t0x00\n+#define QIXIS_LBMAP_SD_QSPI\t\t0x00\n+#define QIXIS_LBMAP_QSPI\t\t0x00\n+#define QIXIS_RCW_SRC_SD\t\t0x40\n+#define QIXIS_RCW_SRC_QSPI\t\t0x62\n+#define QIXIS_RST_CTL_RESET\t\t0x31\n+#define QIXIS_RCFG_CTL_RECONFIG_IDLE\t0x20\n+#define QIXIS_RCFG_CTL_RECONFIG_START\t0x21\n+#define QIXIS_RCFG_CTL_WATCHDOG_ENBLE\t0x08\n+#define\tQIXIS_RST_FORCE_MEM\t\t0x01\n+\n+#define CONFIG_SYS_FPGA_CSPR_EXT\t(0x0)\n+#define CONFIG_SYS_FPGA_CSPR\t\t(CSPR_PHYS_ADDR(QIXIS_BASE_PHYS_EARLY) \\\n+\t\t\t\t\t| CSPR_PORT_SIZE_8 \\\n+\t\t\t\t\t| CSPR_MSEL_GPCM \\\n+\t\t\t\t\t| CSPR_V)\n+#define SYS_FPGA_CSPR_FINAL\t(CSPR_PHYS_ADDR(QIXIS_BASE_PHYS) \\\n+\t\t\t\t\t| CSPR_PORT_SIZE_8 \\\n+\t\t\t\t\t| CSPR_MSEL_GPCM \\\n+\t\t\t\t\t| CSPR_V)\n+\n+#define CONFIG_SYS_FPGA_AMASK\t\tIFC_AMASK(64*1024)\n+#define CONFIG_SYS_FPGA_CSOR\t\tCSOR_GPCM_ADM_SHIFT(0)\n+/* QIXIS Timing parameters*/\n+#define SYS_FPGA_CS_FTIM0\t(FTIM0_GPCM_TACSE(0x0e) | \\\n+\t\t\t\t\tFTIM0_GPCM_TEADC(0x0e) | \\\n+\t\t\t\t\tFTIM0_GPCM_TEAHC(0x0e))\n+#define SYS_FPGA_CS_FTIM1\t(FTIM1_GPCM_TACO(0xff) | \\\n+\t\t\t\t\tFTIM1_GPCM_TRAD(0x3f))\n+#define SYS_FPGA_CS_FTIM2\t(FTIM2_GPCM_TCS(0xf) | \\\n+\t\t\t\t\tFTIM2_GPCM_TCH(0xf) | \\\n+\t\t\t\t\tFTIM2_GPCM_TWP(0x3E))\n+#define SYS_FPGA_CS_FTIM3\t0x0\n+\n+#if defined(CONFIG_QSPI_BOOT) || defined(CONFIG_SD_BOOT_QSPI)\n+#define CONFIG_SYS_CSPR0_EXT\t\tCONFIG_SYS_NAND_CSPR_EXT\n+#define CONFIG_SYS_CSPR0\t\tCONFIG_SYS_NAND_CSPR\n+#define CONFIG_SYS_AMASK0\t\tCONFIG_SYS_NAND_AMASK\n+#define CONFIG_SYS_CSOR0\t\tCONFIG_SYS_NAND_CSOR\n+#define CONFIG_SYS_CS0_FTIM0\t\tCONFIG_SYS_NAND_FTIM0\n+#define CONFIG_SYS_CS0_FTIM1\t\tCONFIG_SYS_NAND_FTIM1\n+#define CONFIG_SYS_CS0_FTIM2\t\tCONFIG_SYS_NAND_FTIM2\n+#define CONFIG_SYS_CS0_FTIM3\t\tCONFIG_SYS_NAND_FTIM3\n+#define CONFIG_SYS_CSPR2_EXT\t\tCONFIG_SYS_FPGA_CSPR_EXT\n+#define CONFIG_SYS_CSPR2\t\tCONFIG_SYS_FPGA_CSPR\n+#define CONFIG_SYS_CSPR2_FINAL\t\tSYS_FPGA_CSPR_FINAL\n+#define CONFIG_SYS_AMASK2\t\tCONFIG_SYS_FPGA_AMASK\n+#define CONFIG_SYS_CSOR2\t\tCONFIG_SYS_FPGA_CSOR\n+#define CONFIG_SYS_CS2_FTIM0\t\tSYS_FPGA_CS_FTIM0\n+#define CONFIG_SYS_CS2_FTIM1\t\tSYS_FPGA_CS_FTIM1\n+#define CONFIG_SYS_CS2_FTIM2\t\tSYS_FPGA_CS_FTIM2\n+#define CONFIG_SYS_CS2_FTIM3\t\tSYS_FPGA_CS_FTIM3\n+#else\n+#define CONFIG_SYS_CSPR0_EXT\t\tCONFIG_SYS_NOR0_CSPR_EXT\n+#define CONFIG_SYS_CSPR0\t\tCONFIG_SYS_NOR0_CSPR_EARLY\n+#define CONFIG_SYS_CSPR0_FINAL\t\tCONFIG_SYS_NOR0_CSPR\n+#define CONFIG_SYS_AMASK0\t\tCONFIG_SYS_NOR_AMASK\n+#define CONFIG_SYS_CSOR0\t\tCONFIG_SYS_NOR_CSOR\n+#define CONFIG_SYS_CS0_FTIM0\t\tCONFIG_SYS_NOR_FTIM0\n+#define CONFIG_SYS_CS0_FTIM1\t\tCONFIG_SYS_NOR_FTIM1\n+#define CONFIG_SYS_CS0_FTIM2\t\tCONFIG_SYS_NOR_FTIM2\n+#define CONFIG_SYS_CS0_FTIM3\t\tCONFIG_SYS_NOR_FTIM3\n+#endif\n+\n+\n+#define CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS 5000\n+\n+/*\n+ * I2C bus multiplexer\n+ */\n+#define I2C_MUX_PCA_ADDR_PRI\t\t0x77\n+#define I2C_MUX_PCA_ADDR_SEC\t\t0x76 /* Secondary multiplexer */\n+#define I2C_RETIMER_ADDR\t\t0x18\n+#define I2C_MUX_CH_DEFAULT\t\t0x8\n+#define I2C_MUX_CH5\t\t\t0xD\n+/*\n+* RTC configuration\n+*/\n+#define RTC\n+#define CONFIG_RTC_PCF8563 1\n+#define CONFIG_SYS_I2C_RTC_ADDR         0x51  /* Channel 3*/\n+#define CONFIG_CMD_DATE\n+\n+/* EEPROM */\n+#define CONFIG_ID_EEPROM\n+#define CONFIG_SYS_I2C_EEPROM_NXID\n+#define CONFIG_SYS_EEPROM_BUS_NUM\t\t0\n+#define CONFIG_SYS_I2C_EEPROM_ADDR\t\t0x57\n+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN\t\t1\n+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS\t3\n+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS\t5\n+\n+/* QSPI device */\n+#if defined(CONFIG_QSPI_BOOT)\n+#define CONFIG_FSL_QSPI\n+#define CONFIG_SPI_FLASH_SPANSION\n+#define FSL_QSPI_FLASH_SIZE\t\t(1 << 26)\n+#define FSL_QSPI_FLASH_NUM\t\t2\n+#endif\n+\n+#define CONFIG_CMD_MEMINFO\n+#define CONFIG_CMD_MEMTEST\n+#define CONFIG_SYS_MEMTEST_START\t0x80000000\n+#define CONFIG_SYS_MEMTEST_END\t\t0x9fffffff\n+#define CONFIG_FSL_MEMAC\n+\n+/* Initial environment variables */\n+#if defined(CONFIG_QSPI_BOOT)\n+#undef CONFIG_EXTRA_ENV_SETTINGS\n+#define CONFIG_EXTRA_ENV_SETTINGS\t\t\\\n+\t\"hwconfig=fsl_ddr:bank_intlv=auto\\0\"\t\\\n+\t\"loadaddr=0x90100000\\0\"\t\t\t\\\n+\t\"kernel_addr=0x100000\\0\"\t\t\\\n+\t\"ramdisk_addr=0x800000\\0\"\t\t\\\n+\t\"ramdisk_size=0x2000000\\0\"\t\t\\\n+\t\"fdt_high=0xa0000000\\0\"\t\t\t\\\n+\t\"initrd_high=0xffffffffffffffff\\0\"\t\\\n+\t\"kernel_start=0x1000000\\0\"\t\t\\\n+\t\"kernel_load=0xa0000000\\0\"\t\t\\\n+\t\"kernel_size=0x2800000\\0\"\t\t\\\n+\t\"mcinitcmd=sf probe 0:0;sf read 0x80000000 0xA00000 0x100000;\"\t\\\n+\t\"sf read 0x80100000 0xE00000 0x100000;\" \\\n+\t\"fsl_mc start mc 0x80000000 0x80100000\\0\"\t\\\n+\t\"mcmemsize=0x70000000 \\0\"\n+\n+#endif\n+\n+/* MAC/PHY configuration */\n+#ifdef CONFIG_FSL_MC_ENET\n+#define CONFIG_PHYLIB_10G\n+#define CONFIG_PHY_GIGE\n+#define CONFIG_PHYLIB\n+\n+#define CONFIG_PHY_VITESSE\n+#define CONFIG_PHY_AQUANTIA\n+#define AQ_PHY_ADDR1\t\t\t0x00\n+#define AQR105_IRQ_MASK\t\t\t0x00000004\n+\n+#define QSGMII1_PORT1_PHY_ADDR\t\t0x0c\n+#define QSGMII1_PORT2_PHY_ADDR\t\t0x0d\n+#define QSGMII1_PORT3_PHY_ADDR\t\t0x0e\n+#define QSGMII1_PORT4_PHY_ADDR\t\t0x0f\n+#define QSGMII2_PORT1_PHY_ADDR\t\t0x1c\n+#define QSGMII2_PORT2_PHY_ADDR\t\t0x1d\n+#define QSGMII2_PORT3_PHY_ADDR\t\t0x1e\n+#define QSGMII2_PORT4_PHY_ADDR\t\t0x1f\n+\n+#define CONFIG_MII\n+#define CONFIG_ETHPRIME\t\t\"DPMAC1@xgmii\"\n+#define CONFIG_PHY_GIGE\n+#endif\n+\n+/*  MMC  */\n+#ifdef CONFIG_MMC\n+#define CONFIG_FSL_ESDHC\n+#define CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33\n+#endif\n+\n+#undef CONFIG_CMDLINE_EDITING\n+#include <config_distro_defaults.h>\n+\n+#define BOOT_TARGET_DEVICES(func) \\\n+\tfunc(USB, usb, 0) \\\n+\tfunc(MMC, mmc, 0) \\\n+\tfunc(SCSI, scsi, 0) \\\n+\tfunc(DHCP, dhcp, na)\n+#include <config_distro_bootcmd.h>\n+\n+#include <asm/fsl_secure_boot.h>\n+\n+#endif /* __LS1088A_RDB_H */\n","prefixes":["U-Boot","v4","2/3"]}