提交 70ba71a2 编写于 作者: S Santosh Shilimkar 提交者: Paul Walmsley

omap4: control: Add accessor api's for pad control module

On OMAP4 control pad are not addressable from control
core base. So the common omap_ctrl_read/write APIs breaks
Hence export separate APIs to manage the omap4 pad control
registers.

This APIs will work only for OMAP4
Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: NPaul Walmsley <paul@pwsan.com>
上级 0c349246
...@@ -138,6 +138,7 @@ static struct omap3_control_regs control_context; ...@@ -138,6 +138,7 @@ static struct omap3_control_regs control_context;
#endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */ #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */
#define OMAP_CTRL_REGADDR(reg) (omap2_ctrl_base + (reg)) #define OMAP_CTRL_REGADDR(reg) (omap2_ctrl_base + (reg))
#define OMAP4_CTRL_PAD_REGADDR(reg) (omap4_ctrl_pad_base + (reg))
void __init omap2_set_globals_control(struct omap_globals *omap2_globals) void __init omap2_set_globals_control(struct omap_globals *omap2_globals)
{ {
...@@ -189,6 +190,23 @@ void omap_ctrl_writel(u32 val, u16 offset) ...@@ -189,6 +190,23 @@ void omap_ctrl_writel(u32 val, u16 offset)
__raw_writel(val, OMAP_CTRL_REGADDR(offset)); __raw_writel(val, OMAP_CTRL_REGADDR(offset));
} }
/*
* On OMAP4 control pad are not addressable from control
* core base. So the common omap_ctrl_read/write APIs breaks
* Hence export separate APIs to manage the omap4 pad control
* registers. This APIs will work only for OMAP4
*/
u32 omap4_ctrl_pad_readl(u16 offset)
{
return __raw_readl(OMAP4_CTRL_PAD_REGADDR(offset));
}
void omap4_ctrl_pad_writel(u32 val, u16 offset)
{
__raw_writel(val, OMAP4_CTRL_PAD_REGADDR(offset));
}
#if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM) #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM)
/* /*
* Clears the scratchpad contents in case of cold boot- * Clears the scratchpad contents in case of cold boot-
......
...@@ -354,9 +354,11 @@ extern void __iomem *omap_ctrl_base_get(void); ...@@ -354,9 +354,11 @@ extern void __iomem *omap_ctrl_base_get(void);
extern u8 omap_ctrl_readb(u16 offset); extern u8 omap_ctrl_readb(u16 offset);
extern u16 omap_ctrl_readw(u16 offset); extern u16 omap_ctrl_readw(u16 offset);
extern u32 omap_ctrl_readl(u16 offset); extern u32 omap_ctrl_readl(u16 offset);
extern u32 omap4_ctrl_pad_readl(u16 offset);
extern void omap_ctrl_writeb(u8 val, u16 offset); extern void omap_ctrl_writeb(u8 val, u16 offset);
extern void omap_ctrl_writew(u16 val, u16 offset); extern void omap_ctrl_writew(u16 val, u16 offset);
extern void omap_ctrl_writel(u32 val, u16 offset); extern void omap_ctrl_writel(u32 val, u16 offset);
extern void omap4_ctrl_pad_writel(u32 val, u16 offset);
extern void omap3_save_scratchpad_contents(void); extern void omap3_save_scratchpad_contents(void);
extern void omap3_clear_scratchpad_contents(void); extern void omap3_clear_scratchpad_contents(void);
...@@ -371,9 +373,11 @@ extern void omap3_control_restore_context(void); ...@@ -371,9 +373,11 @@ extern void omap3_control_restore_context(void);
#define omap_ctrl_readb(x) 0 #define omap_ctrl_readb(x) 0
#define omap_ctrl_readw(x) 0 #define omap_ctrl_readw(x) 0
#define omap_ctrl_readl(x) 0 #define omap_ctrl_readl(x) 0
#define omap4_ctrl_pad_readl(x) 0
#define omap_ctrl_writeb(x, y) WARN_ON(1) #define omap_ctrl_writeb(x, y) WARN_ON(1)
#define omap_ctrl_writew(x, y) WARN_ON(1) #define omap_ctrl_writew(x, y) WARN_ON(1)
#define omap_ctrl_writel(x, y) WARN_ON(1) #define omap_ctrl_writel(x, y) WARN_ON(1)
#define omap4_ctrl_pad_writel(x, y) WARN_ON(1)
#endif #endif
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册