]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/blobdiff - arch/arm/mach-omap2/voltage.h
Merge tag 'pm-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[can-eth-gw-linux.git] / arch / arm / mach-omap2 / voltage.h
index 7283b7ed7de84ace8a84d66d0436d317805d81ee..a0ce4f10ff13ea342de9ff713b8af5a15af652af 100644 (file)
@@ -40,12 +40,14 @@ struct powerdomain;
  * data
  * @voltsetup_mask: SETUP_TIME* bitmask in the PRM_VOLTSETUP* register
  * @voltsetup_reg: register offset of PRM_VOLTSETUP from PRM base
+ * @voltsetup_off_reg: register offset of PRM_VOLTSETUP_OFF from PRM base
  *
  * XXX What about VOLTOFFSET/VOLTCTRL?
  */
 struct omap_vfsm_instance {
        u32 voltsetup_mask;
        u8 voltsetup_reg;
+       u8 voltsetup_off_reg;
 };
 
 /**
@@ -74,6 +76,8 @@ struct voltagedomain {
        const struct omap_vfsm_instance *vfsm;
        struct omap_vp_instance *vp;
        struct omap_voltdm_pmic *pmic;
+       struct omap_vp_param *vp_param;
+       struct omap_vc_param *vc_param;
 
        /* VC/VP register access functions: SoC specific */
        u32 (*read) (u8 offset);
@@ -92,6 +96,24 @@ struct voltagedomain {
        struct omap_volt_data *volt_data;
 };
 
+/* Min and max voltages from OMAP perspective */
+#define OMAP3430_VP1_VLIMITTO_VDDMIN   850000
+#define OMAP3430_VP1_VLIMITTO_VDDMAX   1425000
+#define OMAP3430_VP2_VLIMITTO_VDDMIN   900000
+#define OMAP3430_VP2_VLIMITTO_VDDMAX   1150000
+
+#define OMAP3630_VP1_VLIMITTO_VDDMIN   900000
+#define OMAP3630_VP1_VLIMITTO_VDDMAX   1350000
+#define OMAP3630_VP2_VLIMITTO_VDDMIN   900000
+#define OMAP3630_VP2_VLIMITTO_VDDMAX   1200000
+
+#define OMAP4_VP_MPU_VLIMITTO_VDDMIN   830000
+#define OMAP4_VP_MPU_VLIMITTO_VDDMAX   1410000
+#define OMAP4_VP_IVA_VLIMITTO_VDDMIN   830000
+#define OMAP4_VP_IVA_VLIMITTO_VDDMAX   1260000
+#define OMAP4_VP_CORE_VLIMITTO_VDDMIN  830000
+#define OMAP4_VP_CORE_VLIMITTO_VDDMAX  1200000
+
 /**
  * struct omap_voltdm_pmic - PMIC specific data required by voltage driver.
  * @slew_rate: PMIC slew rate (in uv/us)
@@ -107,26 +129,34 @@ struct voltagedomain {
 struct omap_voltdm_pmic {
        int slew_rate;
        int step_size;
-       u32 on_volt;
-       u32 onlp_volt;
-       u32 ret_volt;
-       u32 off_volt;
-       u16 volt_setup_time;
        u16 i2c_slave_addr;
        u16 volt_reg_addr;
        u16 cmd_reg_addr;
        u8 vp_erroroffset;
        u8 vp_vstepmin;
        u8 vp_vstepmax;
-       u8 vp_vddmin;
-       u8 vp_vddmax;
+       u32 vddmin;
+       u32 vddmax;
        u8 vp_timeout_us;
        bool i2c_high_speed;
+       u32 i2c_pad_load;
        u8 i2c_mcode;
        unsigned long (*vsel_to_uv) (const u8 vsel);
        u8 (*uv_to_vsel) (unsigned long uV);
 };
 
+struct omap_vp_param {
+       u32 vddmax;
+       u32 vddmin;
+};
+
+struct omap_vc_param {
+       u32 on;
+       u32 onlp;
+       u32 ret;
+       u32 off;
+};
+
 void omap_voltage_get_volttable(struct voltagedomain *voltdm,
                struct omap_volt_data **volt_data);
 struct omap_volt_data *omap_voltage_get_voltdata(struct voltagedomain *voltdm,