[PATCH] ARM omap hsmmc: Fix adding iobase for OMAP3

Jürgen Kilb J.Kilb at phytec.de
Wed Jan 9 07:42:56 EST 2013


Hi Sascha,

On 09.01.2013 12:00, Sascha Hauer wrote:
> Hi Jürgen,
>
> I'm a bit confused...
me too ;-)
> On Fri, Jan 04, 2013 at 05:13:12PM +0100, Juergen Kilb wrote:
>> Only the OMAP4 hsmmc module has an offset of 0x100 from its register
>> base address. With commit 416a991 the offset was added for all SOCs
>> which use the omap_hsmmc driver.
>> This has broken the driver for OMAP3/AM33xx platforms.
> You state that am33xx is broken,...
It seems, I've made a mistake and looked in the wrong datasheet (AM35xx).
Sorry!
>
>> Signed-off-by: Juergen Kilb <J.Kilb at phytec.de>
>> ---
>>   drivers/mci/omap_hsmmc.c |    6 +++++-
>>   1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/mci/omap_hsmmc.c b/drivers/mci/omap_hsmmc.c
>> index 6471ea6..68fb3e1 100644
>> --- a/drivers/mci/omap_hsmmc.c
>> +++ b/drivers/mci/omap_hsmmc.c
>> @@ -577,8 +577,12 @@ static int omap_mmc_probe(struct device_d *dev)
>>   	hsmmc->mci.hw_dev = dev;
>>   
>>   	hsmmc->iobase = dev_request_mem_region(dev, 0);
>> -	hsmmc->base = hsmmc->iobase + 0x100;
>>   
>> +#if defined(CONFIG_ARCH_OMAP4)
>> +	hsmmc->base = hsmmc->iobase + 0x100;
>> +#else
>> +	hsmmc->base = hsmmc->iobase;
>> +#endif
> and remove the 0x100 offset for am33xx here.
>
> Now I realize am33xx MMC is broken and I need the following patch to
> make it work again. Could it be you didn't test it on am33xx or is there
> something else wrong here?
>
Now I've checked the correct datasheet (AM33xx) and I see that
my patch has broken the AM33xx hsmmc support.
I've only tested on an phyCARD-A-L1 (OMAP3530).

> Sascha
>
>
>  From b337e4b71ae7b3b2c9668350252ba86f8ecfa764 Mon Sep 17 00:00:00 2001
> From: Sascha Hauer <s.hauer at pengutronix.de>
> Date: Wed, 9 Jan 2013 11:02:50 +0100
> Subject: [PATCH] ARM am33xx: the hsmmc is a omap4 type mmc controller
>
> The am33xx hsmmc controller is actually a omap4 type controller which
> means that it has a 0x100 offset in the registers.
>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
>   arch/arm/mach-omap/include/mach/am33xx-devices.h |    2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm/mach-omap/include/mach/am33xx-devices.h b/arch/arm/mach-omap/include/mach/am33xx-devices.h
> index 4c83b28..c194303 100644
> --- a/arch/arm/mach-omap/include/mach/am33xx-devices.h
> +++ b/arch/arm/mach-omap/include/mach/am33xx-devices.h
> @@ -26,7 +26,7 @@ static inline struct device_d *am33xx_add_uart2(void)
>   
>   static inline struct device_d *am33xx_add_mmc0(struct omap_hsmmc_platform_data *pdata)
>   {
> -	return add_generic_device("omap3-hsmmc", 0, NULL,
> +	return add_generic_device("omap4-hsmmc", 0, NULL,
>   			AM33XX_MMCHS0_BASE, SZ_4K, IORESOURCE_MEM, pdata);
>   }
>   
I agree with you, that the AM33XX has an offset ox 0x100 like the OMAP4.

greetings,
Jürgen




More information about the barebox mailing list