From 78c060b09c7f5da4e2d71aedfc7dedb74e7d70a8 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Wed, 23 Oct 2013 01:05:28 +0200 Subject: 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 Tested-by: benjamin brown Reviewed-by: Amaury Pouly --- firmware/target/arm/imx233/power-imx233.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) (limited to 'firmware') 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) BF_CLR(POWER_CTRL, VDD5V_GT_VDDIO_IRQ); } #endif -#if IMX233_SUBTARGET >= 3700 - /* this IRQ is shared by several sources, disable them */ - if(BF_RD(POWER_CTRL, PSWITCH_IRQ)) - { - BF_CLR(POWER_CTRL, ENIRQ_PSWITCH); - BF_CLR(POWER_CTRL, PSWITCH_IRQ); - } -#if IMX233_SUBTARGET < 3780 - if(BF_RD(POWER_CTRL, LINREG_OK_IRQ)) - { - BF_CLR(POWER_CTRL, ENIRQ_LINREG_OK); - BF_CLR(POWER_CTRL, LINREG_OK_IRQ); - } -#endif /* IMX233_SUBTARGET < 3780 */ - if(BF_RD(POWER_CTRL, DC_OK_IRQ)) - { - BF_CLR(POWER_CTRL, ENIRQ_DC_OK); - BF_CLR(POWER_CTRL, DC_OK_IRQ); - } -#endif /* IMX233_SUBTARGET >= 3700 */ } void imx233_power_init(void) @@ -174,7 +154,17 @@ void imx233_power_init(void) else BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO); BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO); + /* make the vbusvalid detection way is not enabled */ + BF_CLR(POWER_CTRL, ENIRQ_VBUS_VALID); #endif + /* the VDD5V IRQ is shared by several sources, disable them */ +#if IMX233_SUBTARGET >= 3700 + BF_CLR(POWER_CTRL, ENIRQ_PSWITCH); + BF_CLR(POWER_CTRL, ENIRQ_DC_OK); +#if IMX233_SUBTARGET < 3780 + BF_CLR(POWER_CTRL, ENIRQ_LINREG_OK); +#endif /* IMX233_SUBTARGET < 3780 */ +#endif /* IMX233_SUBTARGET >= 3700 */ imx233_icoll_enable_interrupt(INT_SRC_VDD5V, true); } -- cgit v1.2.3