From 3715629b156cd7ff10c9656b334b78beb838c8ee Mon Sep 17 00:00:00 2001 From: Mattias Nilsson Date: Mon, 20 Feb 2012 13:49:33 +0100 Subject: arm: ux500: pm: inform prcmu fw about voice call activation ST Ericsson ID: 415739 ST Ericsson FOSS-OUT ID: trivial Change-Id: Ie91459599caa335546d40797b93dade4ec3d7863 Signed-off-by: Mattias Nilsson Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/49587 Reviewed-by: Mian Yousaf KAUKAB Reviewed-by: QABUILD Reviewed-by: QATEST Reviewed-by: Jonas ABERG --- arch/arm/mach-ux500/pm/usecase_gov.c | 3 +++ drivers/mfd/db8500-prcmu.c | 7 +++++++ include/linux/mfd/db8500-prcmu.h | 4 ++++ include/linux/mfd/dbx500-prcmu.h | 9 +++++++++ 4 files changed, 23 insertions(+) diff --git a/arch/arm/mach-ux500/pm/usecase_gov.c b/arch/arm/mach-ux500/pm/usecase_gov.c index f29c73aea2f..ba4a1e050e9 100644 --- a/arch/arm/mach-ux500/pm/usecase_gov.c +++ b/arch/arm/mach-ux500/pm/usecase_gov.c @@ -829,6 +829,9 @@ static ssize_t store_dc_attr(struct sysdev_class *class, usecase_conf[uattr->index].enable = (bool)input; + if (uattr->index == UX500_UC_VC) + prcmu_vc(usecase_conf[UX500_UC_VC].enable); + usecase_update_user_config(); usecase_update_governor_state(); diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 48eaa0763a0..8710c602006 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c @@ -71,6 +71,8 @@ #define PRCM_SW_RST_REASON 0xFF8 /* 2 bytes */ +#define PRCM_TCDM_VOICE_CALL_FLAG 0xDD4 /* 4 bytes */ + #define _PRCM_MBOX_HEADER 0xFE8 /* 16 bytes */ #define PRCM_MBOX_HEADER_REQ_MB0 (_PRCM_MBOX_HEADER + 0x0) #define PRCM_MBOX_HEADER_REQ_MB1 (_PRCM_MBOX_HEADER + 0x1) @@ -647,6 +649,11 @@ bool prcmu_has_arm_maxopp(void) PRCM_AVS_ISMODEENABLE_MASK) == PRCM_AVS_ISMODEENABLE_MASK; } +void db8500_prcmu_vc(bool enable) +{ + writel((enable ? 0xF : 0), (tcdm_base + PRCM_TCDM_VOICE_CALL_FLAG)); +} + /** * prcmu_get_boot_status - PRCMU boot status checking * Returns: the current PRCMU boot status diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h index 892c05a442c..0ef481f7edc 100644 --- a/include/linux/mfd/db8500-prcmu.h +++ b/include/linux/mfd/db8500-prcmu.h @@ -498,6 +498,8 @@ u32 db8500_prcmu_read(unsigned int reg); void db8500_prcmu_write(unsigned int reg, u32 value); void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value); +void db8500_prcmu_vc(bool enable); + #else /* !CONFIG_MFD_DB8500_PRCMU */ static inline void db8500_prcmu_early_init(void) {} @@ -717,6 +719,8 @@ static inline void db8500_prcmu_write(unsigned int reg, u32 value) {} static inline void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value) {} +void db8500_prcmu_vc(bool enable) {} + #endif /* !CONFIG_MFD_DB8500_PRCMU */ #endif /* __MFD_DB8500_PRCMU_H */ diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h index eb9cee31407..90fed71c29e 100644 --- a/include/linux/mfd/dbx500-prcmu.h +++ b/include/linux/mfd/dbx500-prcmu.h @@ -592,6 +592,13 @@ static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off) else return db8500_prcmu_config_a9wdog(num, sleep_auto_off); } + +static inline void prcmu_vc(bool enable) +{ + if (cpu_is_u8500()) + db8500_prcmu_vc(enable); +} + #else static inline void __init prcmu_early_init(void) {} @@ -756,6 +763,8 @@ static inline void prcmu_write(unsigned int reg, u32 value) {} static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value) {} +static inline void prcmu_vc(bool enable) {} + #endif static inline void prcmu_set(unsigned int reg, u32 bits) -- cgit v1.2.3