2 * OMAP Voltage Management Routines
4 * Author: Thara Gopinath <thara@ti.com>
6 * Copyright (C) 2009 Texas Instruments, Inc.
7 * Thara Gopinath <thara@ti.com>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
14 #ifndef __ARCH_ARM_MACH_OMAP2_VOLTAGE_H
15 #define __ARCH_ARM_MACH_OMAP2_VOLTAGE_H
17 #define VOLTSCALE_VPFORCEUPDATE 1
18 #define VOLTSCALE_VCBYPASS 2
21 * OMAP3 GENERIC setup times. Revisit to see if these needs to be
22 * passed from board or PMIC file
24 #define OMAP3_CLKSETUP 0xff
25 #define OMAP3_VOLTOFFSET 0xff
26 #define OMAP3_VOLTSETUP2 0xff
28 /* Voltage value defines */
29 #define OMAP3430_VDD_MPU_OPP1_UV 975000
30 #define OMAP3430_VDD_MPU_OPP2_UV 1075000
31 #define OMAP3430_VDD_MPU_OPP3_UV 1200000
32 #define OMAP3430_VDD_MPU_OPP4_UV 1270000
33 #define OMAP3430_VDD_MPU_OPP5_UV 1350000
35 #define OMAP3430_VDD_CORE_OPP1_UV 975000
36 #define OMAP3430_VDD_CORE_OPP2_UV 1050000
37 #define OMAP3430_VDD_CORE_OPP3_UV 1150000
39 #define OMAP3630_VDD_MPU_OPP50_UV 1012500
40 #define OMAP3630_VDD_MPU_OPP100_UV 1200000
41 #define OMAP3630_VDD_MPU_OPP120_UV 1325000
42 #define OMAP3630_VDD_MPU_OPP1G_UV 1375000
44 #define OMAP3630_VDD_CORE_OPP50_UV 1000000
45 #define OMAP3630_VDD_CORE_OPP100_UV 1200000
47 #define OMAP4430_VDD_MPU_OPP50_UV 930000
48 #define OMAP4430_VDD_MPU_OPP100_UV 1100000
49 #define OMAP4430_VDD_MPU_OPPTURBO_UV 1260000
50 #define OMAP4430_VDD_MPU_OPPNITRO_UV 1350000
52 #define OMAP4430_VDD_IVA_OPP50_UV 930000
53 #define OMAP4430_VDD_IVA_OPP100_UV 1100000
54 #define OMAP4430_VDD_IVA_OPPTURBO_UV 1260000
56 #define OMAP4430_VDD_CORE_OPP50_UV 930000
57 #define OMAP4430_VDD_CORE_OPP100_UV 1100000
60 * struct voltagedomain - omap voltage domain global structure.
61 * @name: Name of the voltage domain which can be used as a unique
64 struct voltagedomain {
68 /* API to get the voltagedomain pointer */
69 struct voltagedomain *omap_voltage_domain_lookup(char *name);
72 * struct omap_volt_data - Omap voltage specific data.
73 * @voltage_nominal: The possible voltage value in uV
74 * @sr_efuse_offs: The offset of the efuse register(from system
75 * control module base address) from where to read
76 * the n-target value for the smartreflex module.
77 * @sr_errminlimit: Error min limit value for smartreflex. This value
78 * differs at differnet opp and thus is linked
80 * @vp_errorgain: Error gain value for the voltage processor. This
81 * field also differs according to the voltage/opp.
83 struct omap_volt_data {
91 * struct omap_volt_pmic_info - PMIC specific data required by voltage driver.
92 * @slew_rate: PMIC slew rate (in uv/us)
93 * @step_size: PMIC voltage step size (in uv)
94 * @vsel_to_uv: PMIC API to convert vsel value to actual voltage in uV.
95 * @uv_to_vsel: PMIC API to convert voltage in uV to vsel value.
97 struct omap_volt_pmic_info {
113 unsigned long (*vsel_to_uv) (const u8 vsel);
114 u8 (*uv_to_vsel) (unsigned long uV);
117 unsigned long omap_vp_get_curr_volt(struct voltagedomain *voltdm);
118 void omap_vp_enable(struct voltagedomain *voltdm);
119 void omap_vp_disable(struct voltagedomain *voltdm);
120 int omap_voltage_scale_vdd(struct voltagedomain *voltdm,
121 unsigned long target_volt);
122 void omap_voltage_reset(struct voltagedomain *voltdm);
123 void omap_voltage_get_volttable(struct voltagedomain *voltdm,
124 struct omap_volt_data **volt_data);
125 struct omap_volt_data *omap_voltage_get_voltdata(struct voltagedomain *voltdm,
127 unsigned long omap_voltage_get_nom_volt(struct voltagedomain *voltdm);
128 struct dentry *omap_voltage_get_dbgdir(struct voltagedomain *voltdm);
130 int omap_voltage_register_pmic(struct voltagedomain *voltdm,
131 struct omap_volt_pmic_info *pmic_info);
132 void omap_change_voltscale_method(struct voltagedomain *voltdm,
133 int voltscale_method);
134 int omap_voltage_late_init(void);
136 static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm,
137 struct omap_volt_pmic_info *pmic_info) {}
138 static inline void omap_change_voltscale_method(struct voltagedomain *voltdm,
139 int voltscale_method) {}
140 static inline int omap_voltage_late_init(void)