From 7a8fc3fd9db99fa16976baf7e78059ad766a3ce5 Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Fri, 16 May 2008 21:05:18 +0000 Subject: [PATCH] 1) Put USB in IRAM 2) Use defines from usb_drv.h git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17546 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/isp1583.c | 6 +---- firmware/export/isp1583.h | 24 +++++++------------ .../creative-zvm/usb-creativezvm.c | 2 +- .../arm/tms320dm320/creative-zvm/usb-target.h | 4 +++- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/firmware/drivers/isp1583.c b/firmware/drivers/isp1583.c index 7e78f87468..4ad6ad20f5 100644 --- a/firmware/drivers/isp1583.c +++ b/firmware/drivers/isp1583.c @@ -19,7 +19,6 @@ ****************************************************************************/ #include "config.h" -#include "usb-target.h" #include "usb_ch9.h" #include "usb_drv.h" #include "usb_core.h" @@ -30,9 +29,6 @@ #define DIR_RX 0 #define DIR_TX 1 - -#define DIR_OUT 0 -#define DIR_IN 1 struct usb_endpoint { @@ -626,7 +622,7 @@ static void bus_reset(void) } /* Method for handling interrupts, must be called from usb-.c */ -void usb_drv_int(void) +void IRAM_ATTR usb_drv_int(void) { unsigned long ints; ints = ISP1583_GEN_INT_READ & ISP1583_INIT_INTEN_READ; diff --git a/firmware/export/isp1583.h b/firmware/export/isp1583.h index 3ffbbed60e..5a5840acc6 100644 --- a/firmware/export/isp1583.h +++ b/firmware/export/isp1583.h @@ -19,6 +19,8 @@ #ifndef ISP1583_H #define ISP1583_H +#include "usb-target.h" + #ifndef ISP1583_H_OVERRIDE /* Initialization registers */ #define ISP1583_INIT_ADDRESS (*((volatile unsigned char*)(ISP1583_IOBASE+0x0))) @@ -166,20 +168,12 @@ #define STANDARD_INTEN ( INIT_INTEN_IEBRST | INIT_INTEN_IEHS_STA | INT_IESUSP | INT_IERESM | INIT_INTEN_IEVBUS | INIT_INTEN_IEP0SETUP | INIT_INTEN_IEP0RX | INIT_INTEN_IEP0TX ) #define STANDARD_INIT_MODE ( INIT_MODE_CLKAON | INIT_MODE_GLINTENA ) -bool usb_drv_powered(void); -void usb_drv_init(void); -int usb_drv_port_speed(void); -void usb_drv_exit(void); -void usb_drv_stall(int endpoint, bool stall, bool in); -bool usb_drv_stalled(int endpoint, bool in); -int usb_drv_recv(int ep, void* ptr, int length); -int usb_drv_send_nonblocking(int ep, void* ptr, int length); -int usb_drv_send(int endpoint, void* ptr, int length); -void usb_drv_reset_endpoint(int ep, bool send); -void usb_drv_wait(int ep, bool send); -void usb_drv_cancel_all_transfers(void); -void usb_drv_set_address(int address); -void usb_drv_set_test_mode(int mode); -void usb_drv_int(void); /* Method for handling interrupts, must be called from usb-.c */ +#ifdef USE_IRAM + #define IRAM_ATTR __attribute__ ((section(".icode"))) +#else + #define IRAM_ATTR +#endif + +#include "usb_drv.h" #endif diff --git a/firmware/target/arm/tms320dm320/creative-zvm/usb-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/usb-creativezvm.c index 6bbd08c135..a9995a5d74 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/usb-creativezvm.c +++ b/firmware/target/arm/tms320dm320/creative-zvm/usb-creativezvm.c @@ -54,7 +54,7 @@ void usb_enable(bool on) usb_core_exit(); } -void GIO7(void) +void IRAM_ATTR GIO7(void) { #ifdef DEBUG //printf("GIO7 interrupt... [%d]", current_tick); diff --git a/firmware/target/arm/tms320dm320/creative-zvm/usb-target.h b/firmware/target/arm/tms320dm320/creative-zvm/usb-target.h index 14ddc6eb0a..0741474726 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/usb-target.h +++ b/firmware/target/arm/tms320dm320/creative-zvm/usb-target.h @@ -69,7 +69,9 @@ : : : "r12") //#define ZVM_SPECIFIC -#include "kernel.h" +#define USE_IRAM + +#include int usb_detect(void); void usb_init_device(void); bool usb_drv_connected(void);