X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=usb%2Fcore%2Fcore.c;h=889fba452ba63d9148c88a5c4f427ba13d0d85d2;hb=505298a9ae4bdce58a448aea253f7bf24b069406;hp=f279a891b53517f14c4d3703ba97bf04aa0b1626;hpb=f57c39027e4f153e0ce2f3ab847fb83da624e31d;p=ppcskel.git diff --git a/usb/core/core.c b/usb/core/core.c index f279a89..889fba4 100644 --- a/usb/core/core.c +++ b/usb/core/core.c @@ -31,8 +31,17 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* + ppcskel - a Free Software replacement for the Nintendo/BroadOn bootloader. + plugmii core + +Copyright (C) 2009 Bernhard Urban +Copyright (C) 2009 Sebastian Falbesoner + +# This code is licensed to you under the terms of the GNU GPL, version 2; +# see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt +*/ -//#include #include "core.h" #include "../host/host.h" #include "usb.h" @@ -98,7 +107,7 @@ struct usb_device *usb_add_device(u8 lowspeed, u32 reg) dev->bMaxPacketSize0 = lowspeed ? 8 : 64; dev->ohci = reg; - dev->epSize[0] = 64; + dev->epSize[0] = 8; dev->epSize[1] = 64; dev->epSize[2] = 64; @@ -115,37 +124,33 @@ struct usb_device *usb_add_device(u8 lowspeed, u32 reg) #define WTF #ifdef WTF printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lollllool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lololoololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lollllool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lololoololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lollllool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololol PADDING WTF :O lolololololo \n"); + printf("lolololool PADDING WTF :O lololoololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); printf("lolololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); + printf("lollllool PADDING WTF :O lolololololo \n"); printf("lolololool PADDING WTF :O lolololololo \n"); printf("lololololool PADDING WTF :O lolololololo \n"); printf("lollllool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); - printf("lololololool PADDING WTF :O lolololololo \n"); #endif u8 address = usb_next_address(); ret = usb_set_address(dev, address); @@ -160,56 +165,12 @@ struct usb_device *usb_add_device(u8 lowspeed, u32 reg) /* print device info */ lsusb(dev); - -#if 1 - /* select configuration */ - ret = usb_set_configuration(dev, 1); - printf("=============\nusb_set_configuration(ret: %d): %d\n", ret, dev->conf->bConfigurationValue); - printf("=============\nusb_get_configuration: %d (should be 1 here)\n", usb_get_configuration(dev)); -#endif - - - u8 buf[8]; -#if 1 - /* select interface */ - memset(buf, 0, 8); - printf("interfacenumber: %d\n", dev->conf->intf->bInterfaceNumber); - usb_control_msg(dev, 0x01, SET_INTERFACE, 0, 0, 0, buf, 0); - printf("=============\nusb_set_interface: %d\n", 0); - hexdump((void*)buf, 8); -#if 0 - memset(buf, 0, 8); - usb_control_msg(dev, 0x81, GET_INTERFACE, 0, 0, 4, buf, 0); - printf("=============\nusb_get_interface: %d\n", buf[0]); - hexdump((void*)buf, 8); -#endif -#endif - - /* I just don't know why on some devices - * {s,g}et_{configuration,interface} won't work. - * may the setter works and getter are poorly implemented? - * however, I try here some interrupt inputs, assuming - * the setters are fine*/ - - memset(buf, 0, 8); - s8 epnum = dev->conf->intf->endp->bEndpointAddress & 0xf; - printf("epnum: 0x%04X\n", epnum); - u8 muh = 10; - while(muh--) { - (void) usb_interrupt_read(dev, epnum, buf, 8, 0); - printf("============\nusb_interrupt_read:\n"); - hexdump((void*)buf, 8); - udelay(2000000); - } - -#if 0 /* add device to device list */ - element *tmp = (element *) malloc(sizeof(element)); + struct element *tmp = (struct element *) malloc(sizeof(struct element)); tmp->data = (void *) dev; list_add_tail(core.devices, tmp); usb_probe_driver(); -#endif return dev; } @@ -294,7 +255,7 @@ u8 usb_remove_device(struct usb_device * dev) /** * Register new driver at usb stack. */ -u8 usb_register_driver(struct usb_driver * dev) +u8 usb_register_driver(struct usb_driver *dev) { /* add driver to driver list */ struct element *tmp = (struct element *) malloc(sizeof(struct element)); @@ -302,7 +263,6 @@ u8 usb_register_driver(struct usb_driver * dev) tmp->next = NULL; list_add_tail(core.drivers, tmp); - /** * first check to find a suitable device * (root hub drivers need this call here) @@ -546,7 +506,7 @@ u16 usb_submit_irp(struct usb_irp *irp) td->togl = togl; togl = togl ? 0 : 1; - /**** send token ****/ + /**** send token ****/ hcdi_enqueue(td, irp->dev->ohci); restlength = restlength - irp->epsize; free(td);