From patchwork Thu May 23 13:20:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Loureiro, Joao" X-Patchwork-Id: 798596 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2051.outbound.protection.outlook.com [40.107.21.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D55C14AD25 for ; Thu, 23 May 2024 13:20:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.21.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716470450; cv=fail; b=Ds6Zi+996nVv7OfjLXy2lpHzjQSrCsM6ttdx1VDf10sYgYPB7EdlNvrC2cYGRmM2ZsqlB49w8EBSmk562zJDHOhZZ2f8UWN8VEXLWTBxrqVYo7K1qzk2H2dK4ryo+RaJzVHIEWY1M2oWIfO/aopENdKSpj05I6RHsmZlV1dZ9BY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716470450; c=relaxed/simple; bh=1b9iI/ldxYrM2HfCpHKJrm403ST48gpJueAGqnGW1OE=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=PVscUazv4HcsmMsTcf5wQXOxAhZkV0V70v/tvLnEWdg2BTQPXVdrswIrB3gqusG6wF5p+eG0cM1NpQoND8KRKmPQ+VBay2BelgqzxT80wG9R/b2iP47xwrKqaNVt/XJ6DVdRa6VAebrgocf12ftn8sLTxNl2Ie1JVN4rdse0tTk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=philips.com; spf=pass smtp.mailfrom=philips.com; dkim=pass (1024-bit key) header.d=philips.com header.i=@philips.com header.b=uGW/2YKX; arc=fail smtp.client-ip=40.107.21.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=philips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=philips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=philips.com header.i=@philips.com header.b="uGW/2YKX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g7poJh5j4EoPnHsjZGg2RjGFEEyj7BmCmJaV342T7izgwD4XlMjp2lpv98hkjNn5cs8OsQQFMPMg+hWGwRsil25G/Fil6cyFMMSCaLucn5TDTow/ZOVFCinn3uXudVeI14RoVczQgTGI5mqZp546EeRfUg2xtfWMlOdcuD2Oe113hqibfKBu3+U0GEKMAwAb40TQl4gbKfpt1xudi+/MEPvCP24dLedTnxB6Blk6tgWXIeWNWpKaVSHbnxp1xfOY4QnH1JURGGXTkM1Cr6bLC4Ae5O2EVC+uSDiEa92yiNDenAL7vyGMIELGEINJeNHtOMFufpsD56xwET6h0M9l0Q== 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=mEpJDGZiwMDUK4jFi2aMHTyIkvpp4eK7kRuO3bQe4bI=; b=PcvYwNFN+VeL8Iea5TW1iyZ2vSVSswEMqrugUb42UR7G81Ntb66Gj4JxxW6KOf+ZzYu67wifZEzxzZqLeyTn38YMEBHj1u+4EoFogeZTvmQ/S7Ce9aSDLmBhJ24LmXalk/rr9h4QIUHtmnHw+zHiXsaAJLClTrI9ryGyv8yTVQZamgnwyjoKHCj2tI8d+JVzxJWQY5RbQsb/cS5Am3+n68Pjkcmnt7F/y8YKPzmxNXt4yhpKYloYpZGX1ZV9KcwXr/6Qf3L0tagBhZm5hRSuLAMjhMJbeUypdrz4FcaTthUmf2Ij7UNc+6aEwQDt69T7JEA/LnUkBbI0UvPAui6XFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=philips.com; dmarc=pass action=none header.from=philips.com; dkim=pass header.d=philips.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=philips.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mEpJDGZiwMDUK4jFi2aMHTyIkvpp4eK7kRuO3bQe4bI=; b=uGW/2YKX2h0BF+wVw1VtyMXp0TN8JdflltfiDoDeuJpAXMzjOeSvH8JE6GzfM6+8vJs+OIJGDvdkXMkqOEMc4AtpylWurewN/eCohC420GyJQH/R4UFSn2AE1FwVTs3RIY/2aiY4RZIwoVKvIRgrcsHGH9G1UPcersWYaLo4BrE= Received: from AM9P122MB0281.EURP122.PROD.OUTLOOK.COM (2603:10a6:20b:22c::12) by PR3P122MB0276.EURP122.PROD.OUTLOOK.COM (2603:10a6:102:17::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Thu, 23 May 2024 13:20:44 +0000 Received: from AM9P122MB0281.EURP122.PROD.OUTLOOK.COM ([fe80::2a31:e7dc:f131:1e12]) by AM9P122MB0281.EURP122.PROD.OUTLOOK.COM ([fe80::2a31:e7dc:f131:1e12%4]) with mapi id 15.20.7544.052; Thu, 23 May 2024 13:20:44 +0000 From: "Loureiro, Joao" To: "linux-mmc@vger.kernel.org" CC: Avri Altman , Ulf Hansson Subject: [PATCH] Add functionality to read the bootpart register Thread-Topic: [PATCH] Add functionality to read the bootpart register Thread-Index: AQHarRANmhBF4ZCxpE6S3dg1Ljmf3bGkzUdf Date: Thu, 23 May 2024 13:20:44 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-NL, en-US Content-Language: aa X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=philips.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM9P122MB0281:EE_|PR3P122MB0276:EE_ x-ms-office365-filtering-correlation-id: db0c54be-3305-4bd5-35f7-08dc7b2b26f2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?iso-8859-1?q?5ni7plKtb4d0QB6Gc83cH8/3/5?= =?iso-8859-1?q?IR8Ku+8a/Ehjnpf6aZtYHWwDgFx9V1VUsQVRNYACpgw1WdskFOMAaoIhiyAB?= =?iso-8859-1?q?XNu8WL8hoPS1znGek419T4cF/5IH7Iy+qeTKhPP7WKsjWQbxC7jo28gnO589?= =?iso-8859-1?q?ROhk5y+gMJ5EUQ2/eBgKkgjGd8dWyAwSLMgaQk9zuj8voK4Ix3inRbLgza4P?= =?iso-8859-1?q?LuStMu9gUo/8CICo7mKgyxfcetcjI4h+5v6/boSWVgKRdibUg2mRX4CfcUJD?= =?iso-8859-1?q?vhcPkwninBY0YwQUKCxjBUl4+u7ZDH2KMHk6XfW1owXFTSNt5fjlG2ybjBXy?= =?iso-8859-1?q?JteFFoekXS8SSYJTqF2rgtvvyy1J/Y4mP3uLrCwKIVY0Bp+3G2Z1fRmbb5u0?= =?iso-8859-1?q?Zg0UKPF858GuaA0mpS9McLgxiaMosN4a2phw6yPUt47I5rObPPDz1IGCobo1?= =?iso-8859-1?q?uTXTrykOHA9WSlchmyshRQikJ1kjCR9jgbY4dpmpcsdmBIh8vtoZUNQGnRPT?= =?iso-8859-1?q?S/9vKDFr4bC2YGM4PVmWDP5ttPmqF2a27u6xQGj163A3MYlYDuOAXGfDJnxH?= =?iso-8859-1?q?a5PlkvmtOgV6d3m3wdFxQ2OoQGKvU8hiJG7zjDwxE/MFu96mWCFspBQCP2wT?= =?iso-8859-1?q?yyx94BqB0anX8f7HR1Ds3JkYl+dJyczc4qF2/U8oEVmBtRpqrUiVm5uHPGch?= =?iso-8859-1?q?tIECiA+S1d6ED+5yFwxNWsLGymJotTvopnfYZxdMRC535yQgBPvJXutCAh/b?= =?iso-8859-1?q?pCFVz1m+hqPE2+Bv60sylytkTFt8Lshrv0ItgAJ5duS8iurHx2ffVt/FMbCO?= =?iso-8859-1?q?rdY4CzAv2nYFrz35/RXE6eR+VI4kRMQLqrytq/Cyy/iAeyE8LJEe6sV6LKlz?= =?iso-8859-1?q?D01JtRkxGB3V7/WRolYUFHuadRR9wFYcHBvzIrQkxwFmN04NPoEIe4yCkh2F?= =?iso-8859-1?q?pCOZkwKqzwt2Ne2EQdUr78V8E1lFSzpZNU4NT87dGsHtHaPPNRVWit9eWZ2a?= =?iso-8859-1?q?zgKPfJCeQsQ2mGqGUjpNeQSC6s3o4F8GnA+BTqlb2TEsExDOMjrkBAhXoXFa?= =?iso-8859-1?q?rfgpMGgrggjvcikMCvq1UtKYafrUVyPjXrRvuXt4JuO/fKHcbh9X1DNASpte?= =?iso-8859-1?q?PnGHY49ZXGvmjvmbOlnU970iIYiFDLAHOUFy3KDWmI6MU1kRc1r3pZIPa07t?= =?iso-8859-1?q?v5XvBCXeuCUpfD5wwmsbjknhw30aux/jXmlQMlAoBwSDFuZXqWEe8tjbAl+O?= =?iso-8859-1?q?qW0d6LLAdbaBrTi5dcK8/X+Qv3hnPfIbeKdOeiK9keYHOlQ3isdcFlNvWbmD?= =?iso-8859-1?q?kT4oVQPOH+2ZogDy8ZYxEM7KUDT4aguWTnslVcwpIvV+hlv8M05TlYq+ms6N?= =?iso-8859-1?q?JoiwAzyOkhGzDh1TS1GA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9P122MB0281.EURP122.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230031)(366007)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?j8KRna5LY0JLw34ZIFAi9Zb?= =?iso-8859-1?q?wVmDDjDBzOotGpQm5xYE/w9PblyuOO3nj6l6PVsFXxJYpaw0/7lQms9NELp+?= =?iso-8859-1?q?RBnqUC5EyNyw4XLZ7NyPDnCduLUSw3i2VnzeQzXO9S47przQjjcw0JTv0xdi?= =?iso-8859-1?q?1nkGolJwusJY641p+BGh1ShJZr657+TDGgH5K9NcenVzuutJDxhtyJfi6o48?= =?iso-8859-1?q?7QZST1Y3vFz0wDvHYwuX/FBLBQHFofeJGj7H2zepgQRhPYbLjDDxwufvbuOr?= =?iso-8859-1?q?sS+txkDVlh6pXJDYSFjYKiAi8j/B/LgUJ34l9nICRUanHCRIw8sLOV1JRGTl?= =?iso-8859-1?q?lbbCvBQewwxNqrVQEKqVMuVL8kD6ZadW3Z+ldF4FEsG+Ygmd0oQ+8iXZHg3P?= =?iso-8859-1?q?l6kupsfMM9qhDXqt+POuzlN570GzOLG3OaNoPG+cznXlSgB9ImhN4ER0C00e?= =?iso-8859-1?q?vYS1jASYWq2K655NZID26negCL9rFq4+7GbSTnbxi4iuqryA+txMpEmC7vKH?= =?iso-8859-1?q?7Z+p6pge4ipKGtD3QC7HXyue9qt7g9UZ6Nx26wBoYptd6d5ddhoHBPFgxKbQ?= =?iso-8859-1?q?O6yM/Zgm4+1UyCLngOjvQ8hAfHGO0o9TkTrzh2mxSStZgZbugO+xYwmpibQZ?= =?iso-8859-1?q?B+iqwdwo2YrB5gCGVhPYLJMpuyDdnovR2QIl3A0/RyvwROMWG8uCl9IqSPJC?= =?iso-8859-1?q?bq8qMbHwHFIZMC6IM9dMh0YUB/RHCC9/VAIv7HWnfrSqYpLn1gMTLu5k1hhj?= =?iso-8859-1?q?cWmdT2c2UeLqoqKKOwgSbq9gSr1lXUIHBH2ZydHKR+wqf338YhvjlEsoz5aQ?= =?iso-8859-1?q?xOlU5/yZBqEHyTpkzZHC4v+n02khwEx1mKx6UHOED2I2eOQt7I3FhbEFM+b8?= =?iso-8859-1?q?AreeHh5D73Ap+CcrIn3XcORagw+uDvv76gjyXoPzx53pDTAFxBNfSz6i9uDB?= =?iso-8859-1?q?6Tnhh+cATuXKRTuRzZJmg03ednY/b4Ja2YIWyUa0zXdV9+7JOv0uT0NTsnT6?= =?iso-8859-1?q?F1ej2gnQbgR508k+wp+0QIR7YbPbAJa8014Km5OKrqVYb5q+CP7k6hzbWTs4?= =?iso-8859-1?q?23KUEj/Ib6WF6A7tEapokqR8uyYE85qQUaAEDwDNsu9rg5QSfTB5hf45NoWz?= =?iso-8859-1?q?f04SkCgCw9juVrRV8EMd1++VzEBhs9kGrt057x7xNvYsN+B56e1MCALfO6Wk?= =?iso-8859-1?q?dV9RyNB6Znp+GSB9uA4wicqfnZ5sQNtCoZLhl/7MAC4eEvV4CtNpAbUT6bcp?= =?iso-8859-1?q?bHdLg1e2aNhhTPuXgN2+ntlkrOE6o6KuZtRvazcbVPOq5jmfqriszxm0fyRh?= =?iso-8859-1?q?Erewaqjra5FxdRXOcN9LqSu1/ZieoCCAZ7FOdOuC36Mr3xDBNdqwphOICU5V?= =?iso-8859-1?q?7rTNPrXVThvXbs0OAEhnD2uJjIjBuwePyW3AdZwEgEt9GZXRotzCm7+XiC6t?= =?iso-8859-1?q?LBqRUGBmR9V8F1A6pgR4TjiNq4dHK7LWs8zK6elU3kmeGyoo4QxXMam3gaGt?= =?iso-8859-1?q?wKtQLcS8OMr19weHKzM/P+JZfjfT0qMK3UkYcp3Bic5xctQsX16A1+Wbjo76?= =?iso-8859-1?q?SnYOu9555ifOqMJZcVh/x6YlgqCjPNC5BHhoyxQRNYBOpZz4OQBPG3YrfWC2?= =?iso-8859-1?q?sO3uiW9cf/o26a7Z7?= Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: philips.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM9P122MB0281.EURP122.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: db0c54be-3305-4bd5-35f7-08dc7b2b26f2 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2024 13:20:44.6684 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 1a407a2d-7675-4d17-8692-b3ac285306e4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: u2XW0nwswSUPUtbIB4ulx5tNPQGSRZzSyYoRe2allMU955WdgjLZ6QcYs9QRuYN5R1E+xPLM/1Mhgk6x5ex3V/awnQ0woLQHuqA2ZJjpx9g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P122MB0276 Currently the only way to read the bootpart register is to dump the whole extcsd register. This patch adds the possibility to read the bootpart register directly for situations where the whole extcsd is too verbose. Signed-off-by: João Loureiro --- man/mmc.1 | 3 +++ mmc.c | 5 +++++ mmc_cmds.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ mmc_cmds.h | 1 + 4 files changed, 63 insertions(+) -- 2.34.1 diff --git a/man/mmc.1 b/man/mmc.1 index bccabf3..8aff106 100644 --- a/man/mmc.1 +++ b/man/mmc.1 @@ -59,6 +59,9 @@ Disable the boot partition for the with set to 0. To receive acknowledgment of boot from the card set to 1, else set it to 0. .TP +.BR "bootpart read " +Read the boot partition information for the . +.TP .BR "bootbus set " Set Boot Bus Conditions. must be "single_backward|single_hs|dual" diff --git a/mmc.c b/mmc.c index bc8f74e..26c4f13 100644 --- a/mmc.c +++ b/mmc.c @@ -126,6 +126,11 @@ static struct Command commands[] = { "Enable the boot partition for the .\nDisable the boot partition for the if is set to 0.\nTo receive acknowledgment of boot from the card set \nto 1, else set it to 0.", NULL }, + { do_read_boot_en, -1, + "bootpart read", "\n" + "Read the boot partition information for the .", + NULL + }, { do_boot_bus_conditions_set, -4, "bootbus set", " " " " " " "\n" "Set Boot Bus Conditions.\n" diff --git a/mmc_cmds.c b/mmc_cmds.c index 936e0c5..add9e56 100644 --- a/mmc_cmds.c +++ b/mmc_cmds.c @@ -233,6 +233,29 @@ static void print_writeprotect_boot_status(__u8 *ext_csd) } } +static void print_boot_en_status(__u8 *ext_csd) +{ + __u8 reg; + + reg = ext_csd[EXT_CSD_BOOT_CFG]; + printf("Configuration bytes [PARTITION_CONFIG: 0x%02x]\n " \ + "Boot partition: ", reg); + switch ((reg & EXT_CSD_BOOT_CFG_EN)>>3) { + case 0x0: + printf("disabled\n"); + break; + case 0x1: + printf("1\n"); + break; + case 0x2: + printf("2\n"); + break; + case 0x7: + printf("user area\n"); + break; + } +} + static int get_wp_group_size_in_blks(__u8 *ext_csd, __u32 *size) { __u8 ext_csd_rev = ext_csd[EXT_CSD_REV]; @@ -602,6 +625,37 @@ int do_disable_512B_emulation(int nargs, char **argv) return ret; } +int do_read_boot_en(int nargs, char **argv) +{ + __u8 ext_csd[512]; + int fd, ret; + char *device; + + if (nargs != 2) { + fprintf(stderr, "Usage: mmc bootpart read \n"); + exit(1); + } + + device = argv[1]; + + fd = open(device, O_RDWR); + if (fd < 0) { + perror("open"); + exit(1); + } + + ret = read_extcsd(fd, ext_csd); + if (ret) { + fprintf(stderr, "Could not read EXT_CSD from %s\n", device); + exit(1); + } + + print_boot_en_status(ext_csd); + + close(fd); + return ret; +} + int do_write_boot_en(int nargs, char **argv) { __u8 ext_csd[512]; diff --git a/mmc_cmds.h b/mmc_cmds.h index 5f2bef1..12716b5 100644 --- a/mmc_cmds.h +++ b/mmc_cmds.h @@ -25,6 +25,7 @@ int do_writeprotect_boot_set(int nargs, char **argv); int do_writeprotect_user_get(int nargs, char **argv); int do_writeprotect_user_set(int nargs, char **argv); int do_disable_512B_emulation(int nargs, char **argv); +int do_read_boot_en(int nargs, char **argv); int do_write_boot_en(int nargs, char **argv); int do_boot_bus_conditions_set(int nargs, char **argv); int do_write_bkops_en(int nargs, char **argv);