From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 09512C433F5 for ; Mon, 25 Apr 2022 14:23:10 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E253683953; Mon, 25 Apr 2022 16:23:07 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk 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=prevas.dk header.i=@prevas.dk header.b="PExQpuo1"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0E09183C79; Mon, 25 Apr 2022 16:23:06 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on070d.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe1f::70d]) (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 1D50B80330 for ; Mon, 25 Apr 2022 16:23:02 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rasmus.villemoes@prevas.dk ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hho85VQL1B7QnrxzMJ8DBQZUH+IYkDpu0rFTO3lUbA2yGwMI7NmVCjCsiqbv/8kmmLK+QlqHJP1+7tHm5p65PWioX1UM9W/iSb+zszCOvO4Ki7dwFi/ecJR+aAPB1HDJ5ch9F+FN/7m7kul66Clt0QCwThZjlqTu7BJusGFnFNaI3kxhPgOY/dW4V21XPszU2Yj8ejBC3gn4MC7vM/O0k1lmr6IOqcKecQeZYqgRv18VjI9kC5EbJlZAX6bVEmmYU/Con0PLD6REahgM7MOmisSiAqmYMrJxa3OFPYCgha3RjGzRenFtih+FEairflyq+IvSzS6XXwfv6+kY1UF6Lg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZnLul6AN54rONQNmtY2uUWxTQVl2w+4oN1WwazlaT7s=; b=bnMG2/bXnA5r2ypsnRGj2Ue/1bUYaPUtvmbnHEOVyUVKT3minmoBSwDCUvmpacQ5Js0M9jyKH3TEVdepM5pT4Y1yoMigAQFS0aeuWh8tIIJJP5nTDNWtrNE695Pm00rkv497EUm99kmcFeLM+iNg9rrII5mIoNsGkAKR73oupKCY+GrMsL4nq8LDa8CBsiN6CfJxVm7GmoO9A8VkCwd0ML/kTNmlKLlNmdM0kqS/eQpzJt1zRb+ZJDWT3rWO3TgHlt4gD8wy38VF/XZRj5OieCvqwblOYusYyLgN/eAdlPr1tE4bR2bstGtn9fzJXItzLee7x42AbVyBz0H0PB/87A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk; dkim=pass header.d=prevas.dk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZnLul6AN54rONQNmtY2uUWxTQVl2w+4oN1WwazlaT7s=; b=PExQpuo1lP1HlRx/IPxnB5JqVxGW38lByIBO+RUZ7nGfR7u8k0g6qfX5S7IVAwFbZ0iWpV5/cET6csfj0JYws+VPXOHvzNEOjI634+EXUwVXeQj9SZawxmOBQIKkmf0D87/UBHKBEBVg4shPek6eLZR9TjzFTzfMUa5KGRoL+Lw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=prevas.dk; Received: from DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:34a::22) by VI1PR1001MB1344.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:800:e0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.18; Mon, 25 Apr 2022 14:22:59 +0000 Received: from DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM ([fe80::9c95:6717:4f50:ded6]) by DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM ([fe80::9c95:6717:4f50:ded6%5]) with mapi id 15.20.5164.025; Mon, 25 Apr 2022 14:22:59 +0000 From: Rasmus Villemoes To: u-boot@lists.denx.de Cc: "Ying-Chun Liu (PaulLiu)" , Fabio Estevam , Rasmus Villemoes Subject: [PATCH] imx8m: fix reading of DDR4 MR registers Date: Mon, 25 Apr 2022 16:22:48 +0200 Message-Id: <20220425142248.235807-1-rasmus.villemoes@prevas.dk> X-Mailer: git-send-email 2.31.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: GV3P280CA0106.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:8::21) To DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:34a::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb325d92-a62f-49c4-39d0-08da26c71907 X-MS-TrafficTypeDiagnostic: VI1PR1001MB1344:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B//zrh0VolVu2dVShWbM+dr8xFXM1J6JCXwpXqCunbAkSwk6McGanU9eRYy/TOJ1Tel8FT0cLhAiAyYk1McOM6ObGqr7vYbygZ2uNQ3PPOtQSE6NHN1SwaF20/KnEu3WD0jA+UDnD4wPBtP58UMv/W5in1LCkv+mBODjljmQg4UYt+Yzxk/OXUCvcSrMhvmVPVNKuiZCoaL7SNTpTHXDOMr0SxcIi+EZ28s97Z5auMd3L4jK2am4OOhcmtkdzh/fvDzDCCAsJ5RZsgBr6OZbuMh4a7vfcv0JOOT2Y+zILzHa0PKCzPRvXIQLTtD+O7Rb6LJWuIB05oKdNK0ppdpW/4rAVz4ShnmV7tAqmtRhZSERuGGRs+3+AAYXLIhxpVyhlFkTv5m7R4ocgvm5q7mW8NalHAE/2krQspJyj8otpQwmZuDrpyKEWK1zkL05zFNj+Sg4SHdpnG7lrmnTr4WFyn6DyLbhoh4Hh7HNdWqer3jWbn8P6lnTXFXMtirZta06kNl3T/S5kaUEEOhOCUXPCOLUbLQ1GVts2BI0uBF70x7FTvdcs51hQOHPiS6Wuy+TiNZNCqunv10LeIX+92+1VS6ZV7UbFMcuSmDYFMsf51CGdKel3Zybk9LR+nCjWaNQEu6tEDh/Z3nCxbEh7yhtAYyDTZxIxxmVmqwimoONf/VEQ7p5zSTEGu8XXXtZ6Sv30mYmdViqozcW4MN5igbiE1dgNulcs2csjpKUNUXkF2k= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230001)(366004)(86362001)(6486002)(54906003)(2616005)(1076003)(8936002)(44832011)(8976002)(508600001)(2906002)(107886003)(83380400001)(66946007)(8676002)(186003)(5660300002)(4326008)(66476007)(66556008)(26005)(6506007)(6666004)(6512007)(6916009)(316002)(52116002)(38100700002)(38350700002)(36756003)(32563001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mMFmYpyH8HEMfSXgsx1w/2zOyKut0IRWMrZvEIVxL5YnurTtTl1ATW6KGszq?= =?us-ascii?Q?XShChj2X3DvNIyOSpaNSmnJ3m4L1xCmm81mV7wtUUpbl07s1kRdTOkyTkAk1?= =?us-ascii?Q?k2jfNZwiogocceCIMClmvWZwkUBPaLG48fCHx3bk8h+k/9rySx8Rxmeg3BVi?= =?us-ascii?Q?LwGE4aaCef9wu4QxuqnG4yxx0qg7Nn3VwUJi1fsO5uquuzR8w/gS8LOq2wi7?= =?us-ascii?Q?QGEUTetd2dYZrIhkajGkfmng0C6diqmJtIyPF2+dvnOAu7oxc9yAPc7FbcKM?= =?us-ascii?Q?9JhxV8MBERfe/UrIJRY3c8+trnk6DOOoV4afQ9VZP7fF15Gz9gRVB5ypeYdB?= =?us-ascii?Q?qFjfqO4LoCPGxX8ybGSJpueO24CXqjOjb0Rcr7/RR1I3TmP+fFbR5CgZoUdA?= =?us-ascii?Q?SmvtW4fRyzkftKAsVDP8rdlUn5mZdf3Dcin2cqiwoqqxXrQqp5NdE9y2ZDLA?= =?us-ascii?Q?pcn5214DQK0PbH4GEc0XM6ev43g7hO6CxYipFXqn5NBggyfJyhzDdjja36TF?= =?us-ascii?Q?6FSSKKonV4eoV9OSiKjk9y1jUrwi/Nd+OjMqern7v/l05zKtAGGZnd0ghe1j?= =?us-ascii?Q?+bG1cnUABYJ8ZBAcjAEGk4J27hmLEkyLQlgp10bIgR4D055nINrU3A6B2mLd?= =?us-ascii?Q?z18XYK31ZwqLwVnTjc4NevkvZJ+Moa4YSsBR4auLVpcDlg3mQ5S9reMOqhK7?= =?us-ascii?Q?al6jmyz2nLD27V/VGOBx+V+CAwm5m+lk+UrJqn144LpQaxH2u2V+W8Sd7vCZ?= =?us-ascii?Q?jTxTTWPBcNbJGkqD/zToVT++GQBT62sRk2hnEvCX2SNvKH+2IlbVmY6uIQ0m?= =?us-ascii?Q?2WGXP8gQ8JnVf0gFe5XR8YMUrSLC1RfunE0aFifIg/rJSx2lrg4+hg9pI0vh?= =?us-ascii?Q?TIFreeuSctaYjsJeVHJZlCiYBTDfmWUKLn+2pAaiOtyhFnZagCTldRjyimT/?= =?us-ascii?Q?1fLATv0lKBkGBQ6prDNTn4LcfCALLl4nO0nVPlo2gnhZqyMF9JCIQrkRzPbN?= =?us-ascii?Q?hUs+nZx07cylzHJ1DN6mxak+2rVIS4T+gJw2ap9oehJmTnuAlORDdqbVJ+SS?= =?us-ascii?Q?w5XyEXU0d0al3KjWiuXj87kKAP2GkdIiWvibw2otaJ6ISAeJrP47EVPLOfxV?= =?us-ascii?Q?PESR2GoiR/TdQ4Udy4/M7Nwv77fzmc3ln+62pP5K+Q/qYO+fSjkW1fUCgaew?= =?us-ascii?Q?YCHDbqihHYINNcZd/XZiU8QUCV9viyUTC4Bzaw6ms1Tjnj61XwmP5SESd7tm?= =?us-ascii?Q?SqYU5Cjv4epJuZlEFrv0yaZJ2Gw0sQrxWPDLHPO8Dq9a8x7SlDnoG7TQbi/a?= =?us-ascii?Q?vhxzHKIoK/adfu5CoILgzUBRyG/qxLAv7QU3y+uMoVgKD0T32K7bGQOct8HY?= =?us-ascii?Q?wpNhMtp59ji0fxyzvPzGfiytDKEnHDHRfPQ0sOXTcW1ryPIl8mqBBxK9e56+?= =?us-ascii?Q?L4D0ZCLo6gxEdYzGvRSmK3hDB5B8TEDp2UNAeTID63GEFInFQiVfwNyUcO/z?= =?us-ascii?Q?285M+a9uAnSM1m2K+gmkFrbtsb40zSOWEK438NjiR12MV7k150ntY1tvbewE?= =?us-ascii?Q?kGBmet76Il2AqslINfImLdeb84nLCWUonVszt5YpMdGeqt17jnRAROO8xZys?= =?us-ascii?Q?ggWhHQQGWjzPrrFTTLoC5fB7mBg/9S7pe+lHSKCwquFf2Y9/esGfYG8NZYES?= =?us-ascii?Q?DRMTDoDTKHTDQdoZNjdTvwc9eiKicBbMTMhMxuYaDhCL0MY7pW7CwWw+SXCZ?= =?us-ascii?Q?MF6DCmtCawDmlErNikPWn3wZTRNOYDQ=3D?= X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: eb325d92-a62f-49c4-39d0-08da26c71907 X-MS-Exchange-CrossTenant-AuthSource: DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2022 14:22:59.1766 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d350cf71-778d-4780-88f5-071a4cb1ed61 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tp/xygMpQW13nAXCP4tQUHRbCaCcjgvopBkV/tnZIqWAyuf3F7O7o8Iur3bBcNwVGBDyOmg1U5s8qAPgiNCabHqJz896vsppafmb52cweTc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR1001MB1344 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean I was trying to employ lpddr4_mr_read() to something similar to what the imx8mm-cl-iot-gate board is doing for auto-detecting the RAM type. However, the version in drivers/ddr/imx/imx8m/ddrphy_utils.c differs from the private one used by that board in how it extracts the byte value, and I was only getting zeroes. Adding a bit of debug printf'ing gives me tmp = 0x00ffff00 tmp = 0x00070700 tmp = 0x00000000 tmp = 0x00101000 and indeed I was expecting a (combined) value of 0xff070010 (0xff being Manufacturer ID for Micron). I can't find any documentation that says how the values are supposed to be read, but clearly the iot-gate definition is the right one, both for its use case as well as my imx8mp-based board. So lift the private definition of lpddr4_mr_read() from the imx8mm-cl-iot-gate board code to ddrphy_utils.c, and add a declaration in the ddr.h header where e.g. get_trained_CDD() is already declared. This has only been compile-tested for the imx8mm-cl-iot-gate board (since I don't have the hardware), but since I've merely moved its definition of lpddr4_mr_read(), I'd be surprised if it changed anything for that board. Signed-off-by: Rasmus Villemoes --- arch/arm/include/asm/arch-imx8m/ddr.h | 1 + board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c | 27 --------------------- drivers/ddr/imx/imx8m/ddrphy_utils.c | 9 +++++-- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/arch/arm/include/asm/arch-imx8m/ddr.h b/arch/arm/include/asm/arch-imx8m/ddr.h index 0f1e832c03..2ce8a8f2d4 100644 --- a/arch/arm/include/asm/arch-imx8m/ddr.h +++ b/arch/arm/include/asm/arch-imx8m/ddr.h @@ -723,6 +723,7 @@ void ddrphy_init_read_msg_block(enum fw_type type); void update_umctl2_rank_space_setting(unsigned int pstat_num); void get_trained_CDD(unsigned int fsp); +unsigned int lpddr4_mr_read(unsigned int mr_rank, unsigned int mr_addr); static inline void reg32_write(unsigned long addr, u32 val) { diff --git a/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c b/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c index 5b93491923..b230478b61 100644 --- a/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c +++ b/board/compulab/imx8mm-cl-iot-gate/ddr/ddr.c @@ -24,33 +24,6 @@ #include -static unsigned int lpddr4_mr_read(unsigned int mr_rank, unsigned int mr_addr) -{ - unsigned int tmp; - - reg32_write(DRC_PERF_MON_MRR0_DAT(0), 0x1); - do { - tmp = reg32_read(DDRC_MRSTAT(0)); - } while (tmp & 0x1); - - reg32_write(DDRC_MRCTRL0(0), (mr_rank << 4) | 0x1); - reg32_write(DDRC_MRCTRL1(0), (mr_addr << 8)); - reg32setbit(DDRC_MRCTRL0(0), 31); - do { - tmp = reg32_read(DRC_PERF_MON_MRR0_DAT(0)); - } while ((tmp & 0x8) == 0); - tmp = reg32_read(DRC_PERF_MON_MRR1_DAT(0)); - reg32_write(DRC_PERF_MON_MRR0_DAT(0), 0x4); - while (tmp) { //try to find a significant byte in the word - if (tmp & 0xff) { - tmp &= 0xff; - break; - } - tmp >>= 8; - } - return tmp; -} - struct lpddr4_desc { char name[16]; unsigned int id; diff --git a/drivers/ddr/imx/imx8m/ddrphy_utils.c b/drivers/ddr/imx/imx8m/ddrphy_utils.c index a54449e5f1..975d553674 100644 --- a/drivers/ddr/imx/imx8m/ddrphy_utils.c +++ b/drivers/ddr/imx/imx8m/ddrphy_utils.c @@ -198,9 +198,14 @@ unsigned int lpddr4_mr_read(unsigned int mr_rank, unsigned int mr_addr) tmp = reg32_read(DRC_PERF_MON_MRR0_DAT(0)); } while ((tmp & 0x8) == 0); tmp = reg32_read(DRC_PERF_MON_MRR1_DAT(0)); - tmp = tmp & 0xff; reg32_write(DRC_PERF_MON_MRR0_DAT(0), 0x4); - + while (tmp) { //try to find a significant byte in the word + if (tmp & 0xff) { + tmp &= 0xff; + break; + } + tmp >>= 8; + } return tmp; } -- 2.31.1