Difference between revisions of "Unit SMSC95XX"
From Ultibo.org
Line 12: | Line 12: | ||
---- | ---- | ||
− | ''To be | + | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX specific constants''' <code> SMSC95XX_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_DRIVER_NAME = 'SMSC LAN95XX USB Ethernet Adapter Driver';</code> | ||
+ | | Name of SMSC95XX driver | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAX_SINGLE_PACKET_SIZE = 2048;</code> | ||
+ | | Maximum size of a bulk IN receive when burst cap and multiple frames is not in use | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_DEFAULT_BULK_IN_DELAY = $2000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAX_TX_REQUESTS = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAX_RX_REQUESTS = 1;</code> | ||
+ | | ((60 * 1518) div SMSC95XX_DEFAULT_HS_BURST_CAP_SIZE) + 1; SMSC95XX_MAX_RX_REQUESTS (DIV_ROUND_UP(60 * 1518, SMSC95XX_DEFAULT_HS_BURST_CAP_SIZE)) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAX_EEPROM_SIZE = 512;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX device id constants''' <code> MSC95XX_DEVICE_ID_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_DEVICE_ID_COUNT = 5;</code> | ||
+ | | Number of supported Device IDs | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<code>SMSC95XX_DEVICE_ID:array[0..SMSC95XX_DEVICE_ID_COUNT - 1] of TUSBDeviceId = (</code> | ||
+ | |- | ||
+ | | <code>(idVendor:$0424;idProduct:$ec00),</code> | ||
+ | | LAN9512/LAN9514 Ethernet | ||
+ | |- | ||
+ | | <code>(idVendor:$0424;idProduct:$9500),</code> | ||
+ | | LAN9500 Ethernet | ||
+ | |- | ||
+ | | <code>(idVendor:$0424;idProduct:$9730),</code> | ||
+ | | LAN9730 Ethernet (HSIC) | ||
+ | |- | ||
+ | | <code>(idVendor:$0424;idProduct:$9900),</code> | ||
+ | | SMSC9500 USB Ethernet Device (SAL10) | ||
+ | |- | ||
+ | | <code>(idVendor:$0424;idProduct:$9e00));</code> | ||
+ | | LAN9500A Ethernet | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX transmit/receive constants ''' <code> SMSC95XX_TX_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_OVERHEAD = 8;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_OVERHEAD = 4;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX USB packet size constants''' <code> SMSC95XX_*_USB_PKT_SIZE </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_HS_USB_PKT_SIZE = 512;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_FS_USB_PKT_SIZE = 64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX burst size constants''' <code> SMSC95XX_DEFAULT_*_BURST_CAP_SIZE </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_DEFAULT_HS_BURST_CAP_SIZE = (16 * 1024) + (5 * SMSC95XX_HS_USB_PKT_SIZE);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_DEFAULT_FS_BURST_CAP_SIZE = (6 * 1024) + (33 * SMSC95XX_FS_USB_PKT_SIZE);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX transmit command constants''' <code> SMSC95XX_TX_COMMAND_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Transmitted Ethernet frames (To the Bulk OUT endpoint) must be prefixed with an 8-byte header containing the "Tx command word A" followed by the "Tx command word B". | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|''TX Command word A'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_A_DATA_OFFSET = $001F0000;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_A_FIRST_SEG = $00002000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_A_LAST_SEG = $00001000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_A_BUF_SIZE = $000007FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|''TX Command word B'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_B_CSUM_ENABLE = $00004000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_B_ADD_CRC_DISABLE = $00002000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_B_DISABLE_PADDING = $00001000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COMMAND_B_PKT_BYTE_LENGTH = $000007FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX receive status constants''' <code> SMSC95XX_RX_STATUS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Received Ethernet frames (From the Bulk IN endpoint) are prefixed with a 4-byte Rx Status word containing the flags below. A single USB Bulk IN transfer may contain multiple Ethernet frames (provided that HW_CONFIG_MEF is set in HW_CONFIG), each of which is prepended by a Rx Status word and padded to a 4-byte boundary. | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_FF = $40000000;</code> | ||
+ | | Filter Fail | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_FL = $3FFF0000;</code> | ||
+ | | Frame Length | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_ES = $00008000;</code> | ||
+ | | Error Summary | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_BF = $00002000;</code> | ||
+ | | Broadcast Frame | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_LE = $00001000;</code> | ||
+ | | Length Error | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_RF = $00000800;</code> | ||
+ | | Runt Frame | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_MF = $00000400;</code> | ||
+ | | Multicast Frame | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_TL = $00000080;</code> | ||
+ | | Frame too long | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_CS = $00000040;</code> | ||
+ | | Collision Seen | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_FT = $00000020;</code> | ||
+ | | Frame Type | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_RW = $00000010;</code> | ||
+ | | Receive Watchdog | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_ME = $00000008;</code> | ||
+ | | Mii Error | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_DB = $00000004;</code> | ||
+ | | Dribbling | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_STATUS_CRC = $00000002;</code> | ||
+ | | CRC Error | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX ID revision constants''' <code> SMSC95XX_ID_REVISION_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Read/Write Register Definitions | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION = $00;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_MASK = $FFFF0000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_REV_MASK = $0000FFFF;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_9500 = $9500;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_9500A = $9E00;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_9512 = $EC00;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_9530 = $9530;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_89530 = $9E08;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_ID_REVISION_CHIP_ID_9730 = $9730;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX interrupt status constants''' <code> SMSC95XX_INTERRUPT_STATUS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS = $08;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_TX_STOP = $00020000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_RX_STOP = $00010000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_PHY_INT = $00008000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_TXE = $00004000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_TDFU = $00002000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_TDFO = $00001000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_RXDF = $00000800;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_GPIOS = $000007FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INTERRUPT_STATUS_CLEAR_ALL = $FFFFFFFF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX receive configuration constants''' <code> SMSC95XX_RX_CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_CONFIG = $0C;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_CONFIG_FIFO_FLUSH = $00000001;</code> | ||
+ | | Most likely, software can write 1 to this flag discard all the Rx packets currently buffered by the device. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX transmit configuration constants''' <code> SMSC95XX_TX_CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_CONFIG = $10;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_CONFIG_ON = $00000004;</code> | ||
+ | | Transmit On flag. Software can write 1 here to enable transmit functionality (at the PHY layer?). Writing 0 is ignored. Reads as current on (1) / off (0) state. However, to actually allow packets to be transmitted, software also must set the MAC_CONTROL_TXEN flag in the MAC_CONTROL register. | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_CONFIG_STOP = $00000002;</code> | ||
+ | | Transmit Stop flag. Software can write 1 here to turn transmit functionality off. Writing 0 is ignored. Always reads as 0. | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_CONFIG_FIFO_FLUSH = $00000001;</code> | ||
+ | | Most likely, software can write 1 to this flag to discard all the Tx packets currently buffered by the device. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX hardware configuration constants''' <code> SMSC95XX_HW_CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|This contains a number of flags that software can modify to configure the Ethernet Adapter (Default 0). | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG = $14;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_BIR = $00001000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_LEDB = $00000800;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_RXDOFF = $00000600;</code> | ||
+ | | Rx packet offset: Software can modify this 2-bit field to cause Rx packets to be offset by the specified number of bytes. This is apparently intended to allow software to align the IP header on a 4 byte boundary. | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_DRP = $00000040;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_MEF = $00000020;</code> | ||
+ | | Multiple Ethernet Frames: Software can set this flag in HW_CONFIG to allow multiple Ethernet frames to be received in a single USB Bulk In transfer. The default value after reset is 0, meaning that the hardware will by default provide each received Ethernet frame in a separate USB Bulk In transfer. | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_LRST = $00000008;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_PSEL = $00000004;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_BCE = $00000002;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_HW_CONFIG_SRST = $00000001;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX RX FIFO constants''' <code> SMSC95XX_RX_FIFO_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_FIFO_INF = $18;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX power management control constants''' <code> SMSC95XX_PM_CONTROL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL = $20;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_RES_CLR_WKP_STS = $00000200;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_DEV_RDY = $00000080;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_SUS_MODE = $00000060;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_SUS_MODE_0 = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_SUS_MODE_1 = $00000020;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_SUS_MODE_2 = $00000040;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_SUS_MODE_3 = $00000060;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_PHY_RST = $00000010;</code> | ||
+ | | PHY Reset flag: Write 1 to start a PHY reset on the device. Automatically cleared when the PHY has reset (less than 1 second). | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_WOL_EN = $00000008;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_ED_EN = $00000004;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_WUPS = $00000003;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_WUPS_NO = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_WUPS_ED = $00000001;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_WUPS_WOL = $00000002;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PM_CONTROL_WUPS_MULTI = $00000003;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX LED GPIO configuration constants''' <code> SMSC95XX_LED_GPIO_CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_LED_GPIO_CONFIG = $24;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_LED_GPIO_CONFIG_SPD_LED = $01000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_LED_GPIO_CONFIG_LNK_LED = $00100000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_LED_GPIO_CONFIG_FDX_LED = $00010000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX GPIO configuration constants''' <code> SMSC95XX_GPIO_CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_GPIO_CONFIG = $28;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX advanced flow control configuration constants''' <code> SMSC95XX_AFC_CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Default 0) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_AFC_CONFIG = $2C;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_AFC_CONFIG_DEFAULT = $00F830A1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX E2P command constants''' <code> SMSC95XX_E2P_COMMAND_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND = $30;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_BUSY= $80000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_MASK= $70000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_READ = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_EWDS= $10000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_EWEN = $20000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_WRITE = $30000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_WRAL = $40000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_ERASE = $50000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_ERAL = $60000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_RELOAD = $70000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_TIMEOUT = $00000400;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_LOADED = $00000200;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_COMMAND_ADDR = $000001FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX E2P data constants''' <code> SMSC95XX_E2P_DATA_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_DATA = $34;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_E2P_DATA_MASK = $000000FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX burst cap constants''' <code> SMSC95XX_BURST_CAP_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|When multiple Ethernet frames per USB bulk transfer are enabled, this register must be set by software to specify the maximum number of USB (not networking!) packets the hardware will provide in a single Bulk In transfer. | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|This register is ignored if HW_CONFIG_MEF is not set. Otherwise, this must be set to at least 5, which represents a maximum of 5 * 512 = 2560 bytes of data per transfer from the high speed Bulk In endpoint. | ||
+ | |- | ||
+ | | <code>SMSC95XX_BURST_CAP = $38;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX GPIO wake constants''' <code> SMSC95XX_GPIO_WAKE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_GPIO_WAKE = $64;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX interrupt endpoint control constants''' <code> SMSC95XX_INT_EP_CONTROL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL = $68;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_INTEP = $80000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_MACRTO = $00080000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_TX_STOP = $00020000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_RX_STOP = $00010000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_PHY_INT = $00008000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_TXE = $00004000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_TDFU = $00002000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_TDFO = $00001000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_RXDF = $00000800;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_EP_CONTROL_GPIOS = $000007FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX bulk in delay constants''' <code> SMSC95XX_BULK_IN_DELAY_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|The low 16 bits of this register contain a value that indicates the maximum amount of time the hardware waits for additional packets before responding to a Bulk In request once a packet has been received. From experiment, the time is specified on a linear scale where each unit is approximately 17 nanoseconds. The default value in this register after reset is 0x800 which indicates a delay of about 34.8 microseconds, assuming that the scale is 0-based. SMSC's Linux driver changes this to 0x2000, or a delay of about 139 microseconds. | ||
+ | |- | ||
+ | |colspan="2"|The value in this register no effect if HW_CONFIG_MEF is not set in the HW_CONFIG register. | ||
+ | |- | ||
+ | | <code>SMSC95XX_BULK_IN_DELAY = $6C;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX media access control constants''' <code> SMSC95XX_MAC_CONTROL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL = $100;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_RXALL = $80000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_RCVOWN = $00800000;</code> | ||
+ | | Half duplex mode | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_LOOPBK = $00200000;</code> | ||
+ | | Loopback mode | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_FDPX = $00100000;</code> | ||
+ | | Full duplex mode | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_MCPAS = $00080000;</code> | ||
+ | | Multicast pass: receive all multicast packets | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_PRMS = $00040000;</code> | ||
+ | | Promiscuous mode | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_INVFILT = $00020000;</code> | ||
+ | | Inverse filtering | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_PASSBAD = $00010000;</code> | ||
+ | | Pass on bad frames | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_HFILT = $00008000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_HPFILT = $00002000;</code> | ||
+ | | Filter received multicast packets by the set of addresses specified by HASH_HIGH and HASH_LOW | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_LCOLL = $00001000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_BCAST = $00000800;</code> | ||
+ | | Receive broadcast packets | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_DISRTY = $00000400;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_PADSTR = $00000100;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_BOLMT_MASK = $000000C0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_DFCHK = $00000020;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_TX_ENABLE = $00000008;</code> | ||
+ | | Transmit enabled (MAC layer). 1 to enable / 0 to disable (Must also set the SMSC95XX_TX_CONFIG_ON flag in the SMSC95XX_TX_CONFIG register). | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_CONTROL_RX_ENABLE = $00000004;</code> | ||
+ | | Receive enabled. 1 to enable / 0 to disable. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX MAC address constants''' <code> SMSC95XX_MAC_ADDRESS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|This contains the high 2 bytes of the MAC address used by the device, stored in little endian order. | ||
+ | As they are not part of the MAC address, the hardware ignores the values written to the upper 2 bytes of this register and always reads them as 0. | ||
+ | |- | ||
+ | |colspan="2"|Software can change the MAC address used by the device by writing to the MAC_ADDRESS_HIGH and MAC_ADDRESS_LOW registers, and it can retrieve the current MAC address by reading them. On reset, the device will read its MAC address from the EEPROM if one is attached; otherwise it will set its MAC address to 0xFFFFFFFFFFFF. | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_ADDRESS_HIGH = $104;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|''This contains the low 4 bytes of the MAC address used by the device, stored in little endian order. See MAC_ADDRESS_HIGH.'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_MAC_ADDRESS_LOW = $108;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX hash constants''' <code> SMSC95XX_HASH_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Used together with HASH_LOW to filter specific multicast packets'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_HASH_HIGH = $10C;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|''Used together with HASH_HIGH to filter specific multicast packets'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_HASH_LOW = $110;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX MII constants''' <code> SMSC95XX_MII_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register | ||
+ | |- | ||
+ | | <code>SMSC95XX_MII_ADDR = $114;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MII_WRITE = $02;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MII_BUSY = $01;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MII_READ = $00;</code> | ||
+ | | ~of MII Write bit | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_MII_DATA = $118;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX flow constants ''' <code> SMSC95XX_FLOW_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register,(Default 0) | ||
+ | |- | ||
+ | | <code>SMSC95XX_FLOW = $11C;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_FLOW_FCPT = $FFFF0000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_FLOW_FCPASS = $00000004;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_FLOW_FCEN = $00000002;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_FLOW_FCBSY = $00000001;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX VLAN constants''' <code> SMSC95XX_VLAN* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register | ||
+ | |- | ||
+ | | <code>SMSC95XX_VLAN1 = $120;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_VLAN2 = $124;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX WUFF constants''' <code> SMSC95XX_WUFF_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUFF = $128;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_LAN9500_WUFF_NUM = 4;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_LAN9500A_WUFF_NUM = 8;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX WUCSR constants''' <code> SMSC95XX_WUCSR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Unknown Register | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUCSR = $12C;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUCSR_WFF_PTR_RST = $80000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUCSR_GUE = $00000200;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUCSR_WUFR = $00000040;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUCSR_WAKE_EN = $00000004;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_WUCSR_MPEN = $00000002;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX checksum offload engine/enable control constants''' <code> SMSC95XX_COE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_COE_CONTROL = $130;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_TX_COE_ENABLE = $00010000;</code> | ||
+ | | Transmit checksum offload enabled. 1 to enable / 0 to disable (Default 0). | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_COE_MODE = $00000002;</code> | ||
+ | | Unknown (Default 0) | ||
+ | |- | ||
+ | | <code>SMSC95XX_RX_COE_ENABLE = $00000001;</code> | ||
+ | | Receive checksum offload enabled. 1 to enable / 0 to disable (Default 0). | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX vendor-specific physical constants''' <code> SMSC95XX_PHY_EDPD_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|EDPD NLP / crossover time configuration (LAN9500A only) | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG = 16;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_EN = $8000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_1000 = $0000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_768 = $2000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_512 = $4000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_256 = $6000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_RX_1_NLP = $1000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_RX_NLP_64 = $0000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_RX_NLP_256 = $0400;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_RX_NLP_512 = $0800;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_RX_NLP_1000 = $0C00;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_EXT_CROSSOVER = $0001;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_EDPD_CONFIG_DEFAULT = (SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_EN or SMSC95XX_PHY_EDPD_CONFIG_TX_NLP_768 or SMSC95XX_PHY_EDPD_CONFIG_RX_1_NLP);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX mode control/status constants''' <code> SMSC95XX_MODE_CTRL_STS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_MODE_CTRL_STS = 17;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_MODE_CTRL_STS_EDPWRDOWN = $2000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_MODE_CTRL_STS_ENERGYON = $0002;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX special control/status constants''' <code> SMSC95XX_SPECIAL_CTRL_STS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code> SMSC95XX_SPECIAL_CTRL_STS = 27;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_SPECIAL_CTRL_STS_OVRRD_AMDIX = $8000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_SPECIAL_CTRL_STS_AMDIX_ENABLE = $4000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_SPECIAL_CTRL_STS_AMDIX_STATE = $2000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX physical interrupt source constants''' <code> SMSC95XX_PHY_INT_SRC_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_SRC = 29;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_SRC_ENERGY_ON = $0080;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_SRC_ANEG_COMP = $0040;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_SRC_REMOTE_FAULT = $0020;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_SRC_LINK_DOWN = $0010;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX physical interrupt mask constants''' <code> SMSC95XX_PHY_INT_MASK_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_MASK = 30;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_MASK_ENERGY_ON = $0080;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_MASK_ANEG_COMP = $0040;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_MASK_REMOTE_FAULT = $0020;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_MASK_LINK_DOWN = $0010;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_INT_MASK_DEFAULT = (SMSC95XX_PHY_INT_MASK_ANEG_COMP or SMSC95XX_PHY_INT_MASK_LINK_DOWN);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX physical special constants''' <code> SMSC95XX_PHY_SPECIAL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_SPECIAL = 31;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_SPECIAL_SPD = $001C;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_SPECIAL_SPD_10HALF = $0004;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_SPECIAL_SPD_10FULL = $0014;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_SPECIAL_SPD_100HALF = $0008;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_PHY_SPECIAL_SPD_100FULL = $0018;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX USB vendor request constants''' <code> SMSC95XX_VENDOR_REQUEST_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Write Register: Specify as bRequest of a USB control message to write a register on the SMSC LAN95XX. bmRequestType must specify a vendor-specific request in the host-to-device direction, wIndex must specify the register, and the transfer data must be 4 bytes containing the value to write.'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_VENDOR_REQUEST_WRITE_REGISTER = $A0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|''Read Register: Specify as bRequest of a USB control message to read a register from the SMSC LAN95XX. bmRequestType must specify a vendor-specific request in the device-to-host direction, wIndex must specify the register, and the transfer data must be a 4 byte location to read the value.'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_VENDOR_REQUEST_READ_REGISTER = $A1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|''Get Statistics'' | ||
+ | |- | ||
+ | | <code>SMSC95XX_VENDOR_REQUEST_GET_STATS = $A2;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''SMSC95XX interrupt endpoint status word constants''' <code> SMSC95XX_INT_ENP_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_TX_STOP = $00000001 shl 17;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_RX_STOP = $00000001 shl 16;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_PHY_INT = $00000001 shl 15;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_TXE = $00000001 shl 14;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_TDFU = $00000001 shl 13;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_TDFO = $00000001 shl 12;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SMSC95XX_INT_ENP_RXDF = $00000001 shl 11;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === |
Revision as of 06:11, 23 December 2016
Return to Unit Reference
Contents
[hide]Description
SMSC LAN95xx USB Ethernet Driver unit
The SMSC LAN95xx has an integrated USB Hub and is technically a compound device. Here we instead use the vendor ID and product ID of the vendor specific class device attached to the hub that is the device we actually need to communicate with. The hub will be detected and bound by the default USB Hub driver when it is enumerated by the USB core.
Constants
[Expand]
SMSC95XX specific constants
SMSC95XX_*
[Expand]
SMSC95XX device id constants
MSC95XX_DEVICE_ID_*
[Expand]
SMSC95XX transmit/receive constants
SMSC95XX_TX_*
[Expand]
SMSC95XX USB packet size constants
SMSC95XX_*_USB_PKT_SIZE
[Expand]
SMSC95XX burst size constants
SMSC95XX_DEFAULT_*_BURST_CAP_SIZE
[Expand]
SMSC95XX transmit command constants
SMSC95XX_TX_COMMAND_*
[Expand]
SMSC95XX receive status constants
SMSC95XX_RX_STATUS_*
[Expand]
SMSC95XX ID revision constants
SMSC95XX_ID_REVISION_*
[Expand]
SMSC95XX interrupt status constants
SMSC95XX_INTERRUPT_STATUS_*
[Expand]
SMSC95XX receive configuration constants
SMSC95XX_RX_CONFIG_*
[Expand]
SMSC95XX transmit configuration constants
SMSC95XX_TX_CONFIG_*
[Expand]
SMSC95XX hardware configuration constants
SMSC95XX_HW_CONFIG_*
[Expand]
SMSC95XX RX FIFO constants
SMSC95XX_RX_FIFO_*
[Expand]
SMSC95XX power management control constants
SMSC95XX_PM_CONTROL_*
[Expand]
SMSC95XX LED GPIO configuration constants
SMSC95XX_LED_GPIO_CONFIG_*
[Expand]
SMSC95XX GPIO configuration constants
SMSC95XX_GPIO_CONFIG_*
[Expand]
SMSC95XX advanced flow control configuration constants
SMSC95XX_AFC_CONFIG_*
[Expand]
SMSC95XX E2P command constants
SMSC95XX_E2P_COMMAND_*
[Expand]
SMSC95XX E2P data constants
SMSC95XX_E2P_DATA_*
[Expand]
SMSC95XX burst cap constants
SMSC95XX_BURST_CAP_*
[Expand]
SMSC95XX GPIO wake constants
SMSC95XX_GPIO_WAKE_*
[Expand]
SMSC95XX interrupt endpoint control constants
SMSC95XX_INT_EP_CONTROL_*
[Expand]
SMSC95XX bulk in delay constants
SMSC95XX_BULK_IN_DELAY_*
[Expand]
SMSC95XX media access control constants
SMSC95XX_MAC_CONTROL_*
[Expand]
SMSC95XX MAC address constants
SMSC95XX_MAC_ADDRESS_*
[Expand]
SMSC95XX hash constants
SMSC95XX_HASH_*
[Expand]
SMSC95XX MII constants
SMSC95XX_MII_*
[Expand]
SMSC95XX flow constants
SMSC95XX_FLOW_*
[Expand]
SMSC95XX VLAN constants
SMSC95XX_VLAN*
[Expand]
SMSC95XX WUFF constants
SMSC95XX_WUFF_*
[Expand]
SMSC95XX WUCSR constants
SMSC95XX_WUCSR_*
[Expand]
SMSC95XX checksum offload engine/enable control constants
SMSC95XX_COE_*
[Expand]
SMSC95XX vendor-specific physical constants
SMSC95XX_PHY_EDPD_*
[Expand]
SMSC95XX mode control/status constants
SMSC95XX_MODE_CTRL_STS_*
[Expand]
SMSC95XX special control/status constants
SMSC95XX_SPECIAL_CTRL_STS_*
[Expand]
SMSC95XX physical interrupt source constants
SMSC95XX_PHY_INT_SRC_*
[Expand]
SMSC95XX physical interrupt mask constants
SMSC95XX_PHY_INT_MASK_*
[Expand]
SMSC95XX physical special constants
SMSC95XX_PHY_SPECIAL_*
[Expand]
SMSC95XX USB vendor request constants
SMSC95XX_VENDOR_REQUEST_*
[Expand]
SMSC95XX interrupt endpoint status word constants
SMSC95XX_INT_ENP_*
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
SMSC95XX network functions
[Expand]
function SMSC95XXDeviceOpen(Network:PNetworkDevice):LongWord;
Description: Implementation of NetworkDeviceOpen for the SMSC95XX device
[Expand]
function SMSC95XXDeviceClose(Network:PNetworkDevice):LongWord;
Description: Implementation of NetworkDeviceClose for the SMSC95XX device
[Expand]
function SMSC95XXDeviceRead(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Description: Implementation of NetworkDeviceRead for the SMSC95XX device
[Expand]
function SMSC95XXDeviceWrite(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Description: Implementation of NetworkDeviceWrite for the SMSC95XX device
[Expand]
function SMSC95XXDeviceControl(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Description: Implementation of NetworkDeviceControl for the SMSC95XX device
[Expand]
function SMSC95XXBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Description: Implementation of NetworkBufferAllocate for the SMSC95XX device
[Expand]
function SMSC95XXBufferRelease(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Description: Implementation of NetworkBufferRelease for the SMSC95XX device
[Expand]
function SMSC95XXBufferReceive(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Description: Implementation of NetworkBufferReceive for the SMSC95XX device
[Expand]
function SMSC95XXBufferTransmit(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Description: Implementation of NetworkBufferTransmit for the SMSC95XX device
SMSC95XX USB functions
[Expand]
function SMSC95XXDriverBind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Bind the SMSC95XX driver to a USB device if it is suitable
[Expand]
function SMSC95XXDriverUnbind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Unbind the SMSC95XX driver from a USB device
[Expand]
procedure SMSC95XXReceiveWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request from the SMSC95XX bulk IN endpoint
[Expand]
procedure SMSC95XXReceiveComplete(Request:PUSBRequest);
Description: Called when a USB request from the SMSC95XX bulk IN endpoint completes
[Expand]
procedure SMSC95XXTransmitWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request to the SMSC95XX bulk OUT endpoint
[Expand]
procedure SMSC95XXTransmitComplete(Request:PUSBRequest);
Description: Called when a USB request to the SMSC95XX bulk OUT endpoint completes
[Expand]
procedure SMSC95XXInterruptWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request from the SMSC95XX interrupt IN endpoint
[Expand]
procedure SMSC95XXInterruptComplete(Request:PUSBRequest);
Description: Called when a USB request from the SMSC95XX interrupt IN endpoint completes
SMSC95XX helper functions
[Expand]
function SMSC95XXCheckDevice(Device:PUSBDevice):LongWord;
Description: Check the Vendor and Device ID against the supported devices
[Expand]
function SMSC95XXReadRegister(Device:PUSBDevice; Index:LongWord; var Data:LongWord):LongWord;
Description: Read from a register on the SMSC95XX USB Ethernet Adapter
[Expand]
function SMSC95XXWriteRegister(Device:PUSBDevice; Index,Data:LongWord):LongWord;
Description: Write to a register on the SMSC95XX USB Ethernet Adapter
[Expand]
function SMSC95XXModifyRegister(Device:PUSBDevice; Index,Mask,Value:LongWord):LongWord;
Description: Modify the value contained in a register on the SMSC LAN95XX USB Ethernet Adapter
[Expand]
function SMSC95XXSetRegisterBits(Device:PUSBDevice; Index,Value:LongWord):LongWord;
Description: Set bits in a register on the SMSC95XX USB Ethernet Adapter
[Expand]
function SMSC95XXClearRegisterBits(Device:PUSBDevice; Index,Value:LongWord):LongWord;
Description: Clear bits in a register on the SMSC95XX USB Ethernet Adapter
[Expand]
function SMSC95XXSetMacAddress(Device:PUSBDevice; Address:PHardwareAddress):LongWord;
Description: Set the MAC address of the SMSC95XX USB Ethernet Adapter
[Expand]
function SMSC95XXGetMacAddress(Device:PUSBDevice; Address:PHardwareAddress):LongWord;
Description: Get the MAC address of the SMSC95XX USB Ethernet Adapter
Return to Unit Reference