diff mbox series

cmd: mmc: allow use of hardware parittion names for mmc partconf

Message ID 20240426001419.1210364-1-tharvey@gateworks.com
State Changes Requested
Delegated to: Fabio Estevam
Headers show
Series cmd: mmc: allow use of hardware parittion names for mmc partconf | expand

Commit Message

Tim Harvey April 26, 2024, 12:14 a.m. UTC
eMMC devices have hardware partitions such as user, boot0, and boot1.
Allow these names to be displayed when reading the mmc PARTITION_CONFIG
field via 'mmc partconf'. Additionally allow a name to be specified when
setting the PARTITION_CONFIG.

Before:
u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
EXT_CSD[179], PARTITION_CONFIG:
BOOT_ACK: 0x1
BOOT_PARTITION_ENABLE: 0x2
PARTITION_ACCESS: 0x0

After:
u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
EXT_CSD[179], PARTITION_CONFIG:
BOOT_ACK: 0x1
BOOT_PARTITION_ENABLE: 0x1 (boot0)
PARTITION_ACCESS: 0x0
u-boot=> mmc partconf 2 1 boot1 0 && mmc partconf 2
EXT_CSD[179], PARTITION_CONFIG:
BOOT_ACK: 0x1
BOOT_PARTITION_ENABLE: 0x2 (boot1)
PARTITION_ACCESS: 0x0

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
 cmd/mmc.c | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

Comments

Fabio Estevam April 26, 2024, 1:35 a.m. UTC | #1
Hi Tim,

On Thu, Apr 25, 2024 at 9:14 PM Tim Harvey <tharvey@gateworks.com> wrote:
>
> eMMC devices have hardware partitions such as user, boot0, and boot1.
> Allow these names to be displayed when reading the mmc PARTITION_CONFIG
> field via 'mmc partconf'. Additionally allow a name to be specified when
> setting the PARTITION_CONFIG.
>
> Before:
> u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
> EXT_CSD[179], PARTITION_CONFIG:
> BOOT_ACK: 0x1
> BOOT_PARTITION_ENABLE: 0x2
> PARTITION_ACCESS: 0x0
>
> After:
> u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
> EXT_CSD[179], PARTITION_CONFIG:
> BOOT_ACK: 0x1
> BOOT_PARTITION_ENABLE: 0x1 (boot0)
> PARTITION_ACCESS: 0x0
> u-boot=> mmc partconf 2 1 boot1 0 && mmc partconf 2
> EXT_CSD[179], PARTITION_CONFIG:
> BOOT_ACK: 0x1
> BOOT_PARTITION_ENABLE: 0x2 (boot1)
> PARTITION_ACCESS: 0x0

This is a nice improvement:

Reviewed-by: Fabio Estevam <festevam@gmail.com>
Fabio Estevam April 26, 2024, 1:37 a.m. UTC | #2
On Thu, Apr 25, 2024 at 10:35 PM Fabio Estevam <festevam@gmail.com> wrote:

> This is a nice improvement:
>
> Reviewed-by: Fabio Estevam <festevam@gmail.com>

