summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-10-21 01:09:09 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2013-10-21 01:23:13 +0200
commit6006eb59b1064cdc115583d2eab3fe7bab4ffa4d (patch)
tree23f773852a3ecaa1c98c4263e61d7ff4bd16015e /firmware/target
parentefc591e42d967c3324787f2ef4865055d6894565 (diff)
downloadrockbox-6006eb59b1064cdc115583d2eab3fe7bab4ffa4d.tar.gz
rockbox-6006eb59b1064cdc115583d2eab3fe7bab4ffa4d.zip
imx233/i2c: always reset the i2c block on timeout
On targets like stmp3700, resetting the dma channel on "soft" timeout drives the whole block crazy unless it goes through complete reset. Change-Id: I830b252279989bf9f9cd9c138240a6ea9b003527
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/arm/imx233/i2c-imx233.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/i2c-imx233.c b/firmware/target/arm/imx233/i2c-imx233.c
index 57f0f7356a..4d066a4152 100644
--- a/firmware/target/arm/imx233/i2c-imx233.c
+++ b/firmware/target/arm/imx233/i2c-imx233.c
@@ -205,6 +205,7 @@ enum imx233_i2c_error_t imx233_i2c_end(unsigned timeout)
205 if(semaphore_wait(&i2c_sema, timeout) == OBJ_WAIT_TIMEDOUT) 205 if(semaphore_wait(&i2c_sema, timeout) == OBJ_WAIT_TIMEDOUT)
206 { 206 {
207 imx233_dma_reset_channel(APB_I2C); 207 imx233_dma_reset_channel(APB_I2C);
208 imx233_i2c_reset();
208 ret = I2C_TIMEOUT; 209 ret = I2C_TIMEOUT;
209 } 210 }
210 else if(BF_RD(I2C_CTRL1, MASTER_LOSS_IRQ)) 211 else if(BF_RD(I2C_CTRL1, MASTER_LOSS_IRQ))