summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-04-03 04:42:04 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-04-03 04:42:04 +0000
commitd3bad5b1ca3e4dfce9f5586b7d2c8392d8c307fc (patch)
tree5d966c764bb6f7a7eda43b7f5dd8f88596e9ef01 /firmware
parentcfd245e527acb03301376e191c88142b818dee40 (diff)
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
Diffstat (limited to 'firmware')
-rw-r--r--firmware/target/arm/as3525/ascodec-target.h5
1 files changed, 5 insertions, 0 deletions
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