> -----Original Message----- > From: linux-omap-owner@xxxxxxxxxxxxxxx > [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of > Kadiyala, Kishore > Sent: Saturday, September 18, 2010 10:04 PM > To: linux-mmc@xxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: khilman@xxxxxxxxxxxxxxxxxxx; 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 <kishore.kadiyala@xxxxxx> > --- > 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-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html