summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRabin Vincent <rabin.vincent@stericsson.com>2011-11-29 13:06:24 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 10:59:21 +0200
commit77db7b9831973b1f7141fba2f23cb44f5d95463d (patch)
tree1fdebdc3713d9080a4a96cabcb8c62e05ecb812f
parent8f65fd48844764dec7b4806afdedb080747415e0 (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.c19
-rw-r--r--include/linux/mfd/db5500-prcmu.h14
-rw-r--r--include/linux/mfd/dbx500-prcmu.h6
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);
}