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:09:51 +0530 [thread overview]
Message-ID: <4FB0E0F7.3010601@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,
can we add good name? which emulation we are disabling? It's 512B
emulation mode, we are disabling.
> + "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 */
Can we name this as EXT_CSD_USE_NATIVE_SECTOR?
>
> /*
> * 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) {
> + ret = write_extcsd_value(fd, EXT_CSD_NATIVE_SECTOR, 1);
Just curious, how are we going to power cycle the device after setting
the USE_NATIVE_SECTOR? because DATA_SECTOR_SIZE won't be changed to 4K
until we explicitly power cycle after setting this field.
> +
> + 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);
next prev parent reply other threads:[~2012-05-14 10:39 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 [this message]
2012-05-14 15:25 ` Saugata Das
2012-05-14 10:50 ` Subhash Jadavani
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=4FB0E0F7.3010601@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.