summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2008-10-03 22:43:16 +0000
committerFrank Gevaerts <frank@gevaerts.be>2008-10-03 22:43:16 +0000
commit478fc5baed82e5573938041aed0f1a4f73f32128 (patch)
treeb7115cb1200101075bf93d93f61bd0be65ff9d42 /firmware/export
parent6219f4c862919367972e497c47324121fe48f3f6 (diff)
downloadrockbox-478fc5baed82e5573938041aed0f1a4f73f32128.zip
rockbox-478fc5baed82e5573938041aed0f1a4f73f32128.tar.gz
rockbox-478fc5baed82e5573938041aed0f1a4f73f32128.tar.bz2
rockbox-478fc5baed82e5573938041aed0f1a4f73f32128.tar.xz
reorganise the USB stack a bit to allow for easier integration of non-ARC controller drivers
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18703 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/usb.h2
-rw-r--r--firmware/export/usb_core.h8
-rw-r--r--firmware/export/usb_drv.h2
3 files changed, 10 insertions, 2 deletions
diff --git a/firmware/export/usb.h b/firmware/export/usb.h
index 9952a07..08ae279 100644
--- a/firmware/export/usb.h
+++ b/firmware/export/usb.h
@@ -85,7 +85,7 @@ enum {
struct usb_transfer_completion_event_data
{
unsigned char endpoint;
- bool in;
+ int dir;
int status;
int length;
void* data;
diff --git a/firmware/export/usb_core.h b/firmware/export/usb_core.h
index 6aada54..9d9e327 100644
--- a/firmware/export/usb_core.h
+++ b/firmware/export/usb_core.h
@@ -45,10 +45,12 @@
extern int usb_max_pkt_size;
+struct usb_class_driver;
+
void usb_core_init(void);
void usb_core_exit(void);
void usb_core_control_request(struct usb_ctrlrequest* req);
-void usb_core_transfer_complete(int endpoint, bool in, int status, int length);
+void usb_core_transfer_complete(int endpoint, int dir, int status, int length);
void usb_core_bus_reset(void);
bool usb_core_exclusive_connection(void);
void usb_core_enable_driver(int driver,bool enabled);
@@ -56,6 +58,10 @@ bool usb_core_driver_enabled (int driver);
void usb_core_handle_transfer_completion(
struct usb_transfer_completion_event_data* event);
int usb_core_ack_control(struct usb_ctrlrequest* req);
+
+int usb_core_request_endpoint(int dir, struct usb_class_driver *drv);
+void usb_core_release_endpoint(int dir);
+
#ifdef HAVE_HOTSWAP
void usb_core_hotswap_event(int volume,bool inserted);
#endif
diff --git a/firmware/export/usb_drv.h b/firmware/export/usb_drv.h
index 3db82ef..3bd8e1f 100644
--- a/firmware/export/usb_drv.h
+++ b/firmware/export/usb_drv.h
@@ -41,5 +41,7 @@ int usb_drv_port_speed(void);
void usb_drv_cancel_all_transfers(void);
void usb_drv_set_test_mode(int mode);
bool usb_drv_connected(void);
+int usb_drv_request_endpoint(int dir);
+void usb_drv_release_endpoint(int ep);
#endif