There is a typo in the Subject: "partition"
Marek Vasut April 26, 2024, 4:07 a.m. UTC | #3
On 4/26/24 2:14 AM, Tim Harvey wrote:
> eMMC devices have hardware partitions such as user, boot0, and boot1.
> Allow these names to be displayed when reading the mmc PARTITION_CONFIG
> field via 'mmc partconf'. Additionally allow a name to be specified when
> setting the PARTITION_CONFIG.
> 
> Before:
> u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
> EXT_CSD[179], PARTITION_CONFIG:
> BOOT_ACK: 0x1
> BOOT_PARTITION_ENABLE: 0x2
> PARTITION_ACCESS: 0x0
> 
> After:
> u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
> EXT_CSD[179], PARTITION_CONFIG:
> BOOT_ACK: 0x1
> BOOT_PARTITION_ENABLE: 0x1 (boot0)
> PARTITION_ACCESS: 0x0
> u-boot=> mmc partconf 2 1 boot1 0 && mmc partconf 2
> EXT_CSD[179], PARTITION_CONFIG:
> BOOT_ACK: 0x1
> BOOT_PARTITION_ENABLE: 0x2 (boot1)
> PARTITION_ACCESS: 0x0
> 
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
>   cmd/mmc.c | 25 ++++++++++++++++++++++---
>   1 file changed, 22 insertions(+), 3 deletions(-)
> 
> diff --git a/cmd/mmc.c b/cmd/mmc.c
> index 2d5430a53079..26692a8e349b 100644
> --- a/cmd/mmc.c
> +++ b/cmd/mmc.c
> @@ -14,6 +14,18 @@
>   #include <part.h>
>   #include <sparse_format.h>
>   #include <image-sparse.h>
> +#include <linux/ctype.h>
> +
> +static const char *mmc_partnames[] = {
> +	"user",
> +	"boot0",
> +	"boot1",
> +	"",

Shouldn't these be 'gp' partitions here ?

[...]
Tim Harvey April 26, 2024, 3:11 p.m. UTC | #4
On Thu, Apr 25, 2024 at 6:37 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> On Thu, Apr 25, 2024 at 10:35 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> > This is a nice improvement:
> >
> > Reviewed-by: Fabio Estevam <festevam@gmail.com>
>
> There is a typo in the Subject: "partition"

Hi Fabio,

Thanks - I will fix this in v2.

Best Regards,

Tim
Tim Harvey April 26, 2024, 3:14 p.m. UTC | #5
On Thu, Apr 25, 2024 at 9:07 PM Marek Vasut <marex@denx.de> wrote:
>
> On 4/26/24 2:14 AM, Tim Harvey wrote:
> > eMMC devices have hardware partitions such as user, boot0, and boot1.
> > Allow these names to be displayed when reading the mmc PARTITION_CONFIG
> > field via 'mmc partconf'. Additionally allow a name to be specified when
> > setting the PARTITION_CONFIG.
> >
> > Before:
> > u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
> > EXT_CSD[179], PARTITION_CONFIG:
> > BOOT_ACK: 0x1
> > BOOT_PARTITION_ENABLE: 0x2
> > PARTITION_ACCESS: 0x0
> >
> > After:
> > u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
> > EXT_CSD[179], PARTITION_CONFIG:
> > BOOT_ACK: 0x1
> > BOOT_PARTITION_ENABLE: 0x1 (boot0)
> > PARTITION_ACCESS: 0x0
> > u-boot=> mmc partconf 2 1 boot1 0 && mmc partconf 2
> > EXT_CSD[179], PARTITION_CONFIG:
> > BOOT_ACK: 0x1
> > BOOT_PARTITION_ENABLE: 0x2 (boot1)
> > PARTITION_ACCESS: 0x0
> >
> > Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> > ---
> >   cmd/mmc.c | 25 ++++++++++++++++++++++---
> >   1 file changed, 22 insertions(+), 3 deletions(-)
> >
> > diff --git a/cmd/mmc.c b/cmd/mmc.c
> > index 2d5430a53079..26692a8e349b 100644
> > --- a/cmd/mmc.c
> > +++ b/cmd/mmc.c
> > @@ -14,6 +14,18 @@
> >   #include <part.h>
> >   #include <sparse_format.h>
> >   #include <image-sparse.h>
> > +#include <linux/ctype.h>
> > +
> > +static const char *mmc_partnames[] = {
> > +     "user",
> > +     "boot0",
> > +     "boot1",
> > +     "",
>
> Shouldn't these be 'gp' partitions here ?
>

He Marek,

Do you mean that 3-6 should be named 'gp1', 'gp2' etc? I couldn't find
if those values were possible or have meaning.

Best Regards,

Tim
Marek Vasut April 26, 2024, 3:46 p.m. UTC | #6
On 4/26/24 5:14 PM, Tim Harvey wrote:
> On Thu, Apr 25, 2024 at 9:07 PM Marek Vasut <marex@denx.de> wrote:
>>
>> On 4/26/24 2:14 AM, Tim Harvey wrote:
>>> eMMC devices have hardware partitions such as user, boot0, and boot1.
>>> Allow these names to be displayed when reading the mmc PARTITION_CONFIG
>>> field via 'mmc partconf'. Additionally allow a name to be specified when
>>> setting the PARTITION_CONFIG.
>>>
>>> Before:
>>> u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
>>> EXT_CSD[179], PARTITION_CONFIG:
>>> BOOT_ACK: 0x1
>>> BOOT_PARTITION_ENABLE: 0x2
>>> PARTITION_ACCESS: 0x0
>>>
>>> After:
>>> u-boot=> mmc partconf 2 1 1 0 && mmc partconf 2
>>> EXT_CSD[179], PARTITION_CONFIG:
>>> BOOT_ACK: 0x1
>>> BOOT_PARTITION_ENABLE: 0x1 (boot0)
>>> PARTITION_ACCESS: 0x0
>>> u-boot=> mmc partconf 2 1 boot1 0 && mmc partconf 2
>>> EXT_CSD[179], PARTITION_CONFIG:
>>> BOOT_ACK: 0x1
>>> BOOT_PARTITION_ENABLE: 0x2 (boot1)
>>> PARTITION_ACCESS: 0x0
>>>
>>> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
>>> ---
>>>    cmd/mmc.c | 25 ++++++++++++++++++++++---
>>>    1 file changed, 22 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/cmd/mmc.c b/cmd/mmc.c
>>> index 2d5430a53079..26692a8e349b 100644
>>> --- a/cmd/mmc.c
>>> +++ b/cmd/mmc.c
>>> @@ -14,6 +14,18 @@
>>>    #include <part.h>
>>>    #include <sparse_format.h>
>>>    #include <image-sparse.h>
>>> +#include <linux/ctype.h>
>>> +
>>> +static const char *mmc_partnames[] = {
>>> +     "user",
>>> +     "boot0",
>>> +     "boot1",
>>> +     "",
>>
>> Shouldn't these be 'gp' partitions here ?
>>
> 
> He Marek,
> 
> Do you mean that 3-6 should be named 'gp1', 'gp2' etc? I couldn't find
> if those values were possible or have meaning.

Yes, General Purpose eMMC hardware partitions.
diff mbox series

Patch

diff --git a/cmd/mmc.c b/cmd/mmc.c
index 2d5430a53079..26692a8e349b 100644
--- a/cmd/mmc.c
+++ b/cmd/mmc.c
@@ -14,6 +14,18 @@ 
 #include <part.h>
 #include <sparse_format.h>
 #include <image-sparse.h>
+#include <linux/ctype.h>
+
+static const char *mmc_partnames[] = {
+	"user",
+	"boot0",
+	"boot1",
+	"",
+	"",
+	"",
+	"",
+	"user",
+};
 
 static int curr_device = -1;
 
@@ -918,8 +930,8 @@  static int mmc_partconf_print(struct mmc *mmc, const char *varname)
 
 	printf("EXT_CSD[179], PARTITION_CONFIG:\n"
 		"BOOT_ACK: 0x%x\n"
-		"BOOT_PARTITION_ENABLE: 0x%x\n"
-		"PARTITION_ACCESS: 0x%x\n", ack, part, access);
+		"BOOT_PARTITION_ENABLE: 0x%x (%s)\n"
+		"PARTITION_ACCESS: 0x%x\n", ack, part, mmc_partnames[part], access);
 
 	return CMD_RET_SUCCESS;
 }
@@ -949,7 +961,14 @@  static int do_mmc_partconf(struct cmd_tbl *cmdtp, int flag,
 		return mmc_partconf_print(mmc, cmd_arg2(argc, argv));
 
 	ack = dectoul(argv[2], NULL);
-	part_num = dectoul(argv[3], NULL);
+	if (!isdigit(*argv[3])) {
+		for (part_num = 0; part_num < ARRAY_SIZE(mmc_partnames); part_num++) {
+			if (!strcmp(argv[3], mmc_partnames[part_num]))
+				break;
+		}
+	} else {
+		part_num = dectoul(argv[3], NULL);
+	}
 	access = dectoul(argv[4], NULL);
 
 	/* acknowledge to be sent during boot operation */