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 7/8] cmd_mmc.c: Add bootbus mmc sub-command
Date: Tue, 04 Feb 2014 09:59:11 +0900	[thread overview]
Message-ID: <52F03B5F.8060000@samsung.com> (raw)
In-Reply-To: <1391117520-21868-7-git-send-email-trini@ti.com>

Acked-by: Jaehoon Chung <jh80.chung@samsung.com>

On 01/31/2014 06:31 AM, Tom Rini wrote:
> Add a bootbus sub-command to the mmc command to allow for setting
> the boot_bus_width, reset_boot_bus_width and boot_mode fields of
> BOOT_BUS_WIDTH (EXT_CSD[177]).
> 
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
>  common/cmd_mmc.c  |   29 +++++++++++++++++++++++++++++
>  drivers/mmc/mmc.c |   21 +++++++++++++++++++++
>  include/mmc.h     |    5 +++++
>  3 files changed, 55 insertions(+)
> 
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index 5842e85..a028149 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -338,6 +338,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  
>  		/* acknowledge to be sent during boot operation */
>  		return mmc_set_part_conf(mmc, ack, part_num, access);
> +	} else if (strcmp(argv[1], "bootbus") == 0) {
> +		int dev;
> +		struct mmc *mmc;
> +		u8 width, reset, mode;
> +
> +		if (argc == 6) {
> +			dev = simple_strtoul(argv[2], NULL, 10);
> +			width = simple_strtoul(argv[3], NULL, 10);
> +			reset = simple_strtoul(argv[4], NULL, 10);
> +			mode = 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("BOOT_BUS_WIDTH only exists on eMMC\n");
> +			return 1;
> +		}
> +
> +		/* acknowledge to be sent during boot operation */
> +		return mmc_set_boot_bus_width(mmc, width, reset, mode);
>  	} else if (strcmp(argv[1], "bootpart-resize") == 0) {
>  		int dev;
>  		struct mmc *mmc;
> @@ -475,6 +502,8 @@ U_BOOT_CMD(
>  	" - Enable boot_part for booting and enable R/W access of boot_part\n"
>  	"mmc close <dev> <boot_partition>\n"
>  	" - Enable boot_part for booting and disable access to boot_part\n"
> +	"mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode\n"
> +	" - Set the BOOT_BUS_WIDTH field of the specified device\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"
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 1591fce..fc1c1dc 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1507,6 +1507,27 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
>  }
>  
>  /*
> + * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
> + * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
> + * and BOOT_MODE.
> + *
> + * Returns 0 on success.
> + */
> +int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode)
> +{
> +	int err;
> +
> +	err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_BUS_WIDTH,
> +			 EXT_CSD_BOOT_BUS_WIDTH_MODE(mode) |
> +			 EXT_CSD_BOOT_BUS_WIDTH_RESET(reset) |
> +			 EXT_CSD_BOOT_BUS_WIDTH_WIDTH(width));
> +
> +	if (err)
> +		return err;
> +	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.
> diff --git a/include/mmc.h b/include/mmc.h
> index 7e026da..3594286 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -187,6 +187,9 @@
>  #define EXT_CSD_BOOT_PART_NUM(x)	(x << 3)
>  #define EXT_CSD_PARTITION_ACCESS(x)	(x << 0)
>  
> +#define EXT_CSD_BOOT_BUS_WIDTH_MODE(x)	(x << 3)
> +#define EXT_CSD_BOOT_BUS_WIDTH_RESET(x)	(x << 2)
> +#define EXT_CSD_BOOT_BUS_WIDTH_WIDTH(x)	(x)
>  
>  #define R1_ILLEGAL_COMMAND		(1 << 22)
>  #define R1_APP_CMD			(1 << 5)
> @@ -314,6 +317,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
>  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);
> +/* Function to modify the BOOT_BUS_WIDTH field of EXT_CSD */
> +int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode);
>  
>  /**
>   * Start device initialization and return immediately; it does not block on
> 

  reply	other threads:[~2014-02-04  0:59 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
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 [this message]
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=52F03B5F.8060000@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.