All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaehoon Chung <jh80.chung@samsung.com>
To: Jaehoon Chung <jh80.chung@samsung.com>
Cc: linux-mmc <linux-mmc@vger.kernel.org>,
	Chris Ball <cjb@laptop.org>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Maya Erez <merez@codeaurora.org>,
	"svenkatr@ti.com" <svenkatr@ti.com>,
	Saugata Das <saugata.das@linaro.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Ulf Hansson <ulf.hansson@stericsson.com>,
	Per FORLIN <per.forlin@stericsson.com>,
	Hanumath Prasad <hanumath.prasad@stericsson.com>,
	Sebastian Rasmussen <sebras@gmail.com>,
	"Dong, Chuanxiao" <chuanxiao.dong@intel.com>
Subject: Re: [RESEND PATCH] mmc-util: add the method to enable the bkops
Date: Fri, 31 Aug 2012 17:04:56 +0900	[thread overview]
Message-ID: <50407028.5070608@samsung.com> (raw)
In-Reply-To: <500823C9.1040204@samsung.com>

Dear Chris,

Could you merge the this at mmc-utils?
If you have any other opinion, plz let me know.

Best Regards,
Jaehoon Chung

On 07/20/2012 12:12 AM, Jaehoon Chung wrote:
> This patch added the method to enable the bkops.
> In ext_csd register, BKOPS_EN bit is one-time programable.
> So if you want to use the bkops, use the this command.
> 
> <usage>
> #mmc bkops enable /dev/mmcblk0
> 
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Reviewd-by: Venkatraman S <svenkatr@ti.com>
> ---
>  mmc.c      |    5 +++++
>  mmc.h      |    7 +++++++
>  mmc_cmds.c |   39 +++++++++++++++++++++++++++++++++++++++
>  mmc_cmds.h |    1 +
>  4 files changed, 52 insertions(+), 0 deletions(-)
> 
> diff --git a/mmc.c b/mmc.c
> index 379d667..d5ef2bb 100644
> --- a/mmc.c
> +++ b/mmc.c
> @@ -75,6 +75,11 @@ static struct Command commands[] = {
>  		"Enable the boot partition for the <device>.\nTo receive acknowledgment of boot from the card set <send_ack>\nto 1, else set it to 0.",
>  	  NULL
>  	},
> +	{ do_write_bkops_en, -1,
> +	  "bkops enable", "<device>\n"
> +		"Enable the eMMC BKOPS feature on <device>.",
> +	  NULL
> +	},
>  	{ 0, 0, 0, 0 }
>  };
>  
> diff --git a/mmc.h b/mmc.h
> index 0a521a8..3d77b38 100644
> --- a/mmc.h
> +++ b/mmc.h
> @@ -31,12 +31,14 @@
>   */
>  #define EXT_CSD_S_CMD_SET		504
>  #define EXT_CSD_HPI_FEATURE		503
> +#define EXT_CSD_BKOPS_SUPPORT		502	/* RO */
>  #define EXT_CSD_BOOT_INFO		228	/* R/W */
>  #define EXT_CSD_PART_SWITCH_TIME	199
>  #define EXT_CSD_BOOT_CFG		179
>  #define EXT_CSD_PART_CONFIG		179
>  #define EXT_CSD_BOOT_WP			173
>  #define EXT_CSD_WR_REL_PARAM		166
> +#define EXT_CSD_BKOPS_EN		163	/* R/W */
>  #define EXT_CSD_NATIVE_SECTOR_SIZE	63 /* R */
>  #define EXT_CSD_USE_NATIVE_SECTOR	62 /* R/W */
>  #define EXT_CSD_DATA_SECTOR_SIZE	61 /* R */
> @@ -48,6 +50,11 @@
>  #define EN_REL_WR	(1<<2)
>  
>  /*
> + * BKOPS_EN field definition
> + */
> +#define BKOPS_ENABLE	(1<<0)
> +
> +/*
>   * EXT_CSD field definitions
>   */
>  #define EXT_CSD_HPI_SUPP		(1<<0)
> diff --git a/mmc_cmds.c b/mmc_cmds.c
> index 90619db..4c935e0 100644
> --- a/mmc_cmds.c
> +++ b/mmc_cmds.c
> @@ -280,6 +280,45 @@ int do_write_boot_en(int nargs, char **argv)
>  	return ret;
>  }
>  
> +int do_write_bkops_en(int nargs, char **argv)
> +{
> +	__u8 ext_csd[512], value = 0;
> +	int fd, ret;
> +	char *device;
> +
> +	CHECK(nargs != 2, "Usage: mmc bkops enable </path/to/mmcblkX>\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);
> +	}
> +
> +	if (!(ext_csd[EXT_CSD_BKOPS_SUPPORT] & 0x1)) {
> +		fprintf(stderr, "%s dosen't support BKOPS\n", device);
> +		exit(1);
> +	}
> +
> +	ret = write_extcsd_value(fd, EXT_CSD_BKOPS_EN, BKOPS_ENABLE);
> +	if (ret) {
> +		fprintf(stderr, "Could not write 0x%02x to "
> +			"EXT_CSD[%d] in %s\n",
> +			value, EXT_CSD_BKOPS_EN, device);
> +		exit(1);
> +	}
> +
> +	return ret;
> +}
> +
>  int do_read_extcsd(int nargs, char **argv)
>  {
>  	__u8 ext_csd[512], ext_csd_rev, reg;
> diff --git a/mmc_cmds.h b/mmc_cmds.h
> index 2eb1df5..1dd4324 100644
> --- a/mmc_cmds.h
> +++ b/mmc_cmds.h
> @@ -21,3 +21,4 @@ int do_writeprotect_get(int nargs, char **argv);
>  int do_writeprotect_set(int nargs, char **argv);
>  int do_disable_512B_emulation(int nargs, char **argv);
>  int do_write_boot_en(int nargs, char **argv);
> +int do_write_bkops_en(int nargs, char **argv);
> 


  reply	other threads:[~2012-08-31  8:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-19 15:12 [RESEND PATCH] mmc-util: add the method to enable the bkops Jaehoon Chung
2012-08-31  8:04 ` Jaehoon Chung [this message]
2012-08-31  9:41   ` Chris Ball
2012-09-03  5:23     ` Jaehoon Chung

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=50407028.5070608@samsung.com \
    --to=jh80.chung@samsung.com \
    --cc=adrian.hunter@intel.com \
    --cc=chuanxiao.dong@intel.com \
    --cc=cjb@laptop.org \
    --cc=hanumath.prasad@stericsson.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=merez@codeaurora.org \
    --cc=per.forlin@stericsson.com \
    --cc=saugata.das@linaro.org \
    --cc=sebras@gmail.com \
    --cc=svenkatr@ti.com \
    --cc=ulf.hansson@stericsson.com \
    /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.