diff options
Diffstat (limited to 'firmware/target/arm/imx233/power-imx233.h')
-rw-r--r-- | firmware/target/arm/imx233/power-imx233.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/firmware/target/arm/imx233/power-imx233.h b/firmware/target/arm/imx233/power-imx233.h index e6bd02525b..d33ca20333 100644 --- a/firmware/target/arm/imx233/power-imx233.h +++ b/firmware/target/arm/imx233/power-imx233.h | |||
@@ -34,6 +34,7 @@ | |||
34 | #define BV_POWER_5VCTRL_CHARGE_4P2_ILIMIT__200mA (1 << 4) | 34 | #define BV_POWER_5VCTRL_CHARGE_4P2_ILIMIT__200mA (1 << 4) |
35 | #define BV_POWER_5VCTRL_CHARGE_4P2_ILIMIT__400mA (1 << 5) | 35 | #define BV_POWER_5VCTRL_CHARGE_4P2_ILIMIT__400mA (1 << 5) |
36 | 36 | ||
37 | |||
37 | #define BV_POWER_CHARGE_BATTCHRG_I__10mA (1 << 0) | 38 | #define BV_POWER_CHARGE_BATTCHRG_I__10mA (1 << 0) |
38 | #define BV_POWER_CHARGE_BATTCHRG_I__20mA (1 << 1) | 39 | #define BV_POWER_CHARGE_BATTCHRG_I__20mA (1 << 1) |
39 | #define BV_POWER_CHARGE_BATTCHRG_I__50mA (1 << 2) | 40 | #define BV_POWER_CHARGE_BATTCHRG_I__50mA (1 << 2) |
@@ -46,6 +47,7 @@ | |||
46 | #define BV_POWER_CHARGE_STOP_ILIMIT__50mA (1 << 2) | 47 | #define BV_POWER_CHARGE_STOP_ILIMIT__50mA (1 << 2) |
47 | #define BV_POWER_CHARGE_STOP_ILIMIT__100mA (1 << 3) | 48 | #define BV_POWER_CHARGE_STOP_ILIMIT__100mA (1 << 3) |
48 | 49 | ||
50 | #if IMX233_SUBTARGET >= 3700 | ||
49 | #define HW_POWER_VDDDCTRL__TRG_STEP 25 /* mV */ | 51 | #define HW_POWER_VDDDCTRL__TRG_STEP 25 /* mV */ |
50 | #define HW_POWER_VDDDCTRL__TRG_MIN 800 /* mV */ | 52 | #define HW_POWER_VDDDCTRL__TRG_MIN 800 /* mV */ |
51 | 53 | ||
@@ -57,6 +59,13 @@ | |||
57 | 59 | ||
58 | #define HW_POWER_VDDMEMCTRL__TRG_STEP 50 /* mV */ | 60 | #define HW_POWER_VDDMEMCTRL__TRG_STEP 50 /* mV */ |
59 | #define HW_POWER_VDDMEMCTRL__TRG_MIN 1700 /* mV */ | 61 | #define HW_POWER_VDDMEMCTRL__TRG_MIN 1700 /* mV */ |
62 | #else | ||
63 | /* don't use the full available range because of the weird encodings for | ||
64 | * extreme values which are useless anyway */ | ||
65 | #define HW_POWER_VDDDCTRL__TRG_STEP 32 /* mV */ | ||
66 | #define HW_POWER_VDDDCTRL__TRG_MIN 1280 /* mV */ | ||
67 | #define HW_POWER_VDDDCTRL__TRG_OFF 8 /* below 8, the register value doesn't encode linearly */ | ||
68 | #endif | ||
60 | 69 | ||
61 | #define BV_POWER_MISC_FREQSEL__RES 0 | 70 | #define BV_POWER_MISC_FREQSEL__RES 0 |
62 | #define BV_POWER_MISC_FREQSEL__20MHz 1 | 71 | #define BV_POWER_MISC_FREQSEL__20MHz 1 |
@@ -67,6 +76,7 @@ | |||
67 | #define BV_POWER_MISC_FREQSEL__21p6MHz 6 | 76 | #define BV_POWER_MISC_FREQSEL__21p6MHz 6 |
68 | #define BV_POWER_MISC_FREQSEL__17p28MHz 7 | 77 | #define BV_POWER_MISC_FREQSEL__17p28MHz 7 |
69 | 78 | ||
79 | |||
70 | void imx233_power_init(void); | 80 | void imx233_power_init(void); |
71 | 81 | ||
72 | void imx233_power_set_charge_current(unsigned current); /* in mA */ | 82 | void imx233_power_set_charge_current(unsigned current); /* in mA */ |
@@ -75,10 +85,12 @@ void imx233_power_enable_batadj(bool enable); | |||
75 | 85 | ||
76 | enum imx233_regulator_t | 86 | enum imx233_regulator_t |
77 | { | 87 | { |
78 | REGULATOR_VDDD, /* target, brownout, linreg, linreg offset */ | 88 | REGULATOR_VDDD, /* target, brownout, linreg[3700+], linreg offset[3700+] */ |
89 | #if IMX233_SUBTARGET >= 3700 | ||
79 | REGULATOR_VDDA, /* target, brownout, linreg, linreg offset */ | 90 | REGULATOR_VDDA, /* target, brownout, linreg, linreg offset */ |
80 | REGULATOR_VDDIO, /* target, brownout, linreg offset */ | 91 | REGULATOR_VDDIO, /* target, brownout, linreg offset */ |
81 | REGULATOR_VDDMEM, /* target, linreg */ | 92 | REGULATOR_VDDMEM, /* target, linreg */ |
93 | #endif | ||
82 | REGULATOR_COUNT, | 94 | REGULATOR_COUNT, |
83 | }; | 95 | }; |
84 | 96 | ||
@@ -97,12 +109,19 @@ void imx233_power_get_regulator_linreg(enum imx233_regulator_t reg, | |||
97 | void imx233_power_set_regulator_linreg(enum imx233_regulator_t reg, | 109 | void imx233_power_set_regulator_linreg(enum imx233_regulator_t reg, |
98 | bool enabled, int linreg_offset); | 110 | bool enabled, int linreg_offset); |
99 | 111 | ||
112 | #if IMX233_SUBTARGET >= 3700 | ||
100 | static inline void imx233_power_set_dcdc_freq(bool pll, unsigned freq) | 113 | static inline void imx233_power_set_dcdc_freq(bool pll, unsigned freq) |
101 | { | 114 | { |
102 | if(pll) | 115 | if(pll) |
103 | BF_WR(POWER_MISC, FREQSEL, freq); | 116 | BF_WR(POWER_MISC, FREQSEL, freq); |
104 | BF_WR(POWER_MISC, SEL_PLLCLK, pll); | 117 | BF_WR(POWER_MISC, SEL_PLLCLK, pll); |
105 | } | 118 | } |
119 | #endif | ||
120 | |||
121 | #if IMX233_SUBTARGET < 3700 | ||
122 | /* return -1 on error */ | ||
123 | int imx233_power_sense_die_temperature(int *min, int *max); | ||
124 | #endif | ||
106 | 125 | ||
107 | struct imx233_power_info_t | 126 | struct imx233_power_info_t |
108 | { | 127 | { |