linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@nokia.com>
To: Matt Fleming <matt@console-pimps.org>
Cc: Pierre Ossman <pierre@ossman.eu>,
	"Lavinen Jarkko (Nokia-D/Helsinki)" <jarkko.lavinen@nokia.com>,
	"Karpov Denis.2 (EXT-Teleca/Helsinki)"
	<ext-denis.2.karpov@nokia.com>,
	linux-omap Mailing List <linux-omap@vger.kernel.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 7/32] mmc: add host capabilities for SD only and MMC	only
Date: Sun, 26 Jul 2009 09:14:58 +0300	[thread overview]
Message-ID: <4A6BF462.6040909@nokia.com> (raw)
In-Reply-To: <20090725235150.GD12665@console-pimps.org>

Matt Fleming wrote:
> On Sat, Jul 25, 2009 at 10:45:07PM +0300, Adrian Hunter wrote:
>> I have no objections if you write such a patch :-)
> 
> See also my change to [PATCH 32/32] of this series.
> 
> I don't have hardware to test all of the affected drivers but I was
> thinking of something along the lines of,

Seems fine to me.

> 
> ---
> 
> mmc: add host capabilities for SD only and MMC only
> 
> Some hosts can accept only certain types of cards.  For example, an eMMC
> is MMC only and a uSD slot may be SD only.  However the MMC card scanning
> logic checks for all card types one by one.
> 
> Add host capabilities to specify which card types can be used, and amend
> the card scanning logic to skip scanning for those types which cannot be
> used.
> 
> Signed-off-by: Matt Fleming <matt@console-pimps.org>
> Cc: Adrian Hunter <adrian.hunter@nokia.com>
> Cc: Ian Molton <ian@mnementh.co.uk>
> Cc: "Roberto A. Foglietta" <roberto.foglietta@gmail.com>
> Cc: Jarkko Lavinen <jarkko.lavinen@nokia.com>
> Cc: Denis Karpov <ext-denis.2.karpov@nokia.com>
> Cc: Pierre Ossman <pierre@ossman.eu>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> ---
>  drivers/mmc/core/core.c       |   16 +++++++++++++++-
>  drivers/mmc/host/at91_mci.c   |    2 +-
>  drivers/mmc/host/atmel-mci.c  |    1 +
>  drivers/mmc/host/au1xmmc.c    |    3 ++-
>  drivers/mmc/host/cb710-mmc.c  |    3 ++-
>  drivers/mmc/host/imxmmc.c     |    3 ++-
>  drivers/mmc/host/mmc_spi.c    |    2 +-
>  drivers/mmc/host/mmci.c       |    2 ++
>  drivers/mmc/host/mvsdio.c     |    3 ++-
>  drivers/mmc/host/mxcmmc.c     |    3 ++-
>  drivers/mmc/host/omap.c       |    2 +-
>  drivers/mmc/host/pxamci.c     |    2 +-
>  drivers/mmc/host/s3cmci.c     |    3 ++-
>  drivers/mmc/host/sdhci.c      |    2 +-
>  drivers/mmc/host/sdricoh_cs.c |    3 ++-
>  drivers/mmc/host/tifm_sd.c    |    3 ++-
>  drivers/mmc/host/tmio_mmc.c   |    3 ++-
>  drivers/mmc/host/via-sdmmc.c  |    3 ++-
>  drivers/mmc/host/wbsd.c       |    3 ++-
>  include/linux/mmc/host.h      |    3 +++
>  20 files changed, 48 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index c5a7857..7d905f9 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -1066,7 +1066,11 @@ void mmc_rescan(struct work_struct *work)
>         mmc_power_up(host);
>         mmc_go_idle(host);
> 
> -       mmc_send_if_cond(host, host->ocr_avail);
> +       if ((host->caps & MMC_CAP_SDIO) || (host->caps & MMC_CAP_SD))
> +               mmc_send_if_cond(host, host->ocr_avail);
> +
> +       if (!(host->caps & MMC_CAP_SDIO))
> +               goto not_sdio;
> 
>         /*
>          * First we search for SDIO...
> @@ -1078,6 +1082,10 @@ void mmc_rescan(struct work_struct *work)
>                 goto out;
>         }
> 
> +not_sdio:
> +       if (!(host->caps & MMC_CAP_SD))
> +               goto not_sd;
> +
>         /*
>          * ...then normal SD...
>          */
> @@ -1088,6 +1096,10 @@ void mmc_rescan(struct work_struct *work)
>                 goto out;
>         }
> 
> +not_sd:
> +       if (!(host->caps & MMC_CAP_MMC))
> +               goto not_mmc;
> +
>         /*
>          * ...and finally MMC.
>          */
> @@ -1098,6 +1110,8 @@ void mmc_rescan(struct work_struct *work)
>                 goto out;
>         }
> 
> +not_mmc:
> +
>         mmc_release_host(host);
>         mmc_power_off(host);
> 
> diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c
> index e556d42..aa541a5 100644
> --- a/drivers/mmc/host/at91_mci.c
> +++ b/drivers/mmc/host/at91_mci.c
> @@ -1007,7 +1007,7 @@ static int __init at91_mci_probe(struct platform_device *pdev)
>         mmc->f_min = 375000;
>         mmc->f_max = 25000000;
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> -       mmc->caps = MMC_CAP_SDIO_IRQ;
> +       mmc->caps = MMC_CAP_SDIO_IRQ | MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
> 
>         mmc->max_blk_size = 4095;
>         mmc->max_blk_count = mmc->max_req_size;
> diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
> index 7b603e4..907841a 100644
> --- a/drivers/mmc/host/atmel-mci.c
> +++ b/drivers/mmc/host/atmel-mci.c
> @@ -1467,6 +1467,7 @@ static int __init atmci_init_slot(struct atmel_mci *host,
>         mmc->f_min = DIV_ROUND_UP(host->bus_hz, 512);
>         mmc->f_max = host->bus_hz / 2;
>         mmc->ocr_avail  = MMC_VDD_32_33 | MMC_VDD_33_34;
> +       mmc->caps = MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
>         if (slot_data->bus_width >= 4)
>                 mmc->caps |= MMC_CAP_4_BIT_DATA;
> 
> diff --git a/drivers/mmc/host/au1xmmc.c b/drivers/mmc/host/au1xmmc.c
> index d3f5561..4aae609 100644
> --- a/drivers/mmc/host/au1xmmc.c
> +++ b/drivers/mmc/host/au1xmmc.c
> @@ -1003,7 +1003,8 @@ static int __devinit au1xmmc_probe(struct platform_device *pdev)
>         mmc->max_blk_count = 512;
> 
>         mmc->ocr_avail = AU1XMMC_OCR;
> -       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ |
> +               MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
> 
>         host->status = HOST_S_IDLE;
> 
> diff --git a/drivers/mmc/host/cb710-mmc.c b/drivers/mmc/host/cb710-mmc.c
> index 11efefb..622b420 100644
> --- a/drivers/mmc/host/cb710-mmc.c
> +++ b/drivers/mmc/host/cb710-mmc.c
> @@ -721,7 +721,8 @@ static int __devinit cb710_mmc_init(struct platform_device *pdev)
>         mmc->f_max = val;
>         mmc->f_min = val >> cb710_clock_divider_log2[CB710_MAX_DIVIDER_IDX];
>         mmc->ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34;
> -       mmc->caps = MMC_CAP_4_BIT_DATA;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +               MMC_CAP_SD | MMC_CAP_MMC;
> 
>         reader = mmc_priv(mmc);
> 
> diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
> index e0be21a..b6653ba 100644
> --- a/drivers/mmc/host/imxmmc.c
> +++ b/drivers/mmc/host/imxmmc.c
> @@ -962,7 +962,8 @@ static int __init imxmci_probe(struct platform_device *pdev)
>         mmc->f_min = 150000;
>         mmc->f_max = CLK_RATE/2;
>         mmc->ocr_avail = MMC_VDD_32_33;
> -       mmc->caps = MMC_CAP_4_BIT_DATA;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +               MMC_CAP_SD | MMC_CAP_MMC;
> 
>         /* MMC core transfer sizes tunable parameters */
>         mmc->max_hw_segs = 64;
> diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
> index a461017..e1a3c7f 100644
> --- a/drivers/mmc/host/mmc_spi.c
> +++ b/drivers/mmc/host/mmc_spi.c
> @@ -1386,7 +1386,7 @@ static int mmc_spi_probe(struct spi_device *spi)
>         mmc->max_req_size = MMC_SPI_BLOCKSATONCE * MMC_SPI_BLOCKSIZE;
>         mmc->max_blk_count = MMC_SPI_BLOCKSATONCE;
> 
> -       mmc->caps = MMC_CAP_SPI;
> +       mmc->caps = MMC_CAP_SPI | MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
> 
>         /* SPI doesn't need the lowspeed device identification thing for
>          * MMC or SD cards, since it never comes up in open drain mode.
> diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
> index e1aa847..55e882b 100644
> --- a/drivers/mmc/host/mmci.c
> +++ b/drivers/mmc/host/mmci.c
> @@ -557,6 +557,8 @@ static int __devinit mmci_probe(struct amba_device *dev, struct amba_id *id)
>         mmc->f_max = min(host->mclk, fmax);
>         mmc->ocr_avail = plat->ocr_mask;
> 
> +       mmc->caps = MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
> +
>         /*
>          * We can do SGIO
>          */
> diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
> index 34e2348..1c3f4aa 100644
> --- a/drivers/mmc/host/mvsdio.c
> +++ b/drivers/mmc/host/mvsdio.c
> @@ -734,7 +734,8 @@ static int __init mvsd_probe(struct platform_device *pdev)
> 
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
>         mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ |
> -                   MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
> +                   MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
> +                   MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
> 
>         mmc->f_min = DIV_ROUND_UP(host->base_clock, MVSD_BASE_DIV_MAX);
>         mmc->f_max = maxfreq;
> diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
> index bc14bb1..d67d639 100644
> --- a/drivers/mmc/host/mxcmmc.c
> +++ b/drivers/mmc/host/mxcmmc.c
> @@ -700,7 +700,8 @@ static int mxcmci_probe(struct platform_device *pdev)
>         }
> 
>         mmc->ops = &mxcmci_ops;
> -       mmc->caps = MMC_CAP_4_BIT_DATA;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_MMC |
> +               MMC_CAP_SD | MMC_CAP_SDIO;
> 
>         /* MMC core transfer sizes tunable parameters */
>         mmc->max_hw_segs = 64;
> diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
> index e7a331d..d6d23e5 100644
> --- a/drivers/mmc/host/omap.c
> +++ b/drivers/mmc/host/omap.c
> @@ -1314,7 +1314,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id)
> 
>         host->slots[id] = slot;
> 
> -       mmc->caps = 0;
> +       mmc->caps = MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
>         if (host->pdata->slots[id].wires >= 4)
>                 mmc->caps |= MMC_CAP_4_BIT_DATA;
> 
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index e55ac79..1a71da3 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -598,7 +598,7 @@ static int pxamci_probe(struct platform_device *pdev)
> 
>         pxamci_init_ocr(host);
> 
> -       mmc->caps = 0;
> +       mmc->caps = MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
>         host->cmdat = 0;
>         if (!cpu_is_pxa25x()) {
>                 mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
> diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
> index 8c08cd7..9d73289 100644
> --- a/drivers/mmc/host/s3cmci.c
> +++ b/drivers/mmc/host/s3cmci.c
> @@ -1376,7 +1376,8 @@ static int __devinit s3cmci_probe(struct platform_device *pdev, int is2440)
> 
>         mmc->ops        = &s3cmci_ops;
>         mmc->ocr_avail  = MMC_VDD_32_33 | MMC_VDD_33_34;
> -       mmc->caps       = MMC_CAP_4_BIT_DATA;
> +       mmc->caps       = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +                         MMC_CAP_SD | MMC_CAP_MMC;
>         mmc->f_min      = host->clk_rate / (host->clk_div * 256);
>         mmc->f_max      = host->clk_rate / host->clk_div;
> 
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 6779b4e..6334938 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1768,7 +1768,7 @@ int sdhci_add_host(struct sdhci_host *host)
>         mmc->ops = &sdhci_ops;
>         mmc->f_min = host->max_clk / 256;
>         mmc->f_max = host->max_clk;
> -       mmc->caps = MMC_CAP_SDIO_IRQ;
> +       mmc->caps = MMC_CAP_SDIO_IRQ | MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
> 
>         if (!(host->quirks & SDHCI_QUIRK_FORCE_1_BIT_DATA))
>                 mmc->caps |= MMC_CAP_4_BIT_DATA;
> diff --git a/drivers/mmc/host/sdricoh_cs.c b/drivers/mmc/host/sdricoh_cs.c
> index cb41e9c..7a24bb1 100644
> --- a/drivers/mmc/host/sdricoh_cs.c
> +++ b/drivers/mmc/host/sdricoh_cs.c
> @@ -443,7 +443,8 @@ static int sdricoh_init_mmc(struct pci_dev *pci_dev,
>         mmc->f_min = 450000;
>         mmc->f_max = 24000000;
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> -       mmc->caps |= MMC_CAP_4_BIT_DATA;
> +       mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +               MMC_CAP_SD | MMC_CAP_MMC;
> 
>         mmc->max_seg_size = 1024 * 512;
>         mmc->max_blk_size = 512;
> diff --git a/drivers/mmc/host/tifm_sd.c b/drivers/mmc/host/tifm_sd.c
> index 82554dd..cb170d5 100644
> --- a/drivers/mmc/host/tifm_sd.c
> +++ b/drivers/mmc/host/tifm_sd.c
> @@ -973,7 +973,8 @@ static int tifm_sd_probe(struct tifm_dev *sock)
> 
>         mmc->ops = &tifm_sd_ops;
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> -       mmc->caps = MMC_CAP_4_BIT_DATA;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +               MMC_CAP_SD | MMC_CAP_MMC;
>         mmc->f_min = 20000000 / 60;
>         mmc->f_max = 24000000;
> 
> diff --git a/drivers/mmc/host/tmio_mmc.c b/drivers/mmc/host/tmio_mmc.c
> index c246191..a14d1af 100644
> --- a/drivers/mmc/host/tmio_mmc.c
> +++ b/drivers/mmc/host/tmio_mmc.c
> @@ -555,7 +555,8 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
>         }
> 
>         mmc->ops = &tmio_mmc_ops;
> -       mmc->caps = MMC_CAP_4_BIT_DATA;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +               MMC_CAP_SD | MMC_CAP_MMC;
>         mmc->f_max = pdata->hclk;
>         mmc->f_min = mmc->f_max / 512;
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> diff --git a/drivers/mmc/host/via-sdmmc.c b/drivers/mmc/host/via-sdmmc.c
> index 632858a..c6c652a 100644
> --- a/drivers/mmc/host/via-sdmmc.c
> +++ b/drivers/mmc/host/via-sdmmc.c
> @@ -1046,7 +1046,8 @@ static void via_init_mmc_host(struct via_crdr_mmc_host *host)
>         mmc->f_min = VIA_CRDR_MIN_CLOCK;
>         mmc->f_max = VIA_CRDR_MAX_CLOCK;
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
> -       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
> +               MMC_CAP_SDIO | MMC_CAP_SD | MMC_CAP_MMC;
>         mmc->ops = &via_sdc_ops;
> 
>         /*Hardware cannot do scatter lists*/
> diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
> index 89bf8cd..16f0e5b 100644
> --- a/drivers/mmc/host/wbsd.c
> +++ b/drivers/mmc/host/wbsd.c
> @@ -1219,7 +1219,8 @@ static int __devinit wbsd_alloc_mmc(struct device *dev)
>         mmc->f_min = 375000;
>         mmc->f_max = 24000000;
>         mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> -       mmc->caps = MMC_CAP_4_BIT_DATA;
> +       mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO |
> +               MMC_CAP_SD | MMC_CAP_MMC;
> 
>         spin_lock_init(&host->lock);
> 
> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> index 4ae5766..3902c5c 100644
> --- a/include/linux/mmc/host.h
> +++ b/include/linux/mmc/host.h
> @@ -150,6 +150,9 @@ struct mmc_host {
>  #define MMC_CAP_DISABLE                (1 << 7)        /* Can the host be disabled */
>  #define MMC_CAP_NONREMOVABLE   (1 << 8)        /* Nonremovable e.g. eMMC */
>  #define MMC_CAP_WAIT_WHILE_BUSY        (1 << 9)        /* Waits while card is busy */
> +#define MMC_CAP_SDIO           (1 << 10)       /* Card can be SDIO */
> +#define MMC_CAP_SD             (1 << 11)       /* Card can be SD */
> +#define MMC_CAP_MMC            (1 << 12)       /* Card can be MMC */
> 
>         /* host specific block data */
>         unsigned int            max_seg_size;   /* see blk_queue_max_segment_size */
> --
> 1.6.4.rc0
> 
> 

  reply	other threads:[~2009-07-26  6:14 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-10 12:40 [PATCH 0/32] mmc and omap_hsmmc patches Adrian Hunter
2009-07-10 12:40 ` [PATCH 1/32] mmc: add 'enable' and 'disable' methods to mmc host Adrian Hunter
2009-07-10 17:15   ` Madhusudhan
2009-07-10 19:12     ` Adrian Hunter
2009-07-23 20:37   ` Linus Walleij
2009-07-10 12:40 ` [PATCH 2/32] mmc: allow host claim / release nesting Adrian Hunter
2009-07-10 12:40 ` [PATCH 3/32] mmc: add MMC_CAP_NONREMOVABLE host capability Adrian Hunter
2009-07-10 12:40 ` [PATCH 4/32] mmc: add ability to save power by powering off cards Adrian Hunter
2009-07-10 12:40 ` [PATCH 5/32] mmc: add mmc card sleep and awake support Adrian Hunter
2009-07-10 12:40 ` [PATCH 6/32] mmc: power off once at removal Adrian Hunter
2009-07-10 12:40 ` [PATCH 7/32] mmc: add host capabilities for SD only and MMC only Adrian Hunter
2009-07-25 15:53   ` Matt Fleming
2009-07-25 16:17     ` Adrian Hunter
2009-07-25 18:40       ` Matt Fleming
2009-07-25 19:45         ` Adrian Hunter
2009-07-25 23:51           ` Matt Fleming
2009-07-26  6:14             ` Adrian Hunter [this message]
2009-07-10 12:41 ` [PATCH 8/32] mmc: check status after MMC SWITCH command Adrian Hunter
2009-07-10 12:41 ` [PATCH 9/32] omap_hsmmc: add debugfs entry (host registers) Adrian Hunter
2009-07-10 12:41 ` [PATCH 10/32] omap_hsmmc: make use of new enable/disable interface Adrian Hunter
2009-07-10 12:41 ` [PATCH 11/32] ARM: OMAP: mmc-twl4030: add context loss counter support Adrian Hunter
2009-07-10 12:41 ` [PATCH 12/32] omap_hsmmc: keep track of power mode Adrian Hunter
2009-07-10 12:41 ` [PATCH 13/32] omap_hsmmc: context save/restore support Adrian Hunter
2009-07-10 12:41 ` [PATCH 14/32] omap_hsmmc: set open drain bit correctly Adrian Hunter
2009-07-10 12:41 ` [PATCH 15/32] omap_hsmmc: ensure workqueues are empty before suspend Adrian Hunter
2009-07-10 12:41 ` [PATCH 16/32] omap_hsmmc: fix scatter-gather list sanity checking Adrian Hunter
2009-07-10 12:42 ` [PATCH 17/32] omap_hsmmc: make use of new MMC_CAP_NONREMOVABLE host capability Adrian Hunter
2009-07-10 12:42 ` [PATCH 18/32] omap_hsmmc: support for deeper power saving states Adrian Hunter
2009-07-10 12:42 ` [PATCH 19/32] ARM: OMAP: mmc-twl4030: add regulator sleep / wake function Adrian Hunter
2009-07-10 12:42 ` [PATCH 20/32] omap_hsmmc: put MMC regulator to sleep Adrian Hunter
2009-07-24 22:51   ` Andrew Morton
2009-07-26  6:34     ` Adrian Hunter
2009-07-10 12:42 ` [PATCH 21/32] omap_hsmmc: add mmc card sleep and awake support Adrian Hunter
2009-07-10 12:42 ` [PATCH 22/32] omap_hsmmc: fix NULL pointer dereference Adrian Hunter
2009-07-10 12:42 ` [PATCH 23/32] omap_hsmmc: cleanup macro usage Adrian Hunter
2009-07-10 12:42 ` [PATCH 24/32] omap_hsmmc: clear interrupt status after init sequence Adrian Hunter
2009-07-10 12:43 ` [PATCH 25/32] omap_hsmmc: cater for weird CMD6 behaviour Adrian Hunter
2009-07-10 12:43 ` [PATCH 26/32] omap_hsmmc: prevent races with irq handler Adrian Hunter
2009-07-24 22:53   ` Andrew Morton
2009-07-27  9:06     ` Adrian Hunter
2009-07-10 12:43 ` [PATCH 27/32] omap_hsmmc: pass host capabilities for SD only and MMC only Adrian Hunter
2009-07-10 12:43 ` [PATCH 28/32] omap_hsmmc: code refactoring Adrian Hunter
2009-07-10 12:43 ` [PATCH 29/32] omap_hsmmc: protect the card when the cover is open Adrian Hunter
2009-07-10 12:43 ` [PATCH 30/32] omap_hsmmc: ensure all clock enables and disables are paired Adrian Hunter
2009-07-10 12:43 ` [PATCH 31/32] omap_hsmmc: set a large data timeout for commands with busy signal Adrian Hunter
2009-07-10 12:43 ` [PATCH 32/32] ARM: OMAP: RX51: set MMC capabilities and power-saving flag Adrian Hunter
2009-07-25 23:53   ` Matt Fleming
2009-07-27  7:58     ` Adrian Hunter
2009-07-27  8:27       ` Matt Fleming
2009-07-27  8:58         ` Adrian Hunter
2009-07-27  9:15           ` Matt Fleming
     [not found]             ` <20090727102111.GI12665@console-pimps.org>
2009-07-27 11:02               ` Adrian Hunter
2009-07-27 18:14                 ` Andrew Morton
2009-07-27 19:32                   ` Matt Fleming
2009-07-26 19:57 ` [PATCH 0/32] mmc and omap_hsmmc patches Matt Fleming

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=4A6BF462.6040909@nokia.com \
    --to=adrian.hunter@nokia.com \
    --cc=akpm@linux-foundation.org \
    --cc=ext-denis.2.karpov@nokia.com \
    --cc=jarkko.lavinen@nokia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=matt@console-pimps.org \
    --cc=pierre@ossman.eu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).