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 A9F56C433F5 for ; Fri, 20 May 2022 13:30:16 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B8A2483E60; Fri, 20 May 2022 15:30:04 +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="ZrRIJPWn"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D42DF83BC7; Fri, 20 May 2022 15:29:21 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0625.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::625]) (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 99AAC83E68 for ; Fri, 20 May 2022 15:29:06 +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=KIRU+E1i2bGNGFOo/6wdCLyJO12RYRlZX57+GHWBosagVWg8duRNs/Yt6VM54YyZDtFma4NLvbnp7+qgS5ZM2nPV8Ctvu9SDER+R3q089X0p3G/UrlbMK9uA1OnL+EStLo2I6+ru24XasRZsw4el0eTVj68quCNbeqmqluN0xV7ChNCygbmUOU4RBkPokJoqNfI2P5/fBWaF6p1jtLnVs4L5kqbZCRoGXkrtaaC5LvINFW/am3VmLASGqaREMylQ8ddbmwSxwwKrwl2vPdgc7pEfNN0FEjfyxrefb5MP1JioDCTAAMmSbS1ru2XYKuuhWHYptk+pP8Jd88h5fPaqLg== 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=ASwRpicz1cznoiM6XS3w7k92kmCRN2FD01wymLHi4rY=; b=j3LHpibbkyY0RnngvP/YT8RumivvLqVCgouvinzUo2G8THo42fhBT74is0aho45w44RvZuPaXRc/CQlutA4L63+r4YWpJCsag7xdPsmozBd4f58IYM0Ogtv3NyiwL5NlPI91TQ39lOfcxENbcSbnDLRKzQr7t36TCp3xdSnAMm3OFxSctQnz66I/OUs3mqzO1ArihtfCw/ixf6AD1a9iVjdd0nMZRqcsqUzmbBug+wLKQt4F2slMskaAwpxbBD3zOqPbwxgIN+9W4m4oXTD1P05iM8diSV8nuZmRkB26rwlCPe5miiMar0z1e9QiXg6U1+Q4pluKmrANtK3FjPZKHw== 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=ASwRpicz1cznoiM6XS3w7k92kmCRN2FD01wymLHi4rY=; b=ZrRIJPWnAKio5WYeCSQwOfb6RP5rCfRltDObk5A4Eexib3DwUcq2rPt0Svcp+7u0bw86sfDY3/7vwRPIcBsC5s3ey4ONjj9BG+ZbNCSMG89SlIwynAclxkojbdh1SJicmkGtjM2lzQTh+5vawU1APYg7dE65XeHRLHzaDoL4GvU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PA4PR04MB9416.eurprd04.prod.outlook.com (2603:10a6:102:2ab::21) by AM0PR0402MB3539.eurprd04.prod.outlook.com (2603:10a6:208:1b::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.17; Fri, 20 May 2022 13:29:02 +0000 Received: from PA4PR04MB9416.eurprd04.prod.outlook.com ([fe80::c9b8:325d:8250:4fed]) by PA4PR04MB9416.eurprd04.prod.outlook.com ([fe80::c9b8:325d:8250:4fed%4]) with mapi id 15.20.5227.023; Fri, 20 May 2022 13:29:02 +0000 From: "Peng Fan (OSS)" To: sbabic@denx.de, festevam@gmail.com, ariel.dalessandro@collabora.com, michael@amarulasolutions.com, tharvey@gateworks.com, sjg@chromium.org, alpernebiyasak@gmail.com, marek.behun@nic.cz, pali@kernel.org, sr@denx.de, ricardo@foundries.io, patrick.delaunay@foss.st.com, trini@konsulko.com Cc: u-boot@lists.denx.de, Peng Fan Subject: [PATCH V4 6/8] ddr: imx8m: helper: load ddr firmware according to binman symbols Date: Fri, 20 May 2022 22:10:45 +0800 Message-Id: <20220520141048.20034-7-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220520141048.20034-1-peng.fan@oss.nxp.com> References: <20220520141048.20034-1-peng.fan@oss.nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR01CA0157.apcprd01.prod.exchangelabs.com (2603:1096:4:28::13) To PA4PR04MB9416.eurprd04.prod.outlook.com (2603:10a6:102:2ab::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0501799b-45b6-407f-4769-08da3a64b43c X-MS-TrafficTypeDiagnostic: AM0PR0402MB3539:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr 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: MMJ+bLJAx5AYOpRaqNeNisRz0ZtLKGc7J8Bu3LNQC+j1u+dAYxqAHrVEoOViw6xSf2dlw/kqedYh+O6acXZkkPJBPFY2dJTu+A/e1ycqcZWesaxO5RBSSBX7ZfZcmpR5iGCBMXDYwreccFwcrnkKqv3C+dt/V7yoWf5dHWFv5BGMlJp+44QQz2QufFU9NiP6E1w5kHj1Tf265iiZ//qhK5wc6RSa3fKLHOVTFM1tc1fhbbQySlZcooFBdB9xKpIgwI+47m7frcw8pR6jdQgnHks1hQ0XLC8Mw7L0VnPQP+WcwSWH2X+tRUMdFbaB/EYo9zEnhZhk3GLco1afGf7K9Bd6yjzzAztYNA49bkBCrS7TUQaznu3uJDy2AxZB0PZ246Xi3v+KzyzxnnvNzYWZ2L/l17OjH5X9U4x3D0wFKyT5E0ZgbWw25cO0cdxb4ocwMNRzc8jKQFUriyP6kKNWdt7uDEKpoGAl5ZAbXuWFfT4NInfFOIX5UpO/euirQM7TOiN13Pr7+aaW31KX0pSX/EnQAtwxsrnD7nocxc5cPF4OfsQyiCJzkhomnVcJf+wrF+ReXW7ueqbLOHmTTWYtMpvx51XcS4nb4KoBlqth7ePZsCBIZApbMIdeu4/IpXxkgBE2eYH2xudzuDgrdDBGCBAw4QaMxVvZ0HCQ5A40srEPVKvCDzrQ84iiKNPdizoqRKQ0gqK9jTg/M4YnfK3i0v7VxmIUvoay+alyqNTDEGmhJquBvQqpzElgxEv5jQ05 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR04MB9416.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(2616005)(26005)(6512007)(6486002)(6506007)(52116002)(316002)(66476007)(4326008)(66946007)(66556008)(508600001)(6666004)(83380400001)(186003)(8676002)(1076003)(7416002)(8936002)(5660300002)(86362001)(2906002)(38100700002)(38350700002)(921005)(32563001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YcQLMpTZBes4tiDbxF+qfmrhzRedkhEcLSa8+M5flvUh2FzS8snAuI8w6Wio?= =?us-ascii?Q?If4j/U4alikQN7ilzOHcJ8PMcZL45al3773ZsxV7WmTZszLHbLolY/Cw/MJg?= =?us-ascii?Q?uSMDx/MUKr5akYASvG9WRWYk7ISjkcVeWnJFj4KRWwqu0OZA/Ti1FTdQdF7d?= =?us-ascii?Q?TyGuX3qy4YuSeUkLBF5DQnp3SpfLbaHVGRD23IT8tTf1RKvI1kNxFLs0ZlJc?= =?us-ascii?Q?2+uIB+ubzhoUrn3olsQZkYQEICMVAN0Uj+dW+3ZiYACygCa/OEbpjRwKxpxp?= =?us-ascii?Q?OQU/TznNbA4BdsDqFnxxYZAJqf6DDjLL2o4dQ9rSYGktfi5eu8cUyuHYczrr?= =?us-ascii?Q?t4e0Pp/f3PRsrLmIzyya04EQ4ujgrGNy5HivbvzwxLeKvtvHhl4/SpOHji0E?= =?us-ascii?Q?vC9FYHUiwNSoyc7lfqzHoRrutIoDDxzqps/VLm2zfkIWrYuLBbFXA8kwRSQi?= =?us-ascii?Q?yLGvGUhJw4TO2G4uYY0jNOvFzQKrq6CWPpKB8dWpMT+9g44rAt6kLO+s9Qsg?= =?us-ascii?Q?9MoakIJlF1wEcRWLT1nXcEaP4soHRQ+3ueVv9P3c+qd+ftQFkWit8LA0q5fI?= =?us-ascii?Q?UuWZVomuRBBw9wwTXEMf8D8drtmBqiAtnb4cllXcb2/o1NMylDRwGOrZAIG3?= =?us-ascii?Q?Cy5QHzE0pLZ3p/1fUVLCoStuT0R96O28LAF7oFLOfT2uB30zjScJ9CYUkmED?= =?us-ascii?Q?4kywQiYBpJC93D9uMyaU23Roq2eJJd1Bcb+XIrjaSkcdtdlY2C1dmk3ErGUh?= =?us-ascii?Q?XX2ChT1SUqkuZGYh0e5sVMs5Rs4IDq+aLm3Bwm4JAnDKuDqgilTLm6XZNAmW?= =?us-ascii?Q?VGAEe1Es6b6IXsWtkry1fwOG8tmdKMvZmwx5iXBLz1ui8lppLjQx3dwqrrC5?= =?us-ascii?Q?rXuDPddhWxjmM/iLZweYudzOVShlnIXtn6GweQbxTl4A+rhUXvstbqjdv53j?= =?us-ascii?Q?m16/i8gJgSf7VNhY1w/gUjDu7/Jl+YcGSZGWTczRoe/mDXquVbiLvQV+bsdg?= =?us-ascii?Q?lNSkRmqzYWpdtZj6N3aAg7SLSGKI2nO+4+ZAY3u1dZd+xpm/xp9vSUD5ka3Z?= =?us-ascii?Q?HbbvGbcRilG08WjLJXrQfXlOnp/JQ/mtWBi3s/9I6xMQCsVm5zRsBeeo3WqN?= =?us-ascii?Q?10Z0GUntgB24WrgJ4el/fcq1oFPb5J6T91UqZ9Lm2q3S5Pu3Boj5Vdqfa134?= =?us-ascii?Q?nDwa5I1pfr7NuGFt9QMUG8GbOMlOLzTNyTSN0g/KLu2Ak2wEBUs15o71bsnB?= =?us-ascii?Q?X4234AraD132ZlfLKdUJb8569cI8e3K/AURslbr5Zh3M5GL9a+Cr4goKZmDL?= =?us-ascii?Q?AnA0Z5aK3Uwvka/3PbOZmjdnYly/3PVNKG4zOy1sJIpojMaYD/kDp5dp2V4T?= =?us-ascii?Q?Uj6fHTRQB9i1OCnZIqoqB0dCqnWUmu8Coo1hbS28o3tOdaD7DMYGDJIzNsLp?= =?us-ascii?Q?I9bjA5Y2MDSKDsx8jJTqcz6mIVMpPdN6xv64x3jrvpO86jiR/mVATJb3SPh2?= =?us-ascii?Q?3P5nZBH3bmTD85vekX6vamwpV7NMJ6vGXV2MhFZ2JMpNiwt/T/g4gNqD77qm?= =?us-ascii?Q?ZhFFpDEwAVcaD0WdGqyHXoVbPlNJlbfqKObbERAWirUhvogMLC30afs9UD9j?= =?us-ascii?Q?f6B7QT5RnK6V6/B8Yg+llVHqOyZGjMAaqwIdCdop2h9ofExTIdrVv0xsXhwY?= =?us-ascii?Q?8f+vv71/3BhyVljJHjdkTGAEXroNbBmLcrDadUx4Kqo1Q0dzx1nEVWHcbJgk?= =?us-ascii?Q?a0mh47SNWQ=3D=3D?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0501799b-45b6-407f-4769-08da3a64b43c X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9416.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 May 2022 13:29:02.3211 (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: 5bL5KN8/XP/3ijQKdPJcBwPfXS8sTMJVXDX/D77GWrzECFKZPQvTgRsDTM30zoZtZcXM4Y0DrgRwfQzkYPCb9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3539 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 From: Peng Fan By reading binman symbols, we no need hard coded IMEM_LEN/DMEM_LEN after we update the binman dtsi to drop 0x8000/0x4000 length for the firmware. And that could save binary size for many KBs. Tested-by: Tim Harvey #imx8m[m,n,p]-venice Signed-off-by: Peng Fan --- drivers/ddr/imx/imx8m/helper.c | 51 ++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/drivers/ddr/imx/imx8m/helper.c b/drivers/ddr/imx/imx8m/helper.c index f23904bf712..b3bd57531b7 100644 --- a/drivers/ddr/imx/imx8m/helper.c +++ b/drivers/ddr/imx/imx8m/helper.c @@ -4,6 +4,7 @@ */ #include +#include #include #include #include @@ -25,15 +26,30 @@ DECLARE_GLOBAL_DATA_PTR; #define DMEM_OFFSET_ADDR 0x00054000 #define DDR_TRAIN_CODE_BASE_ADDR IP2APB_DDRPHY_IPS_BASE_ADDR(0) +binman_sym_declare(ulong, blob_ext_1, image_pos); +binman_sym_declare(ulong, blob_ext_1, size); + +binman_sym_declare(ulong, blob_ext_2, image_pos); +binman_sym_declare(ulong, blob_ext_2, size); + +#if !IS_ENABLED(CONFIG_IMX8M_DDR3L) +binman_sym_declare(ulong, blob_ext_3, image_pos); +binman_sym_declare(ulong, blob_ext_3, size); + +binman_sym_declare(ulong, blob_ext_4, image_pos); +binman_sym_declare(ulong, blob_ext_4, size); +#endif + /* We need PHY iMEM PHY is 32KB padded */ void ddr_load_train_firmware(enum fw_type type) { u32 tmp32, i; u32 error = 0; unsigned long pr_to32, pr_from32; - unsigned long fw_offset = type ? IMEM_2D_OFFSET : 0; - unsigned long imem_start = (unsigned long)&_end + fw_offset; - unsigned long dmem_start; + uint32_t fw_offset = type ? IMEM_2D_OFFSET : 0; + uint32_t imem_start = (unsigned long)&_end + fw_offset; + uint32_t dmem_start; + uint32_t imem_len = IMEM_LEN, dmem_len = DMEM_LEN; #ifdef CONFIG_SPL_OF_CONTROL if (gd->fdt_blob && !fdt_check_header(gd->fdt_blob)) { @@ -43,11 +59,30 @@ void ddr_load_train_firmware(enum fw_type type) } #endif - dmem_start = imem_start + IMEM_LEN; + if (CONFIG_IS_ENABLED(BINMAN_SYMBOLS)) { + switch (type) { + case FW_1D_IMAGE: + imem_start = binman_sym(ulong, blob_ext_1, image_pos); + imem_len = binman_sym(ulong, blob_ext_1, size); + dmem_start = binman_sym(ulong, blob_ext_2, image_pos); + dmem_len = binman_sym(ulong, blob_ext_2, size); + break; + case FW_2D_IMAGE: +#if !IS_ENABLED(CONFIG_IMX8M_DDR3L) + imem_start = binman_sym(ulong, blob_ext_3, image_pos); + imem_len = binman_sym(ulong, blob_ext_3, size); + dmem_start = binman_sym(ulong, blob_ext_4, image_pos); + dmem_len = binman_sym(ulong, blob_ext_4, size); +#endif + break; + } + } + + dmem_start = imem_start + imem_len; pr_from32 = imem_start; pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * IMEM_OFFSET_ADDR; - for (i = 0x0; i < IMEM_LEN; ) { + for (i = 0x0; i < imem_len; ) { tmp32 = readl(pr_from32); writew(tmp32 & 0x0000ffff, pr_to32); pr_to32 += 4; @@ -59,7 +94,7 @@ void ddr_load_train_firmware(enum fw_type type) pr_from32 = dmem_start; pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * DMEM_OFFSET_ADDR; - for (i = 0x0; i < DMEM_LEN; ) { + for (i = 0x0; i < dmem_len; ) { tmp32 = readl(pr_from32); writew(tmp32 & 0x0000ffff, pr_to32); pr_to32 += 4; @@ -72,7 +107,7 @@ void ddr_load_train_firmware(enum fw_type type) debug("check ddr_pmu_train_imem code\n"); pr_from32 = imem_start; pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * IMEM_OFFSET_ADDR; - for (i = 0x0; i < IMEM_LEN; ) { + for (i = 0x0; i < imem_len; ) { tmp32 = (readw(pr_to32) & 0x0000ffff); pr_to32 += 4; tmp32 += ((readw(pr_to32) & 0x0000ffff) << 16); @@ -93,7 +128,7 @@ void ddr_load_train_firmware(enum fw_type type) debug("check ddr4_pmu_train_dmem code\n"); pr_from32 = dmem_start; pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * DMEM_OFFSET_ADDR; - for (i = 0x0; i < DMEM_LEN;) { + for (i = 0x0; i < dmem_len;) { tmp32 = (readw(pr_to32) & 0x0000ffff); pr_to32 += 4; tmp32 += ((readw(pr_to32) & 0x0000ffff) << 16); -- 2.36.0