summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-10-23 01:05:28 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2013-10-23 13:33:02 +0200
commit78c060b09c7f5da4e2d71aedfc7dedb74e7d70a8 (patch)
treeeaa1ad8ae25ba363241fb9898c63fa4f8c4cc177
parent4aa32fb8f4b2921cca6e17716d7ad8a7a30f192a (diff)
downloadrockbox-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>
-rw-r--r--firmware/target/arm/imx233/power-imx233.c30
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
145void imx233_power_init(void) 125void 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