From 03ea24929779fd29ac95cb0bfd8945d269f3733d Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Sat, 16 May 2009 23:04:54 +0000 Subject: Try at implementing interrupt endpoints in the Ingenic Jz4740 USB driver git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20973 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/mips/ingenic_jz47xx/usb-jz4740.c | 25 ++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/firmware/target/mips/ingenic_jz47xx/usb-jz4740.c b/firmware/target/mips/ingenic_jz47xx/usb-jz4740.c index be245ede8c..31b7098945 100644 --- a/firmware/target/mips/ingenic_jz47xx/usb-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/usb-jz4740.c @@ -854,17 +854,22 @@ void usb_drv_release_endpoint(int ep) int usb_drv_request_endpoint(int type, int dir) { - logf("usb_drv_request_endpoint(%s)", (dir == USB_DIR_IN) ? "IN" : "OUT"); + logf("usb_drv_request_endpoint(%d, %s)", type, (dir == USB_DIR_IN) ? "IN" : "OUT"); - if (type != USB_ENDPOINT_XFER_BULK) - return -1; + dir &= USB_ENDPOINT_DIR_MASK; + type &= USB_ENDPOINT_XFERTYPE_MASK; /* There are only 3+2 endpoints, so hardcode this ... */ - /* Currently only BULK endpoints ... */ - if(dir == USB_DIR_OUT) - return (1 | USB_DIR_OUT); - else if(dir == USB_DIR_IN) - return (1 | USB_DIR_IN); - else - return -1; + switch(type) + { + case USB_ENDPOINT_XFER_BULK: + return (1 | dir); + + case USB_ENDPOINT_XFER_INT: + if(dir == USB_DIR_IN) + return (2 | USB_DIR_IN); + + default: + return -1; + } } -- cgit v1.2.3