From d3bad5b1ca3e4dfce9f5586b7d2c8392d8c307fc Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Sat, 3 Apr 2010 04:42:04 +0000 Subject: as3525v2: disable interrupts when writing to the PMU registers Brightness changes on the Fuzev2 now work flawlessly This might also explain why my Clip+ would sometimes "not boot", that could have been because the backlight was not enabled at all. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25445 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/as3525/ascodec-target.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'firmware') diff --git a/firmware/target/arm/as3525/ascodec-target.h b/firmware/target/arm/as3525/ascodec-target.h index 2bc99ab7e7..37947541c2 100644 --- a/firmware/target/arm/as3525/ascodec-target.h +++ b/firmware/target/arm/as3525/ascodec-target.h @@ -30,6 +30,7 @@ #include "as3514.h" #include "kernel.h" /* for struct wakeup */ #include "clock-target.h" /* for AS3525_I2C_PRESCALER */ +#include "system-arm.h" /* Charge Pump and Power management Settings */ #define AS314_CP_DCDC3_SETTING \ @@ -77,8 +78,12 @@ int ascodec_write(unsigned int index, unsigned int value); static inline void ascodec_write_pmu(unsigned int index, unsigned int subreg, unsigned int value) { + /* we disable interrupts to make sure no operation happen on the i2c bus + * between selecting the sub register and writing to it */ + int oldstatus = disable_irq_save(); ascodec_write(AS3543_PMU_ENABLE, 8|subreg); ascodec_write(index, value); + restore_irq(oldstatus); } #endif -- cgit v1.2.3