* published by the Free Software Foundation.
  */
 
-#include <linux/kernel.h>
-#include <asm/io.h>
 #include "prcm_common.h"
 
-
-#define OMAP_CM_REGADDR(module, reg)    (void __iomem *)IO_ADDRESS(OMAP2_CM_BASE + module + reg)
+#ifndef __ASSEMBLER__
+#define OMAP_CM_REGADDR(module, reg)                                   \
+       (void __iomem *)IO_ADDRESS(OMAP2_CM_BASE + (module) + (reg))
+#else
+#define OMAP2420_CM_REGADDR(module, reg)                               \
+                       IO_ADDRESS(OMAP2420_CM_BASE + (module) + (reg))
+#define OMAP2430_CM_REGADDR(module, reg)                               \
+                       IO_ADDRESS(OMAP2430_CM_BASE + (module) + (reg))
+#define OMAP34XX_CM_REGADDR(module, reg)                               \
+                       IO_ADDRESS(OMAP3430_CM_BASE + (module) + (reg))
+#endif
 
 /*
  * Architecture-specific global CM registers
 
 #define OMAP3430_CM_CLKOUT_CTRL                OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070)
 
-
+#ifndef __ASSEMBLER__
 /* Clock management global register get/set */
 
 static void __attribute__((unused)) cm_write_reg(u32 val, void __iomem *addr)
 {
        return __raw_readl(addr);
 }
-
+#endif
 
 /*
  * Module specific CM registers from CM_BASE + domain offset
 
 /* Clock management domain register get/set */
 
+#ifndef __ASSEMBLER__
 static void __attribute__((unused)) cm_write_mod_reg(u32 val, s16 module, s16 idx)
 {
        cm_write_reg(val, OMAP_CM_REGADDR(module, idx));
 {
        return cm_read_reg(OMAP_CM_REGADDR(module, idx));
 }
+#endif
 
 /* CM register bits shared between 24XX and 3430 */
 
 
 #include "prcm_common.h"
 
 
-#define OMAP_PRM_REGADDR(module, reg)  (void __iomem *)IO_ADDRESS(OMAP2_PRM_BASE + module + reg)
+#define OMAP_PRM_REGADDR(module, reg)                                  \
+       (void __iomem *)IO_ADDRESS(OMAP2_PRM_BASE + (module) + (reg))
 
 /*
  * Architecture-specific global PRM registers
 
  */
 #undef DEBUG
 
-#include <linux/kernel.h>
 #include <asm/arch/sdrc.h>
 
+#ifndef __ASSEMBLER__
 extern unsigned long omap2_sdrc_base;
 extern unsigned long omap2_sms_base;
 
-#define OMAP_SDRC_REGADDR(reg) (void __iomem *)IO_ADDRESS(omap2_sdrc_base + reg)
-#define OMAP_SMS_REGADDR(reg)  (void __iomem *)IO_ADDRESS(omap2_sms_base + reg)
-
+#define OMAP_SDRC_REGADDR(reg)                                         \
+               (void __iomem *)IO_ADDRESS(omap2_sdrc_base + (reg))
+#define OMAP_SMS_REGADDR(reg)                                          \
+               (void __iomem *)IO_ADDRESS(omap2_sms_base + (reg))
 
 /* SDRC global register get/set */
 
 {
        return __raw_readl(OMAP_SMS_REGADDR(reg));
 }
-
-
+#else
+#define OMAP242X_SDRC_REGADDR(reg)     IO_ADDRESS(OMAP242X_SDRC_BASE + (reg))
+#define OMAP243X_SDRC_REGADDR(reg)     IO_ADDRESS(OMAP243X_SDRC_BASE + (reg))
+#define OMAP34XX_SDRC_REGADDR(reg)     IO_ADDRESS(OMAP343X_SDRC_BASE + (reg))
+#endif /* __ASSEMBLER__ */
 
 #endif
 
 
 #include <asm/arch/io.h>
 
-#define OMAP242X_SDRC_REGADDR(reg)     (void __iomem *)IO_ADDRESS(OMAP242X_SDRC_BASE + reg)
-#define OMAP243X_SDRC_REGADDR(reg)     (void __iomem *)IO_ADDRESS(OMAP243X_SDRC_BASE + reg)
-#define OMAP343X_SDRC_REGADDR(reg)     (void __iomem *)IO_ADDRESS(OMAP343X_SDRC_BASE + reg)
-
 /* SDRC register offsets - read/write with sdrc_{read,write}_reg() */
 
 #define SDRC_SYSCONFIG         0x010