diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2008-03-31 01:29:50 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2008-03-31 01:29:50 +0000 |
commit | a65406e3f48daed80f4d1b8627fae38a683fecb6 (patch) | |
tree | 0ba581f99dfcf18727fa05152b5a8b25fae86410 /firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c | |
parent | 241fd0fbdb218518cabbc6430dc0159b348549bc (diff) | |
download | rockbox-a65406e3f48daed80f4d1b8627fae38a683fecb6.tar.gz rockbox-a65406e3f48daed80f4d1b8627fae38a683fecb6.zip |
meg-fx: It's important to make sure certain interrupt-related registers have bits changed atomically.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16894 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c')
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c index 19e9bed1e1..f789827d80 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c @@ -104,6 +104,24 @@ void memory_init(void) { enable_mmu(); } +void s3c_regmod(volatile int *reg, unsigned int set, unsigned int clr) +{ + int oldstatus = disable_interrupt_save(IRQ_FIQ_STATUS); + unsigned int val = *reg; + *reg = (val | set) & ~clr; + restore_interrupt(oldstatus); +} + +void s3c_regset(volatile int *reg, unsigned int mask) +{ + s3c_regmod(reg, mask, 0); +} + +void s3c_regclr(volatile int *reg, unsigned int mask) +{ + s3c_regmod(reg, 0, mask); +} + void system_init(void) { /* Disable interrupts and set all to IRQ mode */ @@ -146,7 +164,7 @@ void system_init(void) /* Turn off NAND flash controller */ | (1 << 4) - + ); /* Turn off the USB PLL */ |