summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2008-03-31 01:29:50 +0000
committerMichael Sevakis <jethead71@rockbox.org>2008-03-31 01:29:50 +0000
commita65406e3f48daed80f4d1b8627fae38a683fecb6 (patch)
tree0ba581f99dfcf18727fa05152b5a8b25fae86410 /firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c
parent241fd0fbdb218518cabbc6430dc0159b348549bc (diff)
downloadrockbox-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.c20
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
107void 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
115void s3c_regset(volatile int *reg, unsigned int mask)
116{
117 s3c_regmod(reg, mask, 0);
118}
119
120void s3c_regclr(volatile int *reg, unsigned int mask)
121{
122 s3c_regmod(reg, 0, mask);
123}
124
107void system_init(void) 125void 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 */