All of lore.kernel.org
 help / color / mirror / Atom feed
From: Subhash Jadavani <subhashj@codeaurora.org>
To: Saugata Das <saugata.das@stericsson.com>
Cc: linux-mmc@vger.kernel.org, patches@linaro.org, saugata.das@linaro.org
Subject: Re: [RFC 2/2] [MMC-4.5] [MMC UTIL] Disable emulation
Date: Mon, 14 May 2012 16:20:51 +0530	[thread overview]
Message-ID: <4FB0E38B.2060301@codeaurora.org> (raw)
In-Reply-To: <1336574901-26579-2-git-send-email-saugata.das@stericsson.com>

On 5/9/2012 8:18 PM, Saugata Das wrote:
> From: Saugata Das<saugata.das@linaro.org>
>
> In this patch, we add utility to disable emulation mode in the eMMC-4.5.
> This is done to increase the data sector size to 4KB.
>
> Signed-off-by: Saugata Das<saugata.das@linaro.org>
> ---
>   mmc.c      |    6 ++++++
>   mmc.h      |    2 ++
>   mmc_cmds.c |   42 ++++++++++++++++++++++++++++++++++++++++++
>   mmc_cmds.h |    1 +
>   4 files changed, 51 insertions(+), 0 deletions(-)
>
> diff --git a/mmc.c b/mmc.c
> index c27fc24..43b95aa 100644
> --- a/mmc.c
> +++ b/mmc.c
> @@ -65,6 +65,12 @@ static struct Command commands[] = {
>   		"Set the eMMC writeprotect status of<device>.",
>   	  NULL
>   	},
> +	{ do_disable_emulation, -1,
> +	  "disable emulation", "<device>\n"
> +		"Set the eMMC data sector size to 4KB by disabling emulation<device>.",
> +	  NULL
> +	},
> +
>   	{ 0, 0, 0, 0 }
>   };
>
> diff --git a/mmc.h b/mmc.h
> index 3af36f1..a2050fa 100644
> --- a/mmc.h
> +++ b/mmc.h
> @@ -35,6 +35,8 @@
>   #define EXT_CSD_PART_SWITCH_TIME	199
>   #define EXT_CSD_BOOT_CFG		179
>   #define EXT_CSD_BOOT_WP			173
> +#define EXT_CSD_NATIVE_SECTOR_SIZE	63 /* R */
> +#define EXT_CSD_NATIVE_SECTOR	62 /* R/W */
>
>   /*
>    * EXT_CSD field definitions
> diff --git a/mmc_cmds.c b/mmc_cmds.c
> index 4562cef..2713ccd 100644
> --- a/mmc_cmds.c
> +++ b/mmc_cmds.c
> @@ -168,6 +168,48 @@ int do_writeprotect_set(int nargs, char **argv)
>   	return ret;
>   }
>
> +
> +int do_disable_emulation(int nargs, char **argv)
> +{
> +	__u8 ext_csd[512], native_sector_size;
> +	int fd, ret;
> +	char *device;
> +
> +	CHECK(nargs != 2, "Usage: mmc</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);
> +	}
> +
> +	native_sector_size = ext_csd[EXT_CSD_NATIVE_SECTOR_SIZE];
> +
> +	if (native_sector_size) {
Before setting the use_native_sector field, can you also check if 
NATIVE_SECTOR_SIZE and DATA_SECTOR_SIZE fields are different. If they 
are same then there is no need to set the USE_NATIVE_SECTOR size field.

> +		ret = write_extcsd_value(fd, EXT_CSD_NATIVE_SECTOR, 1);
> +
> +		if (ret) {
> +			fprintf(stderr, "Could not write 0x%02x to "
> +				"EXT_CSD[%d] in %s\n",
> +				1, EXT_CSD_BOOT_WP, device);
> +			exit(1);
> +		}
> +	} else {
> +		printf("MMC does not support 4KB native sector\n");
> +	}
> +
> +	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 66e9acb..dd107d5 100644
> --- a/mmc_cmds.h
> +++ b/mmc_cmds.h
> @@ -19,3 +19,4 @@ int do_read_extcsd(int nargs, char **argv);
>   int do_write_extcsd(int nargs, char **argv);
>   int do_writeprotect_get(int nargs, char **argv);
>   int do_writeprotect_set(int nargs, char **argv);
> +int do_disable_emulation(int nargs, char **argv);


  parent reply	other threads:[~2012-05-14 10:50 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-09 14:48 [RFC 1/2] [MMC-4.5] Disable emulation Saugata Das
2012-05-09 14:48 ` [RFC 2/2] [MMC-4.5] [MMC UTIL] " Saugata Das
2012-05-14 10:39   ` Subhash Jadavani
2012-05-14 15:25     ` Saugata Das
2012-05-14 10:50   ` Subhash Jadavani [this message]
2012-05-14 15:09     ` Saugata Das
2012-05-14 10:25 ` [RFC 1/2] [MMC-4.5] " Subhash Jadavani
2012-05-14 14:51   ` Saugata Das
2012-05-15  6:40     ` Subhash Jadavani
2012-05-15  9:41       ` Luca Porzio (lporzio)
2012-05-15 10:17       ` S, Venkatraman
2012-05-15 14:55         ` Saugata Das
2012-05-15 14:49       ` Saugata Das

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=4FB0E38B.2060301@codeaurora.org \
    --to=subhashj@codeaurora.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=patches@linaro.org \
    --cc=saugata.das@linaro.org \
    --cc=saugata.das@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.