diff options
Diffstat (limited to 'arch/arm/mach-davinci/devices.c')
| -rw-r--r-- | arch/arm/mach-davinci/devices.c | 32 | 
1 files changed, 21 insertions, 11 deletions
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c index 50c0156b426..d2f9666284a 100644 --- a/arch/arm/mach-davinci/devices.c +++ b/arch/arm/mach-davinci/devices.c @@ -23,6 +23,7 @@  #include <mach/mmc.h>  #include <mach/time.h> +#include "davinci.h"  #include "clock.h"  #define DAVINCI_I2C_BASE	     0x01C21000 @@ -33,8 +34,19 @@  #define DM365_MMCSD0_BASE	     0x01D11000  #define DM365_MMCSD1_BASE	     0x01D00000 -/* System control register offsets */ -#define DM64XX_VDD3P3V_PWDN	0x48 +void __iomem  *davinci_sysmod_base; + +void davinci_map_sysmod(void) +{ +	davinci_sysmod_base = ioremap_nocache(DAVINCI_SYSTEM_MODULE_BASE, +					      0x800); +	/* +	 * Throw a bug since a lot of board initialization code depends +	 * on system module availability. ioremap() failing this early +	 * need careful looking into anyway. +	 */ +	BUG_ON(!davinci_sysmod_base); +}  static struct resource i2c_resources[] = {  	{ @@ -212,12 +224,12 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config)  			davinci_cfg_reg(DM355_SD1_DATA2);  			davinci_cfg_reg(DM355_SD1_DATA3);  		} else if (cpu_is_davinci_dm365()) { -			void __iomem *pupdctl1 = -				IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE + 0x7c); -  			/* Configure pull down control */ -			__raw_writel((__raw_readl(pupdctl1) & ~0xfc0), -					pupdctl1); +			unsigned v; + +			v = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_PUPDCTL1)); +			__raw_writel(v & ~0xfc0, +					DAVINCI_SYSMOD_VIRT(SYSMOD_PUPDCTL1));  			mmcsd1_resources[0].start = DM365_MMCSD1_BASE;  			mmcsd1_resources[0].end = DM365_MMCSD1_BASE + @@ -246,11 +258,9 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config)  			mmcsd0_resources[2].start = IRQ_DM365_SDIOINT0;  		} else if (cpu_is_davinci_dm644x()) {  			/* REVISIT: should this be in board-init code? */ -			void __iomem *base = -				IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE); -  			/* Power-on 3.3V IO cells */ -			__raw_writel(0, base + DM64XX_VDD3P3V_PWDN); +			__raw_writel(0, +				DAVINCI_SYSMOD_VIRT(SYSMOD_VDD3P3VPWDN));  			/*Set up the pull regiter for MMC */  			davinci_cfg_reg(DM644X_MSTK);  		}  |