From a3ed6e9c7a90cd5dcffed397c894e480672d667c Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bernardy Date: Sat, 19 Feb 2005 21:34:03 +0000 Subject: Gmini * advances in the handling of the smsc chip * moved stuff to where it belongs git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6023 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata.c | 14 ++++++++++++++ firmware/kernel.c | 7 ------- firmware/system.c | 2 +- firmware/usb.c | 12 ++++++++++++ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 339073969c..cfdae2c090 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -1070,6 +1070,15 @@ int ata_hard_reset(void) GPIO_OUT |= 0x00080000; sleep(1); /* > 25us */ +#elif CONFIG_CPU == TCC730 + P1 |= 0x04; + P10CON &= ~0x56; + sleep(1); /* > ???ms */ + + P10CON |= 0x56; + P10 &= ~0x56; + P1 &= ~0x04; + sleep(1); /* > ???ms */ #endif /* state HRR2 */ @@ -1196,6 +1205,11 @@ void ata_enable(bool on) GPIO_ENABLE |= 0x00040000; GPIO_FUNCTION |= 0x00040000; +#elif CONFIG_CPU == TCC730 + if(on) + P1 |= 0x08; + else + P1 &= ~0x08; #endif } diff --git a/firmware/kernel.c b/firmware/kernel.c index ca0dcf5458..1306b4b524 100644 --- a/firmware/kernel.c +++ b/firmware/kernel.c @@ -257,13 +257,6 @@ void TIMER0(void) void TIMER0(void) { int i; - - /* Mess with smsc chip. No idea what for. - */ - if (smsc_version() < 4) { - P6 |= 0x08; - P10 |= 0x20; - } /* Keep alive (?) * If this is not done, power goes down when DC is unplugged. diff --git a/firmware/system.c b/firmware/system.c index 3ead7c6be3..9d3e2a0dbd 100644 --- a/firmware/system.c +++ b/firmware/system.c @@ -142,7 +142,7 @@ static void extra_init(void) { P10 &= 0x20; smsc_delay(); if (smsc_version() < 4) { - P6 |= 0x80; + P6 |= 0x08; P10 |= 0x20; } diff --git a/firmware/usb.c b/firmware/usb.c index 1400805c33..6095bcd65e 100644 --- a/firmware/usb.c +++ b/firmware/usb.c @@ -349,6 +349,18 @@ static void usb_tick(void) { bool current_status; +#ifdef USB_GMINISTYLE + /* Keep usb chip in usb state (?) */ + if (P5 & 0x10) { + if ((P10 & 0x20) == 0 || (P6 & 0x08) == 0) { + if (smsc_version() < 4) { + P6 |= 0x08; + P10 |= 0x20; + } + } + } +#endif + if(usb_monitor_enabled) { current_status = usb_detect(); -- cgit v1.2.3