From patchwork Mon Apr 12 12:13:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan \(OSS\)" X-Patchwork-Id: 419546 Delivered-To: patch@linaro.org Received: by 2002:a02:c4d2:0:0:0:0:0 with SMTP id h18csp1661976jaj; Mon, 12 Apr 2021 04:47:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzzdXCfU8k+szJgt9Bx0Ma8vhXWa7j8dXl8+1Hidfpg8acFp+J4CfJqmjaRmpUJbdlcOvhm X-Received: by 2002:a50:c3c2:: with SMTP id i2mr29002132edf.23.1618228044809; Mon, 12 Apr 2021 04:47:24 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1618228044; cv=pass; d=google.com; s=arc-20160816; b=D1o1EGQcIqQDN0JL3CY2uWgYYppsF3b6Rsi8uYuLe3vLYwNah4UOF3m7YtSJmW9a4X cCZALWRHhAY/irTcgzJzTbVzxpmi0ruaBtbFFd+gQ3SbAMGfo6CWsYC3da8/W27pmcfm fzI5gGWPh+jSBfVeRa2E/8e/UZ374aPelTFkyViI/6jVCU/+pZAKMWTrIaTJWSuWF65w yfnskTSTP3hPm9clC8Zs5eTwHnlhgLVONdW2hAoUIrXCNoVHNYdkzC9wN3thc6no9ALP lQcibORlrbezHVpeysR0MoPZ75v0sj8GfZt6JD4VpiaFNHJP59yaQmc4zu1LeizPgEe6 sCTQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version :content-transfer-encoding:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=nUf2Bo4Wzcu8h+ljGNMbI1Jn0c9ZvU8TuO0P4yMeoYo=; b=i07lf7VNgLEru/xu1c3PkSvkw7RwdftJjpYLo2G15F1GHK2ucQE4VepdeGdtdd8YPo xefYlCREqKzSqNwz/+uFQEfJr53WDT7/m2v7Z2RHA56v/aR6ja4dnE5Bb9XdLTmS6HjQ zyhL/LFcOoOvKTJF3uZFe9C5jkgW9TxZfBuV0sfjnBrnyrMGPdjXGrXYvQY3TOlb9m0G 4tmJzclaog2UPE4wABKvOoUJCuWx0KSoqjsjTCRWX9w94/OHsulbuT4rRBkWi4KpZOj0 yqbCkBtdP0/sFvZd/UcpH5QDUvZzaCKxPf1clxrOeb3kJ7jNoCdHcHahIePqMiCzdb2B FtNw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@NXP1.onmicrosoft.com header.s=selector2-NXP1-onmicrosoft-com header.b=YVUhtHov; arc=pass (i=1 spf=pass spfdomain=oss.nxp.com dkim=pass dkdomain=oss.nxp.com dmarc=pass fromdomain=oss.nxp.com); spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by mx.google.com with ESMTPS id dv21si7836788ejb.434.2021.04.12.04.47.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Apr 2021 04:47:24 -0700 (PDT) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Authentication-Results: mx.google.com; dkim=pass header.i=@NXP1.onmicrosoft.com header.s=selector2-NXP1-onmicrosoft-com header.b=YVUhtHov; arc=pass (i=1 spf=pass spfdomain=oss.nxp.com dkim=pass dkdomain=oss.nxp.com dmarc=pass fromdomain=oss.nxp.com); spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5F93A82079; Mon, 12 Apr 2021 13:46:47 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=oss.nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="YVUhtHov"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 24D9481FD1; Mon, 12 Apr 2021 13:46:38 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FORGED_SPF_HELO,MSGID_FROM_MTA_HEADER,SPF_HELO_PASS autolearn=no autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0613.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::613]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 317AE81FD1 for ; Mon, 12 Apr 2021 13:43:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=oss.nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=peng.fan@oss.nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SZ1W3Uhu3U6CWZq5D2mrcj35FPxkisaTd/zQGMZZXQtZrLHiwInW/I1wWNGv03yA/eyx/xbAWHp59JVotFJlJx6FQ1uvqEmtQo3Iix/lg4XEjd/4ug46vwOaU1Vy6OCYMgetAlLAZhEwj1kES4oSxBScHwlfwG6tflMkVRM99TttMmffIMDIErzlq7n6uenw4xe+ayaK+ISzYoRvs6nvKA1xTQ6C0cyHqEnwLvqDlLJkJ6JvI5xop9cPokleNaUHlx1ZSc6AlD2FB2zC1O/E3Xxaab4ZS/tj4aaJ2s9Oe3m5y0y+K60YMoXawK4xjf8Tdwcmxr3U71Q8wDoOaexTPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nUf2Bo4Wzcu8h+ljGNMbI1Jn0c9ZvU8TuO0P4yMeoYo=; b=OFlE0vNm9ZjWbVhIhSbwVLBE+j8+36s2c/lfbRqHQqp5obMCeGt7tykyGUc9q3NQkOzILsQMO8mmgCXNjuwn1YE1qDdYXOUZCO85RaYDxehvNAVcRnpLsZBA0xmnJzME14FOlneBd0M8tgopu7mU3RASB1hqTVU/UHUojz4msvaY0sIXYSmCTgFAiLImlEuhBaqclnZ19IXoCapF5mzwlp37h5lUTMOdPkrgWZDb2mHkpHpDToOkGCiDSjJEqUMLgXxnNXCp9FgRkHCgi0b7qIQ9dsI6uZACMgD089J8eQ8GfGdr6+PX/eVd1GWq3glewTKrUAZsLg0JK5t8FNhr6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nUf2Bo4Wzcu8h+ljGNMbI1Jn0c9ZvU8TuO0P4yMeoYo=; b=YVUhtHovRFWlInDU+JLtgz2X9VZpPhuRZIBvWlRTovTaoqkqzYfR6NjHsS1DorskRRdjak2JQvNXa7oC+QoWfcX5zM5mEv0je2DwJ4PKl+lypPmB334fuH8OgpSFvuwJ5nnp6fblvhypII8noHTljHzQkRzOVkNzwAFDUfTG368= Authentication-Results: denx.de; dkim=none (message not signed) header.d=none; denx.de; dmarc=none action=none header.from=oss.nxp.com; Received: from DB6PR0402MB2760.eurprd04.prod.outlook.com (2603:10a6:4:a1::14) by DBBPR04MB7595.eurprd04.prod.outlook.com (2603:10a6:10:20d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Mon, 12 Apr 2021 11:43:05 +0000 Received: from DB6PR0402MB2760.eurprd04.prod.outlook.com ([fe80::c57a:6964:f72c:21cf]) by DB6PR0402MB2760.eurprd04.prod.outlook.com ([fe80::c57a:6964:f72c:21cf%11]) with mapi id 15.20.3999.032; Mon, 12 Apr 2021 11:43:05 +0000 From: "Peng Fan (OSS)" To: sbabic@denx.de, festevam@gmail.com Cc: u-boot@lists.denx.de, uboot-imx@nxp.com, Peng Fan Subject: [PATCH 37/37] arm: imx: add i.MX8ULP EVK support Date: Mon, 12 Apr 2021 20:13:06 +0800 Message-Id: <20210412121306.11484-38-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210412121306.11484-1-peng.fan@oss.nxp.com> References: <20210412121306.11484-1-peng.fan@oss.nxp.com> X-Originating-IP: [119.31.174.71] X-ClientProxiedBy: HK2PR0401CA0009.apcprd04.prod.outlook.com (2603:1096:202:2::19) To DB6PR0402MB2760.eurprd04.prod.outlook.com (2603:10a6:4:a1::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from linux-1xn6.ap.freescale.net (119.31.174.71) by HK2PR0401CA0009.apcprd04.prod.outlook.com (2603:1096:202:2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.16 via Frontend Transport; Mon, 12 Apr 2021 11:43:03 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a71ff658-8076-4650-487a-08d8fda82284 X-MS-TrafficTypeDiagnostic: DBBPR04MB7595: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:369; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LZaN0CXy1XiHfd5fIWrKbQ+b6SizRkFLbzoqdx4hBzulCuij8zt+IQiLa7qY+3g1T3HTLoVUi1w+8OXD+z6h6GWF1v09Xb5X0pIxP1tCxsJ8sgb3J1h7WBUoj9ymknbpRa2+xSJlzkDSIHgxszrinbh3VpitHuo0fZ7+kwceCOpSB3gn+RkviYRYN2q/dyqdnvgGa7X7pvgFBBitexNIAyYxQ+HafrvhuIAnlKXYOercgbM9V4Ob7kn4EjM6zBOsQoo/1YoUYpV4A23r9iASN55qBwR6eKgsixq6U5Er7k1ghrLegjFZrTKOffgTj6i1L+UnEz0JKrJVKQ/6yxx76VbuwpaNvxSfbk58d73rN9SXDOTmWwSA2LPR2ot9njBFKZkKzSLew/XUwkmbmuy6yhlWDkZTDHzpTE7Xq32ElJVDL/nSeIMbPcDs26PheBwm3lMkph9+Hycg2w//yzrwHUoPZTHIq36mIyKULyieLL68vVHC3dlXlr3iBrOxO+usZOAEcQWsEyLQ45Mt9X/omYMkIuLUnVATm3h2kxEf525dx+9NRadU/jWOVKCWs+o4B8eZPk/vA/eb8noKlurkx45aBE9t5xs3xSm15+oHwVfBcUSesMzPuH6L9mSNcOR0CTrHBfuaYG/0xUoMZjr3DgH174BjmgNqy0v6vtAb6v6HamLoZSwW4rfP0Cnmis2YXGM8n+/fHlIk3889B1bjAg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0402MB2760.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(366004)(136003)(376002)(346002)(39860400002)(38100700002)(4326008)(6506007)(38350700002)(316002)(26005)(2616005)(86362001)(186003)(956004)(52116002)(478600001)(30864003)(2906002)(8676002)(1076003)(6512007)(83380400001)(66476007)(5660300002)(66556008)(8936002)(16526019)(66946007)(6486002)(579004)(559001)(414714003)(473944003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: ILgCVrtaLclCc1A6YAhCNutaCchQVBcd0pdsMoEjWdiWAXWb5R+MPxkcxd3DxQ4AzUGfVz53e3nDL3VxPbACV7UffojjZn2hTzfZeWDAP1DO0KvC3rg7pqLLZfJ+Nb1iwNWI429GP0RAcSDxdwQGez17KR2/zNbcgGEmDhULYjN94YCXmWQvXEy2BjQ5Es8stCEhc08VE3FgXx/bY9sfbqN+slhFPznVRI2819ihEe5j917iEPLcctkwoR0g4nqKU+W5LuJqhWhVYHWZFXGoUNA1LvYZjx4+4BsjHoZqcsRbbdPgK7aLnDQGX2RQJnnKiCc4FyM44NfvyExwttVJPrpxYl8vezDEG9BZ+iF6ZiRLvlUhHlKu0TQkQJ/khMOFf4z3S5XcIdWhhenKsJ4itv2dxsHZkvfC0Y5FyCakKKQrYl91gA7kKEsAgFmTp+0aZ6qCLJf8vflwZxr6UA1qyNIw26DPE4/FncuVqKLWq7OvIb7ewZCnhYStbgNvbC9fLCVU07LYPia3brkV1Z2tvGwQDLkzDTHAcbF1yeXi6FqeK0nZEGK5GOy4K2E83sfbPAiU4Pbo9kw2QR7ipSw5t5CDmsHAMAJXuohtlonUIi49HSJDuugXU8IVWmglALvNAFvO+3SWk3EecrCkCfF1Iv0twb8d9iuiXCAOEw1Oy8/dYBBlFlCdrmnf7OHWavsHQJYySweF4qkDYnxywIpDg9Ps1Hqxpte7mHOrHcwQqkcjrACfuThL2IOUnJlxEBxf7NgmkLLy/3lzdlS0Jp9AkCFI4SwTiQCY/OBkTMeEObLO1sBwqfvIki4wv7rBOmsej0Y++i7F19lec0c5rm6cgvx7MhZygvt/JcfaAecvywb+jtm7tZaqRRpyZ4o+1XvzWCY48WmgUVU5NuyImZqQpkNfUaLHIY2gcSZ841ab+8NI6S3ACRt2wwodzPB29zOitTh8OzIPj+DkK0IX9ZHBdxv0WNw/FpxOAK6XFXFp76mB2jO6Fq7w1atmu9aKH9epPhnftZ1tzXolF2wtGXvjaw4nkMr/BZ/U4rM6vb9aoBl2Z0Xzy82WadLMb6gVyfW9ohueLv5zcaH0PXu/XmSLYjUwjlG0i54dcbwBYWhdCHRUjclLAAz1o8sVUERX0RlD0vIoaVFpysXc5vogvBrRHX23KK0WiscOrEehsZEEgKI2EDaKwbmhTadTU0W3HgrDVw8XNhT7uG3hG3rbx8ETZ2e0Z4Pt34L61vomjC5+IOINpR6sp7xGVq2Eq+Qbte4E7ueJCdHxPpdQ6dsw97jpLsCdjDyj+6FPtxxPtmi0HWvsG0JJd+UNRFCtio0ndi24 X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a71ff658-8076-4650-487a-08d8fda82284 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0402MB2760.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Apr 2021 11:43:05.0921 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vHME/pqkrKlUle0v5I6Ql3C6OPC1lHAgVjkkzYBMu/+QKVkYMQR+0EpIBNoNdfXQNDfg1FXKk/HAFEA09G2I8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7595 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean From: Peng Fan Add i.MX8ULP EVK basic support, support SD/I2C/ENET/LPUART Note: upower API currently not included. Signed-off-by: Peng Fan --- arch/arm/dts/imx8ulp-emulator-u-boot.dtsi | 32 + arch/arm/dts/imx8ulp-emulator.dts | 93 + arch/arm/dts/imx8ulp-evk-u-boot.dtsi | 32 + arch/arm/dts/imx8ulp-evk.dts | 204 +++ arch/arm/mach-imx/imx8ulp/Kconfig | 7 + board/freescale/imx8ulp_evk/Kconfig | 14 + board/freescale/imx8ulp_evk/MAINTAINERS | 6 + board/freescale/imx8ulp_evk/Makefile | 7 + board/freescale/imx8ulp_evk/ddr_init.c | 207 +++ board/freescale/imx8ulp_evk/imx8ulp_evk.c | 67 + board/freescale/imx8ulp_evk/lpddr4_timing.c | 1696 +++++++++++++++++++ board/freescale/imx8ulp_evk/spl.c | 146 ++ configs/imx8ulp_evk_defconfig | 103 ++ include/configs/imx8ulp_evk.h | 108 ++ 14 files changed, 2722 insertions(+) create mode 100644 arch/arm/dts/imx8ulp-emulator-u-boot.dtsi create mode 100644 arch/arm/dts/imx8ulp-emulator.dts create mode 100644 arch/arm/dts/imx8ulp-evk-u-boot.dtsi create mode 100644 arch/arm/dts/imx8ulp-evk.dts create mode 100644 board/freescale/imx8ulp_evk/Kconfig create mode 100644 board/freescale/imx8ulp_evk/MAINTAINERS create mode 100644 board/freescale/imx8ulp_evk/Makefile create mode 100644 board/freescale/imx8ulp_evk/ddr_init.c create mode 100644 board/freescale/imx8ulp_evk/imx8ulp_evk.c create mode 100644 board/freescale/imx8ulp_evk/lpddr4_timing.c create mode 100644 board/freescale/imx8ulp_evk/spl.c create mode 100644 configs/imx8ulp_evk_defconfig create mode 100644 include/configs/imx8ulp_evk.h -- 2.30.0 diff --git a/arch/arm/dts/imx8ulp-emulator-u-boot.dtsi b/arch/arm/dts/imx8ulp-emulator-u-boot.dtsi new file mode 100644 index 0000000000..21161520d8 --- /dev/null +++ b/arch/arm/dts/imx8ulp-emulator-u-boot.dtsi @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 NXP + */ + +&{/soc@0} { + u-boot,dm-spl; +}; + +&per_bridge3 { + u-boot,dm-spl; +}; + +&per_bridge4 { + u-boot,dm-spl; +}; + +&iomuxc1 { + u-boot,dm-spl; +}; + +&pinctrl_lpuart4 { + u-boot,dm-spl; +}; + +&s400_mu { + u-boot,dm-spl; +}; + +&lpuart4 { + u-boot,dm-spl; +}; diff --git a/arch/arm/dts/imx8ulp-emulator.dts b/arch/arm/dts/imx8ulp-emulator.dts new file mode 100644 index 0000000000..924078b361 --- /dev/null +++ b/arch/arm/dts/imx8ulp-emulator.dts @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 NXP + */ + +/dts-v1/; + +#include "imx8ulp.dtsi" + +/ { + model = "FSL i.MX8ULP Emulator"; + compatible = "fsl,imx8ulp-emulator", "fsl,imx8ulp"; + + chosen { + stdout-path = &lpuart4; + }; +}; + +&lpuart4 { + /* console */ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pinctrl_lpuart4>; + pinctrl-1 = <&pinctrl_lpuart4>; + status = "okay"; +}; + +&iomuxc1 { + pinctrl_lpuart4: lpuart4grp { + fsl,pins = < + MX8ULP_PAD_PTE2__LPUART4_TX 0x3 + MX8ULP_PAD_PTE3__LPUART4_RX 0x3 + >; + bias-pull-up; + }; + + pinctrl_usdhc0: usdhc0grp { + fsl,pins = < + MX8ULP_PAD_PTD0__SDHC0_RESET_B 0x43 + MX8ULP_PAD_PTD1__SDHC0_CMD 0x43 + MX8ULP_PAD_PTD2__SDHC0_CLK 0x10042 + MX8ULP_PAD_PTD10__SDHC0_D0 0x43 + MX8ULP_PAD_PTD9__SDHC0_D1 0x43 + MX8ULP_PAD_PTD8__SDHC0_D2 0x43 + MX8ULP_PAD_PTD7__SDHC0_D3 0x43 + MX8ULP_PAD_PTD11__SDHC0_DQS 0x10042 + >; + }; + + pinctrl_usdhc1_ptf: usdhc1ptfgrp { + fsl,pins = < + MX8ULP_PAD_PTF11__SDHC1_RESET_B 0x43 + MX8ULP_PAD_PTF1__SDHC1_D0 0x43 + MX8ULP_PAD_PTF0__SDHC1_D1 0x43 + MX8ULP_PAD_PTF2__SDHC1_CLK 0x10042 + MX8ULP_PAD_PTF3__SDHC1_CMD 0x43 + MX8ULP_PAD_PTF4__SDHC1_D3 0x42 + MX8ULP_PAD_PTF5__SDHC1_D2 0x42 + >; + }; +}; + +&usdhc0 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pinctrl_usdhc0>; + pinctrl-1 = <&pinctrl_usdhc0>; + bus-width = <1>; + broken-cd; + non-removable; + status = "okay"; +}; + +&usdhc1 { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pinctrl_usdhc1_ptf>; + pinctrl-1 = <&pinctrl_usdhc1_ptf>; + bus-width = <1>; + broken-cd; + non-removable; + status = "okay"; +}; + +&flexspi2 { + status = "okay"; + + flash0: mt35xu512aba@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + spi-max-frequency = <29000000>; + spi-nor,ddr-quad-read-dummy = <8>; + }; +}; diff --git a/arch/arm/dts/imx8ulp-evk-u-boot.dtsi b/arch/arm/dts/imx8ulp-evk-u-boot.dtsi new file mode 100644 index 0000000000..a3cfb1c853 --- /dev/null +++ b/arch/arm/dts/imx8ulp-evk-u-boot.dtsi @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright 2021 NXP + */ + +&{/soc@0} { + u-boot,dm-spl; +}; + +&per_bridge3 { + u-boot,dm-spl; +}; + +&per_bridge4 { + u-boot,dm-spl; +}; + +&iomuxc1 { + u-boot,dm-spl; +}; + +&pinctrl_lpuart5 { + u-boot,dm-spl; +}; + +&s400_mu { + u-boot,dm-spl; +}; + +&lpuart5 { + u-boot,dm-spl; +}; diff --git a/arch/arm/dts/imx8ulp-evk.dts b/arch/arm/dts/imx8ulp-evk.dts new file mode 100644 index 0000000000..1cdd855ccd --- /dev/null +++ b/arch/arm/dts/imx8ulp-evk.dts @@ -0,0 +1,204 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright 2021 NXP + */ + +/dts-v1/; + +#include "imx8ulp.dtsi" + +/ { + model = "FSL i.MX8ULP EVK"; + compatible = "fsl,imx8ulp-evk", "fsl,imx8ulp"; + + chosen { + stdout-path = &lpuart5; + }; + + reg_usdhc2_vmmc: regulator-usdhc2 { + compatible = "regulator-fixed"; + regulator-name = "VSD_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&pcal6408 0 GPIO_ACTIVE_HIGH>; + enable-active-high; + startup-delay-us = <100>; + off-on-delay-us = <12000>; + }; +}; + +&lpuart5 { + /* console */ + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pinctrl_lpuart5>; + pinctrl-1 = <&pinctrl_lpuart5>; + status = "okay"; +}; + +&iomuxc1 { + pinctrl_lpuart5: lpuart5grp { + fsl,pins = < + MX8ULP_PAD_PTF14__LPUART5_TX 0x40 + MX8ULP_PAD_PTF15__LPUART5_RX 0x40 + >; + }; + + pinctrl_lpi2c7: lpi2c7grp { + fsl,pins = < + MX8ULP_PAD_PTE12__LPI2C7_SCL 0x27 + MX8ULP_PAD_PTE13__LPI2C7_SDA 0x27 + >; + }; + + pinctrl_usdhc0: usdhc0grp { + fsl,pins = < + MX8ULP_PAD_PTD0__SDHC0_RESET_B 0x43 + MX8ULP_PAD_PTD1__SDHC0_CMD 0x43 + MX8ULP_PAD_PTD2__SDHC0_CLK 0x10042 + MX8ULP_PAD_PTD10__SDHC0_D0 0x43 + MX8ULP_PAD_PTD9__SDHC0_D1 0x43 + MX8ULP_PAD_PTD8__SDHC0_D2 0x43 + MX8ULP_PAD_PTD7__SDHC0_D3 0x43 + MX8ULP_PAD_PTD6__SDHC0_D4 0x43 + MX8ULP_PAD_PTD5__SDHC0_D5 0x43 + MX8ULP_PAD_PTD4__SDHC0_D6 0x43 + MX8ULP_PAD_PTD3__SDHC0_D7 0x43 + MX8ULP_PAD_PTD11__SDHC0_DQS 0x10042 + >; + }; + + pinctrl_usdhc2: usdhc2grp { + fsl,pins = < + MX8ULP_PAD_PTE1__SDHC2_D0 0x43 + MX8ULP_PAD_PTE0__SDHC2_D1 0x43 + MX8ULP_PAD_PTE5__SDHC2_D2 0x42 + MX8ULP_PAD_PTE4__SDHC2_D3 0x42 + MX8ULP_PAD_PTE2__SDHC2_CLK 0x10042 + MX8ULP_PAD_PTE3__SDHC2_CMD 0x43 + >; + }; + + pinctrl_fec: fecgrp { + fsl,pins = < + MX8ULP_PAD_PTE14__ENET0_MDIO 0x43 + MX8ULP_PAD_PTE15__ENET0_MDC 0x43 + MX8ULP_PAD_PTE18__ENET0_CRS_DV 0x43 + MX8ULP_PAD_PTE17__ENET0_RXER 0x43 + MX8ULP_PAD_PTF1__ENET0_RXD0 0x43 + MX8ULP_PAD_PTE20__ENET0_RXD1 0x43 + MX8ULP_PAD_PTE16__ENET0_TXEN 0x43 + MX8ULP_PAD_PTE23__ENET0_TXD0 0x43 + MX8ULP_PAD_PTE22__ENET0_TXD1 0x43 + MX8ULP_PAD_PTE19__ENET0_REFCLK 0x10043 + MX8ULP_PAD_PTF10__ENET0_1588_CLKIN 0x10043 + >; + }; + + pinctrl_usbotg0_id: otg0idgrp { + fsl,pins = < + MX8ULP_PAD_PTF2__USB0_ID 0x10003 + >; + }; + + pinctrl_usbotg1_id: otg1idgrp { + fsl,pins = < + MX8ULP_PAD_PTD23__USB1_ID 0x10003 + >; + }; +}; + +&usdhc0 { + pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc0>; + pinctrl-1 = <&pinctrl_usdhc0>; + pinctrl-2 = <&pinctrl_usdhc0>; + bus-width = <8>; + non-removable; + status = "okay"; +}; + +&usdhc2 { + pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc2>; + pinctrl-1 = <&pinctrl_usdhc2>; + pinctrl-2 = <&pinctrl_usdhc2>; + bus-width = <4>; + broken-cd; + vmmc-supply = <®_usdhc2_vmmc>; + status = "okay"; +}; + +&lpi2c7 { + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_lpi2c7>; + status = "okay"; + + pcal6408: gpio@21 { + compatible = "ti,tca6408"; + reg = <0x21>; + gpio-controller; + #gpio-cells = <2>; + }; +}; + +&flexspi2 { + status = "okay"; + + flash0: mt35xu512aba@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + spi-max-frequency = <29000000>; + spi-nor,ddr-quad-read-dummy = <8>; + }; +}; + +&fec { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_fec>; + phy-mode = "rmii"; + phy-handle = <ðphy>; + status = "okay"; + + phy-reset-gpios = <&pcal6408 4 GPIO_ACTIVE_LOW>; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + ethphy: ethernet-phy@1 { + reg = <1>; + micrel,led-mode = <1>; + }; + }; +}; + +&usbotg0 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usbotg0_id>; + srp-disable; + hnp-disable; + adp-disable; + status = "okay"; +}; + +&usbphy0 { + fsl,tx-d-cal = <88>; +}; + +&usbotg1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usbotg1_id>; + srp-disable; + hnp-disable; + adp-disable; + status = "okay"; +}; + +&usbphy1 { + fsl,tx-d-cal = <88>; +}; diff --git a/arch/arm/mach-imx/imx8ulp/Kconfig b/arch/arm/mach-imx/imx8ulp/Kconfig index 167dbb3fb1..963fc93d34 100644 --- a/arch/arm/mach-imx/imx8ulp/Kconfig +++ b/arch/arm/mach-imx/imx8ulp/Kconfig @@ -11,6 +11,13 @@ choice prompt "i.MX8ULP board select" optional +config TARGET_IMX8ULP_EVK + bool "imx8ulp_evk" + select IMX8ULP + select SUPPORT_SPL + endchoice +source "board/freescale/imx8ulp_evk/Kconfig" + endif diff --git a/board/freescale/imx8ulp_evk/Kconfig b/board/freescale/imx8ulp_evk/Kconfig new file mode 100644 index 0000000000..1e461ee1da --- /dev/null +++ b/board/freescale/imx8ulp_evk/Kconfig @@ -0,0 +1,14 @@ +if TARGET_IMX8ULP_EVK + +config SYS_BOARD + default "imx8ulp_evk" + +config SYS_VENDOR + default "freescale" + +config SYS_CONFIG_NAME + default "imx8ulp_evk" + +source "board/freescale/common/Kconfig" + +endif diff --git a/board/freescale/imx8ulp_evk/MAINTAINERS b/board/freescale/imx8ulp_evk/MAINTAINERS new file mode 100644 index 0000000000..267b7b0caa --- /dev/null +++ b/board/freescale/imx8ulp_evk/MAINTAINERS @@ -0,0 +1,6 @@ +i.MX8ULP EVK BOARD +M: Peng Fan +S: Maintained +F: board/freescale/imx8ulp_evk/ +F: include/configs/imx8ulp_evk.h +F: configs/imx8ulp_evk_defconfig diff --git a/board/freescale/imx8ulp_evk/Makefile b/board/freescale/imx8ulp_evk/Makefile new file mode 100644 index 0000000000..b2e72b4e85 --- /dev/null +++ b/board/freescale/imx8ulp_evk/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ + +obj-y += imx8ulp_evk.o + +ifdef CONFIG_SPL_BUILD +obj-y += spl.o ddr_init.o lpddr4_timing.o +endif diff --git a/board/freescale/imx8ulp_evk/ddr_init.c b/board/freescale/imx8ulp_evk/ddr_init.c new file mode 100644 index 0000000000..f4238d29b3 --- /dev/null +++ b/board/freescale/imx8ulp_evk/ddr_init.c @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* + * Copyright 2021 NXP + */ +#include +#include +#include +#include +#include + +#define DENALI_CTL_00 (DDR_CTL_BASE_ADDR) +#define CTL_START 0x1 + +#define DENALI_CTL_03 (DDR_CTL_BASE_ADDR + 4 * 3) +#define DENALI_CTL_197 (DDR_CTL_BASE_ADDR + 4 * 197) +#define DENALI_CTL_250 (DDR_CTL_BASE_ADDR + 4 * 250) +#define DENALI_CTL_251 (DDR_CTL_BASE_ADDR + 4 * 251) +#define DENALI_CTL_266 (DDR_CTL_BASE_ADDR + 4 * 266) +#define DFI_INIT_COMPLETE 0x2 + +#define DENALI_CTL_614 (DDR_CTL_BASE_ADDR + 4 * 614) +#define DENALI_CTL_615 (DDR_CTL_BASE_ADDR + 4 * 615) + +#define DENALI_PI_00 (DDR_PI_BASE_ADDR) +#define PI_START 0x1 + +#define DENALI_PI_04 (DDR_PI_BASE_ADDR + 4 * 4) +#define DENALI_PI_11 (DDR_PI_BASE_ADDR + 4 * 11) +#define DENALI_PI_12 (DDR_PI_BASE_ADDR + 4 * 12) +#define DENALI_CTL_23 (DDR_CTL_BASE_ADDR + 4 * 23) +#define DENALI_CTL_25 (DDR_CTL_BASE_ADDR + 4 * 25) + +#define DENALI_PHY_1624 (DDR_PHY_BASE_ADDR + 4 * 1624) +#define DENALI_PHY_1537 (DDR_PHY_BASE_ADDR + 4 * 1537) +#define PHY_FREQ_SEL_MULTICAST_EN(X) ((X) << 8) +#define PHY_FREQ_SEL_INDEX(X) ((X) << 16) + +#define DENALI_PHY_1547 (DDR_PHY_BASE_ADDR + 4 * 1547) +#define DENALI_PHY_1555 (DDR_PHY_BASE_ADDR + 4 * 1555) +#define DENALI_PHY_1564 (DDR_PHY_BASE_ADDR + 4 * 1564) +#define DENALI_PHY_1565 (DDR_PHY_BASE_ADDR + 4 * 1565) + +int ddr_calibration(unsigned int fsp_table[3]) +{ + u32 reg_val; + u32 int_status_init, phy_freq_req, phy_freq_type; + u32 lock_0, lock_1, lock_2; + u32 freq_chg_pt, freq_chg_cnt; + + reg_val = readl(DENALI_CTL_250); + if (((reg_val >> 16) & 0x3) == 1) + freq_chg_cnt = 2; + else + freq_chg_cnt = 3; + + reg_val = readl(DENALI_PI_12); + if (reg_val == 0x3) { + freq_chg_pt = 1; + } else if (reg_val == 0x7) { + freq_chg_pt = 2; + } else { + printf("frequency map(0x%x) is wrong, please check!\r\n", reg_val); + return -1; + } + + debug("%s\n", __func__); + + /* Assert PI_START parameter and then assert START parameter in Controller. */ + reg_val = readl(DENALI_PI_00) | PI_START; + writel(reg_val, DENALI_PI_00); + + reg_val = readl(DENALI_CTL_00) | CTL_START; + writel(reg_val, DENALI_CTL_00); + + /* Poll for init_done_bit in Controller interrupt status register (INT_STATUS_INIT) */ + do { + if (!freq_chg_cnt) { + int_status_init = (readl(DENALI_CTL_266) >> 8) & 0xff; + /* DDR subsystem is ready for traffic. */ + if (int_status_init & DFI_INIT_COMPLETE) { + printf("complete\n"); + break; + } + } + + /* + * During leveling, PHY will request for freq change and SoC clock + * logic should provide requested frequency, Polling SIM LPDDR_CTRL2 + * Bit phy_freq_chg_req until be 1'b1 + */ + reg_val = readl(AVD_SIM_LPDDR_CTRL2); + phy_freq_req = (reg_val >> 7) & 0x1; + + if (phy_freq_req) { + phy_freq_type = reg_val & 0x1F; + if (!phy_freq_type) { + printf("Poll for freq_chg_req on SIM register and change to F0 frequency.\n"); + set_ddr_clk(fsp_table[phy_freq_type] >> 1); + + /* Write 1'b1 at LPDDR_CTRL2 bit phy_freq_cfg_ack */ + reg_val = readl(AVD_SIM_LPDDR_CTRL2); + writel(reg_val | (0x1 << 6), AVD_SIM_LPDDR_CTRL2); + } else if (phy_freq_type == 0x01) { + printf("Poll for freq_chg_req on SIM register and change to F1 frequency.\n"); + set_ddr_clk(fsp_table[phy_freq_type] >> 1); + + /* Write 1'b1 at LPDDR_CTRL2 bit phy_freq_cfg_ack */ + reg_val = readl(AVD_SIM_LPDDR_CTRL2); + writel(reg_val | (0x1 << 6), AVD_SIM_LPDDR_CTRL2); + if (freq_chg_pt == 1) + freq_chg_cnt--; + } else if (phy_freq_type == 0x02) { + printf("Poll for freq_chg_req on SIM register and change to F2 frequency.\n"); + set_ddr_clk(fsp_table[phy_freq_type] >> 1); + + /* Write 1'b1 at LPDDR_CTRL2 bit phy_freq_cfg_ack */ + reg_val = readl(AVD_SIM_LPDDR_CTRL2); + writel(reg_val | (0x1 << 6), AVD_SIM_LPDDR_CTRL2); + if (freq_chg_pt == 2) + freq_chg_cnt--; + } + reg_val = readl(AVD_SIM_LPDDR_CTRL2); + } + } while (1); + + /* Check PLL lock status */ + lock_0 = readl(DENALI_PHY_1564) & 0xffff; + lock_1 = (readl(DENALI_PHY_1564) >> 16) & 0xffff; + lock_2 = readl(DENALI_PHY_1565) & 0xffff; + + if ((lock_0 & 0x3) != 0x3 || (lock_1 & 0x3) != 0x3 || (lock_2 & 0x3) != 0x3) { + printf("De-Skew PLL failed to lock\n"); + printf("lock_0=0x%x, lock_1=0x%x, lock_2=0x%x\n", lock_0, lock_1, lock_2); + return -1; + } + + printf("De-Skew PLL is locked and ready\n"); + return 0; +} + +int ddr_init(struct dram_timing_info2 *dram_timing) +{ + int i; + + debug("%s\n", __func__); + + set_ddr_clk(dram_timing->fsp_table[0] >> 1); /* Set to boot freq */ + + /* Initialize CTL registers */ + for (i = 0; i < dram_timing->ctl_cfg_num; i++) + writel(dram_timing->ctl_cfg[i].val, (ulong)dram_timing->ctl_cfg[i].reg); + + /* Initialize PI registers */ + for (i = 0; i < dram_timing->pi_cfg_num; i++) + writel(dram_timing->pi_cfg[i].val, (ulong)dram_timing->pi_cfg[i].reg); + + /* Write PHY regiters for all 3 frequency points (48Mhz/384Mhz/528Mhz): f1_index=0 */ + writel(PHY_FREQ_SEL_MULTICAST_EN(1) | PHY_FREQ_SEL_INDEX(0), DENALI_PHY_1537); + for (i = 0; i < dram_timing->phy_f1_cfg_num; i++) + writel(dram_timing->phy_f1_cfg[i].val, (ulong)dram_timing->phy_f1_cfg[i].reg); + + /* Write PHY regiters for freqency point 2 (528Mhz): f2_index=1 */ + writel(PHY_FREQ_SEL_MULTICAST_EN(0) | PHY_FREQ_SEL_INDEX(1), DENALI_PHY_1537); + for (i = 0; i < dram_timing->phy_f2_cfg_num; i++) + writel(dram_timing->phy_f2_cfg[i].val, (ulong)dram_timing->phy_f2_cfg[i].reg); + + /* Re-enable MULTICAST mode */ + writel(PHY_FREQ_SEL_MULTICAST_EN(1) | PHY_FREQ_SEL_INDEX(0), DENALI_PHY_1537); + + return ddr_calibration(dram_timing->fsp_table); +} + +void enable_bypass_mode(void) +{ + u32 reg_val; + + /* PI_INIT_LVL_EN=0x0 (DENALI_PI_04) */ + reg_val = readl(DENALI_PI_04) & ~0x1; + writel(reg_val, DENALI_PI_04); + + /* PI_FREQ_MAP=0x1 (DENALI_PI_12) */ + writel(0x1, DENALI_PI_12); + + /* PI_INIT_WORK_FREQ=0x0 (DENALI_PI_11) */ + reg_val = readl(DENALI_PI_11) & ~(0x1f << 8); + writel(reg_val, DENALI_PI_11); + + /* DFIBUS_FREQ_INIT=0x0 (DENALI_CTL_23) */ + reg_val = readl(DENALI_CTL_23) & ~(0x3 << 24); + writel(reg_val, DENALI_CTL_23); + + /* PHY_LP4_BOOT_DISABLE=0x0 (DENALI_PHY_1547) */ + reg_val = readl(DENALI_PHY_1547) & ~(0x1 << 8); + writel(reg_val, DENALI_PHY_1547); + + /* PHY_PLL_BYPASS=0x1 (DENALI_PHY_1624) */ + reg_val = readl(DENALI_PHY_1624) | 0x1; + writel(reg_val, DENALI_PHY_1624); + + /* PHY_LP4_BOOT_PLL_BYPASS to 0x1 (DENALI_PHY_1555) */ + reg_val = readl(DENALI_PHY_1555) | 0x1; + writel(reg_val, DENALI_PHY_1555); + + /* FREQ_CHANGE_TYPE_F0 = 0x0/FREQ_CHANGE_TYPE_F1 = 0x1/FREQ_CHANGE_TYPE_F2 = 0x2 */ + reg_val = 0x020100; + writel(reg_val, DENALI_CTL_25); +} diff --git a/board/freescale/imx8ulp_evk/imx8ulp_evk.c b/board/freescale/imx8ulp_evk/imx8ulp_evk.c new file mode 100644 index 0000000000..3ff4d43c99 --- /dev/null +++ b/board/freescale/imx8ulp_evk/imx8ulp_evk.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 NXP + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +#if IS_ENABLED(CONFIG_FEC_MXC) +#define ENET_CLK_PAD_CTRL (PAD_CTL_PUS_UP | PAD_CTL_DSE | PAD_CTL_IBE_ENABLE) +static iomux_cfg_t const enet_clk_pads[] = { + IMX8ULP_PAD_PTE19__ENET0_REFCLK | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL), + IMX8ULP_PAD_PTF10__ENET0_1588_CLKIN | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL), +}; + +static int setup_fec(void) +{ + /* + * Since ref clock and timestamp clock are from external, + * set the iomux prior the clock enablement + */ + imx8ulp_iomux_setup_multiple_pads(enet_clk_pads, ARRAY_SIZE(enet_clk_pads)); + + /* Select enet time stamp clock: 001 - External Timestamp Clock */ + cgc1_enet_stamp_sel(1); + + /* enable FEC PCC */ + pcc_clock_enable(4, ENET_PCC4_SLOT, true); + pcc_reset_peripheral(4, ENET_PCC4_SLOT, false); + + return 0; +} + +int board_phy_config(struct phy_device *phydev) +{ + if (phydev->drv->config) + phydev->drv->config(phydev); + return 0; +} +#endif + +int board_init(void) +{ + if (IS_ENABLED(CONFIG_FEC_MXC)) + setup_fec(); + + return 0; +} + +int board_early_init_f(void) +{ + return 0; +} + +int board_late_init(void) +{ + return 0; +} diff --git a/board/freescale/imx8ulp_evk/lpddr4_timing.c b/board/freescale/imx8ulp_evk/lpddr4_timing.c new file mode 100644 index 0000000000..e827f01cd7 --- /dev/null +++ b/board/freescale/imx8ulp_evk/lpddr4_timing.c @@ -0,0 +1,1696 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* + * Copyright 2021 NXP + * + * Generated code from MX8M_DDR_tool + * + */ + +#include +#include + +/** CTL settings **/ +struct dram_cfg_param ddr_ctl_cfg[] = { + { 0x2e060000, 0xb00 }, /* 0 */ + { 0x2e060004, 0x0 }, /* 1 */ + { 0x2e060008, 0x0 }, /* 2 */ + { 0x2e06000c, 0x0 }, /* 3 */ + { 0x2e060010, 0x0 }, /* 4 */ + { 0x2e060014, 0x0 }, /* 5 */ + { 0x2e060018, 0x0 }, /* 6 */ + { 0x2e06001c, 0x0 }, /* 7 */ + { 0x2e060020, 0x0 }, /* 8 */ + { 0x2e060024, 0x0 }, /* 9 */ + { 0x2e060028, 0x258100 }, /* 10 */ + { 0x2e06002c, 0x17702 }, /* 11 */ + { 0x2e060030, 0x5 }, /* 12 */ + { 0x2e060034, 0x61 }, /* 13 */ + { 0x2e060038, 0x1a0ab }, /* 14 */ + { 0x2e06003c, 0x1046ab }, /* 15 */ + { 0x2e060040, 0x5 }, /* 16 */ + { 0x2e060044, 0x42b }, /* 17 */ + { 0x2e060048, 0xd056 }, /* 18 */ + { 0x2e06004c, 0x82356 }, /* 19 */ + { 0x2e060050, 0x5 }, /* 20 */ + { 0x2e060054, 0x216 }, /* 21 */ + { 0x2e060058, 0x1010000 }, /* 22 */ + { 0x2e06005c, 0x1011001 }, /* 23 */ + { 0x2e060060, 0x2010000 }, /* 24 */ + { 0x2e060064, 0x20100 }, /* 25 */ + { 0x2e060068, 0xa }, /* 26 */ + { 0x2e06006c, 0x19 }, /* 27 */ + { 0x2e060070, 0x0 }, /* 28 */ + { 0x2e060074, 0x0 }, /* 29 */ + { 0x2e060078, 0x2020200 }, /* 30 */ + { 0x2e06007c, 0xb16 }, /* 31 */ + { 0x2e060080, 0x0 }, /* 32 */ + { 0x2e060084, 0x0 }, /* 33 */ + { 0x2e060088, 0x0 }, /* 34 */ + { 0x2e06008c, 0x0 }, /* 35 */ + { 0x2e060090, 0x10 }, /* 36 */ + { 0x2e060094, 0x0 }, /* 37 */ + { 0x2e060098, 0x0 }, /* 38 */ + { 0x2e06009c, 0x0 }, /* 39 */ + { 0x2e0600a0, 0x0 }, /* 40 */ + { 0x2e0600a4, 0x614040c }, /* 41 */ + { 0x2e0600a8, 0x804040c }, /* 42 */ + { 0x2e0600ac, 0x604 }, /* 43 */ + { 0x2e0600b0, 0x3050003 }, /* 44 */ + { 0x2e0600b4, 0x40002 }, /* 45 */ + { 0x2e0600b8, 0x170021 }, /* 46 */ + { 0x2e0600bc, 0x100a07 }, /* 47 */ + { 0x2e0600c0, 0x1104 }, /* 48 */ + { 0x2e0600c4, 0x505000c }, /* 49 */ + { 0x2e0600c8, 0x8200008 }, /* 50 */ + { 0x2e0600cc, 0xa0a }, /* 51 */ + { 0x2e0600d0, 0x4000694 }, /* 52 */ + { 0x2e0600d4, 0xa0a0804 }, /* 53 */ + { 0x2e0600d8, 0x4004920 }, /* 54 */ + { 0x2e0600dc, 0xa0a0804 }, /* 55 */ + { 0x2e0600e0, 0x4002490 }, /* 56 */ + { 0x2e0600e4, 0x2030404 }, /* 57 */ + { 0x2e0600e8, 0xa040400 }, /* 58 */ + { 0x2e0600ec, 0x806050b }, /* 59 */ + { 0x2e0600f0, 0x7010100 }, /* 60 */ + { 0x2e0600f4, 0x40b15 }, /* 61 */ + { 0x2e0600fc, 0x1010000 }, /* 63 */ + { 0x2e060100, 0x1000000 }, /* 64 */ + { 0x2e060104, 0x90403 }, /* 65 */ + { 0x2e060108, 0xb3 }, /* 66 */ + { 0x2e06010c, 0x60 }, /* 67 */ + { 0x2e060110, 0x818 }, /* 68 */ + { 0x2e060114, 0x30 }, /* 69 */ + { 0x2e060118, 0x408 }, /* 70 */ + { 0x2e06011c, 0x5 }, /* 71 */ + { 0x2e060120, 0x50000 }, /* 72 */ + { 0x2e060124, 0x30000f }, /* 73 */ + { 0x2e060128, 0x1800fc }, /* 74 */ + { 0x2e06012c, 0x40007a }, /* 75 */ + { 0x2e060130, 0x120103 }, /* 76 */ + { 0x2e060134, 0x50005 }, /* 77 */ + { 0x2e060138, 0xd070005 }, /* 78 */ + { 0x2e06013c, 0x5050108 }, /* 79 */ + { 0x2e060140, 0x101030a }, /* 80 */ + { 0x2e060144, 0x30a0505 }, /* 81 */ + { 0x2e060148, 0x5050101 }, /* 82 */ + { 0x2e06014c, 0x1030a }, /* 83 */ + { 0x2e060150, 0xa000a }, /* 84 */ + { 0x2e060154, 0x640064 }, /* 85 */ + { 0x2e060158, 0x320032 }, /* 86 */ + { 0x2e06015c, 0x3050505 }, /* 87 */ + { 0x2e060160, 0x3010403 }, /* 88 */ + { 0x2e060164, 0x8050505 }, /* 89 */ + { 0x2e060168, 0x3010403 }, /* 90 */ + { 0x2e06016c, 0x4050505 }, /* 91 */ + { 0x2e060170, 0x3010403 }, /* 92 */ + { 0x2e060174, 0x3010000 }, /* 93 */ + { 0x2e060178, 0x10000 }, /* 94 */ + { 0x2e06017c, 0x0 }, /* 95 */ + { 0x2e060180, 0x1000000 }, /* 96 */ + { 0x2e060184, 0x80104002 }, /* 97 */ + { 0x2e060188, 0x40003 }, /* 98 */ + { 0x2e06018c, 0x40005 }, /* 99 */ + { 0x2e060190, 0x30000 }, /* 100 */ + { 0x2e060194, 0x50004 }, /* 101 */ + { 0x2e060198, 0x4 }, /* 102 */ + { 0x2e06019c, 0x40003 }, /* 103 */ + { 0x2e0601a0, 0x40005 }, /* 104 */ + { 0x2e0601a4, 0x0 }, /* 105 */ + { 0x2e0601a8, 0x2cc0 }, /* 106 */ + { 0x2e0601ac, 0x2cc0 }, /* 107 */ + { 0x2e0601b0, 0x2cc0 }, /* 108 */ + { 0x2e0601b4, 0x2cc0 }, /* 109 */ + { 0x2e0601b8, 0x2cc0 }, /* 110 */ + { 0x2e0601bc, 0x0 }, /* 111 */ + { 0x2e0601c0, 0x4e5 }, /* 112 */ + { 0x2e0601c4, 0x20600 }, /* 113 */ + { 0x2e0601c8, 0x20600 }, /* 114 */ + { 0x2e0601cc, 0x20600 }, /* 115 */ + { 0x2e0601d0, 0x20600 }, /* 116 */ + { 0x2e0601d4, 0x20600 }, /* 117 */ + { 0x2e0601d8, 0x0 }, /* 118 */ + { 0x2e0601dc, 0x38a8 }, /* 119 */ + { 0x2e0601e0, 0x10200 }, /* 120 */ + { 0x2e0601e4, 0x10200 }, /* 121 */ + { 0x2e0601e8, 0x10200 }, /* 122 */ + { 0x2e0601ec, 0x10200 }, /* 123 */ + { 0x2e0601f0, 0x10200 }, /* 124 */ + { 0x2e0601f4, 0x0 }, /* 125 */ + { 0x2e0601f8, 0x1c38 }, /* 126 */ + { 0x2e0601fc, 0x0 }, /* 127 */ + { 0x2e060200, 0x0 }, /* 128 */ + { 0x2e060204, 0x0 }, /* 129 */ + { 0x2e060208, 0x0 }, /* 130 */ + { 0x2e06020c, 0x0 }, /* 131 */ + { 0x2e060210, 0x0 }, /* 132 */ + { 0x2e060214, 0x0 }, /* 133 */ + { 0x2e060218, 0x0 }, /* 134 */ + { 0x2e06021c, 0x5000000 }, /* 135 */ + { 0x2e060220, 0x5030503 }, /* 136 */ + { 0x2e060224, 0x3 }, /* 137 */ + { 0x2e060228, 0x7010a09 }, /* 138 */ + { 0x2e06022c, 0xe0a09 }, /* 139 */ + { 0x2e060230, 0x10a0900 }, /* 140 */ + { 0x2e060234, 0xe0a0907 }, /* 141 */ + { 0x2e060238, 0xa090000 }, /* 142 */ + { 0x2e06023c, 0xa090701 }, /* 143 */ + { 0x2e060240, 0x101000e }, /* 144 */ + { 0x2e060244, 0x40003 }, /* 145 */ + { 0x2e060248, 0x7 }, /* 146 */ + { 0x2e06024c, 0x0 }, /* 147 */ + { 0x2e060250, 0x0 }, /* 148 */ + { 0x2e060254, 0x0 }, /* 149 */ + { 0x2e060258, 0x0 }, /* 150 */ + { 0x2e06025c, 0x0 }, /* 151 */ + { 0x2e060260, 0x0 }, /* 152 */ + { 0x2e060264, 0x4040100 }, /* 153 */ + { 0x2e060268, 0x1000000 }, /* 154 */ + { 0x2e06026c, 0x100000c0 }, /* 155 */ + { 0x2e060270, 0x100000c0 }, /* 156 */ + { 0x2e060274, 0x100000c0 }, /* 157 */ + { 0x2e060278, 0x0 }, /* 158 */ + { 0x2e06027c, 0x1600 }, /* 159 */ + { 0x2e060280, 0x0 }, /* 160 */ + { 0x2e060284, 0x1 }, /* 161 */ + { 0x2e060288, 0x2 }, /* 162 */ + { 0x2e06028c, 0x100e }, /* 163 */ + { 0x2e060290, 0x0 }, /* 164 */ + { 0x2e060294, 0x0 }, /* 165 */ + { 0x2e060298, 0x0 }, /* 166 */ + { 0x2e06029c, 0x0 }, /* 167 */ + { 0x2e0602a0, 0x0 }, /* 168 */ + { 0x2e0602a4, 0xa0000 }, /* 169 */ + { 0x2e0602a8, 0xd0005 }, /* 170 */ + { 0x2e0602ac, 0x404 }, /* 171 */ + { 0x2e0602b0, 0xd }, /* 172 */ + { 0x2e0602b4, 0x36006b }, /* 173 */ + { 0x2e0602b8, 0x4040086 }, /* 174 */ + { 0x2e0602bc, 0x86 }, /* 175 */ + { 0x2e0602c0, 0x1b0036 }, /* 176 */ + { 0x2e0602c4, 0x4040043 }, /* 177 */ + { 0x2e0602c8, 0x43 }, /* 178 */ + { 0x2e0602cc, 0x0 }, /* 179 */ + { 0x2e0602d0, 0x0 }, /* 180 */ + { 0x2e0602d4, 0x0 }, /* 181 */ + { 0x2e0602d8, 0x9140004 }, /* 182 */ + { 0x2e0602dc, 0x30000004 }, /* 183 */ + { 0x2e0602e0, 0x3030 }, /* 184 */ + { 0x2e0602e4, 0x44000000 }, /* 185 */ + { 0x2e0602e8, 0x19191944 }, /* 186 */ + { 0x2e0602ec, 0x19191908 }, /* 187 */ + { 0x2e0602f0, 0x0 }, /* 188 */ + { 0x2e0602f4, 0x40404 }, /* 189 */ + { 0x2e0602f8, 0x40914 }, /* 190 */ + { 0x2e0602fc, 0x30303000 }, /* 191 */ + { 0x2e060300, 0x0 }, /* 192 */ + { 0x2e060304, 0x19444400 }, /* 193 */ + { 0x2e060308, 0x19081919 }, /* 194 */ + { 0x2e06030c, 0x1919 }, /* 195 */ + { 0x2e060310, 0x4040000 }, /* 196 */ + { 0x2e060314, 0x20 }, /* 197 */ + { 0x2e060318, 0x100 }, /* 198 */ + { 0x2e06031c, 0x1 }, /* 199 */ + { 0x2e060320, 0x0 }, /* 200 */ + { 0x2e060324, 0x1000000 }, /* 201 */ + { 0x2e060328, 0x1 }, /* 202 */ + { 0x2e06032c, 0x0 }, /* 203 */ + { 0x2e060330, 0x0 }, /* 204 */ + { 0x2e060334, 0x0 }, /* 205 */ + { 0x2e060338, 0x0 }, /* 206 */ + { 0x2e06033c, 0x0 }, /* 207 */ + { 0x2e060340, 0x0 }, /* 208 */ + { 0x2e060344, 0x0 }, /* 209 */ + { 0x2e060348, 0x0 }, /* 210 */ + { 0x2e06034c, 0x0 }, /* 211 */ + { 0x2e060350, 0x0 }, /* 212 */ + { 0x2e060354, 0x11000000 }, /* 213 */ + { 0x2e060358, 0x40c1815 }, /* 214 */ + { 0x2e06035c, 0x0 }, /* 215 */ + { 0x2e060360, 0x0 }, /* 216 */ + { 0x2e060364, 0x0 }, /* 217 */ + { 0x2e060368, 0x0 }, /* 218 */ + { 0x2e06036c, 0x0 }, /* 219 */ + { 0x2e060370, 0x0 }, /* 220 */ + { 0x2e060374, 0x0 }, /* 221 */ + { 0x2e060378, 0x0 }, /* 222 */ + { 0x2e06037c, 0x0 }, /* 223 */ + { 0x2e060380, 0x0 }, /* 224 */ + { 0x2e060384, 0x0 }, /* 225 */ + { 0x2e060388, 0x0 }, /* 226 */ + { 0x2e06038c, 0x0 }, /* 227 */ + { 0x2e060390, 0x30000 }, /* 228 */ + { 0x2e060394, 0x1000200 }, /* 229 */ + { 0x2e060398, 0x310040 }, /* 230 */ + { 0x2e06039c, 0x20002 }, /* 231 */ + { 0x2e0603a0, 0x400100 }, /* 232 */ + { 0x2e0603a4, 0x100216 }, /* 233 */ + { 0x2e0603a8, 0x1000200 }, /* 234 */ + { 0x2e0603ac, 0x10b0040 }, /* 235 */ + { 0x2e0603b0, 0x8 }, /* 236 */ + { 0x2e0603b4, 0x1b0003 }, /* 237 */ + { 0x2e0603b8, 0x100000e }, /* 238 */ + { 0x2e0603bc, 0x0 }, /* 239 */ + { 0x2e0603d4, 0x0 }, /* 245 */ + { 0x2e0603d8, 0xffff0b00 }, /* 246 */ + { 0x2e0603dc, 0x1010001 }, /* 247 */ + { 0x2e0603e0, 0x1010101 }, /* 248 */ + { 0x2e0603e4, 0x10b0101 }, /* 249 */ + { 0x2e0603e8, 0x10000 }, /* 250 */ + { 0x2e0603ec, 0x4010101 }, /* 251 */ + { 0x2e0603f0, 0x1010000 }, /* 252 */ + { 0x2e0603f4, 0x4 }, /* 253 */ + { 0x2e0603f8, 0x0 }, /* 254 */ + { 0x2e0603fc, 0x3030101 }, /* 255 */ + { 0x2e060400, 0x103 }, /* 256 */ + { 0x2e060404, 0x0 }, /* 257 */ + { 0x2e060408, 0x0 }, /* 258 */ + { 0x2e06040c, 0x0 }, /* 259 */ + { 0x2e060410, 0x0 }, /* 260 */ + { 0x2e060414, 0x0 }, /* 261 */ + { 0x2e060418, 0x0 }, /* 262 */ + { 0x2e06041c, 0x0 }, /* 263 */ + { 0x2e060420, 0x0 }, /* 264 */ + { 0x2e060424, 0x0 }, /* 265 */ + { 0x2e060428, 0x0 }, /* 266 */ + { 0x2e06042c, 0x0 }, /* 267 */ + { 0x2e060430, 0x0 }, /* 268 */ + { 0x2e060434, 0x0 }, /* 269 */ + { 0x2e060438, 0x0 }, /* 270 */ + { 0x2e06043c, 0x0 }, /* 271 */ + { 0x2e060440, 0x0 }, /* 272 */ + { 0x2e060444, 0x0 }, /* 273 */ + { 0x2e060448, 0x0 }, /* 274 */ + { 0x2e06044c, 0x0 }, /* 275 */ + { 0x2e060450, 0x0 }, /* 276 */ + { 0x2e060454, 0x0 }, /* 277 */ + { 0x2e060458, 0x0 }, /* 278 */ + { 0x2e06045c, 0x0 }, /* 279 */ + { 0x2e060460, 0x0 }, /* 280 */ + { 0x2e060464, 0x0 }, /* 281 */ + { 0x2e060468, 0x0 }, /* 282 */ + { 0x2e06046c, 0x0 }, /* 283 */ + { 0x2e060470, 0x0 }, /* 284 */ + { 0x2e060474, 0x0 }, /* 285 */ + { 0x2e060478, 0x0 }, /* 286 */ + { 0x2e06047c, 0x0 }, /* 287 */ + { 0x2e060480, 0x0 }, /* 288 */ + { 0x2e060484, 0x0 }, /* 289 */ + { 0x2e060488, 0x0 }, /* 290 */ + { 0x2e06048c, 0x0 }, /* 291 */ + { 0x2e060490, 0x0 }, /* 292 */ + { 0x2e060494, 0x0 }, /* 293 */ + { 0x2e060498, 0x0 }, /* 294 */ + { 0x2e06049c, 0x0 }, /* 295 */ + { 0x2e0604a0, 0x0 }, /* 296 */ + { 0x2e0604a4, 0x2020101 }, /* 297 */ + { 0x2e0604a8, 0x10100 }, /* 298 */ + { 0x2e0604ac, 0x1000101 }, /* 299 */ + { 0x2e0604b0, 0x1010101 }, /* 300 */ + { 0x2e0604b4, 0x3040300 }, /* 301 */ + { 0x2e0604b8, 0x8050805 }, /* 302 */ + { 0x2e0604bc, 0x8020808 }, /* 303 */ + { 0x2e0604c0, 0xa020e00 }, /* 304 */ + { 0x2e0604c4, 0x8020f00 }, /* 305 */ + { 0x2e0604c8, 0x8000e00 }, /* 306 */ + { 0x2e0604cc, 0x80a }, /* 307 */ + { 0x2e0604d0, 0x1020101 }, /* 308 */ + { 0x2e0604d4, 0x101 }, /* 309 */ + { 0x2e0604d8, 0x404 }, /* 310 */ + { 0x2e0604dc, 0x40400 }, /* 311 */ + { 0x2e0604e0, 0x4040000 }, /* 312 */ + { 0x2e0604e4, 0x4000000 }, /* 313 */ + { 0x2e0604e8, 0x10004 }, /* 314 */ + { 0x2e0604ec, 0x0 }, /* 315 */ + { 0x2e0604f0, 0xfffff }, /* 316 */ + { 0x2e0604f4, 0x0 }, /* 317 */ + { 0x2e0604f8, 0xfffff }, /* 318 */ + { 0x2e0604fc, 0x0 }, /* 319 */ + { 0x2e060500, 0xfffff }, /* 320 */ + { 0x2e060504, 0x0 }, /* 321 */ + { 0x2e060508, 0xfffff }, /* 322 */ + { 0x2e06050c, 0x0 }, /* 323 */ + { 0x2e060510, 0xfffff }, /* 324 */ + { 0x2e060514, 0x0 }, /* 325 */ + { 0x2e060518, 0xfffff }, /* 326 */ + { 0x2e06051c, 0x0 }, /* 327 */ + { 0x2e060520, 0xfffff }, /* 328 */ + { 0x2e060524, 0x0 }, /* 329 */ + { 0x2e060528, 0xfffff }, /* 330 */ + { 0x2e06052c, 0x0 }, /* 331 */ + { 0x2e060530, 0xfffff }, /* 332 */ + { 0x2e060534, 0x0 }, /* 333 */ + { 0x2e060538, 0xfffff }, /* 334 */ + { 0x2e06053c, 0x0 }, /* 335 */ + { 0x2e060540, 0xfffff }, /* 336 */ + { 0x2e060544, 0x0 }, /* 337 */ + { 0x2e060548, 0xfffff }, /* 338 */ + { 0x2e06054c, 0x0 }, /* 339 */ + { 0x2e060550, 0xfffff }, /* 340 */ + { 0x2e060554, 0x0 }, /* 341 */ + { 0x2e060558, 0xfffff }, /* 342 */ + { 0x2e06055c, 0x0 }, /* 343 */ + { 0x2e060560, 0xfffff }, /* 344 */ + { 0x2e060564, 0x0 }, /* 345 */ + { 0x2e060568, 0xfffff }, /* 346 */ + { 0x2e06056c, 0x0 }, /* 347 */ + { 0x2e060570, 0xfffff }, /* 348 */ + { 0x2e060574, 0x0 }, /* 349 */ + { 0x2e060578, 0xfffff }, /* 350 */ + { 0x2e06057c, 0x0 }, /* 351 */ + { 0x2e060580, 0xfffff }, /* 352 */ + { 0x2e060584, 0x0 }, /* 353 */ + { 0x2e060588, 0xfffff }, /* 354 */ + { 0x2e06058c, 0x0 }, /* 355 */ + { 0x2e060590, 0xfffff }, /* 356 */ + { 0x2e060594, 0x0 }, /* 357 */ + { 0x2e060598, 0xfffff }, /* 358 */ + { 0x2e06059c, 0x0 }, /* 359 */ + { 0x2e0605a0, 0xfffff }, /* 360 */ + { 0x2e0605a4, 0x0 }, /* 361 */ + { 0x2e0605a8, 0xfffff }, /* 362 */ + { 0x2e0605ac, 0x0 }, /* 363 */ + { 0x2e0605b0, 0xfffff }, /* 364 */ + { 0x2e0605b4, 0x0 }, /* 365 */ + { 0x2e0605b8, 0xfffff }, /* 366 */ + { 0x2e0605bc, 0x0 }, /* 367 */ + { 0x2e0605c0, 0xfffff }, /* 368 */ + { 0x2e0605c4, 0x0 }, /* 369 */ + { 0x2e0605c8, 0xfffff }, /* 370 */ + { 0x2e0605cc, 0x0 }, /* 371 */ + { 0x2e0605d0, 0xfffff }, /* 372 */ + { 0x2e0605d4, 0x0 }, /* 373 */ + { 0x2e0605d8, 0xfffff }, /* 374 */ + { 0x2e0605dc, 0x0 }, /* 375 */ + { 0x2e0605e0, 0xfffff }, /* 376 */ + { 0x2e0605e4, 0x0 }, /* 377 */ + { 0x2e0605e8, 0xfffff }, /* 378 */ + { 0x2e0605ec, 0x0 }, /* 379 */ + { 0x2e0605f0, 0xfffff }, /* 380 */ + { 0x2e0605f4, 0x0 }, /* 381 */ + { 0x2e0605f8, 0xfffff }, /* 382 */ + { 0x2e0605fc, 0x0 }, /* 383 */ + { 0x2e060600, 0xfffff }, /* 384 */ + { 0x2e060604, 0x0 }, /* 385 */ + { 0x2e060608, 0xfffff }, /* 386 */ + { 0x2e06060c, 0x0 }, /* 387 */ + { 0x2e060610, 0xfffff }, /* 388 */ + { 0x2e060614, 0x0 }, /* 389 */ + { 0x2e060618, 0xfffff }, /* 390 */ + { 0x2e06061c, 0x0 }, /* 391 */ + { 0x2e060620, 0xfffff }, /* 392 */ + { 0x2e060624, 0x0 }, /* 393 */ + { 0x2e060628, 0xfffff }, /* 394 */ + { 0x2e06062c, 0x0 }, /* 395 */ + { 0x2e060630, 0xfffff }, /* 396 */ + { 0x2e060634, 0x0 }, /* 397 */ + { 0x2e060638, 0xfffff }, /* 398 */ + { 0x2e06063c, 0x0 }, /* 399 */ + { 0x2e060640, 0xfffff }, /* 400 */ + { 0x2e060644, 0x0 }, /* 401 */ + { 0x2e060648, 0xfffff }, /* 402 */ + { 0x2e06064c, 0x0 }, /* 403 */ + { 0x2e060650, 0xfffff }, /* 404 */ + { 0x2e060654, 0x0 }, /* 405 */ + { 0x2e060658, 0xfffff }, /* 406 */ + { 0x2e06065c, 0x0 }, /* 407 */ + { 0x2e060660, 0xfffff }, /* 408 */ + { 0x2e060664, 0x0 }, /* 409 */ + { 0x2e060668, 0xfffff }, /* 410 */ + { 0x2e06066c, 0x0 }, /* 411 */ + { 0x2e060670, 0xfffff }, /* 412 */ + { 0x2e060674, 0x0 }, /* 413 */ + { 0x2e060678, 0xfffff }, /* 414 */ + { 0x2e06067c, 0x0 }, /* 415 */ + { 0x2e060680, 0xfffff }, /* 416 */ + { 0x2e060684, 0x0 }, /* 417 */ + { 0x2e060688, 0xfffff }, /* 418 */ + { 0x2e06068c, 0x0 }, /* 419 */ + { 0x2e060690, 0xfffff }, /* 420 */ + { 0x2e060694, 0x0 }, /* 421 */ + { 0x2e060698, 0xfffff }, /* 422 */ + { 0x2e06069c, 0x0 }, /* 423 */ + { 0x2e0606a0, 0xfffff }, /* 424 */ + { 0x2e0606a4, 0x0 }, /* 425 */ + { 0x2e0606a8, 0xfffff }, /* 426 */ + { 0x2e0606ac, 0x0 }, /* 427 */ + { 0x2e0606b0, 0xfffff }, /* 428 */ + { 0x2e0606b4, 0x0 }, /* 429 */ + { 0x2e0606b8, 0xfffff }, /* 430 */ + { 0x2e0606bc, 0x0 }, /* 431 */ + { 0x2e0606c0, 0xfffff }, /* 432 */ + { 0x2e0606c4, 0x0 }, /* 433 */ + { 0x2e0606c8, 0xfffff }, /* 434 */ + { 0x2e0606cc, 0x0 }, /* 435 */ + { 0x2e0606d0, 0xfffff }, /* 436 */ + { 0x2e0606d4, 0x0 }, /* 437 */ + { 0x2e0606d8, 0xfffff }, /* 438 */ + { 0x2e0606dc, 0x0 }, /* 439 */ + { 0x2e0606e0, 0xfffff }, /* 440 */ + { 0x2e0606e4, 0x0 }, /* 441 */ + { 0x2e0606e8, 0x30fffff }, /* 442 */ + { 0x2e0606ec, 0xffffffff }, /* 443 */ + { 0x2e0606f0, 0x30000 }, /* 444 */ + { 0x2e0606f4, 0xffffffff }, /* 445 */ + { 0x2e0606f8, 0x30000 }, /* 446 */ + { 0x2e0606fc, 0xffffffff }, /* 447 */ + { 0x2e060700, 0x30000 }, /* 448 */ + { 0x2e060704, 0xffffffff }, /* 449 */ + { 0x2e060708, 0x30000 }, /* 450 */ + { 0x2e06070c, 0xffffffff }, /* 451 */ + { 0x2e060710, 0x30000 }, /* 452 */ + { 0x2e060714, 0xffffffff }, /* 453 */ + { 0x2e060718, 0x30000 }, /* 454 */ + { 0x2e06071c, 0xffffffff }, /* 455 */ + { 0x2e060720, 0x30000 }, /* 456 */ + { 0x2e060724, 0xffffffff }, /* 457 */ + { 0x2e060728, 0x30000 }, /* 458 */ + { 0x2e06072c, 0xffffffff }, /* 459 */ + { 0x2e060730, 0x30000 }, /* 460 */ + { 0x2e060734, 0xffffffff }, /* 461 */ + { 0x2e060738, 0x30000 }, /* 462 */ + { 0x2e06073c, 0xffffffff }, /* 463 */ + { 0x2e060740, 0x30000 }, /* 464 */ + { 0x2e060744, 0xffffffff }, /* 465 */ + { 0x2e060748, 0x30000 }, /* 466 */ + { 0x2e06074c, 0xffffffff }, /* 467 */ + { 0x2e060750, 0x30000 }, /* 468 */ + { 0x2e060754, 0xffffffff }, /* 469 */ + { 0x2e060758, 0x30000 }, /* 470 */ + { 0x2e06075c, 0xffffffff }, /* 471 */ + { 0x2e060760, 0x30000 }, /* 472 */ + { 0x2e060764, 0xffffffff }, /* 473 */ + { 0x2e060768, 0x30000 }, /* 474 */ + { 0x2e06076c, 0xffffffff }, /* 475 */ + { 0x2e060770, 0x30000 }, /* 476 */ + { 0x2e060774, 0xffffffff }, /* 477 */ + { 0x2e060778, 0x30000 }, /* 478 */ + { 0x2e06077c, 0xffffffff }, /* 479 */ + { 0x2e060780, 0x30000 }, /* 480 */ + { 0x2e060784, 0xffffffff }, /* 481 */ + { 0x2e060788, 0x30000 }, /* 482 */ + { 0x2e06078c, 0xffffffff }, /* 483 */ + { 0x2e060790, 0x30000 }, /* 484 */ + { 0x2e060794, 0xffffffff }, /* 485 */ + { 0x2e060798, 0x30000 }, /* 486 */ + { 0x2e06079c, 0xffffffff }, /* 487 */ + { 0x2e0607a0, 0x30000 }, /* 488 */ + { 0x2e0607a4, 0xffffffff }, /* 489 */ + { 0x2e0607a8, 0x30000 }, /* 490 */ + { 0x2e0607ac, 0xffffffff }, /* 491 */ + { 0x2e0607b0, 0x30000 }, /* 492 */ + { 0x2e0607b4, 0xffffffff }, /* 493 */ + { 0x2e0607b8, 0x30000 }, /* 494 */ + { 0x2e0607bc, 0xffffffff }, /* 495 */ + { 0x2e0607c0, 0x30000 }, /* 496 */ + { 0x2e0607c4, 0xffffffff }, /* 497 */ + { 0x2e0607c8, 0x30000 }, /* 498 */ + { 0x2e0607cc, 0xffffffff }, /* 499 */ + { 0x2e0607d0, 0x30000 }, /* 500 */ + { 0x2e0607d4, 0xffffffff }, /* 501 */ + { 0x2e0607d8, 0x30000 }, /* 502 */ + { 0x2e0607dc, 0xffffffff }, /* 503 */ + { 0x2e0607e0, 0x30000 }, /* 504 */ + { 0x2e0607e4, 0xffffffff }, /* 505 */ + { 0x2e0607e8, 0x30000 }, /* 506 */ + { 0x2e0607ec, 0xffffffff }, /* 507 */ + { 0x2e0607f0, 0x30000 }, /* 508 */ + { 0x2e0607f4, 0xffffffff }, /* 509 */ + { 0x2e0607f8, 0x30000 }, /* 510 */ + { 0x2e0607fc, 0xffffffff }, /* 511 */ + { 0x2e060800, 0x30000 }, /* 512 */ + { 0x2e060804, 0xffffffff }, /* 513 */ + { 0x2e060808, 0x30000 }, /* 514 */ + { 0x2e06080c, 0xffffffff }, /* 515 */ + { 0x2e060810, 0x30000 }, /* 516 */ + { 0x2e060814, 0xffffffff }, /* 517 */ + { 0x2e060818, 0x30000 }, /* 518 */ + { 0x2e06081c, 0xffffffff }, /* 519 */ + { 0x2e060820, 0x30000 }, /* 520 */ + { 0x2e060824, 0xffffffff }, /* 521 */ + { 0x2e060828, 0x30000 }, /* 522 */ + { 0x2e06082c, 0xffffffff }, /* 523 */ + { 0x2e060830, 0x30000 }, /* 524 */ + { 0x2e060834, 0xffffffff }, /* 525 */ + { 0x2e060838, 0x30000 }, /* 526 */ + { 0x2e06083c, 0xffffffff }, /* 527 */ + { 0x2e060840, 0x30000 }, /* 528 */ + { 0x2e060844, 0xffffffff }, /* 529 */ + { 0x2e060848, 0x30000 }, /* 530 */ + { 0x2e06084c, 0xffffffff }, /* 531 */ + { 0x2e060850, 0x30000 }, /* 532 */ + { 0x2e060854, 0xffffffff }, /* 533 */ + { 0x2e060858, 0x30000 }, /* 534 */ + { 0x2e06085c, 0xffffffff }, /* 535 */ + { 0x2e060860, 0x30000 }, /* 536 */ + { 0x2e060864, 0xffffffff }, /* 537 */ + { 0x2e060868, 0x30000 }, /* 538 */ + { 0x2e06086c, 0xffffffff }, /* 539 */ + { 0x2e060870, 0x30000 }, /* 540 */ + { 0x2e060874, 0xffffffff }, /* 541 */ + { 0x2e060878, 0x30000 }, /* 542 */ + { 0x2e06087c, 0xffffffff }, /* 543 */ + { 0x2e060880, 0x30000 }, /* 544 */ + { 0x2e060884, 0xffffffff }, /* 545 */ + { 0x2e060888, 0x30000 }, /* 546 */ + { 0x2e06088c, 0xffffffff }, /* 547 */ + { 0x2e060890, 0x30000 }, /* 548 */ + { 0x2e060894, 0xffffffff }, /* 549 */ + { 0x2e060898, 0x30000 }, /* 550 */ + { 0x2e06089c, 0xffffffff }, /* 551 */ + { 0x2e0608a0, 0x30000 }, /* 552 */ + { 0x2e0608a4, 0xffffffff }, /* 553 */ + { 0x2e0608a8, 0x30000 }, /* 554 */ + { 0x2e0608ac, 0xffffffff }, /* 555 */ + { 0x2e0608b0, 0x30000 }, /* 556 */ + { 0x2e0608b4, 0xffffffff }, /* 557 */ + { 0x2e0608b8, 0x30000 }, /* 558 */ + { 0x2e0608bc, 0xffffffff }, /* 559 */ + { 0x2e0608c0, 0x30000 }, /* 560 */ + { 0x2e0608c4, 0xffffffff }, /* 561 */ + { 0x2e0608c8, 0x30000 }, /* 562 */ + { 0x2e0608cc, 0xffffffff }, /* 563 */ + { 0x2e0608d0, 0x30000 }, /* 564 */ + { 0x2e0608d4, 0xffffffff }, /* 565 */ + { 0x2e0608d8, 0x30000 }, /* 566 */ + { 0x2e0608dc, 0xffffffff }, /* 567 */ + { 0x2e0608e0, 0x30000 }, /* 568 */ + { 0x2e0608e4, 0xffffffff }, /* 569 */ + { 0x2e0608e8, 0x32070000 }, /* 570 */ + { 0x2e0608ec, 0x1320001 }, /* 571 */ + { 0x2e0608f0, 0x13200 }, /* 572 */ + { 0x2e0608f4, 0x132 }, /* 573 */ + { 0x2e0608f8, 0x0 }, /* 574 */ + { 0x2e0608fc, 0x211b0000 }, /* 575 */ + { 0x2e060900, 0x1d }, /* 576 */ + { 0x2e060904, 0xa }, /* 577 */ + { 0x2e060908, 0x166 }, /* 578 */ + { 0x2e06090c, 0x200 }, /* 579 */ + { 0x2e060910, 0x200 }, /* 580 */ + { 0x2e060914, 0x200 }, /* 581 */ + { 0x2e060918, 0x200 }, /* 582 */ + { 0x2e06091c, 0x432 }, /* 583 */ + { 0x2e060920, 0xdfc }, /* 584 */ + { 0x2e060924, 0x204 }, /* 585 */ + { 0x2e060928, 0x1030 }, /* 586 */ + { 0x2e06092c, 0x200 }, /* 587 */ + { 0x2e060930, 0x200 }, /* 588 */ + { 0x2e060934, 0x200 }, /* 589 */ + { 0x2e060938, 0x200 }, /* 590 */ + { 0x2e06093c, 0x3090 }, /* 591 */ + { 0x2e060940, 0xa1e0 }, /* 592 */ + { 0x2e060944, 0x406 }, /* 593 */ + { 0x2e060948, 0x810 }, /* 594 */ + { 0x2e06094c, 0x200 }, /* 595 */ + { 0x2e060950, 0x200 }, /* 596 */ + { 0x2e060954, 0x200 }, /* 597 */ + { 0x2e060958, 0x200 }, /* 598 */ + { 0x2e06095c, 0x1830 }, /* 599 */ + { 0x2e060960, 0x50a0 }, /* 600 */ + { 0x2e060964, 0x2020204 }, /* 601 */ + { 0x2e060968, 0x2030202 }, /* 602 */ + { 0x2e06096c, 0x1000202 }, /* 603 */ + { 0x2e060970, 0x1000304 }, /* 604 */ + { 0x2e060974, 0x10105 }, /* 605 */ + { 0x2e060978, 0x10101 }, /* 606 */ + { 0x2e06097c, 0x10101 }, /* 607 */ + { 0x2e060980, 0x10001 }, /* 608 */ + { 0x2e060984, 0x101 }, /* 609 */ + { 0x2e060988, 0x2000201 }, /* 610 */ + { 0x2e06098c, 0x2010000 }, /* 611 */ + { 0x2e060990, 0x6000200 }, /* 612 */ + { 0x2e060994, 0x300060a }, /* 613 */ + { 0x2e060998, 0x200060c }, /* 614 */ + { 0x2e06099c, 0xf00 }, /* 615 */ + { 0x2e0609a0, 0xf000f }, /* 616 */ + { 0x2e0609a4, 0xf000f }, /* 617 */ + { 0x2e0609a8, 0xf000f }, /* 618 */ + { 0x2e0609ac, 0xf000f }, /* 619 */ + { 0x2e0609b0, 0xf000f }, /* 620 */ + { 0x2e0609b4, 0xf000f }, /* 621 */ + { 0x2e0609b8, 0xf000f }, /* 622 */ + { 0x2e0609bc, 0xf000f }, /* 623 */ + { 0x2e0609c0, 0xf000f }, /* 624 */ + { 0x2e0609c4, 0xf000f }, /* 625 */ + { 0x2e0609c8, 0xf000f }, /* 626 */ + { 0x2e0609cc, 0xf000f }, /* 627 */ + { 0x2e0609d0, 0xf000f }, /* 628 */ + { 0x2e0609d4, 0xf000f }, /* 629 */ + { 0x2e0609d8, 0xf000f }, /* 630 */ + { 0x2e0609dc, 0xf000f }, /* 631 */ + { 0x2e0609e0, 0xf000f }, /* 632 */ + { 0x2e0609e4, 0xf000f }, /* 633 */ + { 0x2e0609e8, 0xf000f }, /* 634 */ + { 0x2e0609ec, 0xf000f }, /* 635 */ + { 0x2e0609f0, 0xf000f }, /* 636 */ + { 0x2e0609f4, 0xf000f }, /* 637 */ + { 0x2e0609f8, 0xf000f }, /* 638 */ + { 0x2e0609fc, 0xf000f }, /* 639 */ + { 0x2e060a00, 0xf000f }, /* 640 */ + { 0x2e060a04, 0xf000f }, /* 641 */ + { 0x2e060a08, 0xf000f }, /* 642 */ + { 0x2e060a0c, 0xf000f }, /* 643 */ + { 0x2e060a10, 0xf000f }, /* 644 */ + { 0x2e060a14, 0xf000f }, /* 645 */ + { 0x2e060a18, 0xf000f }, /* 646 */ + { 0x2e060a1c, 0xf000f }, /* 647 */ + { 0x2e060a20, 0xf000f }, /* 648 */ + { 0x2e060a24, 0xf000f }, /* 649 */ + { 0x2e060a28, 0xf000f }, /* 650 */ + { 0x2e060a2c, 0xf000f }, /* 651 */ + { 0x2e060a30, 0xf000f }, /* 652 */ + { 0x2e060a34, 0xf000f }, /* 653 */ + { 0x2e060a38, 0xf000f }, /* 654 */ + { 0x2e060a3c, 0xf000f }, /* 655 */ + { 0x2e060a40, 0xf000f }, /* 656 */ + { 0x2e060a44, 0xf000f }, /* 657 */ + { 0x2e060a48, 0xf000f }, /* 658 */ + { 0x2e060a4c, 0xf000f }, /* 659 */ + { 0x2e060a50, 0xf000f }, /* 660 */ + { 0x2e060a54, 0xf000f }, /* 661 */ + { 0x2e060a58, 0xf000f }, /* 662 */ + { 0x2e060a5c, 0xf000f }, /* 663 */ + { 0x2e060a60, 0xf000f }, /* 664 */ + { 0x2e060a64, 0xf000f }, /* 665 */ + { 0x2e060a68, 0xf000f }, /* 666 */ + { 0x2e060a6c, 0xf000f }, /* 667 */ + { 0x2e060a70, 0xf000f }, /* 668 */ + { 0x2e060a74, 0xf000f }, /* 669 */ + { 0x2e060a78, 0xf000f }, /* 670 */ + { 0x2e060a7c, 0xf000f }, /* 671 */ + { 0x2e060a80, 0xf000f }, /* 672 */ + { 0x2e060a84, 0xf000f }, /* 673 */ + { 0x2e060a88, 0xf000f }, /* 674 */ + { 0x2e060a8c, 0xf000f }, /* 675 */ + { 0x2e060a90, 0xf000f }, /* 676 */ + { 0x2e060a94, 0xf000f }, /* 677 */ + { 0x2e060a98, 0xf000f }, /* 678 */ + { 0x2e060a9c, 0xf }, /* 679 */ +}; + +/** PI settings **/ +struct dram_cfg_param ddr_pi_cfg[] = { + { 0x2e062000, 0xb00 }, /* 0 */ + { 0x2e062004, 0xbeedb66f }, /* 1 */ + { 0x2e062008, 0xabef6bd }, /* 2 */ + { 0x2e06200c, 0x1001387 }, /* 3 */ + { 0x2e062010, 0x1 }, /* 4 */ + { 0x2e062014, 0x10064 }, /* 5 */ + { 0x2e062018, 0x0 }, /* 6 */ + { 0x2e06201c, 0x0 }, /* 7 */ + { 0x2e062020, 0x0 }, /* 8 */ + { 0x2e062024, 0x0 }, /* 9 */ + { 0x2e062028, 0x0 }, /* 10 */ + { 0x2e06202c, 0x101 }, /* 11 */ + { 0x2e062030, 0x3 }, /* 12 */ + { 0x2e062034, 0x50001 }, /* 13 */ + { 0x2e062038, 0x3030800 }, /* 14 */ + { 0x2e06203c, 0x1 }, /* 15 */ + { 0x2e062040, 0x5 }, /* 16 */ + { 0x2e062044, 0x0 }, /* 17 */ + { 0x2e062048, 0x0 }, /* 18 */ + { 0x2e06204c, 0x0 }, /* 19 */ + { 0x2e062050, 0x0 }, /* 20 */ + { 0x2e062054, 0x0 }, /* 21 */ + { 0x2e062058, 0x0 }, /* 22 */ + { 0x2e06205c, 0x0 }, /* 23 */ + { 0x2e062060, 0x0 }, /* 24 */ + { 0x2e062064, 0x1000000 }, /* 25 */ + { 0x2e062068, 0xa000001 }, /* 26 */ + { 0x2e06206c, 0x28 }, /* 27 */ + { 0x2e062070, 0x1 }, /* 28 */ + { 0x2e062074, 0x320005 }, /* 29 */ + { 0x2e062078, 0x0 }, /* 30 */ + { 0x2e06207c, 0x0 }, /* 31 */ + { 0x2e062080, 0x10102 }, /* 32 */ + { 0x2e062084, 0x1 }, /* 33 */ + { 0x2e062088, 0xaa }, /* 34 */ + { 0x2e06208c, 0x55 }, /* 35 */ + { 0x2e062090, 0xb5 }, /* 36 */ + { 0x2e062094, 0x4a }, /* 37 */ + { 0x2e062098, 0x56 }, /* 38 */ + { 0x2e06209c, 0xa9 }, /* 39 */ + { 0x2e0620a0, 0xa9 }, /* 40 */ + { 0x2e0620a4, 0xb5 }, /* 41 */ + { 0x2e0620a8, 0x10000 }, /* 42 */ + { 0x2e0620ac, 0x100 }, /* 43 */ + { 0x2e0620b0, 0x5050000 }, /* 44 */ + { 0x2e0620b4, 0x12 }, /* 45 */ + { 0x2e0620b8, 0x7d0 }, /* 46 */ + { 0x2e0620bc, 0x300 }, /* 47 */ + { 0x2e0620c0, 0x0 }, /* 48 */ + { 0x2e0620c4, 0x0 }, /* 49 */ + { 0x2e0620c8, 0x1000000 }, /* 50 */ + { 0x2e0620cc, 0x10101 }, /* 51 */ + { 0x2e0620d0, 0x0 }, /* 52 */ + { 0x2e0620d4, 0x0 }, /* 53 */ + { 0x2e0620d8, 0x10003 }, /* 54 */ + { 0x2e0620dc, 0x170500 }, /* 55 */ + { 0x2e0620e0, 0x0 }, /* 56 */ + { 0x2e0620e4, 0x0 }, /* 57 */ + { 0x2e0620e8, 0x0 }, /* 58 */ + { 0x2e0620ec, 0xa140a01 }, /* 59 */ + { 0x2e0620f0, 0x204010a }, /* 60 */ + { 0x2e0620f4, 0x21010 }, /* 61 */ + { 0x2e0620f8, 0x40401 }, /* 62 */ + { 0x2e0620fc, 0x10e0005 }, /* 63 */ + { 0x2e062100, 0x5000001 }, /* 64 */ + { 0x2e062104, 0x204 }, /* 65 */ + { 0x2e062108, 0x34 }, /* 66 */ + { 0x2e06210c, 0x0 }, /* 67 */ + { 0x2e062110, 0x0 }, /* 68 */ + { 0x2e062114, 0x1000000 }, /* 69 */ + { 0x2e062118, 0x1000000 }, /* 70 */ + { 0x2e06211c, 0x80200 }, /* 71 */ + { 0x2e062120, 0x2000200 }, /* 72 */ + { 0x2e062124, 0x1000100 }, /* 73 */ + { 0x2e062128, 0x1000000 }, /* 74 */ + { 0x2e06212c, 0x2000200 }, /* 75 */ + { 0x2e062130, 0x200 }, /* 76 */ + { 0x2e062134, 0x0 }, /* 77 */ + { 0x2e062138, 0x0 }, /* 78 */ + { 0x2e06213c, 0x0 }, /* 79 */ + { 0x2e062140, 0x0 }, /* 80 */ + { 0x2e062144, 0x0 }, /* 81 */ + { 0x2e062148, 0x0 }, /* 82 */ + { 0x2e06214c, 0x0 }, /* 83 */ + { 0x2e062150, 0x0 }, /* 84 */ + { 0x2e062154, 0x0 }, /* 85 */ + { 0x2e062158, 0x0 }, /* 86 */ + { 0x2e06215c, 0x0 }, /* 87 */ + { 0x2e062160, 0x0 }, /* 88 */ + { 0x2e062164, 0x400 }, /* 89 */ + { 0x2e062168, 0x2010000 }, /* 90 */ + { 0x2e06216c, 0x80103 }, /* 91 */ + { 0x2e062170, 0x0 }, /* 92 */ + { 0x2e062174, 0x10008 }, /* 93 */ + { 0x2e062178, 0x0 }, /* 94 */ + { 0x2e06217c, 0xaa00 }, /* 95 */ + { 0x2e062180, 0x0 }, /* 96 */ + { 0x2e062184, 0x0 }, /* 97 */ + { 0x2e062188, 0x10000 }, /* 98 */ + { 0x2e06218c, 0x0 }, /* 99 */ + { 0x2e062190, 0x0 }, /* 100 */ + { 0x2e062194, 0x0 }, /* 101 */ + { 0x2e062198, 0x0 }, /* 102 */ + { 0x2e06219c, 0x0 }, /* 103 */ + { 0x2e0621a0, 0x0 }, /* 104 */ + { 0x2e0621a4, 0x0 }, /* 105 */ + { 0x2e0621a8, 0x0 }, /* 106 */ + { 0x2e0621ac, 0x0 }, /* 107 */ + { 0x2e0621b0, 0x0 }, /* 108 */ + { 0x2e0621b4, 0x0 }, /* 109 */ + { 0x2e0621b8, 0x0 }, /* 110 */ + { 0x2e0621bc, 0x0 }, /* 111 */ + { 0x2e0621c0, 0x0 }, /* 112 */ + { 0x2e0621c4, 0x0 }, /* 113 */ + { 0x2e0621c8, 0x0 }, /* 114 */ + { 0x2e0621cc, 0x0 }, /* 115 */ + { 0x2e0621d0, 0x0 }, /* 116 */ + { 0x2e0621d4, 0x0 }, /* 117 */ + { 0x2e0621d8, 0x0 }, /* 118 */ + { 0x2e0621dc, 0x0 }, /* 119 */ + { 0x2e0621e0, 0x0 }, /* 120 */ + { 0x2e0621e4, 0x0 }, /* 121 */ + { 0x2e0621e8, 0x0 }, /* 122 */ + { 0x2e0621ec, 0x8 }, /* 123 */ + { 0x2e0621f0, 0x0 }, /* 124 */ + { 0x2e0621f4, 0x0 }, /* 125 */ + { 0x2e0621f8, 0x0 }, /* 126 */ + { 0x2e0621fc, 0x0 }, /* 127 */ + { 0x2e062200, 0x0 }, /* 128 */ + { 0x2e062204, 0x0 }, /* 129 */ + { 0x2e062208, 0x0 }, /* 130 */ + { 0x2e06220c, 0x0 }, /* 131 */ + { 0x2e062210, 0x0 }, /* 132 */ + { 0x2e062214, 0x0 }, /* 133 */ + { 0x2e062218, 0xf0000 }, /* 134 */ + { 0x2e06221c, 0xa }, /* 135 */ + { 0x2e062220, 0x19 }, /* 136 */ + { 0x2e062224, 0x0 }, /* 137 */ + { 0x2e062228, 0x100 }, /* 138 */ + { 0x2e06222c, 0x0 }, /* 139 */ + { 0x2e062230, 0x0 }, /* 140 */ + { 0x2e062234, 0x0 }, /* 141 */ + { 0x2e062238, 0x1000000 }, /* 142 */ + { 0x2e06223c, 0x10003 }, /* 143 */ + { 0x2e062240, 0x2000101 }, /* 144 */ + { 0x2e062244, 0x1030001 }, /* 145 */ + { 0x2e062248, 0x10400 }, /* 146 */ + { 0x2e06224c, 0x6000105 }, /* 147 */ + { 0x2e062250, 0x1070001 }, /* 148 */ + { 0x2e062254, 0x0 }, /* 149 */ + { 0x2e062258, 0x0 }, /* 150 */ + { 0x2e06225c, 0x0 }, /* 151 */ + { 0x2e062260, 0x10001 }, /* 152 */ + { 0x2e062264, 0x0 }, /* 153 */ + { 0x2e062268, 0x0 }, /* 154 */ + { 0x2e06226c, 0x0 }, /* 155 */ + { 0x2e062270, 0x0 }, /* 156 */ + { 0x2e062274, 0x401 }, /* 157 */ + { 0x2e062278, 0x0 }, /* 158 */ + { 0x2e06227c, 0x10000 }, /* 159 */ + { 0x2e062280, 0x0 }, /* 160 */ + { 0x2e062284, 0xb010000 }, /* 161 */ + { 0x2e062288, 0x6 }, /* 162 */ + { 0x2e06228c, 0x34 }, /* 163 */ + { 0x2e062290, 0x3c }, /* 164 */ + { 0x2e062294, 0x20036 }, /* 165 */ + { 0x2e062298, 0x2000200 }, /* 166 */ + { 0x2e06229c, 0x14060c04 }, /* 167 */ + { 0x2e0622a0, 0x90c04 }, /* 168 */ + { 0x2e0622a4, 0xb3 }, /* 169 */ + { 0x2e0622a8, 0x60 }, /* 170 */ + { 0x2e0622ac, 0x818 }, /* 171 */ + { 0x2e0622b0, 0x30 }, /* 172 */ + { 0x2e0622b4, 0x4000408 }, /* 173 */ + { 0x2e0622b8, 0x1010404 }, /* 174 */ + { 0x2e0622bc, 0x1501 }, /* 175 */ + { 0x2e0622c0, 0x18001a }, /* 176 */ + { 0x2e0622c4, 0x1000100 }, /* 177 */ + { 0x2e0622c8, 0x100 }, /* 178 */ + { 0x2e0622cc, 0x0 }, /* 179 */ + { 0x2e0622d0, 0x5030403 }, /* 180 */ + { 0x2e0622d4, 0x1010508 }, /* 181 */ + { 0x2e0622d8, 0x1010101 }, /* 182 */ + { 0x2e0622dc, 0x0 }, /* 183 */ + { 0x2e0622e0, 0x0 }, /* 184 */ + { 0x2e0622e4, 0x0 }, /* 185 */ + { 0x2e0622e8, 0x2040604 }, /* 186 */ + { 0x2e0622ec, 0x2020204 }, /* 187 */ + { 0x2e0622f0, 0x3102 }, /* 188 */ + { 0x2e0622f4, 0x360009 }, /* 189 */ + { 0x2e0622f8, 0x34000e }, /* 190 */ + { 0x2e0622fc, 0x101000c }, /* 191 */ + { 0x2e062300, 0xd0101 }, /* 192 */ + { 0x2e062304, 0x1008601 }, /* 193 */ + { 0x2e062308, 0x1000043 }, /* 194 */ + { 0x2e06230c, 0xe000e }, /* 195 */ + { 0x2e062310, 0x870100 }, /* 196 */ + { 0x2e062314, 0x1000087 }, /* 197 */ + { 0x2e062318, 0x440044 }, /* 198 */ + { 0x2e06231c, 0x220f220f }, /* 199 */ + { 0x2e062320, 0x101220f }, /* 200 */ + { 0x2e062324, 0xa070601 }, /* 201 */ + { 0x2e062328, 0xa07070d }, /* 202 */ + { 0x2e06232c, 0xa07060d }, /* 203 */ + { 0x2e062330, 0xc00d }, /* 204 */ + { 0x2e062334, 0xc01000 }, /* 205 */ + { 0x2e062338, 0xc01000 }, /* 206 */ + { 0x2e06233c, 0x21000 }, /* 207 */ + { 0x2e062340, 0x14000d }, /* 208 */ + { 0x2e062344, 0x110086 }, /* 209 */ + { 0x2e062348, 0x150043 }, /* 210 */ + { 0x2e06234c, 0x220f0056 }, /* 211 */ + { 0x2e062350, 0x101 }, /* 212 */ + { 0x2e062354, 0x560019 }, /* 213 */ + { 0x2e062358, 0x101220f }, /* 214 */ + { 0x2e06235c, 0x1500 }, /* 215 */ + { 0x2e062360, 0x220f0056 }, /* 216 */ + { 0x2e062364, 0x8000101 }, /* 217 */ + { 0x2e062368, 0x4050403 }, /* 218 */ + { 0x2e06236c, 0x5eb }, /* 219 */ + { 0x2e062370, 0x20010003 }, /* 220 */ + { 0x2e062374, 0x80a0a03 }, /* 221 */ + { 0x2e062378, 0xb070a0c }, /* 222 */ + { 0x2e06237c, 0x41d0 }, /* 223 */ + { 0x2e062380, 0x20020017 }, /* 224 */ + { 0x2e062384, 0x80a0a08 }, /* 225 */ + { 0x2e062388, 0x6050506 }, /* 226 */ + { 0x2e06238c, 0x20e8 }, /* 227 */ + { 0x2e062390, 0x2001000c }, /* 228 */ + { 0x2e062394, 0xa0a04 }, /* 229 */ + { 0x2e062398, 0x166 }, /* 230 */ + { 0x2e06239c, 0xdfc }, /* 231 */ + { 0x2e0623a0, 0x1030 }, /* 232 */ + { 0x2e0623a4, 0xa1e0 }, /* 233 */ + { 0x2e0623a8, 0x810 }, /* 234 */ + { 0x2e0623ac, 0x50a0 }, /* 235 */ + { 0x2e0623b0, 0x64000a }, /* 236 */ + { 0x2e0623b4, 0x3030032 }, /* 237 */ + { 0x2e0623b8, 0x258103 }, /* 238 */ + { 0x2e0623bc, 0x17702 }, /* 239 */ + { 0x2e0623c0, 0x5 }, /* 240 */ + { 0x2e0623c4, 0x61 }, /* 241 */ + { 0x2e0623c8, 0xa }, /* 242 */ + { 0x2e0623cc, 0x1a0ab }, /* 243 */ + { 0x2e0623d0, 0x17702 }, /* 244 */ + { 0x2e0623d4, 0x5 }, /* 245 */ + { 0x2e0623d8, 0x42b }, /* 246 */ + { 0x2e0623dc, 0x64 }, /* 247 */ + { 0x2e0623e0, 0xd056 }, /* 248 */ + { 0x2e0623e4, 0x17702 }, /* 249 */ + { 0x2e0623e8, 0x5 }, /* 250 */ + { 0x2e0623ec, 0x216 }, /* 251 */ + { 0x2e0623f0, 0x1000032 }, /* 252 */ + { 0x2e0623f4, 0x310040 }, /* 253 */ + { 0x2e0623f8, 0x10002 }, /* 254 */ + { 0x2e0623fc, 0x2160040 }, /* 255 */ + { 0x2e062400, 0x10010 }, /* 256 */ + { 0x2e062404, 0x10b0040 }, /* 257 */ + { 0x2e062408, 0x308 }, /* 258 */ + { 0x2e06240c, 0xe001b }, /* 259 */ + { 0x2e062410, 0x1010101 }, /* 260 */ + { 0x2e062414, 0x2020101 }, /* 261 */ + { 0x2e062418, 0x8080404 }, /* 262 */ + { 0x2e06241c, 0x5508 }, /* 263 */ + { 0x2e062420, 0x83c5a00 }, /* 264 */ + { 0x2e062424, 0x55 }, /* 265 */ + { 0x2e062428, 0x55083c5a }, /* 266 */ + { 0x2e06242c, 0x5a000000 }, /* 267 */ + { 0x2e062430, 0x55083c }, /* 268 */ + { 0x2e062434, 0x3c5a0000 }, /* 269 */ + { 0x2e062438, 0xf0e0d0c }, /* 270 */ + { 0x2e06243c, 0xb0a0908 }, /* 271 */ + { 0x2e062440, 0x7060504 }, /* 272 */ + { 0x2e062444, 0x3020100 }, /* 273 */ + { 0x2e062448, 0x0 }, /* 274 */ + { 0x2e06244c, 0x2020101 }, /* 275 */ + { 0x2e062450, 0x8080404 }, /* 276 */ + { 0x2e062454, 0x300004 }, /* 277 */ + { 0x2e062458, 0x14004d4d }, /* 278 */ + { 0x2e06245c, 0x19443009 }, /* 279 */ + { 0x2e062460, 0x40419 }, /* 280 */ + { 0x2e062464, 0x19194430 }, /* 281 */ + { 0x2e062468, 0x30000404 }, /* 282 */ + { 0x2e06246c, 0x44d4d00 }, /* 283 */ + { 0x2e062470, 0x44300914 }, /* 284 */ + { 0x2e062474, 0x4041919 }, /* 285 */ + { 0x2e062478, 0x19443000 }, /* 286 */ + { 0x2e06247c, 0x40419 }, /* 287 */ + { 0x2e062480, 0x4d4d0030 }, /* 288 */ + { 0x2e062484, 0x30091404 }, /* 289 */ + { 0x2e062488, 0x4191944 }, /* 290 */ + { 0x2e06248c, 0x44300004 }, /* 291 */ + { 0x2e062490, 0x4041919 }, /* 292 */ + { 0x2e062494, 0x4d003000 }, /* 293 */ + { 0x2e062498, 0x914044d }, /* 294 */ + { 0x2e06249c, 0x19194430 }, /* 295 */ + { 0x2e0624a0, 0x30000404 }, /* 296 */ + { 0x2e0624a4, 0x4191944 }, /* 297 */ +}; + +/** PHY_F1 settings **/ +struct dram_cfg_param ddr_phy_f1_cfg[] = { + { 0x2e064000, 0x4f0 }, /* 0 */ + { 0x2e064004, 0x0 }, /* 1 */ + { 0x2e064008, 0x1030200 }, /* 2 */ + { 0x2e06400c, 0x0 }, /* 3 */ + { 0x2e064010, 0x0 }, /* 4 */ + { 0x2e064014, 0x3000000 }, /* 5 */ + { 0x2e064018, 0x1000001 }, /* 6 */ + { 0x2e06401c, 0x3000400 }, /* 7 */ + { 0x2e064020, 0x1 }, /* 8 */ + { 0x2e064024, 0x1 }, /* 9 */ + { 0x2e064028, 0x0 }, /* 10 */ + { 0x2e06402c, 0x0 }, /* 11 */ + { 0x2e064030, 0x10000 }, /* 12 */ + { 0x2e064034, 0x0 }, /* 13 */ + { 0x2e064038, 0xc00004 }, /* 14 */ + { 0x2e06403c, 0xcc0008 }, /* 15 */ + { 0x2e064040, 0x660601 }, /* 16 */ + { 0x2e064044, 0x3 }, /* 17 */ + { 0x2e064048, 0x0 }, /* 18 */ + { 0x2e06404c, 0x1 }, /* 19 */ + { 0x2e064050, 0xaaaa }, /* 20 */ + { 0x2e064054, 0x5555 }, /* 21 */ + { 0x2e064058, 0xb5b5 }, /* 22 */ + { 0x2e06405c, 0x4a4a }, /* 23 */ + { 0x2e064060, 0x5656 }, /* 24 */ + { 0x2e064064, 0xa9a9 }, /* 25 */ + { 0x2e064068, 0xb7b7 }, /* 26 */ + { 0x2e06406c, 0x4848 }, /* 27 */ + { 0x2e064070, 0x0 }, /* 28 */ + { 0x2e064074, 0x0 }, /* 29 */ + { 0x2e064078, 0x8000000 }, /* 30 */ + { 0x2e06407c, 0x4010008 }, /* 31 */ + { 0x2e064080, 0x408 }, /* 32 */ + { 0x2e064084, 0x3102000 }, /* 33 */ + { 0x2e064088, 0xc0020 }, /* 34 */ + { 0x2e06408c, 0x10000 }, /* 35 */ + { 0x2e064090, 0x55555555 }, /* 36 */ + { 0x2e064094, 0xaaaaaaaa }, /* 37 */ + { 0x2e064098, 0x55555555 }, /* 38 */ + { 0x2e06409c, 0xaaaaaaaa }, /* 39 */ + { 0x2e0640a0, 0x5555 }, /* 40 */ + { 0x2e0640a4, 0x1000100 }, /* 41 */ + { 0x2e0640a8, 0x800180 }, /* 42 */ + { 0x2e0640ac, 0x1 }, /* 43 */ + { 0x2e0640b0, 0x0 }, /* 44 */ + { 0x2e0640b4, 0x0 }, /* 45 */ + { 0x2e0640b8, 0x0 }, /* 46 */ + { 0x2e0640bc, 0x0 }, /* 47 */ + { 0x2e0640c0, 0x0 }, /* 48 */ + { 0x2e0640c4, 0x0 }, /* 49 */ + { 0x2e0640c8, 0x0 }, /* 50 */ + { 0x2e0640cc, 0x0 }, /* 51 */ + { 0x2e0640d0, 0x0 }, /* 52 */ + { 0x2e0640d4, 0x0 }, /* 53 */ + { 0x2e0640d8, 0x0 }, /* 54 */ + { 0x2e0640dc, 0x0 }, /* 55 */ + { 0x2e0640e0, 0x0 }, /* 56 */ + { 0x2e0640e4, 0x0 }, /* 57 */ + { 0x2e0640e8, 0x0 }, /* 58 */ + { 0x2e0640ec, 0x0 }, /* 59 */ + { 0x2e0640f0, 0x0 }, /* 60 */ + { 0x2e0640f4, 0x0 }, /* 61 */ + { 0x2e0640f8, 0x0 }, /* 62 */ + { 0x2e0640fc, 0x0 }, /* 63 */ + { 0x2e064100, 0x4 }, /* 64 */ + { 0x2e064104, 0x0 }, /* 65 */ + { 0x2e064108, 0x0 }, /* 66 */ + { 0x2e06410c, 0x0 }, /* 67 */ + { 0x2e064110, 0x0 }, /* 68 */ + { 0x2e064114, 0x0 }, /* 69 */ + { 0x2e064118, 0x0 }, /* 70 */ + { 0x2e06411c, 0x41f07ff }, /* 71 */ + { 0x2e064120, 0x1 }, /* 72 */ + { 0x2e064124, 0x1cc0800 }, /* 73 */ + { 0x2e064128, 0x3003cc08 }, /* 74 */ + { 0x2e06412c, 0x2000014e }, /* 75 */ + { 0x2e064130, 0x7ff0200 }, /* 76 */ + { 0x2e064134, 0x301 }, /* 77 */ + { 0x2e064138, 0x0 }, /* 78 */ + { 0x2e06413c, 0x0 }, /* 79 */ + { 0x2e064140, 0x30000 }, /* 80 */ + { 0x2e064144, 0x0 }, /* 81 */ + { 0x2e064148, 0x0 }, /* 82 */ + { 0x2e06414c, 0x0 }, /* 83 */ + { 0x2e064150, 0x0 }, /* 84 */ + { 0x2e064154, 0x2000000 }, /* 85 */ + { 0x2e064158, 0x51515042 }, /* 86 */ + { 0x2e06415c, 0x31c06000 }, /* 87 */ + { 0x2e064160, 0x9bf007f }, /* 88 */ + { 0x2e064164, 0xc0c001 }, /* 89 */ + { 0x2e064168, 0x3020000 }, /* 90 */ + { 0x2e06416c, 0x10001000 }, /* 91 */ + { 0x2e064170, 0xc043e42 }, /* 92 */ + { 0x2e064174, 0xf0c1701 }, /* 93 */ + { 0x2e064178, 0x1000140 }, /* 94 */ + { 0x2e06417c, 0xc000120 }, /* 95 */ + { 0x2e064180, 0x188 }, /* 96 */ + { 0x2e064184, 0x3200203 }, /* 97 */ + { 0x2e064188, 0x56417032 }, /* 98 */ + { 0x2e06418c, 0x8 }, /* 99 */ + { 0x2e064190, 0x3080308 }, /* 100 */ + { 0x2e064194, 0x3080308 }, /* 101 */ + { 0x2e064198, 0x3080308 }, /* 102 */ + { 0x2e06419c, 0x3080308 }, /* 103 */ + { 0x2e0641a0, 0x308 }, /* 104 */ + { 0x2e0641a4, 0x8000 }, /* 105 */ + { 0x2e0641a8, 0x800080 }, /* 106 */ + { 0x2e0641ac, 0x800080 }, /* 107 */ + { 0x2e0641b0, 0x800080 }, /* 108 */ + { 0x2e0641b4, 0x800080 }, /* 109 */ + { 0x2e0641b8, 0x800080 }, /* 110 */ + { 0x2e0641bc, 0x800080 }, /* 111 */ + { 0x2e0641c0, 0x800080 }, /* 112 */ + { 0x2e0641c4, 0x800080 }, /* 113 */ + { 0x2e0641c8, 0x1c40080 }, /* 114 */ + { 0x2e0641cc, 0x1a00001 }, /* 115 */ + { 0x2e0641d0, 0x0 }, /* 116 */ + { 0x2e0641d4, 0x10000 }, /* 117 */ + { 0x2e0641d8, 0x80200 }, /* 118 */ + { 0x2e0641dc, 0x0 }, /* 119 */ + { 0x2e0641e0, 0x0 }, /* 120 */ + { 0x2e064400, 0x4f0 }, /* 256 */ + { 0x2e064404, 0x0 }, /* 257 */ + { 0x2e064408, 0x1030200 }, /* 258 */ + { 0x2e06440c, 0x0 }, /* 259 */ + { 0x2e064410, 0x0 }, /* 260 */ + { 0x2e064414, 0x3000000 }, /* 261 */ + { 0x2e064418, 0x1000001 }, /* 262 */ + { 0x2e06441c, 0x3000400 }, /* 263 */ + { 0x2e064420, 0x1 }, /* 264 */ + { 0x2e064424, 0x1 }, /* 265 */ + { 0x2e064428, 0x0 }, /* 266 */ + { 0x2e06442c, 0x0 }, /* 267 */ + { 0x2e064430, 0x10000 }, /* 268 */ + { 0x2e064434, 0x0 }, /* 269 */ + { 0x2e064438, 0xc00004 }, /* 270 */ + { 0x2e06443c, 0xcc0008 }, /* 271 */ + { 0x2e064440, 0x660601 }, /* 272 */ + { 0x2e064444, 0x3 }, /* 273 */ + { 0x2e064448, 0x0 }, /* 274 */ + { 0x2e06444c, 0x1 }, /* 275 */ + { 0x2e064450, 0xaaaa }, /* 276 */ + { 0x2e064454, 0x5555 }, /* 277 */ + { 0x2e064458, 0xb5b5 }, /* 278 */ + { 0x2e06445c, 0x4a4a }, /* 279 */ + { 0x2e064460, 0x5656 }, /* 280 */ + { 0x2e064464, 0xa9a9 }, /* 281 */ + { 0x2e064468, 0xb7b7 }, /* 282 */ + { 0x2e06446c, 0x4848 }, /* 283 */ + { 0x2e064470, 0x0 }, /* 284 */ + { 0x2e064474, 0x0 }, /* 285 */ + { 0x2e064478, 0x8000000 }, /* 286 */ + { 0x2e06447c, 0x4010008 }, /* 287 */ + { 0x2e064480, 0x408 }, /* 288 */ + { 0x2e064484, 0x3102000 }, /* 289 */ + { 0x2e064488, 0xc0020 }, /* 290 */ + { 0x2e06448c, 0x10000 }, /* 291 */ + { 0x2e064490, 0x55555555 }, /* 292 */ + { 0x2e064494, 0xaaaaaaaa }, /* 293 */ + { 0x2e064498, 0x55555555 }, /* 294 */ + { 0x2e06449c, 0xaaaaaaaa }, /* 295 */ + { 0x2e0644a0, 0x5555 }, /* 296 */ + { 0x2e0644a4, 0x1000100 }, /* 297 */ + { 0x2e0644a8, 0x800180 }, /* 298 */ + { 0x2e0644ac, 0x0 }, /* 299 */ + { 0x2e0644b0, 0x0 }, /* 300 */ + { 0x2e0644b4, 0x0 }, /* 301 */ + { 0x2e0644b8, 0x0 }, /* 302 */ + { 0x2e0644bc, 0x0 }, /* 303 */ + { 0x2e0644c0, 0x0 }, /* 304 */ + { 0x2e0644c4, 0x0 }, /* 305 */ + { 0x2e0644c8, 0x0 }, /* 306 */ + { 0x2e0644cc, 0x0 }, /* 307 */ + { 0x2e0644d0, 0x0 }, /* 308 */ + { 0x2e0644d4, 0x0 }, /* 309 */ + { 0x2e0644d8, 0x0 }, /* 310 */ + { 0x2e0644dc, 0x0 }, /* 311 */ + { 0x2e0644e0, 0x0 }, /* 312 */ + { 0x2e0644e4, 0x0 }, /* 313 */ + { 0x2e0644e8, 0x0 }, /* 314 */ + { 0x2e0644ec, 0x0 }, /* 315 */ + { 0x2e0644f0, 0x0 }, /* 316 */ + { 0x2e0644f4, 0x0 }, /* 317 */ + { 0x2e0644f8, 0x0 }, /* 318 */ + { 0x2e0644fc, 0x0 }, /* 319 */ + { 0x2e064500, 0x4 }, /* 320 */ + { 0x2e064504, 0x0 }, /* 321 */ + { 0x2e064508, 0x0 }, /* 322 */ + { 0x2e06450c, 0x0 }, /* 323 */ + { 0x2e064510, 0x0 }, /* 324 */ + { 0x2e064514, 0x0 }, /* 325 */ + { 0x2e064518, 0x0 }, /* 326 */ + { 0x2e06451c, 0x41f07ff }, /* 327 */ + { 0x2e064520, 0x1 }, /* 328 */ + { 0x2e064524, 0x1cc0800 }, /* 329 */ + { 0x2e064528, 0x3003cc08 }, /* 330 */ + { 0x2e06452c, 0x2000014e }, /* 331 */ + { 0x2e064530, 0x7ff0200 }, /* 332 */ + { 0x2e064534, 0x301 }, /* 333 */ + { 0x2e064538, 0x0 }, /* 334 */ + { 0x2e06453c, 0x0 }, /* 335 */ + { 0x2e064540, 0x30000 }, /* 336 */ + { 0x2e064544, 0x0 }, /* 337 */ + { 0x2e064548, 0x0 }, /* 338 */ + { 0x2e06454c, 0x0 }, /* 339 */ + { 0x2e064550, 0x0 }, /* 340 */ + { 0x2e064554, 0x2000000 }, /* 341 */ + { 0x2e064558, 0x51515042 }, /* 342 */ + { 0x2e06455c, 0x31c06000 }, /* 343 */ + { 0x2e064560, 0x9bf007f }, /* 344 */ + { 0x2e064564, 0xc0c001 }, /* 345 */ + { 0x2e064568, 0x3020000 }, /* 346 */ + { 0x2e06456c, 0x10001000 }, /* 347 */ + { 0x2e064570, 0xc043e42 }, /* 348 */ + { 0x2e064574, 0xf0c1701 }, /* 349 */ + { 0x2e064578, 0x1000140 }, /* 350 */ + { 0x2e06457c, 0xc000120 }, /* 351 */ + { 0x2e064580, 0x188 }, /* 352 */ + { 0x2e064584, 0x3200203 }, /* 353 */ + { 0x2e064588, 0x30217465 }, /* 354 */ + { 0x2e06458c, 0x8 }, /* 355 */ + { 0x2e064590, 0x3080308 }, /* 356 */ + { 0x2e064594, 0x3080308 }, /* 357 */ + { 0x2e064598, 0x3080308 }, /* 358 */ + { 0x2e06459c, 0x3080308 }, /* 359 */ + { 0x2e0645a0, 0x308 }, /* 360 */ + { 0x2e0645a4, 0x8000 }, /* 361 */ + { 0x2e0645a8, 0x800080 }, /* 362 */ + { 0x2e0645ac, 0x800080 }, /* 363 */ + { 0x2e0645b0, 0x800080 }, /* 364 */ + { 0x2e0645b4, 0x800080 }, /* 365 */ + { 0x2e0645b8, 0x800080 }, /* 366 */ + { 0x2e0645bc, 0x800080 }, /* 367 */ + { 0x2e0645c0, 0x800080 }, /* 368 */ + { 0x2e0645c4, 0x800080 }, /* 369 */ + { 0x2e0645c8, 0x1c40080 }, /* 370 */ + { 0x2e0645cc, 0x1a00001 }, /* 371 */ + { 0x2e0645d0, 0x0 }, /* 372 */ + { 0x2e0645d4, 0x10000 }, /* 373 */ + { 0x2e0645d8, 0x80200 }, /* 374 */ + { 0x2e0645dc, 0x0 }, /* 375 */ + { 0x2e0645e0, 0x0 }, /* 376 */ + { 0x2e064800, 0x4f0 }, /* 512 */ + { 0x2e064804, 0x0 }, /* 513 */ + { 0x2e064808, 0x1030200 }, /* 514 */ + { 0x2e06480c, 0x0 }, /* 515 */ + { 0x2e064810, 0x0 }, /* 516 */ + { 0x2e064814, 0x3000000 }, /* 517 */ + { 0x2e064818, 0x1000001 }, /* 518 */ + { 0x2e06481c, 0x3000400 }, /* 519 */ + { 0x2e064820, 0x1 }, /* 520 */ + { 0x2e064824, 0x1 }, /* 521 */ + { 0x2e064828, 0x0 }, /* 522 */ + { 0x2e06482c, 0x0 }, /* 523 */ + { 0x2e064830, 0x10000 }, /* 524 */ + { 0x2e064834, 0x0 }, /* 525 */ + { 0x2e064838, 0xc00004 }, /* 526 */ + { 0x2e06483c, 0xcc0008 }, /* 527 */ + { 0x2e064840, 0x660601 }, /* 528 */ + { 0x2e064844, 0x3 }, /* 529 */ + { 0x2e064848, 0x0 }, /* 530 */ + { 0x2e06484c, 0x1 }, /* 531 */ + { 0x2e064850, 0xaaaa }, /* 532 */ + { 0x2e064854, 0x5555 }, /* 533 */ + { 0x2e064858, 0xb5b5 }, /* 534 */ + { 0x2e06485c, 0x4a4a }, /* 535 */ + { 0x2e064860, 0x5656 }, /* 536 */ + { 0x2e064864, 0xa9a9 }, /* 537 */ + { 0x2e064868, 0xb7b7 }, /* 538 */ + { 0x2e06486c, 0x4848 }, /* 539 */ + { 0x2e064870, 0x0 }, /* 540 */ + { 0x2e064874, 0x0 }, /* 541 */ + { 0x2e064878, 0x8000000 }, /* 542 */ + { 0x2e06487c, 0x4010008 }, /* 543 */ + { 0x2e064880, 0x408 }, /* 544 */ + { 0x2e064884, 0x3102000 }, /* 545 */ + { 0x2e064888, 0xc0020 }, /* 546 */ + { 0x2e06488c, 0x10000 }, /* 547 */ + { 0x2e064890, 0x55555555 }, /* 548 */ + { 0x2e064894, 0xaaaaaaaa }, /* 549 */ + { 0x2e064898, 0x55555555 }, /* 550 */ + { 0x2e06489c, 0xaaaaaaaa }, /* 551 */ + { 0x2e0648a0, 0x5555 }, /* 552 */ + { 0x2e0648a4, 0x1000100 }, /* 553 */ + { 0x2e0648a8, 0x800180 }, /* 554 */ + { 0x2e0648ac, 0x1 }, /* 555 */ + { 0x2e0648b0, 0x0 }, /* 556 */ + { 0x2e0648b4, 0x0 }, /* 557 */ + { 0x2e0648b8, 0x0 }, /* 558 */ + { 0x2e0648bc, 0x0 }, /* 559 */ + { 0x2e0648c0, 0x0 }, /* 560 */ + { 0x2e0648c4, 0x0 }, /* 561 */ + { 0x2e0648c8, 0x0 }, /* 562 */ + { 0x2e0648cc, 0x0 }, /* 563 */ + { 0x2e0648d0, 0x0 }, /* 564 */ + { 0x2e0648d4, 0x0 }, /* 565 */ + { 0x2e0648d8, 0x0 }, /* 566 */ + { 0x2e0648dc, 0x0 }, /* 567 */ + { 0x2e0648e0, 0x0 }, /* 568 */ + { 0x2e0648e4, 0x0 }, /* 569 */ + { 0x2e0648e8, 0x0 }, /* 570 */ + { 0x2e0648ec, 0x0 }, /* 571 */ + { 0x2e0648f0, 0x0 }, /* 572 */ + { 0x2e0648f4, 0x0 }, /* 573 */ + { 0x2e0648f8, 0x0 }, /* 574 */ + { 0x2e0648fc, 0x0 }, /* 575 */ + { 0x2e064900, 0x4 }, /* 576 */ + { 0x2e064904, 0x0 }, /* 577 */ + { 0x2e064908, 0x0 }, /* 578 */ + { 0x2e06490c, 0x0 }, /* 579 */ + { 0x2e064910, 0x0 }, /* 580 */ + { 0x2e064914, 0x0 }, /* 581 */ + { 0x2e064918, 0x0 }, /* 582 */ + { 0x2e06491c, 0x41f07ff }, /* 583 */ + { 0x2e064920, 0x1 }, /* 584 */ + { 0x2e064924, 0x1cc0800 }, /* 585 */ + { 0x2e064928, 0x3003cc08 }, /* 586 */ + { 0x2e06492c, 0x2000014e }, /* 587 */ + { 0x2e064930, 0x7ff0200 }, /* 588 */ + { 0x2e064934, 0x301 }, /* 589 */ + { 0x2e064938, 0x0 }, /* 590 */ + { 0x2e06493c, 0x0 }, /* 591 */ + { 0x2e064940, 0x30000 }, /* 592 */ + { 0x2e064944, 0x0 }, /* 593 */ + { 0x2e064948, 0x0 }, /* 594 */ + { 0x2e06494c, 0x0 }, /* 595 */ + { 0x2e064950, 0x0 }, /* 596 */ + { 0x2e064954, 0x2000000 }, /* 597 */ + { 0x2e064958, 0x51515042 }, /* 598 */ + { 0x2e06495c, 0x31c06000 }, /* 599 */ + { 0x2e064960, 0x9bf007f }, /* 600 */ + { 0x2e064964, 0xc0c001 }, /* 601 */ + { 0x2e064968, 0x3020000 }, /* 602 */ + { 0x2e06496c, 0x10001000 }, /* 603 */ + { 0x2e064970, 0xc043e42 }, /* 604 */ + { 0x2e064974, 0xf0c1701 }, /* 605 */ + { 0x2e064978, 0x1000140 }, /* 606 */ + { 0x2e06497c, 0xc000120 }, /* 607 */ + { 0x2e064980, 0x188 }, /* 608 */ + { 0x2e064984, 0x3200203 }, /* 609 */ + { 0x2e064988, 0x75436012 }, /* 610 */ + { 0x2e06498c, 0x8 }, /* 611 */ + { 0x2e064990, 0x3080308 }, /* 612 */ + { 0x2e064994, 0x3080308 }, /* 613 */ + { 0x2e064998, 0x3080308 }, /* 614 */ + { 0x2e06499c, 0x3080308 }, /* 615 */ + { 0x2e0649a0, 0x308 }, /* 616 */ + { 0x2e0649a4, 0x8000 }, /* 617 */ + { 0x2e0649a8, 0x800080 }, /* 618 */ + { 0x2e0649ac, 0x800080 }, /* 619 */ + { 0x2e0649b0, 0x800080 }, /* 620 */ + { 0x2e0649b4, 0x800080 }, /* 621 */ + { 0x2e0649b8, 0x800080 }, /* 622 */ + { 0x2e0649bc, 0x800080 }, /* 623 */ + { 0x2e0649c0, 0x800080 }, /* 624 */ + { 0x2e0649c4, 0x800080 }, /* 625 */ + { 0x2e0649c8, 0x1c40080 }, /* 626 */ + { 0x2e0649cc, 0x1a00001 }, /* 627 */ + { 0x2e0649d0, 0x0 }, /* 628 */ + { 0x2e0649d4, 0x10000 }, /* 629 */ + { 0x2e0649d8, 0x80200 }, /* 630 */ + { 0x2e0649dc, 0x0 }, /* 631 */ + { 0x2e0649e0, 0x0 }, /* 632 */ + { 0x2e064c00, 0x4f0 }, /* 768 */ + { 0x2e064c04, 0x0 }, /* 769 */ + { 0x2e064c08, 0x1030200 }, /* 770 */ + { 0x2e064c0c, 0x0 }, /* 771 */ + { 0x2e064c10, 0x0 }, /* 772 */ + { 0x2e064c14, 0x3000000 }, /* 773 */ + { 0x2e064c18, 0x1000001 }, /* 774 */ + { 0x2e064c1c, 0x3000400 }, /* 775 */ + { 0x2e064c20, 0x1 }, /* 776 */ + { 0x2e064c24, 0x1 }, /* 777 */ + { 0x2e064c28, 0x0 }, /* 778 */ + { 0x2e064c2c, 0x0 }, /* 779 */ + { 0x2e064c30, 0x10000 }, /* 780 */ + { 0x2e064c34, 0x0 }, /* 781 */ + { 0x2e064c38, 0xc00004 }, /* 782 */ + { 0x2e064c3c, 0xcc0008 }, /* 783 */ + { 0x2e064c40, 0x660601 }, /* 784 */ + { 0x2e064c44, 0x3 }, /* 785 */ + { 0x2e064c48, 0x0 }, /* 786 */ + { 0x2e064c4c, 0x1 }, /* 787 */ + { 0x2e064c50, 0xaaaa }, /* 788 */ + { 0x2e064c54, 0x5555 }, /* 789 */ + { 0x2e064c58, 0xb5b5 }, /* 790 */ + { 0x2e064c5c, 0x4a4a }, /* 791 */ + { 0x2e064c60, 0x5656 }, /* 792 */ + { 0x2e064c64, 0xa9a9 }, /* 793 */ + { 0x2e064c68, 0xb7b7 }, /* 794 */ + { 0x2e064c6c, 0x4848 }, /* 795 */ + { 0x2e064c70, 0x0 }, /* 796 */ + { 0x2e064c74, 0x0 }, /* 797 */ + { 0x2e064c78, 0x8000000 }, /* 798 */ + { 0x2e064c7c, 0x4010008 }, /* 799 */ + { 0x2e064c80, 0x408 }, /* 800 */ + { 0x2e064c84, 0x3102000 }, /* 801 */ + { 0x2e064c88, 0xc0020 }, /* 802 */ + { 0x2e064c8c, 0x10000 }, /* 803 */ + { 0x2e064c90, 0x55555555 }, /* 804 */ + { 0x2e064c94, 0xaaaaaaaa }, /* 805 */ + { 0x2e064c98, 0x55555555 }, /* 806 */ + { 0x2e064c9c, 0xaaaaaaaa }, /* 807 */ + { 0x2e064ca0, 0x5555 }, /* 808 */ + { 0x2e064ca4, 0x1000100 }, /* 809 */ + { 0x2e064ca8, 0x800180 }, /* 810 */ + { 0x2e064cac, 0x0 }, /* 811 */ + { 0x2e064cb0, 0x0 }, /* 812 */ + { 0x2e064cb4, 0x0 }, /* 813 */ + { 0x2e064cb8, 0x0 }, /* 814 */ + { 0x2e064cbc, 0x0 }, /* 815 */ + { 0x2e064cc0, 0x0 }, /* 816 */ + { 0x2e064cc4, 0x0 }, /* 817 */ + { 0x2e064cc8, 0x0 }, /* 818 */ + { 0x2e064ccc, 0x0 }, /* 819 */ + { 0x2e064cd0, 0x0 }, /* 820 */ + { 0x2e064cd4, 0x0 }, /* 821 */ + { 0x2e064cd8, 0x0 }, /* 822 */ + { 0x2e064cdc, 0x0 }, /* 823 */ + { 0x2e064ce0, 0x0 }, /* 824 */ + { 0x2e064ce4, 0x0 }, /* 825 */ + { 0x2e064ce8, 0x0 }, /* 826 */ + { 0x2e064cec, 0x0 }, /* 827 */ + { 0x2e064cf0, 0x0 }, /* 828 */ + { 0x2e064cf4, 0x0 }, /* 829 */ + { 0x2e064cf8, 0x0 }, /* 830 */ + { 0x2e064cfc, 0x0 }, /* 831 */ + { 0x2e064d00, 0x4 }, /* 832 */ + { 0x2e064d04, 0x0 }, /* 833 */ + { 0x2e064d08, 0x0 }, /* 834 */ + { 0x2e064d0c, 0x0 }, /* 835 */ + { 0x2e064d10, 0x0 }, /* 836 */ + { 0x2e064d14, 0x0 }, /* 837 */ + { 0x2e064d18, 0x0 }, /* 838 */ + { 0x2e064d1c, 0x41f07ff }, /* 839 */ + { 0x2e064d20, 0x1 }, /* 840 */ + { 0x2e064d24, 0x1cc0800 }, /* 841 */ + { 0x2e064d28, 0x3003cc08 }, /* 842 */ + { 0x2e064d2c, 0x2000014e }, /* 843 */ + { 0x2e064d30, 0x7ff0200 }, /* 844 */ + { 0x2e064d34, 0x301 }, /* 845 */ + { 0x2e064d38, 0x0 }, /* 846 */ + { 0x2e064d3c, 0x0 }, /* 847 */ + { 0x2e064d40, 0x30000 }, /* 848 */ + { 0x2e064d44, 0x0 }, /* 849 */ + { 0x2e064d48, 0x0 }, /* 850 */ + { 0x2e064d4c, 0x0 }, /* 851 */ + { 0x2e064d50, 0x0 }, /* 852 */ + { 0x2e064d54, 0x2000000 }, /* 853 */ + { 0x2e064d58, 0x51515042 }, /* 854 */ + { 0x2e064d5c, 0x31c06000 }, /* 855 */ + { 0x2e064d60, 0x9bf007f }, /* 856 */ + { 0x2e064d64, 0xc0c001 }, /* 857 */ + { 0x2e064d68, 0x3020000 }, /* 858 */ + { 0x2e064d6c, 0x10001000 }, /* 859 */ + { 0x2e064d70, 0xc043e42 }, /* 860 */ + { 0x2e064d74, 0xf0c1701 }, /* 861 */ + { 0x2e064d78, 0x1000140 }, /* 862 */ + { 0x2e064d7c, 0xc000120 }, /* 863 */ + { 0x2e064d80, 0x188 }, /* 864 */ + { 0x2e064d84, 0x3200203 }, /* 865 */ + { 0x2e064d88, 0x32017465 }, /* 866 */ + { 0x2e064d8c, 0x8 }, /* 867 */ + { 0x2e064d90, 0x3080308 }, /* 868 */ + { 0x2e064d94, 0x3080308 }, /* 869 */ + { 0x2e064d98, 0x3080308 }, /* 870 */ + { 0x2e064d9c, 0x3080308 }, /* 871 */ + { 0x2e064da0, 0x308 }, /* 872 */ + { 0x2e064da4, 0x8000 }, /* 873 */ + { 0x2e064da8, 0x800080 }, /* 874 */ + { 0x2e064dac, 0x800080 }, /* 875 */ + { 0x2e064db0, 0x800080 }, /* 876 */ + { 0x2e064db4, 0x800080 }, /* 877 */ + { 0x2e064db8, 0x800080 }, /* 878 */ + { 0x2e064dbc, 0x800080 }, /* 879 */ + { 0x2e064dc0, 0x800080 }, /* 880 */ + { 0x2e064dc4, 0x800080 }, /* 881 */ + { 0x2e064dc8, 0x1c40080 }, /* 882 */ + { 0x2e064dcc, 0x1a00001 }, /* 883 */ + { 0x2e064dd0, 0x0 }, /* 884 */ + { 0x2e064dd4, 0x10000 }, /* 885 */ + { 0x2e064dd8, 0x80200 }, /* 886 */ + { 0x2e064ddc, 0x0 }, /* 887 */ + { 0x2e064de0, 0x0 }, /* 888 */ + { 0x2e065000, 0x0 }, /* 1024 */ + { 0x2e065004, 0x0 }, /* 1025 */ + { 0x2e065008, 0x0 }, /* 1026 */ + { 0x2e06500c, 0x0 }, /* 1027 */ + { 0x2e065010, 0x0 }, /* 1028 */ + { 0x2e065014, 0x100 }, /* 1029 */ + { 0x2e065018, 0x201 }, /* 1030 */ + { 0x2e06501c, 0x0 }, /* 1031 */ + { 0x2e065020, 0x0 }, /* 1032 */ + { 0x2e065024, 0x0 }, /* 1033 */ + { 0x2e065028, 0x0 }, /* 1034 */ + { 0x2e06502c, 0x400000 }, /* 1035 */ + { 0x2e065030, 0x80 }, /* 1036 */ + { 0x2e065034, 0xdcba98 }, /* 1037 */ + { 0x2e065038, 0x3000000 }, /* 1038 */ + { 0x2e06503c, 0x0 }, /* 1039 */ + { 0x2e065040, 0x0 }, /* 1040 */ + { 0x2e065044, 0x0 }, /* 1041 */ + { 0x2e065048, 0x0 }, /* 1042 */ + { 0x2e06504c, 0x2a }, /* 1043 */ + { 0x2e065050, 0x15 }, /* 1044 */ + { 0x2e065054, 0x15 }, /* 1045 */ + { 0x2e065058, 0x2a }, /* 1046 */ + { 0x2e06505c, 0x33 }, /* 1047 */ + { 0x2e065060, 0xc }, /* 1048 */ + { 0x2e065064, 0xc }, /* 1049 */ + { 0x2e065068, 0x33 }, /* 1050 */ + { 0x2e06506c, 0x543210 }, /* 1051 */ + { 0x2e065070, 0x3f0000 }, /* 1052 */ + { 0x2e065074, 0xf013f }, /* 1053 */ + { 0x2e065078, 0xf }, /* 1054 */ + { 0x2e06507c, 0x3cc }, /* 1055 */ + { 0x2e065080, 0x30000 }, /* 1056 */ + { 0x2e065084, 0x300 }, /* 1057 */ + { 0x2e065088, 0x300 }, /* 1058 */ + { 0x2e06508c, 0x300 }, /* 1059 */ + { 0x2e065090, 0x300 }, /* 1060 */ + { 0x2e065094, 0x300 }, /* 1061 */ + { 0x2e065098, 0x42080010 }, /* 1062 */ + { 0x2e06509c, 0x33e }, /* 1063 */ + { 0x2e0650a0, 0x2 }, /* 1064 */ + { 0x2e065400, 0x0 }, /* 1280 */ + { 0x2e065404, 0x0 }, /* 1281 */ + { 0x2e065408, 0x0 }, /* 1282 */ + { 0x2e06540c, 0x0 }, /* 1283 */ + { 0x2e065410, 0x0 }, /* 1284 */ + { 0x2e065414, 0x100 }, /* 1285 */ + { 0x2e065418, 0x201 }, /* 1286 */ + { 0x2e06541c, 0x0 }, /* 1287 */ + { 0x2e065420, 0x0 }, /* 1288 */ + { 0x2e065424, 0x0 }, /* 1289 */ + { 0x2e065428, 0x0 }, /* 1290 */ + { 0x2e06542c, 0x400000 }, /* 1291 */ + { 0x2e065430, 0x80 }, /* 1292 */ + { 0x2e065434, 0xdcba98 }, /* 1293 */ + { 0x2e065438, 0x3000000 }, /* 1294 */ + { 0x2e06543c, 0x0 }, /* 1295 */ + { 0x2e065440, 0x0 }, /* 1296 */ + { 0x2e065444, 0x0 }, /* 1297 */ + { 0x2e065448, 0x0 }, /* 1298 */ + { 0x2e06544c, 0x2a }, /* 1299 */ + { 0x2e065450, 0x15 }, /* 1300 */ + { 0x2e065454, 0x15 }, /* 1301 */ + { 0x2e065458, 0x2a }, /* 1302 */ + { 0x2e06545c, 0x33 }, /* 1303 */ + { 0x2e065460, 0xc }, /* 1304 */ + { 0x2e065464, 0xc }, /* 1305 */ + { 0x2e065468, 0x33 }, /* 1306 */ + { 0x2e06546c, 0x543210 }, /* 1307 */ + { 0x2e065470, 0x3f0000 }, /* 1308 */ + { 0x2e065474, 0xf013f }, /* 1309 */ + { 0x2e065478, 0xf }, /* 1310 */ + { 0x2e06547c, 0x3cc }, /* 1311 */ + { 0x2e065480, 0x30000 }, /* 1312 */ + { 0x2e065484, 0x300 }, /* 1313 */ + { 0x2e065488, 0x300 }, /* 1314 */ + { 0x2e06548c, 0x300 }, /* 1315 */ + { 0x2e065490, 0x300 }, /* 1316 */ + { 0x2e065494, 0x300 }, /* 1317 */ + { 0x2e065498, 0x42080010 }, /* 1318 */ + { 0x2e06549c, 0x33e }, /* 1319 */ + { 0x2e0654a0, 0x2 }, /* 1320 */ + { 0x2e065800, 0x0 }, /* 1536 */ + { 0x2e065804, 0x10100 }, /* 1537 */ + { 0x2e065808, 0x0 }, /* 1538 */ + { 0x2e06580c, 0x0 }, /* 1539 */ + { 0x2e065810, 0x0 }, /* 1540 */ + { 0x2e065814, 0x50000 }, /* 1541 */ + { 0x2e065818, 0x4000100 }, /* 1542 */ + { 0x2e06581c, 0x55 }, /* 1543 */ + { 0x2e065820, 0x0 }, /* 1544 */ + { 0x2e065824, 0x0 }, /* 1545 */ + { 0x2e065828, 0x0 }, /* 1546 */ + { 0x2e06582c, 0xf0001 }, /* 1547 */ + { 0x2e065830, 0x280040 }, /* 1548 */ + { 0x2e065834, 0x5002 }, /* 1549 */ + { 0x2e065838, 0x10101 }, /* 1550 */ + { 0x2e06583c, 0x0 }, /* 1551 */ + { 0x2e065840, 0x90e0000 }, /* 1552 */ + { 0x2e065844, 0x101010f }, /* 1553 */ + { 0x2e065848, 0x10f0004 }, /* 1554 */ + { 0x2e06584c, 0x0 }, /* 1555 */ + { 0x2e065850, 0x0 }, /* 1556 */ + { 0x2e065854, 0x64 }, /* 1557 */ + { 0x2e065858, 0x0 }, /* 1558 */ + { 0x2e06585c, 0x1000000 }, /* 1559 */ + { 0x2e065860, 0x8040201 }, /* 1560 */ + { 0x2e065864, 0x2010201 }, /* 1561 */ + { 0x2e065868, 0xf0f0f }, /* 1562 */ + { 0x2e06586c, 0x241b42 }, /* 1563 */ + { 0x2e065870, 0x0 }, /* 1564 */ + { 0x2e065874, 0x1020000 }, /* 1565 */ + { 0x2e065878, 0x703 }, /* 1566 */ + { 0x2e06587c, 0x54 }, /* 1567 */ + { 0x2e065880, 0x4102000 }, /* 1568 */ + { 0x2e065884, 0x24410 }, /* 1569 */ + { 0x2e065888, 0x4410 }, /* 1570 */ + { 0x2e06588c, 0x4410 }, /* 1571 */ + { 0x2e065890, 0x4410 }, /* 1572 */ + { 0x2e065894, 0x4410 }, /* 1573 */ + { 0x2e065898, 0x4410 }, /* 1574 */ + { 0x2e06589c, 0x4410 }, /* 1575 */ + { 0x2e0658a0, 0x4410 }, /* 1576 */ + { 0x2e0658a4, 0x4410 }, /* 1577 */ + { 0x2e0658a8, 0x0 }, /* 1578 */ + { 0x2e0658ac, 0x0 }, /* 1579 */ + { 0x2e0658b0, 0x60000 }, /* 1580 */ + { 0x2e0658b4, 0x0 }, /* 1581 */ + { 0x2e0658b8, 0x96 }, /* 1582 */ + { 0x2e0658bc, 0x10000 }, /* 1583 */ + { 0x2e0658c0, 0x8 }, /* 1584 */ + { 0x2e0658c4, 0x0 }, /* 1585 */ + { 0x2e0658c8, 0x0 }, /* 1586 */ + { 0x2e0658cc, 0x0 }, /* 1587 */ + { 0x2e0658d0, 0x0 }, /* 1588 */ + { 0x2e0658d4, 0x0 }, /* 1589 */ + { 0x2e0658d8, 0x3000000 }, /* 1590 */ + { 0x2e0658dc, 0x0 }, /* 1591 */ + { 0x2e0658e0, 0x0 }, /* 1592 */ + { 0x2e0658e4, 0x0 }, /* 1593 */ + { 0x2e0658e8, 0x4102006 }, /* 1594 */ + { 0x2e0658ec, 0x41020 }, /* 1595 */ + { 0x2e0658f0, 0x1c98c98 }, /* 1596 */ + { 0x2e0658f4, 0x3f400000 }, /* 1597 */ + { 0x2e0658f8, 0x3f3f1f3f }, /* 1598 */ + { 0x2e0658fc, 0x1f }, /* 1599 */ + { 0x2e065900, 0x0 }, /* 1600 */ + { 0x2e065904, 0x0 }, /* 1601 */ + { 0x2e065908, 0x0 }, /* 1602 */ + { 0x2e06590c, 0x1 }, /* 1603 */ + { 0x2e065910, 0x0 }, /* 1604 */ + { 0x2e065914, 0x0 }, /* 1605 */ + { 0x2e065918, 0x0 }, /* 1606 */ + { 0x2e06591c, 0x1 }, /* 1607 */ + { 0x2e065920, 0x76543210 }, /* 1608 */ + { 0x2e065924, 0x10198 }, /* 1609 */ + { 0x2e065928, 0x0 }, /* 1610 */ + { 0x2e06592c, 0x0 }, /* 1611 */ + { 0x2e065930, 0x0 }, /* 1612 */ + { 0x2e065934, 0x40700 }, /* 1613 */ + { 0x2e065938, 0x0 }, /* 1614 */ + { 0x2e06593c, 0x0 }, /* 1615 */ + { 0x2e065940, 0x0 }, /* 1616 */ + { 0x2e065944, 0x0 }, /* 1617 */ + { 0x2e065948, 0x0 }, /* 1618 */ + { 0x2e06594c, 0x2 }, /* 1619 */ + { 0x2e065950, 0x0 }, /* 1620 */ + { 0x2e065954, 0x0 }, /* 1621 */ + { 0x2e065958, 0xf3c3 }, /* 1622 */ + { 0x2e06595c, 0x3 }, /* 1623 */ + { 0x2e065960, 0x0 }, /* 1624 */ + { 0x2e065964, 0x1342 }, /* 1625 */ + { 0x2e065968, 0x30209bf }, /* 1626 */ + { 0x2e06596c, 0x30000 }, /* 1627 */ + { 0x2e065970, 0x3000300 }, /* 1628 */ + { 0x2e065974, 0x3000300 }, /* 1629 */ + { 0x2e065978, 0x3000300 }, /* 1630 */ + { 0x2e06597c, 0x3000300 }, /* 1631 */ + { 0x2e065980, 0x300 }, /* 1632 */ + { 0x2e065984, 0x300 }, /* 1633 */ + { 0x2e065988, 0x300 }, /* 1634 */ + { 0x2e06598c, 0x4bf77 }, /* 1635 */ + { 0x2e065990, 0x77 }, /* 1636 */ + { 0x2e065994, 0x27f }, /* 1637 */ + { 0x2e065998, 0x0 }, /* 1638 */ + { 0x2e06599c, 0x27f }, /* 1639 */ + { 0x2e0659a0, 0x0 }, /* 1640 */ + { 0x2e0659a4, 0x27f00 }, /* 1641 */ + { 0x2e0659a8, 0x1980000 }, /* 1642 */ + { 0x2e0659ac, 0x27fcc }, /* 1643 */ + { 0x2e0659b0, 0x0 }, /* 1644 */ + { 0x2e0659b4, 0x27f00 }, /* 1645 */ + { 0x2e0659b8, 0x1980000 }, /* 1646 */ + { 0x2e0659bc, 0x27f00 }, /* 1647 */ + { 0x2e0659c0, 0x1980000 }, /* 1648 */ + { 0x2e0659c4, 0x27f00 }, /* 1649 */ + { 0x2e0659c8, 0x1980000 }, /* 1650 */ + { 0x2e0659cc, 0x27f00 }, /* 1651 */ + { 0x2e0659d0, 0x1980000 }, /* 1652 */ + { 0x2e0659d4, 0x20040003 }, /* 1653 */ +}; + +/** PHY_F2 settings **/ +struct dram_cfg_param ddr_phy_f2_cfg[] = { +}; + +/* ddr timing config params */ +struct dram_timing_info2 dram_timing = { + .ctl_cfg = ddr_ctl_cfg, + .ctl_cfg_num = ARRAY_SIZE(ddr_ctl_cfg), + .pi_cfg = ddr_pi_cfg, + .pi_cfg_num = ARRAY_SIZE(ddr_pi_cfg), + .phy_f1_cfg = ddr_phy_f1_cfg, + .phy_f1_cfg_num = ARRAY_SIZE(ddr_phy_f1_cfg), + .phy_f2_cfg = ddr_phy_f2_cfg, + .phy_f2_cfg_num = ARRAY_SIZE(ddr_phy_f2_cfg), + .fsp_table = { 96, 1056 }, +}; + diff --git a/board/freescale/imx8ulp_evk/spl.c b/board/freescale/imx8ulp_evk/spl.c new file mode 100644 index 0000000000..914986bbf8 --- /dev/null +++ b/board/freescale/imx8ulp_evk/spl.c @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 NXP + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +void spl_dram_init(void) +{ + init_clk_ddr(); + ddr_init(&dram_timing); +} + +u32 spl_boot_device(void) +{ + return BOOT_DEVICE_BOOTROM; +} + +#define PMIC_I2C_PAD_CTRL (PAD_CTL_PUS_UP | PAD_CTL_SRE_SLOW | PAD_CTL_ODE) +#define PMIC_MODE_PAD_CTRL (PAD_CTL_PUS_UP) + +static iomux_cfg_t const pmic_pads[] = { + IMX8ULP_PAD_PTB7__PMIC0_MODE2 | MUX_PAD_CTRL(PMIC_MODE_PAD_CTRL), + IMX8ULP_PAD_PTB8__PMIC0_MODE1 | MUX_PAD_CTRL(PMIC_MODE_PAD_CTRL), + IMX8ULP_PAD_PTB9__PMIC0_MODE0 | MUX_PAD_CTRL(PMIC_MODE_PAD_CTRL), + IMX8ULP_PAD_PTB10__PMIC0_SDA | MUX_PAD_CTRL(PMIC_I2C_PAD_CTRL), + IMX8ULP_PAD_PTB11__PMIC0_SCL | MUX_PAD_CTRL(PMIC_I2C_PAD_CTRL), +}; + +static void setup_iomux_pmic(void) +{ + imx8ulp_iomux_setup_multiple_pads(pmic_pads, ARRAY_SIZE(pmic_pads)); +} + +static void xrdc_mrc_allow_access_sram1(void) +{ + ulong xrdc_base = 0x292f0000, off; + + /* The MRC8 is for SRAM1 */ + off = 0x2000 + 8 * 0x200; + + writel(0x21000000, xrdc_base + off); + writel(0x2100FFFF, xrdc_base + off + 4); + writel(0x241249, xrdc_base + off + 8); /* allow for domain 2/3, HIFI DSP/LPAV */ + writel(0x80000FFF, xrdc_base + off + 0x10); +} + +static void xrdc_configure_mda(void) +{ + ulong xrdc_base = 0x292f0000, off; + u32 i = 0; + + /* Set MDA3-5 for PXP, ENET, CAAM to DID 1*/ + for (i = 3; i <= 5; i++) { + off = 0x800 + i * 0x20; + writel(0x200000A1, xrdc_base + off); + writel(0xA00000A1, xrdc_base + off); + } + + /* Set MDA10 -15 to DID 3 for video */ + for (i = 10; i <= 15; i++) { + off = 0x800 + i * 0x20; + writel(0x200000A3, xrdc_base + off); + writel(0xA00000A3, xrdc_base + off); + } +} + +static void xrdc_mrc_allow_video_ddr(void) +{ + ulong xrdc_base = 0x292f0000, off; + + /* The MRC6 is for video modules to ddr */ + off = 0x2000 + 6 * 0x200; + + writel(0x80000000, xrdc_base + off); + writel(0xffffffff, xrdc_base + off + 4); + writel(0x200, xrdc_base + off + 8); /* allow for domain 3 video */ + writel(0x80000FFF, xrdc_base + off + 0x10); +} + +void spl_board_init(void) +{ + struct udevice *dev; + + uclass_find_first_device(UCLASS_MISC, &dev); + + for (; dev; uclass_find_next_device(&dev)) { + if (device_probe(dev)) + continue; + } + + board_early_init_f(); + + preloader_console_init(); + + puts("Normal Boot\n"); + + if (get_boot_mode() == SINGLE_BOOT) + setup_iomux_pmic(); + + /* DDR initialization */ + spl_dram_init(); + + xrdc_configure_mda(); + + xrdc_mrc_allow_access_sram1(); + + xrdc_mrc_allow_video_ddr(); +} + +#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 the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); + + timer_init(); + + arch_cpu_init(); + + board_init_r(NULL, 0); +} diff --git a/configs/imx8ulp_evk_defconfig b/configs/imx8ulp_evk_defconfig new file mode 100644 index 0000000000..7711cfa3e7 --- /dev/null +++ b/configs/imx8ulp_evk_defconfig @@ -0,0 +1,103 @@ +CONFIG_ARM=y +CONFIG_ARCH_IMX8ULP=y +CONFIG_SYS_TEXT_BASE=0x80200000 +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_DM_GPIO=y +CONFIG_TARGET_IMX8ULP_EVK=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_NR_DRAM_BANKS=1 +CONFIG_SPL=y +CONFIG_SPL_TEXT_BASE=0x22020000 +CONFIG_SPL_LOAD_IMX_CONTAINER=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_BOOTDELAY=0 +CONFIG_DEFAULT_FDT_FILE="imx8ulp-evk.dtb" +CONFIG_SPL_BOARD_INIT=y +CONFIG_SPL_SEPARATE_BSS=y +#CONFIG_SPL_RAM_SUPPORT=y +#CONFIG_SPL_RAM_DEVICE=y +#CONFIG_SPL_MMC_SUPPORT=y + +CONFIG_SPL_BOOTROM_SUPPORT=y +CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000 + +CONFIG_HUSH_PARSER=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_DEFAULT_DEVICE_TREE="imx8ulp-evk" +CONFIG_SPL_DM=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_IMX_LPI2C=y +CONFIG_PINCTRL=y +CONFIG_SPL_PINCTRL=y +CONFIG_PINCTRL_IMX8ULP=y +CONFIG_DM_SERIAL=y +CONFIG_FSL_LPUART=y +CONFIG_DM_MMC=y +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_FSL_ESDHC_IMX=y +CONFIG_FSL_USDHC=y +CONFIG_CMD_MMC=y +CONFIG_SUPPORT_EMMC_BOOT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SPL_SYS_ICACHE_OFF=y +CONFIG_SPL_SYS_DCACHE_OFF=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_MISC=y + +CONFIG_CMD_I2C=y +CONFIG_CMD_FUSE=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_REGULATOR=y +CONFIG_BAUDRATE=115200 + +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y + +CONFIG_ENV_IS_IN_MMC=y +CONFIG_ENV_SIZE=0x2000 +CONFIG_ENV_OFFSET=0x400000 +CONFIG_ENV_SECT_SIZE=0x10000 + +CONFIG_ULP_WATCHDOG=y +CONFIG_SPL_WATCHDOG_SUPPORT=y + +CONFIG_CMD_SF=y +CONFIG_DM_SPI_FLASH=y +CONFIG_DM_SPI=y +CONFIG_NXP_FSPI=y +CONFIG_SPI=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SF_DEFAULT_BUS=0 +CONFIG_SF_DEFAULT_CS=0 +CONFIG_SF_DEFAULT_SPEED=40000000 +CONFIG_SF_DEFAULT_MODE=0 + +CONFIG_IMX_RGPIO2P=y +CONFIG_USE_ARCH_MEMCPY=y + +CONFIG_PHYLIB=y +CONFIG_PHY_MICREL=y +CONFIG_PHY_MICREL_KSZ8XXX=y +CONFIG_DM_ETH=y +CONFIG_FEC_MXC=y +CONFIG_MII=y +CONFIG_CMD_NET=y +CONFIG_CMD_DHCP=y +CONFIG_CMD_PING=y +CONFIG_NET_RANDOM_ETHADDR=y + +CONFIG_EFI_PARTITION=y + +CONFIG_DM_PCA953X=y +CONFIG_SYS_MMC_ENV_DEV=2 +CONFIG_CMD_READ=y diff --git a/include/configs/imx8ulp_evk.h b/include/configs/imx8ulp_evk.h new file mode 100644 index 0000000000..3ccb78e1b6 --- /dev/null +++ b/include/configs/imx8ulp_evk.h @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 NXP + */ + +#ifndef __IMX8ULP_EVK_H +#define __IMX8ULP_EVK_H + +#include +#include + +#define CONFIG_SYS_BOOTM_LEN (SZ_64M) +#define CONFIG_SPL_MAX_SIZE (148 * 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 +#define CONFIG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512) + +#ifdef CONFIG_SPL_BUILD +#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds" +#define CONFIG_SPL_STACK 0x22050000 +#define CONFIG_SPL_BSS_START_ADDR 0x22048000 +#define CONFIG_SPL_BSS_MAX_SIZE 0x2000 /* 8 KB */ +#define CONFIG_SYS_SPL_MALLOC_START 0x22040000 +#define CONFIG_SYS_SPL_MALLOC_SIZE 0x8000 /* 32 KB */ + +#define CONFIG_MALLOC_F_ADDR 0x22040000 + +#define CONFIG_SPL_LOAD_FIT_ADDRESS 0x95000000 /* SPL_RAM needed */ + +#define CONFIG_SPL_ABORT_ON_RAW_IMAGE /* For RAW image gives a error info not panic */ + +#endif + +#define CONFIG_SERIAL_TAG + +#define CONFIG_REMAKE_ELF + +#define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_BOARD_LATE_INIT + +/* ENET Config */ +#if defined(CONFIG_FEC_MXC) +#define CONFIG_ETHPRIME "FEC" +#define PHY_ANEG_TIMEOUT 20000 + +#define CONFIG_FEC_XCV_TYPE RMII +#define CONFIG_FEC_MXC_PHYADDR 1 +#define FEC_QUIRK_ENET_MAC + +#define IMX_FEC_BASE 0x29950000 +#endif + +#ifndef CONFIG_SPL_BUILD +#define BOOT_TARGET_DEVICES(func) \ + func(MMC, mmc, 2) \ + func(MMC, mmc, 1) \ + func(DHCP, dhcp, na) + +#include +#endif + +/* Initial environment variables */ +#define CONFIG_EXTRA_ENV_SETTINGS \ + BOOTENV \ + "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \ + "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "image=Image\0" \ + "console=ttyLP1,115200 earlycon\0" \ + "fdt_addr_r=0x83000000\0" \ + "boot_fit=no\0" \ + "fdtfile=imx8ulp-evk.dtb\0" \ + "initrd_addr=0x83800000\0" \ + "bootm_size=0x10000000\0" \ + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \ + +/* Link Definitions */ +#define CONFIG_LOADADDR 0x80480000 + +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR + +#define CONFIG_SYS_INIT_RAM_ADDR 0x80000000 +#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_MMCROOT "/dev/mmcblk2p2" + +/* Size of malloc() pool */ +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + SZ_16M) + +#define CONFIG_SYS_SDRAM_BASE 0x80000000 +#define PHYS_SDRAM 0x80000000 +#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */ + +/* Monitor Command Prompt */ +#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) + +/* Using ULP WDOG for reset */ +#define WDOG_BASE_ADDR WDG3_RBASE +#endif