host_811.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:5k
源码类别:

DVD

开发平台:

C/C++

  1. ////////////////////////////////////////////////////////////////////////////////
  2. // SUNPLUS---WORLDPLUS
  3. ////////////////////////////////////////////////////////////////////////////////
  4. // File: host_811.h
  5. // Purpose:     SPHE8200 firmware to master SL811 Embedded Host. 
  6. //              Contains SL811-related control firmware. 
  7. //              
  8. // H/W Target:  SL811HST + SPHE8200 DVD SYSTEM
  9. // IMPORTANT:  
  10. //              the hardware could sustain USB host and USB slave. 
  11. // Creator:     Liweihua and Zhaoyanhua 2003-9-20
  12. // Updated by Liweihua 2003-12-19
  13. ////////////////////////////////////////////////////////////////////////////////
  14. #ifndef   HOST_811_H
  15. #define   HOST_811_H
  16. //-----------------------------------------------------------------------------
  17. // Constant Defines
  18. //-----------------------------------------------------------------------------
  19. #define TRUE  1
  20. #define FALSE 0
  21. #define USB_ADDR      0x02
  22. #define ISO_BIT     0x10
  23. /*-------------------------------------------------------------------------
  24.  * SL811H Register Control memory map
  25.  * --Note: 
  26.  *      --SL11H only has one control register set from 0x00-0x04
  27.  *      --SL811H has two control register set from 0x00-0x04 and 0x08-0x0c
  28.  *------------------------------------------------------------------------*/
  29. #define EP0_Buf     0x10 // define start of EP0 64-byte buffer
  30. #define EP1_Buf     0x50 // define start of EP1 64-byte buffer
  31. #define EP0Control       0x00
  32. #define EP0Address     0x01
  33. #define EP0XferLen      0x02
  34. #define EP0Status        0x03
  35. #define EP0PIDEP         0x03
  36. #define EP0Counter      0x04
  37. #define EP0USBAddr      0x04
  38. #define EP1Control       0x08
  39. #define EP1Address      0x09
  40. #define EP1XferLen       0x0a
  41. #define EP1Status         0x0b
  42. #define EP1PIDEP         0x0b
  43. #define EP1Counter       0x0c
  44. #define EP1USBAddr      0x0c
  45. #define CtrlReg         0x05
  46. #define IntEna          0x06
  47.                                // 0x07 is reserved
  48. #define IntStatus       0x0d
  49. #define cDATASet      0x0e
  50. #define cSOFcnt         0x0f   // Master=1 Slave=0, D+/D-Pol Swap=1 0=not [0-5] SOF Count 
  51.                                // 0xAE = 1100 1110
  52.                                // 0xEE = 1110 1110
  53. //Interrupt Status Mask
  54. #define USB_A_DONE 0x01
  55. #define USB_B_DONE 0x02
  56. #define BABBLE_DETECT 0x04
  57. #define INT_RESERVE 0x08
  58. #define SOF_TIMER 0x10
  59. #define INSERT_REMOVE 0x20
  60. #define USB_RESET 0x40
  61. #define USB_DPLUS 0x80
  62. #define INT_CLEAR 0xFF//clear the bit to set "1"
  63.     
  64. //EP0 Status Mask
  65. #define EP0_ACK 0x01 // EPxStatus bits mask during a read
  66. #define EP0_ERROR 0x02
  67. #define EP0_TIMEOUT 0x04
  68. #define EP0_SEQUENCE 0x08
  69. #define EP0_SETUP 0x10
  70. #define EP0_OVERFLOW 0x20
  71. #define EP0_NAK 0x40
  72. #define EP0_STALL 0x80
  73. // drive error
  74. #define USB_STALL_ERR    -501
  75. #define USB_NAK_ERR       -502
  76. #define USB_CONTINAK_ERR  -503
  77. /*-------------------------------------------------------------------------
  78.  * SL811H definition
  79.  *-------------------------------------------------------------------------
  80.  */
  81.                            // USB-A, USB-B Host Control Register [00H, 08H]
  82.                            // Pre  Reserved
  83.                            //  DatT Dir [1=Trans, 0=Recv]
  84.                            //   SOF Enable
  85.                            //    ISO  Arm 
  86. #define DATA0_WR    0x07   // 0000 0111 (      Data0 +       OUT + Enable + Arm)
  87. #define sDATA0_WR   0x27   // 0010 0111 (      Data0 + SOF + OUT + Enable + Arm)
  88. #define pDATA0_WR   0x87   // 1000 0111 (Pre + Data0 +       OUT + Enable + Arm)
  89. #define psDATA0_WR 0xA7   // 1010 0111 (Pre + Data0 + SOF + OUT + Enable + Arm)
  90. #define DATA0_RD      0x03   // 0000 0011 (      Data0 +       IN +  Enable + Arm)
  91. #define sDATA0_RD    0x23   // 0010 0011 (      Data0 + SOF + IN +  Enable + Arm)
  92. #define pDATA0_RD    0x83   // 1000 0011 (Pre + Data0 +       IN +  Enable + Arm)
  93. #define psDATA0_RD  0xA3   // 1010 0011 (Pre + Data0 + SOF + IN +  Enable + Arm)
  94. #define PID_SETUP   0xD0 
  95. #define PID_IN      0x90
  96. #define PID_OUT     0x10
  97. /*-------------------------------------------------------------------------
  98.  * Function Protocol
  99.  *-------------------------------------------------------------------------
  100.  */
  101. void sl811h_init(void);
  102. int   slave_detect(void);
  103. int   speed_detect(void);
  104. inline BYTE SL811Read(register BYTE a);
  105. inline void SL811Write(register BYTE a,register  BYTE d);
  106. inline BYTE SL811Read_DATA(void);
  107. inline void SL811Write_DATA(register  BYTE d);
  108. inline void SL811BufRead(register UINT8 addr, register UINT8 *s, register UINT8 c);
  109. inline void SL811BufWrite(register UINT8 addr, register UINT8 *s, register UINT8 c);
  110. void CardReset();
  111. INT32 usbXfer(UINT8 usbaddr, UINT8 endpoint, UINT8 pid, UINT8 iso, UINT8 Payload, UINT16 wLen, UINT8 *buffer);
  112. int    Slave_Detach(void);
  113.  
  114. #endif //end HOST_811_H