From: Chris Ball <cjb@laptop.org>
To: Adrian Hunter <adrian.hunter@nokia.com>
Cc: linux-mmc Mailing List <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH 1/1] mmc: refine DDR support
Date: Thu, 14 Oct 2010 03:03:12 +0100 [thread overview]
Message-ID: <20101014020312.GB3553@void.printf.net> (raw)
In-Reply-To: <20101011094350.27911.9006.sendpatchset@ahunter-work.research.nokia.com>
Hi Adrian,
On Mon, Oct 11, 2010 at 12:43:50PM +0300, Adrian Hunter wrote:
> >From f92528a3ebbff6e3f73fc2cb0d197ece9180324e Mon Sep 17 00:00:00 2001
> From: Adrian Hunter <adrian.hunter@nokia.com>
> Date: Mon, 11 Oct 2010 12:30:25 +0300
> Subject: [PATCH] mmc: refine DDR support
>
> One flaw with DDR support is that MMC core does
> not inform the driver which DDR mode it has
> selected. This patch expands the ios->ddr flag
> to do that.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
> ---
> drivers/mmc/core/core.c | 7 ++++---
> drivers/mmc/core/core.h | 3 ++-
> drivers/mmc/core/mmc.c | 6 +++---
> include/linux/mmc/host.h | 3 ++-
> 4 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index c94565d..ce5f4a5 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -653,10 +653,11 @@ void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode)
> /*
> * Change data bus width and DDR mode of a host.
> */
> -void mmc_set_bus_width_ddr(struct mmc_host *host, unsigned int width, int ddr)
> +void mmc_set_bus_width_ddr(struct mmc_host *host, unsigned int width,
> + unsigned int ddr)
> {
> host->ios.bus_width = width;
> - host->ios.ddr = ddr ? MMC_DDR_MODE : MMC_SDR_MODE;
> + host->ios.ddr = ddr;
> mmc_set_ios(host);
> }
>
> @@ -665,7 +666,7 @@ void mmc_set_bus_width_ddr(struct mmc_host *host, unsigned int width, int ddr)
> */
> void mmc_set_bus_width(struct mmc_host *host, unsigned int width)
> {
> - mmc_set_bus_width_ddr(host, width, 0);
> + mmc_set_bus_width_ddr(host, width, MMC_SDR_MODE);
> }
>
> /**
> diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
> index 90e0ac7..77240cd 100644
> --- a/drivers/mmc/core/core.h
> +++ b/drivers/mmc/core/core.h
> @@ -35,7 +35,8 @@ void mmc_set_chip_select(struct mmc_host *host, int mode);
> void mmc_set_clock(struct mmc_host *host, unsigned int hz);
> void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
> void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
> -void mmc_set_bus_width_ddr(struct mmc_host *host, unsigned int width, int ddr);
> +void mmc_set_bus_width_ddr(struct mmc_host *host, unsigned int width,
> + unsigned int ddr);
> u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
> void mmc_set_timing(struct mmc_host *host, unsigned int timing);
>
> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
> index 31a8bbe..995261f 100644
> --- a/drivers/mmc/core/mmc.c
> +++ b/drivers/mmc/core/mmc.c
> @@ -375,7 +375,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
> struct mmc_card *oldcard)
> {
> struct mmc_card *card;
> - int err, ddr = 0;
> + int err, ddr = MMC_SDR_MODE;
> u32 cid[4];
> unsigned int max_dtr;
>
> @@ -523,10 +523,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
> if (mmc_card_highspeed(card)) {
> if ((card->ext_csd.card_type & EXT_CSD_CARD_TYPE_DDR_1_8V)
> && (host->caps & (MMC_CAP_1_8V_DDR)))
> - ddr = 1;
> + ddr = MMC_1_8V_DDR_MODE;
> else if ((card->ext_csd.card_type & EXT_CSD_CARD_TYPE_DDR_1_2V)
> && (host->caps & (MMC_CAP_1_2V_DDR)))
> - ddr = 1;
> + ddr = MMC_1_2V_DDR_MODE;
> }
>
> /*
> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> index c3ffad8..6d87f68 100644
> --- a/include/linux/mmc/host.h
> +++ b/include/linux/mmc/host.h
> @@ -54,7 +54,8 @@ struct mmc_ios {
> unsigned char ddr; /* dual data rate used */
>
> #define MMC_SDR_MODE 0
> -#define MMC_DDR_MODE 1
> +#define MMC_1_2V_DDR_MODE 1
> +#define MMC_1_8V_DDR_MODE 2
> };
>
> struct mmc_host_ops {
> --
Thanks, applied to mmc-next.
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
prev parent reply other threads:[~2010-10-14 2:03 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-11 9:43 [PATCH 0/1] MMC DDR support Adrian Hunter
2010-10-11 9:43 ` [PATCH 1/1] mmc: refine " Adrian Hunter
2010-10-14 2:03 ` Chris Ball [this message]
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=20101014020312.GB3553@void.printf.net \
--to=cjb@laptop.org \
--cc=adrian.hunter@nokia.com \
--cc=linux-mmc@vger.kernel.org \
/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.