From patchwork Mon Jul 8 01:39:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 1128815 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="YOnLir82"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45hpGF2Hddz9s3l for ; Mon, 8 Jul 2019 11:46:45 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 0EB18C21E39; Mon, 8 Jul 2019 01:41:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5198DC21D74; Mon, 8 Jul 2019 01:39:34 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id AD12DC21CB1; Mon, 8 Jul 2019 01:39:20 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00051.outbound.protection.outlook.com [40.107.0.51]) by lists.denx.de (Postfix) with ESMTPS id E1917C21DD9 for ; Mon, 8 Jul 2019 01:39:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IV9P1GHv1VKY/Ma6IBr+6wUwNRcOYNvYPgKBPZyZvxM=; b=YOnLir82N4+brxsRIRp7ouNOcfF6h91wSRkYKEI5yC8kPNSAP2SPgR5ZlBjBtKfSaOkyEA4lycCn3/O5xdHDXEDcG3TbrJtECIvmHyhRbId/v29JbJMj+WnmqBDQq/O5Hxn9X53cZHxd+kWHQGXubvfPJWpOxTiLtxmk8cEmqfA= Received: from AM0PR04MB4481.eurprd04.prod.outlook.com (52.135.147.15) by AM0PR04MB5089.eurprd04.prod.outlook.com (52.134.89.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2052.19; Mon, 8 Jul 2019 01:39:16 +0000 Received: from AM0PR04MB4481.eurprd04.prod.outlook.com ([fe80::2023:c0e5:8a63:2e47]) by AM0PR04MB4481.eurprd04.prod.outlook.com ([fe80::2023:c0e5:8a63:2e47%5]) with mapi id 15.20.2052.020; Mon, 8 Jul 2019 01:39:16 +0000 From: Peng Fan To: "sbabic@denx.de" , "festevam@gmail.com" Thread-Topic: [PATCH V2 15/51] imx: add get_cpu_rev support for i.MX8MM Thread-Index: AQHVNS3zBvSR/SRNHkiS9rbBJ/JjeQ== Date: Mon, 8 Jul 2019 01:39:15 +0000 Message-ID: <20190708015333.20411-16-peng.fan@nxp.com> References: <20190708015333.20411-1-peng.fan@nxp.com> In-Reply-To: <20190708015333.20411-1-peng.fan@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.16.4 x-clientproxiedby: HK0PR01CA0059.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::23) To AM0PR04MB4481.eurprd04.prod.outlook.com (2603:10a6:208:70::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [119.31.174.71] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fe5650d7-bd30-467e-158f-08d703451649 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:AM0PR04MB5089; x-ms-traffictypediagnostic: AM0PR04MB5089: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 00922518D8 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(346002)(376002)(396003)(39860400002)(366004)(199004)(189003)(66446008)(186003)(66946007)(64756008)(66556008)(6116002)(66476007)(73956011)(256004)(53936002)(8936002)(26005)(76176011)(71190400001)(386003)(3846002)(71200400001)(6506007)(68736007)(66066001)(54906003)(316002)(6512007)(5660300002)(110136005)(86362001)(2501003)(102836004)(52116002)(44832011)(8676002)(6486002)(14454004)(4326008)(50226002)(99286004)(486006)(7736002)(478600001)(11346002)(2906002)(446003)(1076003)(476003)(81156014)(81166006)(6436002)(25786009)(2616005)(36756003)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5089; H:AM0PR04MB4481.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 81QL4tOCROkFdD7PWqM6Q2kYQ4pux0NSFEyW/ln46quMOOLJI54VdVP+WUbtPPo084Suj8oTSAGmew8kOL10M5TYzdxy9JQ5u/jPME+EC2BWAsOAxsESWOtzZvKcjBsSa4epA59ycClXaH6NpU+XID5LFeZDgS4pV2Dh+ZEPl2YE9c6nxtkXafSxDwRSFqWp5t4TiqbO7N2cORSyUCzKfAgnb4KLEWoEPTmM2CyWEhU82ueuXjClGRSKkqC/gBMRub/E/1a6T+ad4t3f/+516wXzAsCXZm7AoKRP6C11Pcr38zItwaTKOy0j0Zm3gqSjWc2DgTuFOH2RKE+5mEahXLJiP+89fx1P6CrMKnDE3Y2YZbPAB58Px61sN//8IiFnXcFsZe+kcCtscrkj5XCj66uoJhqzcL4ZVzUzl9wTm1M= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe5650d7-bd30-467e-158f-08d703451649 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2019 01:39:15.9848 (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: peng.fan@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5089 Cc: "u-boot@lists.denx.de" , dl-uboot-imx Subject: [U-Boot] [PATCH V2 15/51] imx: add get_cpu_rev support for i.MX8MM X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" There are several variants based on i.MX8MM, add the support in get_cpu_rev Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx8m/soc.c | 57 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c index 7ec39b3e47..5115471eff 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -130,25 +130,62 @@ static struct mm_region imx8m_mem_map[] = { struct mm_region *mem_map = imx8m_mem_map; +static u32 get_cpu_variant_type(u32 type) +{ + struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; + struct fuse_bank *bank = &ocotp->bank[1]; + struct fuse_bank1_regs *fuse = + (struct fuse_bank1_regs *)bank->fuse_regs; + + u32 value = readl(&fuse->tester4); + + if (type == MXC_CPU_IMX8MM) { + switch (value & 0x3) { + case 2: + if (value & 0x1c0000) + return MXC_CPU_IMX8MMDL; + else + return MXC_CPU_IMX8MMD; + case 3: + if (value & 0x1c0000) + return MXC_CPU_IMX8MMSL; + else + return MXC_CPU_IMX8MMS; + default: + if (value & 0x1c0000) + return MXC_CPU_IMX8MML; + break; + } + } + + return type; +} + u32 get_cpu_rev(void) { struct anamix_pll *ana_pll = (struct anamix_pll *)ANATOP_BASE_ADDR; u32 reg = readl(&ana_pll->digprog); u32 type = (reg >> 16) & 0xff; + u32 major_low = (reg >> 8) & 0xff; u32 rom_version; reg &= 0xff; - if (reg == CHIP_REV_1_0) { - /* - * For B0 chip, the DIGPROG is not updated, still TO1.0. - * we have to check ROM version further - */ - rom_version = readl((void __iomem *)ROM_VERSION_A0); - if (rom_version != CHIP_REV_1_0) { - rom_version = readl((void __iomem *)ROM_VERSION_B0); - if (rom_version >= CHIP_REV_2_0) - reg = CHIP_REV_2_0; + /* i.MX8MM */ + if (major_low == 0x41) { + type = get_cpu_variant_type(MXC_CPU_IMX8MM); + } else { + if (reg == CHIP_REV_1_0) { + /* + * For B0 chip, the DIGPROG is not updated, still TO1.0. + * we have to check ROM version further + */ + rom_version = readl((void __iomem *)ROM_VERSION_A0); + if (rom_version != CHIP_REV_1_0) { + rom_version = readl((void __iomem *)ROM_VERSION_B0); + if (rom_version >= CHIP_REV_2_0) + reg = CHIP_REV_2_0; + } } }