Subject: [PATCH 2/3] omap_hsmmc: add pm_caps field

From: [email-masked] (Igor Grinberg)
Date: Mon, 28 Nov 2011 11:15:29 +0200

Hi Eliad,

On 11/22/11 16:02, Eliad Peller wrote:
> Add pm_caps field to omap2_hsmmc_info and omap_mmc_slot_data
> structs, so we will be able to indicate mmc pm capabilities
> in the board file.

Shouldn't this be user space runtime controllable?
Instead of being a static per board decision?

> 
> Signed-off-by: Eliad Peller <[email-masked]>
> ---
>  arch/arm/mach-omap2/hsmmc.c           |    1 +
>  arch/arm/mach-omap2/hsmmc.h           |    1 +
>  arch/arm/plat-omap/include/plat/mmc.h |    1 +
>  drivers/mmc/host/omap_hsmmc.c         |    2 ++
>  4 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
> index 097a42d..d00a54a 100644
> --- a/arch/arm/mach-omap2/hsmmc.c
> +++ b/arch/arm/mach-omap2/hsmmc.c
> @@ -306,6 +306,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
>  	mmc->slots[0].name = hc_name;
>  	mmc->nr_slots = 1;
>  	mmc->slots[0].caps = c->caps;
> +	mmc->slots[0].pm_caps = c->pm_caps;
>  	mmc->slots[0].internal_clock = !c->ext_clock;
>  	mmc->dma_mask = 0xffffffff;
>  	if (cpu_is_omap44xx())
> diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h
> index f757e78..c440973 100644
> --- a/arch/arm/mach-omap2/hsmmc.h
> +++ b/arch/arm/mach-omap2/hsmmc.h
> @@ -12,6 +12,7 @@ struct omap2_hsmmc_info {
>  	u8	mmc;		/* controller 1/2/3 */
>  	u32	caps;		/* 4/8 wires and any additional host
>  				 * capabilities OR'd (ref. linux/mmc/host.h) */
> +	u32	pm_caps;	/* PM capabilities */
>  	bool	transceiver;	/* MMC-2 option */
>  	bool	ext_clock;	/* use external pin for input clock */
>  	bool	cover_only;	/* No card detect - just cover switch */
> diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h
> index c7b8741..d3263ac 100644
> --- a/arch/arm/plat-omap/include/plat/mmc.h
> +++ b/arch/arm/plat-omap/include/plat/mmc.h
> @@ -79,6 +79,7 @@ struct omap_mmc_platform_data {
>  		 */
>  		u8  wires;	/* Used for the MMC driver on omap1 and 2420 */
>  		u32 caps;	/* Used for the MMC driver on 2430 and later */
> +		u32 pm_caps;	/* PM capabilities of the mmc */
>  
>  		/*
>  		 * nomux means "standard" muxing is wrong on this board, and
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index ec7c83c..2bc964a6 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1985,6 +1985,8 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
>  	if (mmc_slot(host).nonremovable)
>  		mmc->caps |= MMC_CAP_NONREMOVABLE;
>  
> +	mmc->pm_caps = mmc_slot(host).pm_caps;
> +
>  	omap_hsmmc_conf_bus_power(host);
>  
>  	/* Select DMA lines */

-- 
Regards,
Igor.