diff options
author | Vitja Makarov <vitja.makarov@gmail.com> | 2009-09-04 09:36:53 +0000 |
---|---|---|
committer | Vitja Makarov <vitja.makarov@gmail.com> | 2009-09-04 09:36:53 +0000 |
commit | b5e39c15a55b3e46643bf3b46bb6c664b6cb50a4 (patch) | |
tree | fa4e817f39612c213e76f006f227341abd1d978c | |
parent | 4b4e5e9265a976a7e33ee305690481bb74a1a292 (diff) | |
download | rockbox-b5e39c15a55b3e46643bf3b46bb6c664b6cb50a4.tar.gz rockbox-b5e39c15a55b3e46643bf3b46bb6c664b6cb50a4.zip |
iaudio7: Implement udelay, mostly based on D2 port, except Z-clock initialization
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22620 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/drivers/tuner/lv24020lp.c | 7 | ||||
-rw-r--r-- | firmware/target/arm/tcc77x/system-target.h | 9 | ||||
-rw-r--r-- | firmware/target/arm/tcc77x/system-tcc77x.c | 8 |
3 files changed, 17 insertions, 7 deletions
diff --git a/firmware/drivers/tuner/lv24020lp.c b/firmware/drivers/tuner/lv24020lp.c index c6d396aca4..ab37ab8124 100644 --- a/firmware/drivers/tuner/lv24020lp.c +++ b/firmware/drivers/tuner/lv24020lp.c | |||
@@ -82,13 +82,6 @@ static int fd_log = -1; | |||
82 | #define FM_CLOCK_PIN 5 | 82 | #define FM_CLOCK_PIN 5 |
83 | #define FM_DATA_PIN 6 | 83 | #define FM_DATA_PIN 6 |
84 | #define FM_NRW_PIN 7 | 84 | #define FM_NRW_PIN 7 |
85 | /* Remove hack when i7 has udelay */ | ||
86 | static void udelay(int usecs) | ||
87 | { | ||
88 | while (usecs--) | ||
89 | asm("nop;nop;"); | ||
90 | } | ||
91 | |||
92 | #elif defined(COWON_D2) | 85 | #elif defined(COWON_D2) |
93 | #define TUNER_GPIO_OUTPUT_EN GPIOC_DIR | 86 | #define TUNER_GPIO_OUTPUT_EN GPIOC_DIR |
94 | #define TUNER_GPIO_OUTPUT_VAL GPIOC | 87 | #define TUNER_GPIO_OUTPUT_VAL GPIOC |
diff --git a/firmware/target/arm/tcc77x/system-target.h b/firmware/target/arm/tcc77x/system-target.h index 16cfb9127d..55dd52ef47 100644 --- a/firmware/target/arm/tcc77x/system-target.h +++ b/firmware/target/arm/tcc77x/system-target.h | |||
@@ -34,4 +34,13 @@ | |||
34 | #define inw(a) (*(volatile unsigned short *) (a)) | 34 | #define inw(a) (*(volatile unsigned short *) (a)) |
35 | #define outw(a,b) (*(volatile unsigned short *) (b) = (a)) | 35 | #define outw(a,b) (*(volatile unsigned short *) (b) = (a)) |
36 | 36 | ||
37 | /* TC32 is configured to 1MHz in clock_init() */ | ||
38 | #define USEC_TIMER TC32MCNT | ||
39 | |||
40 | static inline void udelay(unsigned usecs) | ||
41 | { | ||
42 | unsigned stop = USEC_TIMER + usecs; | ||
43 | while (TIME_BEFORE(USEC_TIMER, stop)); | ||
44 | } | ||
45 | |||
37 | #endif /* SYSTEM_TARGET_H */ | 46 | #endif /* SYSTEM_TARGET_H */ |
diff --git a/firmware/target/arm/tcc77x/system-tcc77x.c b/firmware/target/arm/tcc77x/system-tcc77x.c index 90e53afb14..29227b52a3 100644 --- a/firmware/target/arm/tcc77x/system-tcc77x.c +++ b/firmware/target/arm/tcc77x/system-tcc77x.c | |||
@@ -187,6 +187,14 @@ static void clock_init(void) | |||
187 | "nop \n\t" | 187 | "nop \n\t" |
188 | "nop \n\t" | 188 | "nop \n\t" |
189 | ); | 189 | ); |
190 | |||
191 | /* Enable Z-Clock */ | ||
192 | PCLKCFG5 |= (1<<31) | (4<<28); /* Timer Z-Clock enable, XIN direct*/ | ||
193 | |||
194 | /* Set TC32 timer to be our USEC_TIMER (Xin divided by 12 = 1MHz) */ | ||
195 | TC32MCNT = 0; | ||
196 | TC32LDV = 0; | ||
197 | TC32EN = (1<<24) | 11; | ||
190 | } | 198 | } |
191 | 199 | ||
192 | static void cpu_init(void) | 200 | static void cpu_init(void) |