pegasus.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:8k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  Copyright (c) 1999,2000 Petko Manolov - Petkan (pmanolov@lnxw.com)
  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 as published by
  6.  * the Free Software Foundation; either version 2 of the License, or
  7.  * (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17.  */
  18. #ifndef PEGASUS_DEV
  19. #define PEGASUS_II 0x80000000
  20. #define HAS_HOME_PNA 0x40000000
  21. #define PEGASUS_MTU 1500
  22. #define PEGASUS_MAX_MTU 1536
  23. #define EPROM_WRITE 0x01
  24. #define EPROM_READ 0x02
  25. #define EPROM_DONE 0x04
  26. #define EPROM_WR_ENABLE 0x10
  27. #define EPROM_LOAD 0x20
  28. #define MII_BMCR 0x00
  29. #define MII_BMSR 0x01
  30. #define BMSR_MEDIA 0x7808
  31. #define MII_ANLPA 0x05
  32. #define ANLPA_100TX_FD 0x0100
  33. #define ANLPA_100TX_HD 0x0080
  34. #define ANLPA_10T_FD 0x0040
  35. #define ANLPA_10T_HD 0x0020
  36. #define PHY_DONE 0x80
  37. #define PHY_READ 0x40
  38. #define PHY_WRITE 0x20
  39. #define DEFAULT_GPIO_RESET 0x24
  40. #define LINKSYS_GPIO_RESET 0x24
  41. #define DEFAULT_GPIO_SET 0x26
  42. #define PEGASUS_PRESENT 0x00000001
  43. #define PEGASUS_RUNNING 0x00000002
  44. #define PEGASUS_TX_BUSY 0x00000004
  45. #define PEGASUS_RX_BUSY 0x00000008
  46. #define CTRL_URB_RUNNING 0x00000010
  47. #define CTRL_URB_SLEEP 0x00000020
  48. #define PEGASUS_UNPLUG 0x00000040
  49. #define ETH_REGS_CHANGE 0x40000000
  50. #define ETH_REGS_CHANGED 0x80000000
  51. #define RX_MULTICAST 2
  52. #define RX_PROMISCUOUS 4
  53. #define REG_TIMEOUT (HZ)
  54. #define PEGASUS_TX_TIMEOUT (HZ*10)
  55. #define TX_UNDERRUN 0x80
  56. #define EXCESSIVE_COL 0x40
  57. #define LATE_COL 0x20
  58. #define NO_CARRIER 0x10
  59. #define LOSS_CARRIER 0x08
  60. #define JABBER_TIMEOUT 0x04
  61. #define PEGASUS_REQT_READ 0xc0
  62. #define PEGASUS_REQT_WRITE 0x40
  63. #define PEGASUS_REQ_GET_REGS 0xf0
  64. #define PEGASUS_REQ_SET_REGS 0xf1
  65. #define PEGASUS_REQ_SET_REG PEGASUS_REQ_SET_REGS
  66. #define ALIGN(x) x __attribute__((aligned(L1_CACHE_BYTES)))
  67. enum pegasus_registers {
  68. EthCtrl0 = 0,
  69. EthCtrl1 = 1,
  70. EthCtrl2 = 2,
  71. EthID = 0x10,
  72. Reg1d = 0x1d,
  73. EpromOffset = 0x20,
  74. EpromData = 0x21, /* 0x21 low, 0x22 high byte */
  75. EpromCtrl = 0x23,
  76. PhyAddr = 0x25,
  77. PhyData = 0x26,  /* 0x26 low, 0x27 high byte */
  78. PhyCtrl = 0x28,
  79. UsbStst = 0x2a,
  80. EthTxStat0 = 0x2b,
  81. EthTxStat1 = 0x2c,
  82. EthRxStat = 0x2d,
  83. Reg7b = 0x7b,
  84. Gpio0 = 0x7e,
  85. Gpio1 = 0x7f,
  86. Reg81 = 0x81,
  87. };
  88. typedef struct pegasus {
  89. struct usb_device *usb;
  90. struct net_device *net;
  91. struct net_device_stats stats;
  92. unsigned flags;
  93. unsigned features;
  94. int dev_index;
  95. int intr_interval;
  96. struct urb ctrl_urb, rx_urb, tx_urb, intr_urb;
  97. devrequest dr;
  98. wait_queue_head_t ctrl_wait;
  99. struct semaphore ctrl_sem;
  100. unsigned char ALIGN(rx_buff[PEGASUS_MAX_MTU]);
  101. unsigned char ALIGN(tx_buff[PEGASUS_MAX_MTU]);
  102. unsigned char ALIGN(intr_buff[8]);
  103. __u8 eth_regs[4];
  104. __u8 phy;
  105. __u8 gpio_res;
  106. } pegasus_t;
  107. struct usb_eth_dev {
  108. char *name;
  109. __u16 vendor;
  110. __u16 device;
  111. __u32 private; /* LSB is gpio reset value */
  112. };
  113. #define VENDOR_3COM 0x0506
  114. #define VENDOR_ABOCOM 0x07b8
  115. #define VENDOR_ACCTON 0x083a
  116. #define VENDOR_ADMTEK 0x07a6
  117. #define VENDOR_ALLIEDTEL 0x07c9
  118. #define VENDOR_BELKIN 0x050d
  119. #define VENDOR_BILLIONTON 0x08dd
  120. #define VENDOR_COREGA 0x07aa
  121. #define VENDOR_DLINK 0x2001
  122. #define VENDOR_ELSA 0x05cc
  123. #define VENDOR_IODATA 0x04bb
  124. #define VENDOR_KINGSTON 0x0951
  125. #define VENDOR_LANEED 0x056e
  126. #define VENDOR_LINKSYS 0x066b
  127. #define VENDOR_MELCO 0x0411
  128. #define VENDOR_SMARTBRIDGES 0x08d1
  129. #define VENDOR_SMC 0x0707
  130. #define VENDOR_SOHOWARE 0x15e8
  131. #else /* PEGASUS_DEV */
  132. PEGASUS_DEV( "3Com USB Ethernet 3C460B", VENDOR_3COM, 0x4601,
  133. DEFAULT_GPIO_RESET | PEGASUS_II )
  134. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x110c,
  135. DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA )
  136. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4104,
  137. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  138. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4004,
  139. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  140. PEGASUS_DEV( "USB HPNA/Ethernet", VENDOR_ABOCOM, 0x4007,
  141. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  142. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4102,
  143. DEFAULT_GPIO_RESET | PEGASUS_II )
  144. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x4002,
  145. DEFAULT_GPIO_RESET )
  146. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400b,
  147. DEFAULT_GPIO_RESET | PEGASUS_II )
  148. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x400c,
  149. DEFAULT_GPIO_RESET | PEGASUS_II )
  150. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0xabc1,
  151. DEFAULT_GPIO_RESET )
  152. PEGASUS_DEV( "USB 10/100 Fast Ethernet", VENDOR_ABOCOM, 0x200c,
  153. DEFAULT_GPIO_RESET | PEGASUS_II ) 
  154. PEGASUS_DEV( "Accton USB 10/100 Ethernet Adapter", VENDOR_ACCTON, 0x1046,
  155. DEFAULT_GPIO_RESET )
  156. PEGASUS_DEV( "ADMtek ADM8511 "Pegasus II" USB Ethernet",
  157. VENDOR_ADMTEK, 0x8511,
  158. DEFAULT_GPIO_RESET | PEGASUS_II )
  159. PEGASUS_DEV( "ADMtek AN986 "Pegasus" USB Ethernet (eval. board)",
  160. VENDOR_ADMTEK, 0x0986,
  161. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  162. PEGASUS_DEV( "Allied Telesyn Int. AT-USB100", VENDOR_ALLIEDTEL, 0xb100,
  163. DEFAULT_GPIO_RESET | PEGASUS_II )
  164. PEGASUS_DEV( "Belkin F5D5050 USB Ethernet", VENDOR_BELKIN, 0x0121,
  165. DEFAULT_GPIO_RESET | PEGASUS_II )
  166. PEGASUS_DEV( "Billionton USB-100", VENDOR_BILLIONTON, 0x0986,
  167. DEFAULT_GPIO_RESET )
  168. PEGASUS_DEV( "Billionton USBLP-100", VENDOR_BILLIONTON, 0x0987,
  169. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  170. PEGASUS_DEV( "Billionton USBEL-100", VENDOR_BILLIONTON, 0x0988,
  171. DEFAULT_GPIO_RESET )
  172. PEGASUS_DEV( "Billionton USBE-100", VENDOR_BILLIONTON, 0x8511,
  173. DEFAULT_GPIO_RESET | PEGASUS_II )
  174. PEGASUS_DEV( "Corega FEter USB-TX", VENDOR_COREGA, 0x0004,
  175. DEFAULT_GPIO_RESET )
  176. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4001,
  177. LINKSYS_GPIO_RESET )
  178. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4002,
  179. LINKSYS_GPIO_RESET )
  180. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x4102,
  181. LINKSYS_GPIO_RESET | PEGASUS_II )
  182. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x400b,
  183. LINKSYS_GPIO_RESET | PEGASUS_II )
  184. PEGASUS_DEV( "D-Link DSB-650TX", VENDOR_DLINK, 0x200c,
  185. LINKSYS_GPIO_RESET | PEGASUS_II )
  186. PEGASUS_DEV( "D-Link DSB-650TX(PNA)", VENDOR_DLINK, 0x4003,
  187. DEFAULT_GPIO_RESET | HAS_HOME_PNA )
  188. PEGASUS_DEV( "D-Link DSB-650", VENDOR_DLINK, 0xabc1,
  189. DEFAULT_GPIO_RESET )
  190. PEGASUS_DEV( "Elsa Micolink USB2Ethernet", VENDOR_ELSA, 0x3000,
  191. DEFAULT_GPIO_RESET )
  192. PEGASUS_DEV( "IO DATA USB ET/TX", VENDOR_IODATA, 0x0904,
  193. DEFAULT_GPIO_RESET )
  194. PEGASUS_DEV( "Kingston KNU101TX Ethernet", VENDOR_KINGSTON, 0x000a,
  195. DEFAULT_GPIO_RESET)
  196. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x4002,
  197. DEFAULT_GPIO_RESET )
  198. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x400b,
  199. DEFAULT_GPIO_RESET | PEGASUS_II )
  200. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/T", VENDOR_LANEED, 0xabc1,
  201. DEFAULT_GPIO_RESET )
  202. PEGASUS_DEV( "LANEED USB Ethernet LD-USB/TX", VENDOR_LANEED, 0x200c,
  203. DEFAULT_GPIO_RESET | PEGASUS_II )
  204. PEGASUS_DEV( "Linksys USB10TX", VENDOR_LINKSYS, 0x2202,
  205. LINKSYS_GPIO_RESET )
  206. PEGASUS_DEV( "Linksys USB100TX", VENDOR_LINKSYS, 0x2203,
  207. LINKSYS_GPIO_RESET )
  208. PEGASUS_DEV( "Linksys USB100TX", VENDOR_LINKSYS, 0x2204,
  209. LINKSYS_GPIO_RESET | HAS_HOME_PNA )
  210. PEGASUS_DEV( "Linksys USB Ethernet Adapter", VENDOR_LINKSYS, 0x2206,
  211. LINKSYS_GPIO_RESET )
  212. PEGASUS_DEV( "Linksys USB USB10TX", VENDOR_LINKSYS, 0x400b,
  213. LINKSYS_GPIO_RESET | PEGASUS_II )
  214. PEGASUS_DEV( "Linksys USB10TX", VENDOR_LINKSYS, 0x200c,
  215. LINKSYS_GPIO_RESET | PEGASUS_II )
  216. PEGASUS_DEV( "MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0001,
  217. DEFAULT_GPIO_RESET )
  218. PEGASUS_DEV( "MELCO/BUFFALO LUA-TX", VENDOR_MELCO, 0x0005,
  219. DEFAULT_GPIO_RESET )
  220. PEGASUS_DEV( "MELCO/BUFFALO LUA2-TX", VENDOR_MELCO, 0x0009,
  221. DEFAULT_GPIO_RESET | PEGASUS_II )
  222. PEGASUS_DEV( "smartNIC 2 PnP Adapter", VENDOR_SMARTBRIDGES, 0x0003,
  223. DEFAULT_GPIO_RESET | PEGASUS_II )
  224. PEGASUS_DEV( "SMC 202 USB Ethernet", VENDOR_SMC, 0x0200,
  225. DEFAULT_GPIO_RESET )
  226. PEGASUS_DEV( "SOHOware NUB100 Ethernet", VENDOR_SOHOWARE, 0x9100,
  227. DEFAULT_GPIO_RESET )
  228. #endif /* PEGASUS_DEV */