pegasus.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:9k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Copyright (c) 1999-2002 Petko Manolov - Petkan (petkan@users.sourceforge.net)
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify
  5.  * it under the terms of the GNU General Public License version 2 as published
  6.  * by the Free Software Foundation.
  7.  *
  8.  */
  9. #ifndef PEGASUS_DEV
  10. #define PEGASUS_II 0x80000000
  11. #define HAS_HOME_PNA 0x40000000
  12. #define PEGASUS_MTU 1500
  13. #define PEGASUS_MAX_MTU 1536
  14. #define EPROM_WRITE 0x01
  15. #define EPROM_READ 0x02
  16. #define EPROM_DONE 0x04
  17. #define EPROM_WR_ENABLE 0x10
  18. #define EPROM_LOAD 0x20
  19. #define PHY_DONE 0x80
  20. #define PHY_READ 0x40
  21. #define PHY_WRITE 0x20
  22. #define DEFAULT_GPIO_RESET 0x24
  23. #define LINKSYS_GPIO_RESET 0x24
  24. #define DEFAULT_GPIO_SET 0x26
  25. #define PEGASUS_PRESENT 0x00000001
  26. #define PEGASUS_RUNNING 0x00000002
  27. #define PEGASUS_TX_BUSY 0x00000004
  28. #define PEGASUS_RX_BUSY 0x00000008
  29. #define CTRL_URB_RUNNING 0x00000010
  30. #define CTRL_URB_SLEEP 0x00000020
  31. #define PEGASUS_UNPLUG 0x00000040
  32. #define ETH_REGS_CHANGE 0x40000000
  33. #define ETH_REGS_CHANGED 0x80000000
  34. #define RX_MULTICAST 2
  35. #define RX_PROMISCUOUS 4
  36. #define REG_TIMEOUT (HZ)
  37. #define PEGASUS_TX_TIMEOUT (HZ*10)
  38. #define TX_UNDERRUN 0x80
  39. #define EXCESSIVE_COL 0x40
  40. #define LATE_COL 0x20
  41. #define NO_CARRIER 0x10
  42. #define LOSS_CARRIER 0x08
  43. #define JABBER_TIMEOUT 0x04
  44. #define PEGASUS_REQT_READ 0xc0
  45. #define PEGASUS_REQT_WRITE 0x40
  46. #define PEGASUS_REQ_GET_REGS 0xf0
  47. #define PEGASUS_REQ_SET_REGS 0xf1
  48. #define PEGASUS_REQ_SET_REG PEGASUS_REQ_SET_REGS
  49. enum pegasus_registers {
  50. EthCtrl0 = 0,
  51. EthCtrl1 = 1,
  52. EthCtrl2 = 2,
  53. EthID = 0x10,
  54. Reg1d = 0x1d,
  55. EpromOffset = 0x20,
  56. EpromData = 0x21, /* 0x21 low, 0x22 high byte */
  57. EpromCtrl = 0x23,
  58. PhyAddr = 0x25,
  59. PhyData = 0x26,  /* 0x26 low, 0x27 high byte */
  60. PhyCtrl = 0x28,
  61. UsbStst = 0x2a,
  62. EthTxStat0 = 0x2b,
  63. EthTxStat1 = 0x2c,
  64. EthRxStat = 0x2d,
  65. Reg7b = 0x7b,
  66. Gpio0 = 0x7e,
  67. Gpio1 = 0x7f,
  68. Reg81 = 0x81,
  69. };
  70. typedef struct pegasus {
  71. struct usb_device *usb;
  72. struct net_device *net;
  73. struct net_device_stats stats;
  74. unsigned flags;
  75. unsigned features;
  76. int dev_index;
  77. int intr_interval;
  78. struct urb *ctrl_urb, *rx_urb, *tx_urb, *intr_urb;
  79. struct usb_ctrlrequest dr;
  80. wait_queue_head_t ctrl_wait;
  81. struct semaphore sem;
  82. unsigned char rx_buff[PEGASUS_MAX_MTU];
  83. unsigned char tx_buff[PEGASUS_MAX_MTU];
  84. unsigned char intr_buff[8];
  85. __u8 eth_regs[4];
  86. __u8 phy;
  87. __u8 gpio_res;
  88. } pegasus_t;
  89. struct usb_eth_dev {
  90. char *name;
  91. __u16 vendor;
  92. __u16 device;
  93. __u32 private; /* LSB is gpio reset value */
  94. };
  95. #define VENDOR_3COM 0x0506
  96. #define VENDOR_ABOCOM 0x07b8
  97. #define VENDOR_ACCTON 0x083a
  98. #define VENDOR_ADMTEK 0x07a6
  99. #define VENDOR_AEILAB 0x3334
  100. #define VENDOR_ALLIEDTEL 0x07c9
  101. #define VENDOR_BELKIN 0x050d
  102. #define VENDOR_BILLIONTON 0x08dd
  103. #define VENDOR_COMPAQ 0x049f
  104. #define VENDOR_COREGA 0x07aa
  105. #define VENDOR_DLINK 0x2001
  106. #define VENDOR_ELCON 0x0db7
  107. #define VENDOR_ELSA 0x05cc
  108. #define VENDOR_HAWKING 0x0e66
  109. #define VENDOR_IODATA 0x04bb
  110. #define VENDOR_KINGSTON 0x0951
  111. #define VENDOR_LANEED 0x056e
  112. #define VENDOR_LINKSYS 0x066b
  113. #define VENDOR_MELCO 0x0411
  114. #define VENDOR_SMARTBRIDGES 0x08d1
  115. #define VENDOR_SMC 0x0707
  116. #define VENDOR_SOHOWARE 0x15e8
  117. #define VENDOR_SIEMENS 0x067c
  118. #else /* PEGASUS_DEV */
  119. PEGASUS_DEV( "3Com USB Ethernet 3C460B", VENDOR_3COM, 0x4601,
  120. DEFAULT_GPIO_RESET | PEGASUS_II )
  121. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x110c,
  122. DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA )
  123. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4104,
  124. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  125. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4004,
  126. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  127. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4007,
  128. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  129. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4102,
  130. DEFAULT_GPIO_RESET | PEGASUS_II )
  131. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4002,
  132. DEFAULT_GPIO_RESET )
  133. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400b,
  134. DEFAULT_GPIO_RESET | PEGASUS_II )
  135. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400c,
  136. DEFAULT_GPIO_RESET | PEGASUS_II )
  137. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0xabc1,
  138. DEFAULT_GPIO_RESET )
  139. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x200c,
  140. DEFAULT_GPIO_RESET | PEGASUS_II ) 
  141. PEGASUS_DEV( "Accton USB 10/100 Ethernet Adapter", VENDOR_ACCTON, 0x1046,
  142. DEFAULT_GPIO_RESET )
  143. PEGASUS_DEV( "SpeedStream USB 10/100 Ethernet", VENDOR_ACCTON, 0x5046,
  144. DEFAULT_GPIO_RESET )
  145. PEGASUS_DEV( "ADMtek ADM8511 "Pegasus II" USB Ethernet",
  146. VENDOR_ADMTEK, 0x8511,
  147. DEFAULT_GPIO_RESET | PEGASUS_II )
  148. PEGASUS_DEV( "ADMtek AN986 "Pegasus" USB Ethernet (eval. board)",
  149. VENDOR_ADMTEK, 0x0986,
  150. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  151. PEGASUS_DEV( "ADMtek AN986A USB MAC", VENDOR_ADMTEK, 0x1986,
  152. DEFAULT_GPIO_RESET | PEGASUS_II )
  153. PEGASUS_DEV( "AEI USB Fast Ethernet Adapter", VENDOR_AEILAB, 0x1701,
  154. DEFAULT_GPIO_RESET | PEGASUS_II )
  155. PEGASUS_DEV( "Allied Telesyn Int. AT-USB100", VENDOR_ALLIEDTEL, 0xb100,
  156. DEFAULT_GPIO_RESET | PEGASUS_II )
  157. PEGASUS_DEV( "Belkin F5D5050 USB Ethernet", VENDOR_BELKIN, 0x0121,
  158. DEFAULT_GPIO_RESET | PEGASUS_II )
  159. PEGASUS_DEV( "Billionton USB-100", VENDOR_BILLIONTON, 0x0986,
  160. DEFAULT_GPIO_RESET )
  161. PEGASUS_DEV( "Billionton USBLP-100", VENDOR_BILLIONTON, 0x0987,
  162. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  163. PEGASUS_DEV( "iPAQ Networking 10/100 USB", VENDOR_COMPAQ, 0x8511,
  164. DEFAULT_GPIO_RESET | PEGASUS_II )
  165. PEGASUS_DEV( "Billionton USBEL-100", VENDOR_BILLIONTON, 0x0988,
  166. DEFAULT_GPIO_RESET )
  167. PEGASUS_DEV( "Billionton USBE-100", VENDOR_BILLIONTON, 0x8511,
  168. DEFAULT_GPIO_RESET | PEGASUS_II )
  169. PEGASUS_DEV( "Corega FEter USB-TX", VENDOR_COREGA, 0x0004,
  170. DEFAULT_GPIO_RESET )
  171. PEGASUS_DEV( "Corega FEter", VENDOR_COREGA, 0x000d,
  172. DEFAULT_GPIO_RESET | PEGASUS_II )
  173. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4001,
  174. LINKSYS_GPIO_RESET )
  175. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4002,
  176. LINKSYS_GPIO_RESET )
  177. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4102,
  178. LINKSYS_GPIO_RESET | PEGASUS_II )
  179. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x400b,
  180. LINKSYS_GPIO_RESET | PEGASUS_II )
  181. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x200c,
  182. LINKSYS_GPIO_RESET | PEGASUS_II )
  183. PEGASUS_DEV( "D-Link DSB-650TX(PNA)", VENDOR_DLINK, 0x4003,
  184. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  185. PEGASUS_DEV( "D-Link DSB-650", VENDOR_DLINK, 0xabc1,
  186. DEFAULT_GPIO_RESET )
  187. PEGASUS_DEV( "GOLDPFEIL USB Adapter", VENDOR_ELCON, 0x0002,
  188. DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA )
  189. PEGASUS_DEV( "Elsa Micolink USB2Ethernet", VENDOR_ELSA, 0x3000,
  190. DEFAULT_GPIO_RESET )
  191. PEGASUS_DEV( "Hawking UF100 10/100 Ethernet", VENDOR_HAWKING, 0x400c,
  192. DEFAULT_GPIO_RESET | PEGASUS_II )
  193. PEGASUS_DEV( "IO DATA USB ET/TX", VENDOR_IODATA, 0x0904,
  194. DEFAULT_GPIO_RESET )
  195. PEGASUS_DEV( "IO DATA USB ET/TX-S", VENDOR_IODATA, 0x0913,
  196. DEFAULT_GPIO_RESET | PEGASUS_II )
  197. PEGASUS_DEV( "Kingston KNU101TX Ethernet", VENDOR_KINGSTON, 0x000a,
  198. DEFAULT_GPIO_RESET)
  199. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x4002,
  200. DEFAULT_GPIO_RESET )
  201. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x400b,
  202. DEFAULT_GPIO_RESET | PEGASUS_II )
  203. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/T", VENDOR_LANEED, 0xabc1,
  204. DEFAULT_GPIO_RESET )
  205. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x200c,
  206. DEFAULT_GPIO_RESET | PEGASUS_II )
  207. PEGASUS_DEV( "Linksys USB10TX", VENDOR_LINKSYS, 0x2202,
  208. LINKSYS_GPIO_RESET )
  209. PEGASUS_DEV( "Linksys USB100TX", VENDOR_LINKSYS, 0x2203,
  210. LINKSYS_GPIO_RESET )
  211. PEGASUS_DEV( "Linksys USB100TX", VENDOR_LINKSYS, 0x2204,
  212. LINKSYS_GPIO_RESET | HAS_HOME_PNA )
  213. PEGASUS_DEV( "Linksys USB Ethernet Adapter", VENDOR_LINKSYS, 0x2206,
  214. LINKSYS_GPIO_RESET )
  215. PEGASUS_DEV( "Linksys USB USB10TX", VENDOR_LINKSYS, 0x400b,
  216. LINKSYS_GPIO_RESET | PEGASUS_II )
  217. PEGASUS_DEV( "Linksys USB10TX", VENDOR_LINKSYS, 0x200c,
  218. LINKSYS_GPIO_RESET | PEGASUS_II )
  219. PEGASUS_DEV( "MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0001,
  220. DEFAULT_GPIO_RESET )
  221. PEGASUS_DEV( "MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0005,
  222. DEFAULT_GPIO_RESET )
  223. PEGASUS_DEV( "MELCO/BUFFALO LUA2-TX", VENDOR_MELCO, 0x0009,
  224. DEFAULT_GPIO_RESET | PEGASUS_II )
  225. PEGASUS_DEV( "smartNIC 2 PnP Adapter", VENDOR_SMARTBRIDGES, 0x0003,
  226. DEFAULT_GPIO_RESET | PEGASUS_II )
  227. PEGASUS_DEV( "SMC 202 USB Ethernet", VENDOR_SMC, 0x0200,
  228. DEFAULT_GPIO_RESET )
  229. PEGASUS_DEV( "SMC 2206 USB Ethernet", VENDOR_SMC, 0x0201,
  230. DEFAULT_GPIO_RESET | PEGASUS_II )
  231. PEGASUS_DEV( "SOHOware NUB100 Ethernet", VENDOR_SOHOWARE, 0x9100,
  232. DEFAULT_GPIO_RESET )
  233. PEGASUS_DEV( "SOHOware NUB110 Ethernet", VENDOR_SOHOWARE, 0x9110,
  234. DEFAULT_GPIO_RESET | PEGASUS_II )
  235. PEGASUS_DEV( "SpeedStream USB 10/100 Ethernet", VENDOR_SIEMENS, 0x1001,
  236. DEFAULT_GPIO_RESET | PEGASUS_II )
  237. #endif /* PEGASUS_DEV */