All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaehoon Chung <jh80.chung@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc
Date: Tue, 04 Feb 2014 09:58:06 +0900	[thread overview]
Message-ID: <52F03B1E.9060601@samsung.com> (raw)
In-Reply-To: <1391117520-21868-6-git-send-email-trini@ti.com>

On 01/31/2014 06:31 AM, Tom Rini wrote:
> Add a partconf sub-command to the mmc command to allow for setting
> the boot_ack, boot_partition and partition_access fields of
> PARTITION_CONFIG (formerly BOOT_CONFIG, EXT_CSD[179]).  Part of this
> requires changing the check for 'part' from an strncmp to a strcmp, like
> the rest of the sub-commands.
> 
> Cc: Andy Fleming <afleming@gmail.com>
> Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
>  common/cmd_mmc.c  |   30 +++++++++++++++++++++++++++++-
>  drivers/mmc/mmc.c |   21 +++++++++++++++++++++
>  include/mmc.h     |    2 ++
>  3 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index a322063..5842e85 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -195,7 +195,7 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  			return 1;
>  		else
>  			return 0;
> -	} else if (strncmp(argv[1], "part", 4) == 0) {
> +	} else if (strcmp(argv[1], "part") == 0) {
>  		block_dev_desc_t *mmc_dev;
>  		struct mmc *mmc;
>  
> @@ -311,7 +311,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  
>  		/* acknowledge to be sent during boot operation */
>  		return boot_part_access(mmc, 1, part_num, access);
> +	} else if (strcmp(argv[1], "partconf") == 0) {
> +		int dev;
> +		struct mmc *mmc;
> +		u8 ack, part_num, access;
> +
> +		if (argc == 6) {
> +			dev = simple_strtoul(argv[2], NULL, 10);
> +			ack = simple_strtoul(argv[3], NULL, 10);
> +			part_num = simple_strtoul(argv[4], NULL, 10);
> +			access = simple_strtoul(argv[5], NULL, 10);
> +		} else {
> +			return CMD_RET_USAGE;
> +		}
> +
> +		mmc = find_mmc_device(dev);
> +		if (!mmc) {
> +			printf("no mmc device at slot %x\n", dev);
> +			return 1;
> +		}
>  
> +		if (IS_SD(mmc)) {
> +			puts("PARTITION_CONFIG only exists on eMMC\n");
> +			return 1;
> +		}
> +
> +		/* acknowledge to be sent during boot operation */
> +		return mmc_set_part_conf(mmc, ack, part_num, access);
>  	} else if (strcmp(argv[1], "bootpart-resize") == 0) {
>  		int dev;
>  		struct mmc *mmc;
> @@ -451,6 +477,8 @@ U_BOOT_CMD(
>  	" - Enable boot_part for booting and disable access to boot_part\n"
>  	"mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
>  	" - Change sizes of boot and RPMB partitions of specified device\n"
> +	"mmc partconf dev boot_ack boot_partition partition_access\n"

How about using bracket("< >") for more readable?
mmc partconf <dev> <boot_ack> <boot_partition> <partition_access>

Anyway, looks good to me.
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>

> +	" - Change the bits of the PARTITION_CONFIG field of the specified device\n"
>  #endif
>  	"mmc setdsr - set DSR register value\n"
>  	);
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index c6a1c23..1591fce 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1505,4 +1505,25 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
>  	}
>  	return 0;
>  }
> +
> +/*
> + * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
> + * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
> + * PARTITION_ACCESS.
> + *
> + * Returns 0 on success.
> + */
> +int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> +{
> +	int err;
> +
> +	err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
> +			 EXT_CSD_BOOT_ACK(ack) |
> +			 EXT_CSD_BOOT_PART_NUM(part_num) |
> +			 EXT_CSD_PARTITION_ACCESS(access));
> +
> +	if (err)
> +		return err;
> +	return 0;
> +}
>  #endif
> diff --git a/include/mmc.h b/include/mmc.h
> index e1060b9..7e026da 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -312,6 +312,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
>  					unsigned long rpmbsize);
>  /* Function to send commands to open/close the specified boot partition */
>  int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> +/* Function to modify the PARTITION_CONFIG field of EXT_CSD */
> +int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
>  
>  /**
>   * Start device initialization and return immediately; it does not block on
> 

  reply	other threads:[~2014-02-04  0:58 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 2/8] omap5_uevm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 3/8] dra7xx_evm: " Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style Tom Rini
2014-02-04  0:54   ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize' Tom Rini
2014-02-04  0:55   ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc Tom Rini
2014-02-04  0:58   ` Jaehoon Chung [this message]
2014-02-05 13:03     ` Tom Rini
2014-02-06  4:48       ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command Tom Rini
2014-02-04  0:59   ` Jaehoon Chung
2014-04-18  9:25   ` Michael Trimarchi
2014-04-22 15:41     ` Tom Rini
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
2014-02-04  0:51   ` Jaehoon Chung
2014-02-04 14:08   ` Otavio Salvador
2014-02-04 14:11     ` Tom Rini
2014-02-04 14:15     ` Otavio Salvador
2014-02-04 14:55       ` Tom Rini
2014-02-17  8:40   ` Lukasz Majewski
2014-02-17  9:30     ` Lukasz Majewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52F03B1E.9060601@samsung.com \
    --to=jh80.chung@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.