|
Retro Rocket Kernel
BASIC-Powered Operating System
|
#include <kernel.h>Data Structures | |
| struct | tx_desc_t |
| Transfer description. More... | |
| struct | rtl8139_dev_t |
| PCI device configuration. More... | |
Macros | |
| #define | RTL8139_VENDOR_ID 0x10EC |
| #define | RTL8139_DEVICE_ID 0x8139 |
| #define | RX_BUF_SIZE 8192 |
| #define | CAPR 0x38 |
| #define | RX_READ_POINTER_MASK (~3) |
| #define | CR_RST 0x10 |
| #define | CR_RE 0x08 |
| #define | CR_TE 0x04 |
| #define | CR_BUFE 0x01 |
| #define | get_mac_addr(x) rtl8139_get_mac_addr(x) |
Enumerations | |
| enum | rtl8139_recv_status { ROK = 0x01 , RER = 0x02 , TOK = 0x04 , TER = 0x08 , X_TOK = 0x8000 } |
| enum | rtl8139_tx_status_bits { TX_SIZE = 0b00000000000000000001111111111111 , TX_OWN = 0b00000000000000000010000000000000 , TX_TUN = 0b00000000000000000100000000000000 , TX_TOK = 0b00000000000000001000000000000000 , TX_EARLY_THRESHOLD = 0b00000000001111110000000000000000 , TX_RESERVED = 0b00000000110000000000000000000000 , TX_NCC = 0b00001111000000000000000000000000 , TX_CDH = 0b00010000000000000000000000000000 , TX_OWC = 0b00100000000000000000000000000000 , TX_TABT = 0b01000000000000000000000000000000 , TX_CRS = 0b10000000000000000000000000000000 } |
| enum | rtl8139_rx_status_bits { RX_ROK = 0b00000000000000000000000000000001 , RX_FAE = 0b00000000000000000000000000000010 , RX_CRC = 0b00000000000000000000000000000100 , RX_LONG = 0b00000000000000000000000000001000 , RX_RUNT = 0b00000000000000000000000000010000 , RX_ISE = 0b00000000000000000000000000100000 , RX_RESERVED = 0b00000000000000000000111111000000 , RX_BAR = 0b00000000000000000001000000000000 , RX_PAM = 0b00000000000000000010000000000000 , RX_MAR = 0b00000000000000000100000000000000 } |
| enum | rtl8139_interrupt_reg_bits { RX_OK = 0x01 , RX_ERR = 0x02 , TX_OK = 0x04 , TX_ERR = 0x08 , RX_OVERFLOW = 0x10 , RX_UNDERRUN = 0x20 , RX_FIFO_OVERFLOW = 0x40 , CABLE_LENGTH_CHANGE = 0x2000 , PCS_TIMEOUT = 0x4000 , PCI_ERR = 0x8000 , INT_DEFAULT = TX_OK | RX_OK } |
| enum | rtl8139_chip_cmd_bits { RXBUFEMPTY = 0x01 , CMDTXENB = 0x04 , CMDRXENB = 0x08 , CMDRESET = 0x10 } |
| enum | rtl8139_rxconfig_bits { RX_ACCEPTALLPHYS = 0x01 , RX_ACCEPTMYPHYS = 0x02 , RX_ACCEPTMULTICAST = 0x04 , RX_ACCEPTBROADCAST = 0x08 , RX_ACCEPTRUNT = 0x10 , RX_ACCEPTERR = 0x20 , RX_CFGWRAP = 0x80 } |
| enum | rtl8139_registers { MAC0 = 0x00 , MAC1 = 0x04 , MAR0 = 0x08 , TxStatus0 = 0x10 , TxAddr0 = 0x20 , RxBuf = 0x30 , RxEarlyCnt = 0x34 , RxEarlyStatus = 0x36 , ChipCmd = 0x37 , RxBufPtr = 0x38 , RxBufAddr = 0x3A , IntrMask = 0x3C , IntrStatus = 0x3E , TxConfig = 0x40 , RxConfig = 0x44 , Timer = 0x48 , RxMissed = 0x4C , Cfg9346 = 0x50 , Config0 = 0x51 , Config1 = 0x52 , FlashReg = 0x54 , GPPinData = 0x58 , GPPinDir = 0x59 , MII_SMI = 0x5A , HltClk = 0x5B , MultiIntr = 0x5C , TxSummary = 0x60 , MII_BMCR = 0x62 , MII_BMSR = 0x64 , NWayAdvert = 0x66 , NWayLPAR = 0x68 , NWayExpansion = 0x6A , FIFOTMS = 0x70 , CSCR = 0x74 , PARA78 = 0x78 , PARA7c = 0x7C } |
| Port registers for RTL8139 https://datasheetspdf.com/pdf-file/1092361/RealtekMicroelectronics/RTL8139B/1. More... | |
Functions | |
| void | rtl8139_send_packet (void *data, uint32_t len) |
| Send a raw packet. More... | |
| void | rtl8139_handler (uint8_t isr, uint64_t error, uint64_t irq, void *opaque) |
| Handle RTL8139 interrupt. More... | |
| bool | init_rtl8139 () |
| Initialise RTL8139. More... | |
| char * | read_mac_addr () |
| Get the MAC address of the card in display format. More... | |
| void | receive_packet () |
| Handle receipt of packet from ISR. More... | |
| void | rtl8139_get_mac_addr () |
| Get the mac address from the IO ports. More... | |
| #define CAPR 0x38 |
| #define CR_BUFE 0x01 |
| #define CR_RE 0x08 |
| #define CR_RST 0x10 |
| #define CR_TE 0x04 |
| #define get_mac_addr | ( | x | ) | rtl8139_get_mac_addr(x) |
| #define RTL8139_DEVICE_ID 0x8139 |
| #define RTL8139_VENDOR_ID 0x10EC |
| #define RX_BUF_SIZE 8192 |
| #define RX_READ_POINTER_MASK (~3) |
| enum rtl8139_recv_status |
| enum rtl8139_registers |
Port registers for RTL8139 https://datasheetspdf.com/pdf-file/1092361/RealtekMicroelectronics/RTL8139B/1.
| bool init_rtl8139 | ( | ) |
Initialise RTL8139.
| char* read_mac_addr | ( | ) |
Get the MAC address of the card in display format.
| void receive_packet | ( | ) |
Handle receipt of packet from ISR.
| void rtl8139_get_mac_addr | ( | ) |
Get the mac address from the IO ports.
| void rtl8139_handler | ( | uint8_t | isr, |
| uint64_t | error, | ||
| uint64_t | irq, | ||
| void * | opaque | ||
| ) |
Handle RTL8139 interrupt.
| isr | ISR number (32 + ISR) |
| error | error code |
| irq | Actual IRQ number |
| opaque | Pointer to device details |
| void rtl8139_send_packet | ( | void * | data, |
| uint32_t | len | ||
| ) |
Send a raw packet.
| data | packet data |
| len | packet length |