usb.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*---------------------------------------------------------------------------------------------
  2. * USB Gecko Development Kit - http://www.usbgecko.com
  3. * --------------------------------------------------------------------------------------------
  4. *
  5. *
  6. * usb.h - functions for the USB Gecko adapter (www.usbgecko.com).
  7. *
  8. * Copyright (c) 2008 - Nuke - <wiinuke@gmail.com>
  9. *
  10. *---------------------------------------------------------------------------------------------*/
  11. #ifndef __USB_H__
  12. #define __USB_H__
  13. #include "../config.h"
  14. #ifdef DEBUG_STUB
  15. #define WIIMODE
  16. // Wii Mode
  17. #ifdef WIIMODE
  18. #define exi_chan0sr *(volatile unsigned int*) 0xCD006800 // Channel 0 Status Register
  19. #define exi_chan1sr *(volatile unsigned int*) 0xCD006814 // Channel 1 Status Register
  20. #define exi_chan2sr *(volatile unsigned int*) 0xCD006828 // Channel 2 Status Register
  21. #define exi_chan0cr *(volatile unsigned int*) 0xCD00680c // Channel 0 Control Register
  22. #define exi_chan1cr *(volatile unsigned int*) 0xCD006820 // Channel 1 Control Register
  23. #define exi_chan2cr *(volatile unsigned int*) 0xCD006834 // Channel 2 Control Register
  24. #define exi_chan0data *(volatile unsigned int*) 0xCD006810 // Channel 0 Immediate Data
  25. #define exi_chan1data *(volatile unsigned int*) 0xCD006824 // Channel 1 Immediate Data
  26. #define exi_chan2data *(volatile unsigned int*) 0xCD006838 // Channel 2 Immediate Data
  27. #define exi_chan0dmasta *(volatile unsigned int*) 0xCD006804 // Channel 0 DMA Start address
  28. #define exi_chan1dmasta *(volatile unsigned int*) 0xCD006818 // Channel 1 DMA Start address
  29. #define exi_chan2dmasta *(volatile unsigned int*) 0xCD00682c // Channel 2 DMA Start address
  30. #define exi_chan0dmalen *(volatile unsigned int*) 0xCD006808 // Channel 0 DMA Length
  31. #define exi_chan1dmalen *(volatile unsigned int*) 0xCD00681c // Channel 1 DMA Length
  32. #define exi_chan2dmalen *(volatile unsigned int*) 0xCD006830 // Channel 2 DMA Length
  33. #else
  34. // GC Mode
  35. #define exi_chan0sr *(volatile unsigned int*) 0xCC006800 // Channel 0 Status Register
  36. #define exi_chan1sr *(volatile unsigned int*) 0xCC006814 // Channel 1 Status Register
  37. #define exi_chan2sr *(volatile unsigned int*) 0xCC006828 // Channel 2 Status Register
  38. #define exi_chan0cr *(volatile unsigned int*) 0xCC00680c // Channel 0 Control Register
  39. #define exi_chan1cr *(volatile unsigned int*) 0xCC006820 // Channel 1 Control Register
  40. #define exi_chan2cr *(volatile unsigned int*) 0xCC006834 // Channel 2 Control Register
  41. #define exi_chan0data *(volatile unsigned int*) 0xCC006810 // Channel 0 Immediate Data
  42. #define exi_chan1data *(volatile unsigned int*) 0xCC006824 // Channel 1 Immediate Data
  43. #define exi_chan2data *(volatile unsigned int*) 0xCC006838 // Channel 2 Immediate Data
  44. #define exi_chan0dmasta *(volatile unsigned int*) 0xCC006804 // Channel 0 DMA Start address
  45. #define exi_chan1dmasta *(volatile unsigned int*) 0xCC006818 // Channel 1 DMA Start address
  46. #define exi_chan2dmasta *(volatile unsigned int*) 0xCC00682c // Channel 2 DMA Start address
  47. #define exi_chan0dmalen *(volatile unsigned int*) 0xCC006808 // Channel 0 DMA Length
  48. #define exi_chan1dmalen *(volatile unsigned int*) 0xCC00681c // Channel 1 DMA Length
  49. #define exi_chan2dmalen *(volatile unsigned int*) 0xCC006830 // Channel 2 DMA Length
  50. #endif
  51. // Function prototypes
  52. void usb_flush();
  53. int usb_checkgecko();
  54. void usb_sendbuffer (const void *buffer, int size);
  55. void usb_receivebuffer (void *buffer, int size);
  56. void usb_sendbuffersafe (const void *buffer, int size);
  57. void usb_receivebuffersafe (void *buffer, int size);
  58. #endif
  59. #endif // __USB_H__