diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-10-23 01:05:28 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-10-23 13:33:02 +0200 |
commit | 78c060b09c7f5da4e2d71aedfc7dedb74e7d70a8 (patch) | |
tree | eaa1ad8ae25ba363241fb9898c63fa4f8c4cc177 /firmware | |
parent | 4aa32fb8f4b2921cca6e17716d7ad8a7a30f192a (diff) | |
download | rockbox-78c060b09c7f5da4e2d71aedfc7dedb74e7d70a8.tar.gz rockbox-78c060b09c7f5da4e2d71aedfc7dedb74e7d70a8.zip |
imx233: rework vdd5v shared irq handling
The previous code disabled the irq when there were fired. This seems
unreliable for some mysterious reason. Instead simply disable them
before enabling the irq.
Change-Id: I7ee1aa25dbc41c7dd53aa7c7744aa5e4d70ff2d8
Reviewed-on: http://gerrit.rockbox.org/640
Reviewed-by: benjamin brown <foolshperson@gmail.com>
Tested-by: benjamin brown <foolshperson@gmail.com>
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/imx233/power-imx233.c | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/firmware/target/arm/imx233/power-imx233.c b/firmware/target/arm/imx233/power-imx233.c index dbecce5c77..b0e614afe7 100644 --- a/firmware/target/arm/imx233/power-imx233.c +++ b/firmware/target/arm/imx233/power-imx233.c | |||
@@ -120,26 +120,6 @@ void INT_VDD5V(void) | |||
120 | BF_CLR(POWER_CTRL, VDD5V_GT_VDDIO_IRQ); | 120 | BF_CLR(POWER_CTRL, VDD5V_GT_VDDIO_IRQ); |
121 | } | 121 | } |
122 | #endif | 122 | #endif |
123 | #if IMX233_SUBTARGET >= 3700 | ||
124 | /* this IRQ is shared by several sources, disable them */ | ||
125 | if(BF_RD(POWER_CTRL, PSWITCH_IRQ)) | ||
126 | { | ||
127 | BF_CLR(POWER_CTRL, ENIRQ_PSWITCH); | ||
128 | BF_CLR(POWER_CTRL, PSWITCH_IRQ); | ||
129 | } | ||
130 | #if IMX233_SUBTARGET < 3780 | ||
131 | if(BF_RD(POWER_CTRL, LINREG_OK_IRQ)) | ||
132 | { | ||
133 | BF_CLR(POWER_CTRL, ENIRQ_LINREG_OK); | ||
134 | BF_CLR(POWER_CTRL, LINREG_OK_IRQ); | ||
135 | } | ||
136 | #endif /* IMX233_SUBTARGET < 3780 */ | ||
137 | if(BF_RD(POWER_CTRL, DC_OK_IRQ)) | ||
138 | { | ||
139 | BF_CLR(POWER_CTRL, ENIRQ_DC_OK); | ||
140 | BF_CLR(POWER_CTRL, DC_OK_IRQ); | ||
141 | } | ||
142 | #endif /* IMX233_SUBTARGET >= 3700 */ | ||
143 | } | 123 | } |
144 | 124 | ||
145 | void imx233_power_init(void) | 125 | void imx233_power_init(void) |
@@ -174,7 +154,17 @@ void imx233_power_init(void) | |||
174 | else | 154 | else |
175 | BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO); | 155 | BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO); |
176 | BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO); | 156 | BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO); |
157 | /* make the vbusvalid detection way is not enabled */ | ||
158 | BF_CLR(POWER_CTRL, ENIRQ_VBUS_VALID); | ||
177 | #endif | 159 | #endif |
160 | /* the VDD5V IRQ is shared by several sources, disable them */ | ||
161 | #if IMX233_SUBTARGET >= 3700 | ||
162 | BF_CLR(POWER_CTRL, ENIRQ_PSWITCH); | ||
163 | BF_CLR(POWER_CTRL, ENIRQ_DC_OK); | ||
164 | #if IMX233_SUBTARGET < 3780 | ||
165 | BF_CLR(POWER_CTRL, ENIRQ_LINREG_OK); | ||
166 | #endif /* IMX233_SUBTARGET < 3780 */ | ||
167 | #endif /* IMX233_SUBTARGET >= 3700 */ | ||
178 | imx233_icoll_enable_interrupt(INT_SRC_VDD5V, true); | 168 | imx233_icoll_enable_interrupt(INT_SRC_VDD5V, true); |
179 | } | 169 | } |
180 | 170 | ||