Merge tag 'mfd-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
[firefly-linux-kernel-4.4.55.git] / include / linux / mfd / dbx500-prcmu.h
index c6e0608a21b5880a75231848f887cac512f7abb7..3abcca91eecdbe86dd3f98f8dc21f3989a88260e 100644 (file)
 #include <linux/notifier.h>
 #include <linux/err.h>
 
+/* Offset for the firmware version within the TCPM */
+#define DB8500_PRCMU_FW_VERSION_OFFSET 0xA4
+#define DBX540_PRCMU_FW_VERSION_OFFSET 0xA8
+
 /* PRCMU Wakeup defines */
 enum prcmu_wakeup_index {
        PRCMU_WAKEUP_INDEX_RTC,
@@ -226,12 +230,52 @@ enum ddr_pwrst {
        DDR_PWR_STATE_OFFHIGHLAT    = 0x03
 };
 
+#define DB8500_PRCMU_LEGACY_OFFSET             0xDD4
+
+struct prcmu_pdata
+{
+       bool enable_set_ddr_opp;
+       bool enable_ape_opp_100_voltage;
+       struct ab8500_platform_data *ab_platdata;
+       u32 version_offset;
+       u32 legacy_offset;
+       u32 adt_offset;
+};
+
+#define PRCMU_FW_PROJECT_U8500         2
+#define PRCMU_FW_PROJECT_U8400         3
+#define PRCMU_FW_PROJECT_U9500         4 /* Customer specific */
+#define PRCMU_FW_PROJECT_U8500_MBB     5
+#define PRCMU_FW_PROJECT_U8500_C1      6
+#define PRCMU_FW_PROJECT_U8500_C2      7
+#define PRCMU_FW_PROJECT_U8500_C3      8
+#define PRCMU_FW_PROJECT_U8500_C4      9
+#define PRCMU_FW_PROJECT_U9500_MBL     10
+#define PRCMU_FW_PROJECT_U8500_MBL     11 /* Customer specific */
+#define PRCMU_FW_PROJECT_U8500_MBL2    12 /* Customer specific */
+#define PRCMU_FW_PROJECT_U8520         13
+#define PRCMU_FW_PROJECT_U8420         14
+#define PRCMU_FW_PROJECT_A9420         20
+/* [32..63] 9540 and derivatives */
+#define PRCMU_FW_PROJECT_U9540         32
+/* [64..95] 8540 and derivatives */
+#define PRCMU_FW_PROJECT_L8540         64
+/* [96..126] 8580 and derivatives */
+#define PRCMU_FW_PROJECT_L8580         96
+
+#define PRCMU_FW_PROJECT_NAME_LEN      20
+struct prcmu_fw_version {
+       u32 project; /* Notice, project shifted with 8 on ux540 */
+       u8 api_version;
+       u8 func_version;
+       u8 errata;
+       char project_name[PRCMU_FW_PROJECT_NAME_LEN];
+};
+
 #include <linux/mfd/db8500-prcmu.h>
 
 #if defined(CONFIG_UX500_SOC_DB8500)
 
-#include <mach/id.h>
-
 static inline void __init prcmu_early_init(void)
 {
        return db8500_prcmu_early_init();
@@ -638,85 +682,6 @@ static inline void prcmu_clear(unsigned int reg, u32 bits)
        prcmu_write_masked(reg, bits, 0);
 }
 
-#if defined(CONFIG_UX500_SOC_DB8500)
-
-/**
- * prcmu_enable_spi2 - Enables pin muxing for SPI2 on OtherAlternateC1.
- */
-static inline void prcmu_enable_spi2(void)
-{
-       if (cpu_is_u8500())
-               prcmu_set(DB8500_PRCM_GPIOCR, DB8500_PRCM_GPIOCR_SPI2_SELECT);
-}
-
-/**
- * prcmu_disable_spi2 - Disables pin muxing for SPI2 on OtherAlternateC1.
- */
-static inline void prcmu_disable_spi2(void)
-{
-       if (cpu_is_u8500())
-               prcmu_clear(DB8500_PRCM_GPIOCR, DB8500_PRCM_GPIOCR_SPI2_SELECT);
-}
-
-/**
- * prcmu_enable_stm_mod_uart - Enables pin muxing for STMMOD
- * and UARTMOD on OtherAlternateC3.
- */
-static inline void prcmu_enable_stm_mod_uart(void)
-{
-       if (cpu_is_u8500()) {
-               prcmu_set(DB8500_PRCM_GPIOCR,
-                       (DB8500_PRCM_GPIOCR_DBG_STM_MOD_CMD1 |
-                        DB8500_PRCM_GPIOCR_DBG_UARTMOD_CMD0));
-       }
-}
-
-/**
- * prcmu_disable_stm_mod_uart - Disables pin muxing for STMMOD
- * and UARTMOD on OtherAlternateC3.
- */
-static inline void prcmu_disable_stm_mod_uart(void)
-{
-       if (cpu_is_u8500()) {
-               prcmu_clear(DB8500_PRCM_GPIOCR,
-                       (DB8500_PRCM_GPIOCR_DBG_STM_MOD_CMD1 |
-                        DB8500_PRCM_GPIOCR_DBG_UARTMOD_CMD0));
-       }
-}
-
-/**
- * prcmu_enable_stm_ape - Enables pin muxing for STM APE on OtherAlternateC1.
- */
-static inline void prcmu_enable_stm_ape(void)
-{
-       if (cpu_is_u8500()) {
-               prcmu_set(DB8500_PRCM_GPIOCR,
-                       DB8500_PRCM_GPIOCR_DBG_STM_APE_CMD);
-       }
-}
-
-/**
- * prcmu_disable_stm_ape - Disables pin muxing for STM APE on OtherAlternateC1.
- */
-static inline void prcmu_disable_stm_ape(void)
-{
-       if (cpu_is_u8500()) {
-               prcmu_clear(DB8500_PRCM_GPIOCR,
-                       DB8500_PRCM_GPIOCR_DBG_STM_APE_CMD);
-       }
-}
-
-#else
-
-static inline void prcmu_enable_spi2(void) {}
-static inline void prcmu_disable_spi2(void) {}
-static inline void prcmu_enable_stm_mod_uart(void) {}
-static inline void prcmu_disable_stm_mod_uart(void) {}
-static inline void prcmu_enable_stm_ape(void) {}
-static inline void prcmu_disable_stm_ape(void) {}
-
-#endif
-
 /* PRCMU QoS APE OPP class */
 #define PRCMU_QOS_APE_OPP 1
 #define PRCMU_QOS_DDR_OPP 2