From 8ddb592c84b39a306dd5c9a542a24f9bad61481b Mon Sep 17 00:00:00 2001 From: rob Date: Fri, 20 Mar 2009 23:14:05 +0000 Subject: [PATCH] Implement udelay() for D2 and remove the old hacks from USB & FM drivers. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20417 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/tuner/lv24020lp.c | 7 +++---- firmware/target/arm/tcc780x/system-target.h | 7 +++++++ firmware/target/arm/tcc780x/system-tcc780x.c | 3 +++ firmware/target/arm/usb-tcc.c | 8 -------- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/firmware/drivers/tuner/lv24020lp.c b/firmware/drivers/tuner/lv24020lp.c index 9d6425b96..769be8ac7 100644 --- a/firmware/drivers/tuner/lv24020lp.c +++ b/firmware/drivers/tuner/lv24020lp.c @@ -75,12 +75,11 @@ static int fd_log = -1; #define FM_CLOCK_PIN 5 #define FM_DATA_PIN 6 #define FM_NRW_PIN 7 -//#define udelay(x) /* Remove hack when D2 has udelay */ - +/* Remove hack when i7 has udelay */ static void udelay(int usecs) { while (usecs--) - asm("nop;nop;"); + asm("nop;nop;"); } #elif defined(COWON_D2) @@ -90,7 +89,7 @@ static void udelay(int usecs) #define FM_NRW_PIN 31 #define FM_CLOCK_PIN 29 #define FM_DATA_PIN 30 -#define udelay(x) /* Remove hack when D2 has udelay */ + #else #error GPIOs undefined for this target #endif diff --git a/firmware/target/arm/tcc780x/system-target.h b/firmware/target/arm/tcc780x/system-target.h index aa3cc7aa4..0802bb92e 100644 --- a/firmware/target/arm/tcc780x/system-target.h +++ b/firmware/target/arm/tcc780x/system-target.h @@ -34,4 +34,11 @@ #define inw(a) (*(volatile unsigned short *) (a)) #define outw(a,b) (*(volatile unsigned short *) (b) = (a)) +/* TC32 is configured to 1MHz in clock_init() */ +static inline void udelay(unsigned usecs) +{ + unsigned stop = TC32MCNT + usecs; + while (TIME_BEFORE(TC32MCNT, stop)); +} + #endif /* SYSTEM_TARGET_H */ diff --git a/firmware/target/arm/tcc780x/system-tcc780x.c b/firmware/target/arm/tcc780x/system-tcc780x.c index bf3c64cd7..77ae3a4cd 100644 --- a/firmware/target/arm/tcc780x/system-tcc780x.c +++ b/firmware/target/arm/tcc780x/system-tcc780x.c @@ -231,6 +231,9 @@ static void clock_init(void) /* configure PCK_TCT to 2Mhz (clock source 4 (Xin) divided by 6) */ PCLK_TCT = PCK_EN | (CKSEL_XIN<<24) | 5; + + /* set TC32 timer to XIN divided by 12 (1MHz) */ + TC32EN = (1<<24) | 11; } #endif diff --git a/firmware/target/arm/usb-tcc.c b/firmware/target/arm/usb-tcc.c index 6f15e68af..611e4be19 100644 --- a/firmware/target/arm/usb-tcc.c +++ b/firmware/target/arm/usb-tcc.c @@ -133,14 +133,6 @@ void usb_drv_release_endpoint(int ep) restore_irq(flags); } -static void udelay(unsigned long msecs) -{ - /* TODO: implement me other way */ - msecs*=126; - while (msecs--) - asm("nop;"); -} - static inline void pullup_on(void) { TCC7xx_USB_PHY_CFG = 0x000c; -- 2.11.4.GIT