diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2010-07-02 06:00:00 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2010-07-02 06:00:00 +0000 |
commit | 0f47ffe0e429c1457e16fddb5f27abc9bf802535 (patch) | |
tree | 6dc6c22865f35b43b7fc0e1dab168ac2f170f965 | |
parent | 9d6851688e018b50e296756beffc9ced97b72df0 (diff) | |
download | rockbox-0f47ffe0e429c1457e16fddb5f27abc9bf802535.tar.gz rockbox-0f47ffe0e429c1457e16fddb5f27abc9bf802535.zip |
AMS SoC's: Some register bit changes need interrupt protection: timer API and CGU_PERI.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27236 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/SOURCES | 1 | ||||
-rw-r--r-- | firmware/target/arm/as3525/ascodec-as3525.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/as3525/audio-as3525.c | 2 | ||||
-rw-r--r-- | firmware/target/arm/as3525/dma-pl081.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/as3525/kernel-as3525.c | 2 | ||||
-rw-r--r-- | firmware/target/arm/as3525/pcm-as3525.c | 12 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-clipplus/lcd-clip-plus.c | 2 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525v2.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/as3525/timer-as3525.c | 14 | ||||
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525v2.c | 2 |
12 files changed, 36 insertions, 23 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES index ea309a12f4..57f7258282 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES | |||
@@ -459,6 +459,7 @@ target/arm/pnx0101/timer-pnx0101.c | |||
459 | #endif | 459 | #endif |
460 | 460 | ||
461 | #if CONFIG_CPU == AS3525 || CONFIG_CPU == AS3525v2 | 461 | #if CONFIG_CPU == AS3525 || CONFIG_CPU == AS3525v2 |
462 | target/arm/bits-armv4.S | ||
462 | target/arm/as3525/system-as3525.c | 463 | target/arm/as3525/system-as3525.c |
463 | target/arm/as3525/memory-init.S | 464 | target/arm/as3525/memory-init.S |
464 | target/arm/as3525/kernel-as3525.c | 465 | target/arm/as3525/kernel-as3525.c |
diff --git a/firmware/target/arm/as3525/ascodec-as3525.c b/firmware/target/arm/as3525/ascodec-as3525.c index ca77be32a4..822d48e241 100644 --- a/firmware/target/arm/as3525/ascodec-as3525.c +++ b/firmware/target/arm/as3525/ascodec-as3525.c | |||
@@ -160,7 +160,7 @@ static void ascodec_finish_req(struct ascodec_request *req) | |||
160 | */ | 160 | */ |
161 | while (i2c_busy()); | 161 | while (i2c_busy()); |
162 | 162 | ||
163 | /* disable clock */ | 163 | /* disable clock - already in IRQ context */ |
164 | CGU_PERI &= ~CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE; | 164 | CGU_PERI &= ~CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE; |
165 | 165 | ||
166 | req->status = 1; | 166 | req->status = 1; |
@@ -205,7 +205,7 @@ static void ascodec_start_req(struct ascodec_request *req) | |||
205 | int unmask = 0; | 205 | int unmask = 0; |
206 | 206 | ||
207 | /* enable clock */ | 207 | /* enable clock */ |
208 | CGU_PERI |= CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE; | 208 | bitset32(&CGU_PERI, CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE); |
209 | 209 | ||
210 | /* start transfer */ | 210 | /* start transfer */ |
211 | I2C2_SADDR = req->index; | 211 | I2C2_SADDR = req->index; |
@@ -266,7 +266,7 @@ void ascodec_init(void) | |||
266 | wakeup_init(&adc_wkup); | 266 | wakeup_init(&adc_wkup); |
267 | 267 | ||
268 | /* enable clock */ | 268 | /* enable clock */ |
269 | CGU_PERI |= CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE; | 269 | bitset32(&CGU_PERI, CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE); |
270 | 270 | ||
271 | /* prescaler for i2c clock */ | 271 | /* prescaler for i2c clock */ |
272 | prescaler = AS3525_I2C_PRESCALER; | 272 | prescaler = AS3525_I2C_PRESCALER; |
diff --git a/firmware/target/arm/as3525/audio-as3525.c b/firmware/target/arm/as3525/audio-as3525.c index 8dd85929c0..10c6161881 100644 --- a/firmware/target/arm/as3525/audio-as3525.c +++ b/firmware/target/arm/as3525/audio-as3525.c | |||
@@ -29,7 +29,7 @@ int audio_channels = 2; | |||
29 | 29 | ||
30 | void audio_set_output_source(int source) | 30 | void audio_set_output_source(int source) |
31 | { | 31 | { |
32 | CGU_PERI |= CGU_I2SOUT_APB_CLOCK_ENABLE; | 32 | bitset32(&CGU_PERI, CGU_I2SOUT_APB_CLOCK_ENABLE); |
33 | if (source == AUDIO_SRC_PLAYBACK) | 33 | if (source == AUDIO_SRC_PLAYBACK) |
34 | I2SOUT_CONTROL &= ~(1<<5); | 34 | I2SOUT_CONTROL &= ~(1<<5); |
35 | else | 35 | else |
diff --git a/firmware/target/arm/as3525/dma-pl081.c b/firmware/target/arm/as3525/dma-pl081.c index 149488c7d1..b8c12257de 100644 --- a/firmware/target/arm/as3525/dma-pl081.c +++ b/firmware/target/arm/as3525/dma-pl081.c | |||
@@ -33,7 +33,7 @@ void dma_retain(void) | |||
33 | { | 33 | { |
34 | if(++dma_used == 1) | 34 | if(++dma_used == 1) |
35 | { | 35 | { |
36 | CGU_PERI |= CGU_DMA_CLOCK_ENABLE; | 36 | bitset32(&CGU_PERI, CGU_DMA_CLOCK_ENABLE); |
37 | DMAC_CONFIGURATION |= (1<<0); | 37 | DMAC_CONFIGURATION |= (1<<0); |
38 | } | 38 | } |
39 | } | 39 | } |
@@ -43,7 +43,7 @@ void dma_release(void) | |||
43 | if(--dma_used == 0) | 43 | if(--dma_used == 0) |
44 | { | 44 | { |
45 | DMAC_CONFIGURATION &= ~(1<<0); | 45 | DMAC_CONFIGURATION &= ~(1<<0); |
46 | CGU_PERI &= ~CGU_DMA_CLOCK_ENABLE; | 46 | bitclr32(&CGU_PERI, CGU_DMA_CLOCK_ENABLE); |
47 | } | 47 | } |
48 | if (dma_used < 0) | 48 | if (dma_used < 0) |
49 | panicf("dma_used < 0!"); | 49 | panicf("dma_used < 0!"); |
diff --git a/firmware/target/arm/as3525/kernel-as3525.c b/firmware/target/arm/as3525/kernel-as3525.c index 34ef54cfdf..d44b120387 100644 --- a/firmware/target/arm/as3525/kernel-as3525.c +++ b/firmware/target/arm/as3525/kernel-as3525.c | |||
@@ -168,7 +168,7 @@ void tick_start(unsigned int interval_in_ms) | |||
168 | { | 168 | { |
169 | int cycles = KERNEL_TIMER_FREQ / 1000 * interval_in_ms; | 169 | int cycles = KERNEL_TIMER_FREQ / 1000 * interval_in_ms; |
170 | 170 | ||
171 | CGU_PERI |= CGU_TIMER2_CLOCK_ENABLE; /* enable peripheral */ | 171 | bitset32(&CGU_PERI, CGU_TIMER2_CLOCK_ENABLE); /* enable peripheral */ |
172 | VIC_INT_ENABLE = INTERRUPT_TIMER2; /* enable interrupt */ | 172 | VIC_INT_ENABLE = INTERRUPT_TIMER2; /* enable interrupt */ |
173 | 173 | ||
174 | set_timer2_cycles_per_tick(cycles); | 174 | set_timer2_cycles_per_tick(cycles); |
diff --git a/firmware/target/arm/as3525/pcm-as3525.c b/firmware/target/arm/as3525/pcm-as3525.c index 8c5bb67076..720f615ba9 100644 --- a/firmware/target/arm/as3525/pcm-as3525.c +++ b/firmware/target/arm/as3525/pcm-as3525.c | |||
@@ -103,7 +103,7 @@ void pcm_play_dma_start(const void *addr, size_t size) | |||
103 | dma_size = size; | 103 | dma_size = size; |
104 | dma_start_addr = (unsigned char*)addr; | 104 | dma_start_addr = (unsigned char*)addr; |
105 | 105 | ||
106 | CGU_PERI |= CGU_I2SOUT_APB_CLOCK_ENABLE; | 106 | bitset32(&CGU_PERI, CGU_I2SOUT_APB_CLOCK_ENABLE); |
107 | CGU_AUDIO |= (1<<11); | 107 | CGU_AUDIO |= (1<<11); |
108 | 108 | ||
109 | dma_retain(); | 109 | dma_retain(); |
@@ -121,7 +121,7 @@ void pcm_play_dma_stop(void) | |||
121 | 121 | ||
122 | dma_release(); | 122 | dma_release(); |
123 | 123 | ||
124 | CGU_PERI &= ~CGU_I2SOUT_APB_CLOCK_ENABLE; | 124 | bitclr32(&CGU_PERI, CGU_I2SOUT_APB_CLOCK_ENABLE); |
125 | CGU_AUDIO &= ~(1<<11); | 125 | CGU_AUDIO &= ~(1<<11); |
126 | } | 126 | } |
127 | 127 | ||
@@ -137,7 +137,7 @@ void pcm_play_dma_pause(bool pause) | |||
137 | 137 | ||
138 | void pcm_play_dma_init(void) | 138 | void pcm_play_dma_init(void) |
139 | { | 139 | { |
140 | CGU_PERI |= CGU_I2SOUT_APB_CLOCK_ENABLE; | 140 | bitset32(&CGU_PERI, CGU_I2SOUT_APB_CLOCK_ENABLE); |
141 | 141 | ||
142 | I2SOUT_CONTROL = (1<<6)|(1<<3) /* enable dma, stereo */; | 142 | I2SOUT_CONTROL = (1<<6)|(1<<3) /* enable dma, stereo */; |
143 | 143 | ||
@@ -339,7 +339,8 @@ void pcm_rec_dma_stop(void) | |||
339 | I2SIN_CONTROL &= ~(1<<11); /* disable dma */ | 339 | I2SIN_CONTROL &= ~(1<<11); /* disable dma */ |
340 | 340 | ||
341 | CGU_AUDIO &= ~((1<<23)|(1<<11)); | 341 | CGU_AUDIO &= ~((1<<23)|(1<<11)); |
342 | CGU_PERI &= ~(CGU_I2SIN_APB_CLOCK_ENABLE|CGU_I2SOUT_APB_CLOCK_ENABLE); | 342 | bitclr32(&CGU_PERI, CGU_I2SIN_APB_CLOCK_ENABLE | |
343 | CGU_I2SOUT_APB_CLOCK_ENABLE); | ||
343 | } | 344 | } |
344 | 345 | ||
345 | 346 | ||
@@ -354,7 +355,8 @@ void pcm_rec_dma_start(void *addr, size_t size) | |||
354 | 355 | ||
355 | dma_retain(); | 356 | dma_retain(); |
356 | 357 | ||
357 | CGU_PERI |= CGU_I2SIN_APB_CLOCK_ENABLE|CGU_I2SOUT_APB_CLOCK_ENABLE; | 358 | bitset32(&CGU_PERI, CGU_I2SIN_APB_CLOCK_ENABLE | |
359 | CGU_I2SOUT_APB_CLOCK_ENABLE); | ||
358 | CGU_AUDIO |= ((1<<23)|(1<<11)); | 360 | CGU_AUDIO |= ((1<<23)|(1<<11)); |
359 | 361 | ||
360 | I2SIN_CONTROL |= (1<<11)|(1<<5); /* enable dma, 14bits samples */ | 362 | I2SIN_CONTROL |= (1<<11)|(1<<5); /* enable dma, 14bits samples */ |
diff --git a/firmware/target/arm/as3525/sansa-clipplus/lcd-clip-plus.c b/firmware/target/arm/as3525/sansa-clipplus/lcd-clip-plus.c index 1a94547505..7be0199df1 100644 --- a/firmware/target/arm/as3525/sansa-clipplus/lcd-clip-plus.c +++ b/firmware/target/arm/as3525/sansa-clipplus/lcd-clip-plus.c | |||
@@ -28,7 +28,7 @@ | |||
28 | 28 | ||
29 | void lcd_hw_init(void) | 29 | void lcd_hw_init(void) |
30 | { | 30 | { |
31 | CGU_PERI |= CGU_SSP_CLOCK_ENABLE; | 31 | bitset32(&CGU_PERI, CGU_SSP_CLOCK_ENABLE); |
32 | 32 | ||
33 | SSP_CPSR = AS3525_SSP_PRESCALER; /* OF = 0x10 */ | 33 | SSP_CPSR = AS3525_SSP_PRESCALER; /* OF = 0x10 */ |
34 | SSP_CR0 = (1<<7) | (1<<6) | 7; /* Motorola SPI frame format, 8 bits */ | 34 | SSP_CR0 = (1<<7) | (1<<6) | 7; /* Motorola SPI frame format, 8 bits */ |
diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c index 9bfb2a9412..6e5845cf0a 100644 --- a/firmware/target/arm/as3525/sd-as3525.c +++ b/firmware/target/arm/as3525/sd-as3525.c | |||
@@ -561,9 +561,9 @@ int sd_init(void) | |||
561 | | (AS3525_IDE_DIV << 2) | 561 | | (AS3525_IDE_DIV << 2) |
562 | | AS3525_CLK_PLLA; /* clock source = PLLA */ | 562 | | AS3525_CLK_PLLA; /* clock source = PLLA */ |
563 | 563 | ||
564 | CGU_PERI |= CGU_NAF_CLOCK_ENABLE; | 564 | bitset32(&CGU_PERI, CGU_NAF_CLOCK_ENABLE); |
565 | #ifdef HAVE_MULTIDRIVE | 565 | #ifdef HAVE_MULTIDRIVE |
566 | CGU_PERI |= CGU_MCI_CLOCK_ENABLE; | 566 | bitset32(&CGU_PERI, CGU_MCI_CLOCK_ENABLE); |
567 | CCU_IO &= ~(1<<3); /* bits 3:2 = 01, xpd is SD interface */ | 567 | CCU_IO &= ~(1<<3); /* bits 3:2 = 01, xpd is SD interface */ |
568 | CCU_IO |= (1<<2); | 568 | CCU_IO |= (1<<2); |
569 | #endif | 569 | #endif |
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c index 238cd7a5eb..9756d9e1f0 100644 --- a/firmware/target/arm/as3525/sd-as3525v2.c +++ b/firmware/target/arm/as3525/sd-as3525v2.c | |||
@@ -708,7 +708,7 @@ int sd_init(void) | |||
708 | { | 708 | { |
709 | int ret; | 709 | int ret; |
710 | 710 | ||
711 | CGU_PERI |= CGU_MCI_CLOCK_ENABLE; | 711 | bitset32(&CGU_PERI, CGU_MCI_CLOCK_ENABLE); |
712 | 712 | ||
713 | CGU_IDE = (1<<7) /* AHB interface enable */ | 713 | CGU_IDE = (1<<7) /* AHB interface enable */ |
714 | | (AS3525_IDE_DIV << 2) | 714 | | (AS3525_IDE_DIV << 2) |
@@ -974,7 +974,7 @@ void sd_enable(bool on) | |||
974 | { | 974 | { |
975 | if (on) | 975 | if (on) |
976 | { | 976 | { |
977 | CGU_PERI |= CGU_MCI_CLOCK_ENABLE; | 977 | bitset32(&CGU_PERI, CGU_MCI_CLOCK_ENABLE); |
978 | CGU_IDE |= (1<<7); /* AHB interface enable */ | 978 | CGU_IDE |= (1<<7); /* AHB interface enable */ |
979 | CGU_MEMSTICK |= (1<<7); /* interface enable */ | 979 | CGU_MEMSTICK |= (1<<7); /* interface enable */ |
980 | CGU_SDSLOT |= (1<<7); /* interface enable */ | 980 | CGU_SDSLOT |= (1<<7); /* interface enable */ |
@@ -984,7 +984,7 @@ void sd_enable(bool on) | |||
984 | CGU_SDSLOT &= ~(1<<7); /* interface enable */ | 984 | CGU_SDSLOT &= ~(1<<7); /* interface enable */ |
985 | CGU_MEMSTICK &= ~(1<<7); /* interface enable */ | 985 | CGU_MEMSTICK &= ~(1<<7); /* interface enable */ |
986 | CGU_IDE &= ~(1<<7); /* AHB interface enable */ | 986 | CGU_IDE &= ~(1<<7); /* AHB interface enable */ |
987 | CGU_PERI &= ~CGU_MCI_CLOCK_ENABLE; | 987 | bitclr32(&CGU_PERI, CGU_MCI_CLOCK_ENABLE); |
988 | } | 988 | } |
989 | } | 989 | } |
990 | 990 | ||
diff --git a/firmware/target/arm/as3525/timer-as3525.c b/firmware/target/arm/as3525/timer-as3525.c index f5ff60e0f8..420eb489fb 100644 --- a/firmware/target/arm/as3525/timer-as3525.c +++ b/firmware/target/arm/as3525/timer-as3525.c | |||
@@ -19,7 +19,8 @@ | |||
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | #include "as3525.h" | 22 | #include "config.h" |
23 | #include "system.h" | ||
23 | #include "timer.h" | 24 | #include "timer.h" |
24 | #include "stdlib.h" | 25 | #include "stdlib.h" |
25 | 26 | ||
@@ -33,6 +34,8 @@ void INT_TIMER1(void) | |||
33 | 34 | ||
34 | bool timer_set(long cycles, bool start) | 35 | bool timer_set(long cycles, bool start) |
35 | { | 36 | { |
37 | int oldstatus = disable_irq_save(); | ||
38 | |||
36 | if (start) | 39 | if (start) |
37 | { | 40 | { |
38 | if (pfn_unregister != NULL) | 41 | if (pfn_unregister != NULL) |
@@ -50,19 +53,26 @@ bool timer_set(long cycles, bool start) | |||
50 | TIMER_PERIODIC | | 53 | TIMER_PERIODIC | |
51 | TIMER_INT_ENABLE | | 54 | TIMER_INT_ENABLE | |
52 | TIMER_32_BIT; | 55 | TIMER_32_BIT; |
56 | |||
57 | restore_irq(oldstatus); | ||
58 | |||
53 | return true; | 59 | return true; |
54 | } | 60 | } |
55 | 61 | ||
56 | bool timer_start(void) | 62 | bool timer_start(void) |
57 | { | 63 | { |
58 | CGU_PERI |= CGU_TIMER1_CLOCK_ENABLE; /* enable peripheral */ | 64 | int oldstatus = disable_irq_save(); |
65 | CGU_PERI |= CGU_TIMER1_CLOCK_ENABLE; /* enable peripheral */ | ||
59 | VIC_INT_ENABLE = INTERRUPT_TIMER1; | 66 | VIC_INT_ENABLE = INTERRUPT_TIMER1; |
67 | restore_irq(oldstatus); | ||
60 | return true; | 68 | return true; |
61 | } | 69 | } |
62 | 70 | ||
63 | void timer_stop(void) | 71 | void timer_stop(void) |
64 | { | 72 | { |
73 | int oldstatus = disable_irq_save(); | ||
65 | TIMER1_CONTROL &= 0x10; /* disable timer 1 (don't modify bit 4) */ | 74 | TIMER1_CONTROL &= 0x10; /* disable timer 1 (don't modify bit 4) */ |
66 | VIC_INT_EN_CLEAR = INTERRUPT_TIMER1; /* disable interrupt */ | 75 | VIC_INT_EN_CLEAR = INTERRUPT_TIMER1; /* disable interrupt */ |
67 | CGU_PERI &= ~CGU_TIMER1_CLOCK_ENABLE; /* disable peripheral */ | 76 | CGU_PERI &= ~CGU_TIMER1_CLOCK_ENABLE; /* disable peripheral */ |
77 | restore_irq(oldstatus); | ||
68 | } | 78 | } |
diff --git a/firmware/target/arm/as3525/usb-drv-as3525.c b/firmware/target/arm/as3525/usb-drv-as3525.c index 88ebf671ec..f98db62596 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525.c +++ b/firmware/target/arm/as3525/usb-drv-as3525.c | |||
@@ -236,7 +236,7 @@ void usb_drv_init(void) | |||
236 | ascodec_write(AS3514_CVDD_DCDC3, ascodec_read(AS3514_CVDD_DCDC3) | 1<<2); | 236 | ascodec_write(AS3514_CVDD_DCDC3, ascodec_read(AS3514_CVDD_DCDC3) | 1<<2); |
237 | 237 | ||
238 | /* AHB part */ | 238 | /* AHB part */ |
239 | CGU_PERI |= CGU_USB_CLOCK_ENABLE; | 239 | bitset32(&CGU_PERI, CGU_USB_CLOCK_ENABLE); |
240 | 240 | ||
241 | /* reset AHB */ | 241 | /* reset AHB */ |
242 | CCU_SRC = CCU_SRC_USB_AHB_EN; | 242 | CCU_SRC = CCU_SRC_USB_AHB_EN; |
@@ -319,7 +319,7 @@ void usb_drv_exit(void) | |||
319 | USB_DEV_INTR_MASK = 0xffffffff; | 319 | USB_DEV_INTR_MASK = 0xffffffff; |
320 | VIC_INT_EN_CLEAR = INTERRUPT_USB; | 320 | VIC_INT_EN_CLEAR = INTERRUPT_USB; |
321 | CGU_USB &= ~(1<<5); | 321 | CGU_USB &= ~(1<<5); |
322 | CGU_PERI &= ~CGU_USB_CLOCK_ENABLE; | 322 | bitclr32(&CGU_PERI, CGU_USB_CLOCK_ENABLE); |
323 | /* Disable UVDD generating LDO */ | 323 | /* Disable UVDD generating LDO */ |
324 | ascodec_write(AS3515_USB_UTIL, ascodec_read(AS3515_USB_UTIL) & ~(1<<4)); | 324 | ascodec_write(AS3515_USB_UTIL, ascodec_read(AS3515_USB_UTIL) & ~(1<<4)); |
325 | usb_disable_pll(); | 325 | usb_disable_pll(); |
diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.c b/firmware/target/arm/as3525/usb-drv-as3525v2.c index e324a168ac..2c0ca7011c 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525v2.c +++ b/firmware/target/arm/as3525/usb-drv-as3525v2.c | |||
@@ -122,7 +122,7 @@ static void as3525v2_connect(void) | |||
122 | { | 122 | { |
123 | logf("usb-drv: init as3525v2"); | 123 | logf("usb-drv: init as3525v2"); |
124 | /* 1) enable usb core clock */ | 124 | /* 1) enable usb core clock */ |
125 | CGU_PERI |= CGU_USB_CLOCK_ENABLE; | 125 | bitset32(&CGU_PERI, CGU_USB_CLOCK_ENABLE); |
126 | usb_delay(); | 126 | usb_delay(); |
127 | /* 2) enable usb phy clock */ | 127 | /* 2) enable usb phy clock */ |
128 | /* PHY clock */ | 128 | /* PHY clock */ |