summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2012-12-26 02:39:39 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2012-12-26 02:39:39 +0100
commit38878020d2d9c6756286b5fbcbe49c091df68c96 (patch)
tree3d3ba04b698e2ed3250d6ca8f317398ab89b4055
parent7fddc2327b8cee7ad8ce1a6d53fe66cde94a0edf (diff)
downloadrockbox-38878020d2d9c6756286b5fbcbe49c091df68c96.zip
rockbox-38878020d2d9c6756286b5fbcbe49c091df68c96.tar.gz
rockbox-38878020d2d9c6756286b5fbcbe49c091df68c96.tar.bz2
rockbox-38878020d2d9c6756286b5fbcbe49c091df68c96.tar.xz
fuze+: make sure lcd is ready before chaning a register
The lcd driver does not wait for the refresh to be done to return from lcd_update(). This means that changing a register is unsafe if done in the middle of the redraw. This could happen when disabling the lcd for example. Make sure it doesn't happen by waiting for the lcdif to be ready. Change-Id: I43ec62a637dd61c3b2a3a6e131c1a9e8035524b1
-rw-r--r--firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c b/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c
index 85ab6cd..9997deb 100644
--- a/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c
+++ b/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c
@@ -208,6 +208,7 @@ static uint32_t i80_read_register(uint32_t data_out)
static void lcd_write_reg(uint32_t reg, uint32_t data)
{
uint32_t old_reg = reg;
+ imx233_lcdif_wait_ready();
/* get back to 18-bit word length */
imx233_lcdif_set_word_length(HW_LCDIF_CTRL__WORD_LENGTH_18_BIT);
reg = encode_16_to_18(reg);