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) { | |||
104 | enable_mmu(); | 104 | enable_mmu(); |
105 | } | 105 | } |
106 | 106 | ||
107 | void s3c_regmod(volatile int *reg, unsigned int set, unsigned int clr) | ||
108 | { | ||
109 | int oldstatus = disable_interrupt_save(IRQ_FIQ_STATUS); | ||
110 | unsigned int val = *reg; | ||
111 | *reg = (val | set) & ~clr; | ||
112 | restore_interrupt(oldstatus); | ||
113 | } | ||
114 | |||
115 | void s3c_regset(volatile int *reg, unsigned int mask) | ||
116 | { | ||
117 | s3c_regmod(reg, mask, 0); | ||
118 | } | ||
119 | |||
120 | void s3c_regclr(volatile int *reg, unsigned int mask) | ||
121 | { | ||
122 | s3c_regmod(reg, 0, mask); | ||
123 | } | ||
124 | |||
107 | void system_init(void) | 125 | void system_init(void) |
108 | { | 126 | { |
109 | /* Disable interrupts and set all to IRQ mode */ | 127 | /* Disable interrupts and set all to IRQ mode */ |
@@ -146,7 +164,7 @@ void system_init(void) | |||
146 | 164 | ||
147 | /* Turn off NAND flash controller */ | 165 | /* Turn off NAND flash controller */ |
148 | | (1 << 4) | 166 | | (1 << 4) |
149 | 167 | ||
150 | ); | 168 | ); |
151 | 169 | ||
152 | /* Turn off the USB PLL */ | 170 | /* Turn off the USB PLL */ |