> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of 
> Kadiyala, Kishore
> Sent: Saturday, September 18, 2010 10:04 PM
> To: [email protected]; [email protected]; 
> [email protected]
> Cc: [email protected]; Cousson, Benoit
> Subject: [PATCH v2 3/4] omap4 hsmmc: Register offset handling
> 
> The offset handling implementation of omap4 mmc registers 
> which was already present can't be reused once hwmod 
> modifications are done for mmc driver.
> Since hwmod data file for OMAP4 is an auto generated the base 
> address for MMC will remain same as OMAP3 and thus the offset 
> deviation of registers should be updated in the hsmmc driver.
> The omap-mmc platform data is updated with a register offset 
> which will be updated and used in the driver accordingly.
> 
> Signed-off-by: Kishore Kadiyala <[email protected]>
> ---
>  arch/arm/mach-omap2/devices.c         |    8 +++-----
>  arch/arm/mach-omap2/hsmmc.c           |    4 ++++
>  arch/arm/plat-omap/include/plat/mmc.h |    3 +++
>  drivers/mmc/host/omap_hsmmc.c         |    2 +-
>  4 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/devices.c 
> b/arch/arm/mach-omap2/devices.c index 2dbb265..bb7ec13 100644
> --- a/arch/arm/mach-omap2/devices.c
> +++ b/arch/arm/mach-omap2/devices.c
> @@ -745,13 +745,13 @@ void __init omap2_init_mmc(struct 
> omap_mmc_platform_data **mmc_data,
>               case 3:
>                       if (!cpu_is_omap44xx())
>                               return;
> -                     base = OMAP4_MMC4_BASE + OMAP4_MMC_REG_OFFSET;
> +                     base = OMAP4_MMC4_BASE;
>                       irq = OMAP44XX_IRQ_MMC4;
>                       break;
>               case 4:
>                       if (!cpu_is_omap44xx())
>                               return;
> -                     base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET;
> +                     base = OMAP4_MMC5_BASE;
>                       irq = OMAP44XX_IRQ_MMC5;
>                       break;
>               default:
> @@ -762,10 +762,8 @@ void __init omap2_init_mmc(struct 
> omap_mmc_platform_data **mmc_data,
>                       size = OMAP2420_MMC_SIZE;
>                       name = "mmci-omap";
>               } else if (cpu_is_omap44xx()) {
> -                     if (i < 3) {
> -                             base += OMAP4_MMC_REG_OFFSET;
> +                     if (i < 3)
>                               irq += OMAP44XX_IRQ_GIC_START;
> -                     }
>                       size = OMAP4_HSMMC_SIZE;
>                       name = "mmci-omap-hs";
>               } else {
> diff --git a/arch/arm/mach-omap2/hsmmc.c 
> b/arch/arm/mach-omap2/hsmmc.c index c8f647b..49d76a7 100644
> --- a/arch/arm/mach-omap2/hsmmc.c
> +++ b/arch/arm/mach-omap2/hsmmc.c
> @@ -261,6 +261,10 @@ void __init omap2_hsmmc_init(struct 
> omap2_hsmmc_info *controllers)
>               mmc->slots[0].wires = c->wires;
>               mmc->slots[0].internal_clock = !c->ext_clock;
>               mmc->dma_mask = 0xffffffff;
> +             if (cpu_is_omap44xx())
> +                     mmc->reg_offset = OMAP4_MMC_REG_OFFSET;
> +             else
> +                     mmc->reg_offset = 0;

1. Since you mentioned that, this is useful for hwmod, the 
register offsets should use enum and static tables. You can
refer to i2c-omap.c for more details and dma hwmod review 
comments for more details.
https://patchwork.kernel.org/patch/126251/

2. Replace macros with inline functions for low level read/write
functions.

 -Manjunath
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to