diff options
author | Rabin Vincent <rabin.vincent@stericsson.com> | 2011-11-29 13:06:24 +0530 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 10:59:21 +0200 |
commit | 77db7b9831973b1f7141fba2f23cb44f5d95463d (patch) | |
tree | 1fdebdc3713d9080a4a96cabcb8c62e05ecb812f | |
parent | 8f65fd48844764dec7b4806afdedb080747415e0 (diff) |
mfd: db5500-prcmu: implement prcmu register access API
ST-Ericsson ID: 370028
ST-Ericsson Linux next: NA
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: I1f4c69a6a45ee77a50470ae4dab69b3a2617930a
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/40098
Reviewed-by: Vijaya Kumar K-1 <vijay.kilari@stericsson.com>
-rw-r--r-- | drivers/mfd/db5500-prcmu.c | 19 | ||||
-rw-r--r-- | include/linux/mfd/db5500-prcmu.h | 14 | ||||
-rw-r--r-- | include/linux/mfd/dbx500-prcmu.h | 6 |
3 files changed, 36 insertions, 3 deletions
diff --git a/drivers/mfd/db5500-prcmu.c b/drivers/mfd/db5500-prcmu.c index 59c27186d47..e909b52a29f 100644 --- a/drivers/mfd/db5500-prcmu.c +++ b/drivers/mfd/db5500-prcmu.c @@ -1593,6 +1593,25 @@ int db5500_prcmu_set_display_clocks(void) return 0; } +u32 db5500_prcmu_read(unsigned int reg) +{ + return readl_relaxed(_PRCMU_BASE + reg); +} + +void db5500_prcmu_write(unsigned int reg, u32 value) +{ + writel_relaxed(value, _PRCMU_BASE + reg); +} + +void db5500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value) +{ + u32 val; + + val = readl_relaxed(_PRCMU_BASE + reg); + val = (val & ~mask) | (value & mask); + writel_relaxed(val, _PRCMU_BASE + reg); +} + /** * db5500_prcmu_system_reset - System reset * diff --git a/include/linux/mfd/db5500-prcmu.h b/include/linux/mfd/db5500-prcmu.h index 937589d46df..ad5c24bac4d 100644 --- a/include/linux/mfd/db5500-prcmu.h +++ b/include/linux/mfd/db5500-prcmu.h @@ -41,6 +41,10 @@ int db5500_prcmu_get_ape_opp(void); int db5500_prcmu_set_ddr_opp(u8 opp); int db5500_prcmu_get_ddr_opp(void); +u32 db5500_prcmu_read(unsigned int reg); +void db5500_prcmu_write(unsigned int reg, u32 value); +void db5500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value); + static inline unsigned long prcmu_clock_rate(u8 clock) { return 0; @@ -184,6 +188,16 @@ static inline int db5500_prcmu_get_ddr_opp(void) return 0; } +static inline u32 db5500_prcmu_read(unsigned int reg) +{ + return 0; +} + +static inline void db5500_prcmu_write(unsigned int reg, u32 value) {} + +static inline void db5500_prcmu_write_masked(unsigned int reg, u32 mask, + u32 value) {} + static inline int db5500_prcmu_get_hotdog(void) { return -ENOSYS; diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h index c6d11826172..5e686f5658b 100644 --- a/include/linux/mfd/dbx500-prcmu.h +++ b/include/linux/mfd/dbx500-prcmu.h @@ -532,7 +532,7 @@ static inline int prcmu_stop_temp_sense(void) static inline u32 prcmu_read(unsigned int reg) { if (cpu_is_u5500()) - return -EINVAL; + return db5500_prcmu_read(reg); else return db8500_prcmu_read(reg); } @@ -540,7 +540,7 @@ static inline u32 prcmu_read(unsigned int reg) static inline void prcmu_write(unsigned int reg, u32 value) { if (cpu_is_u5500()) - return; + db5500_prcmu_write(reg, value); else db8500_prcmu_write(reg, value); } @@ -548,7 +548,7 @@ static inline void prcmu_write(unsigned int reg, u32 value) static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value) { if (cpu_is_u5500()) - return; + db5500_prcmu_write_masked(reg, mask, value); else db8500_prcmu_write_masked(reg, mask, value); } |