From b221d6d4d4d0ade805d249fdd69a8b8b92769268 Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Mon, 19 Jul 2010 15:56:15 +0000 Subject: as3525*: use atomic bit manipulation for CCU_IO fuzev2 button_read_device() runs in interrupt context so writes are atomic git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27494 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/as3525/fmradio-i2c-as3525.c | 8 ++++---- firmware/target/arm/as3525/sansa-clipv2/lcd-clipv2.c | 2 +- firmware/target/arm/as3525/sansa-fuzev2/lcd-fuzev2.c | 2 +- firmware/target/arm/as3525/sd-as3525.c | 8 ++++---- firmware/target/arm/as3525/sd-as3525v2.c | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/firmware/target/arm/as3525/fmradio-i2c-as3525.c b/firmware/target/arm/as3525/fmradio-i2c-as3525.c index 9e8dc63144..70287c38b8 100644 --- a/firmware/target/arm/as3525/fmradio-i2c-as3525.c +++ b/firmware/target/arm/as3525/fmradio-i2c-as3525.c @@ -158,11 +158,11 @@ void fmradio_i2c_init(void) int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count) { #ifdef SANSA_FUZEV2 - CCU_IO &= ~(1<<12); + bitclr32(&CCU_IO, 1<<12); #endif int ret = i2c_write_data(fm_i2c_bus, address, -1, buf, count); #ifdef SANSA_FUZEV2 - CCU_IO |= 1<<12; + bitset32(&CCU_IO, 1<<12); #endif return ret; } @@ -170,11 +170,11 @@ int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count int fmradio_i2c_read(unsigned char address, unsigned char* buf, int count) { #ifdef SANSA_FUZEV2 - CCU_IO &= ~(1<<12); + bitclr32(&CCU_IO, 1<<12); #endif int ret = i2c_read_data(fm_i2c_bus, address, -1, buf, count); #ifdef SANSA_FUZEV2 - CCU_IO |= 1<<12; + bitset32(&CCU_IO, 1<<12); #endif return ret; } diff --git a/firmware/target/arm/as3525/sansa-clipv2/lcd-clipv2.c b/firmware/target/arm/as3525/sansa-clipv2/lcd-clipv2.c index 015eebfd87..14c8b77aec 100644 --- a/firmware/target/arm/as3525/sansa-clipv2/lcd-clipv2.c +++ b/firmware/target/arm/as3525/sansa-clipv2/lcd-clipv2.c @@ -29,7 +29,7 @@ void lcd_hw_init(int *offset) { /* DBOP initialisation, do what OF does */ - CCU_IO |= (1<<12); /* ?? */ + bitset32(&CCU_IO, 1<<12); /* ?? */ CGU_DBOP |= /*(1<<3)*/ 0x18 | AS3525_DBOP_DIV; DBOP_CTRL = 0x51004; diff --git a/firmware/target/arm/as3525/sansa-fuzev2/lcd-fuzev2.c b/firmware/target/arm/as3525/sansa-fuzev2/lcd-fuzev2.c index fd6bcb45fc..e87425f762 100644 --- a/firmware/target/arm/as3525/sansa-fuzev2/lcd-fuzev2.c +++ b/firmware/target/arm/as3525/sansa-fuzev2/lcd-fuzev2.c @@ -54,7 +54,7 @@ void lcd_write_reg(int reg, int value) static void as3525_dbop_init(void) { - CCU_IO |= 1<<12; + bitset32(&CCU_IO, 1<<12); CGU_DBOP |= (1<<4) | (1<<3) | AS3525_DBOP_DIV; DBOP_TIMPOL_01 = 0xE12FE12F; DBOP_TIMPOL_23 = 0xE12F0036; diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c index 6e5845cf0a..35cb997629 100644 --- a/firmware/target/arm/as3525/sd-as3525.c +++ b/firmware/target/arm/as3525/sd-as3525.c @@ -564,8 +564,8 @@ int sd_init(void) bitset32(&CGU_PERI, CGU_NAF_CLOCK_ENABLE); #ifdef HAVE_MULTIDRIVE bitset32(&CGU_PERI, CGU_MCI_CLOCK_ENABLE); - CCU_IO &= ~(1<<3); /* bits 3:2 = 01, xpd is SD interface */ - CCU_IO |= (1<<2); + bitclr32(&CCU_IO, 1<<3); /* bits 3:2 = 01, xpd is SD interface */ + bitset32(&CCU_IO, 1<<2); #endif wakeup_init(&transfer_completion_signal); @@ -968,7 +968,7 @@ void sd_enable(bool on) #if defined(HAVE_BUTTON_LIGHT) && defined(HAVE_MULTIDRIVE) /* buttonlight AMSes need a bit of special handling for the buttonlight * here due to the dual mapping of GPIOD and XPD */ - CCU_IO |= (1<<2); /* XPD is SD-MCI interface (b3:2 = 01) */ + bitset32(&CCU_IO, 1<<2); /* XPD is SD-MCI interface (b3:2 = 01) */ if (buttonlight_is_on) GPIOD_DIR &= ~(1<<7); else @@ -994,7 +994,7 @@ void sd_enable(bool on) #endif /* defined(HAVE_HOTSWAP) && defined (HAVE_ADJUSTABLE_CPU_VOLTAGE) */ #if defined(HAVE_BUTTON_LIGHT) && defined(HAVE_MULTIDRIVE) - CCU_IO &= ~(1<<2); /* XPD is general purpose IO (b3:2 = 00) */ + bitclr32(&CCU_IO, 1<<2); /* XPD is general purpose IO (b3:2 = 00) */ if (buttonlight_is_on) _buttonlight_on(); #endif diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c index d42a086770..552d88d3bb 100644 --- a/firmware/target/arm/as3525/sd-as3525v2.c +++ b/firmware/target/arm/as3525/sd-as3525v2.c @@ -784,7 +784,7 @@ int sd_init(void) #ifndef SANSA_CLIPV2 /* Configure XPD for SD-MCI interface */ - CCU_IO |= (1<<2); + bitset32(&CCU_IO, 1<<2); #endif VIC_INT_ENABLE = INTERRUPT_NAND; -- cgit v1.2.3