|
Retro Rocket Kernel
BASIC-Powered Operating System
|
#include "kernel.h"Data Structures | |
| struct | e1000_rx_desc |
| struct | e1000_tx_desc |
Macros | |
| #define | INTEL_VEND 0x8086 |
| #define | E1000_DEV 0x100E |
| #define | E1000_I217 0x153A |
| #define | E1000_82577LM 0x10EA |
| #define | REG_CTRL 0x0000 |
| #define | REG_STATUS 0x0008 |
| #define | REG_EEPROM 0x0014 |
| #define | REG_CTRL_EXT 0x0018 |
| #define | REG_IMASK 0x00D0 |
| #define | REG_RCTRL 0x0100 |
| #define | REG_RXDESCLO 0x2800 |
| #define | REG_RXDESCHI 0x2804 |
| #define | REG_RXDESCLEN 0x2808 |
| #define | REG_RXDESCHEAD 0x2810 |
| #define | REG_RXDESCTAIL 0x2818 |
| #define | REG_TCTRL 0x0400 |
| #define | REG_TXDESCLO 0x3800 |
| #define | REG_TXDESCHI 0x3804 |
| #define | REG_TXDESCLEN 0x3808 |
| #define | REG_TXDESCHEAD 0x3810 |
| #define | REG_TXDESCTAIL 0x3818 |
| #define | REG_RDTR 0x2820 |
| #define | REG_RXDCTL 0x3828 |
| #define | REG_RADV 0x282C |
| #define | REG_RSRPD 0x2C00 |
| #define | REG_TIPG 0x0410 |
| #define | ECTRL_SLU 0x40 |
| #define | RCTL_EN (1 << 1) |
| #define | RCTL_SBP (1 << 2) |
| #define | RCTL_UPE (1 << 3) |
| #define | RCTL_MPE (1 << 4) |
| #define | RCTL_LPE (1 << 5) |
| #define | RCTL_LBM_NONE (0 << 6) |
| #define | RCTL_LBM_PHY (3 << 6) |
| #define | RTCL_RDMTS_HALF (0 << 8) |
| #define | RTCL_RDMTS_QUARTER (1 << 8) |
| #define | RTCL_RDMTS_EIGHTH (2 << 8) |
| #define | RCTL_MO_36 (0 << 12) |
| #define | RCTL_MO_35 (1 << 12) |
| #define | RCTL_MO_34 (2 << 12) |
| #define | RCTL_MO_32 (3 << 12) |
| #define | RCTL_BAM (1 << 15) |
| #define | RCTL_VFE (1 << 18) |
| #define | RCTL_CFIEN (1 << 19) |
| #define | RCTL_CFI (1 << 20) |
| #define | RCTL_DPF (1 << 22) |
| #define | RCTL_PMCF (1 << 23) |
| #define | RCTL_SECRC (1 << 26) |
| #define | RCTL_BSIZE_256 (3 << 16) |
| #define | RCTL_BSIZE_512 (2 << 16) |
| #define | RCTL_BSIZE_1024 (1 << 16) |
| #define | RCTL_BSIZE_2048 (0 << 16) |
| #define | RCTL_BSIZE_4096 ((3 << 16) | (1 << 25)) |
| #define | RCTL_BSIZE_8192 ((2 << 16) | (1 << 25)) |
| #define | RCTL_BSIZE_16384 ((1 << 16) | (1 << 25)) |
| #define | RXD_STAT_DD 0x01 /* Descriptor Done */ |
| #define | RXD_STAT_EOP 0x02 /* End of Packet */ |
| #define | CMD_EOP (1 << 0) |
| #define | CMD_IFCS (1 << 1) |
| #define | CMD_IC (1 << 2) |
| #define | CMD_RS (1 << 3) |
| #define | CMD_RPS (1 << 4) |
| #define | CMD_VLE (1 << 6) |
| #define | CMD_IDE (1 << 7) |
| #define | TCTL_EN (1 << 1) |
| #define | TCTL_PSP (1 << 3) |
| #define | TCTL_CT_SHIFT 4 |
| #define | TCTL_COLD_SHIFT 12 |
| #define | TCTL_SWXOFF (1 << 22) |
| #define | TCTL_RTLC (1 << 24) |
| #define | TSTA_DD (1 << 0) |
| #define | TSTA_EC (1 << 1) |
| #define | TSTA_LC (1 << 2) |
| #define | LSTA_TU (1 << 3) |
| #define | E1000_NUM_RX_DESC 32 |
| #define | E1000_NUM_TX_DESC 8 |
Functions | |
| struct e1000_rx_desc | __attribute__ ((packed)) e1000_rx_desc_t |
| void | e1000_get_mac_addr (uint8_t *src_mac_addr) |
| int | e1000_send_packet (const void *p_data, uint16_t p_len) |
| bool | init_e1000 () |
Variables | |
| volatile uint64_t | addr |
| volatile uint16_t | length |
| volatile uint16_t | checksum |
| volatile uint8_t | status |
| volatile uint8_t | errors |
| volatile uint16_t | special |
| volatile uint8_t | cso |
| volatile uint8_t | cmd |
| volatile uint8_t | css |
| #define CMD_EOP (1 << 0) |
| #define CMD_IC (1 << 2) |
| #define CMD_IDE (1 << 7) |
| #define CMD_IFCS (1 << 1) |
| #define CMD_RPS (1 << 4) |
| #define CMD_RS (1 << 3) |
| #define CMD_VLE (1 << 6) |
| #define E1000_82577LM 0x10EA |
| #define E1000_DEV 0x100E |
| #define E1000_I217 0x153A |
| #define E1000_NUM_RX_DESC 32 |
| #define E1000_NUM_TX_DESC 8 |
| #define ECTRL_SLU 0x40 |
| #define INTEL_VEND 0x8086 |
| #define LSTA_TU (1 << 3) |
| #define RCTL_BAM (1 << 15) |
| #define RCTL_BSIZE_1024 (1 << 16) |
| #define RCTL_BSIZE_16384 ((1 << 16) | (1 << 25)) |
| #define RCTL_BSIZE_2048 (0 << 16) |
| #define RCTL_BSIZE_256 (3 << 16) |
| #define RCTL_BSIZE_4096 ((3 << 16) | (1 << 25)) |
| #define RCTL_BSIZE_512 (2 << 16) |
| #define RCTL_BSIZE_8192 ((2 << 16) | (1 << 25)) |
| #define RCTL_CFI (1 << 20) |
| #define RCTL_CFIEN (1 << 19) |
| #define RCTL_DPF (1 << 22) |
| #define RCTL_EN (1 << 1) |
| #define RCTL_LBM_NONE (0 << 6) |
| #define RCTL_LBM_PHY (3 << 6) |
| #define RCTL_LPE (1 << 5) |
| #define RCTL_MO_32 (3 << 12) |
| #define RCTL_MO_34 (2 << 12) |
| #define RCTL_MO_35 (1 << 12) |
| #define RCTL_MO_36 (0 << 12) |
| #define RCTL_MPE (1 << 4) |
| #define RCTL_PMCF (1 << 23) |
| #define RCTL_SBP (1 << 2) |
| #define RCTL_SECRC (1 << 26) |
| #define RCTL_UPE (1 << 3) |
| #define RCTL_VFE (1 << 18) |
| #define REG_CTRL 0x0000 |
| #define REG_CTRL_EXT 0x0018 |
| #define REG_EEPROM 0x0014 |
| #define REG_IMASK 0x00D0 |
| #define REG_RADV 0x282C |
| #define REG_RCTRL 0x0100 |
| #define REG_RDTR 0x2820 |
| #define REG_RSRPD 0x2C00 |
| #define REG_RXDCTL 0x3828 |
| #define REG_RXDESCHEAD 0x2810 |
| #define REG_RXDESCHI 0x2804 |
| #define REG_RXDESCLEN 0x2808 |
| #define REG_RXDESCLO 0x2800 |
| #define REG_RXDESCTAIL 0x2818 |
| #define REG_STATUS 0x0008 |
| #define REG_TCTRL 0x0400 |
| #define REG_TIPG 0x0410 |
| #define REG_TXDESCHEAD 0x3810 |
| #define REG_TXDESCHI 0x3804 |
| #define REG_TXDESCLEN 0x3808 |
| #define REG_TXDESCLO 0x3800 |
| #define REG_TXDESCTAIL 0x3818 |
| #define RTCL_RDMTS_EIGHTH (2 << 8) |
| #define RTCL_RDMTS_HALF (0 << 8) |
| #define RTCL_RDMTS_QUARTER (1 << 8) |
| #define RXD_STAT_DD 0x01 /* Descriptor Done */ |
| #define RXD_STAT_EOP 0x02 /* End of Packet */ |
| #define TCTL_COLD_SHIFT 12 |
| #define TCTL_CT_SHIFT 4 |
| #define TCTL_EN (1 << 1) |
| #define TCTL_PSP (1 << 3) |
| #define TCTL_RTLC (1 << 24) |
| #define TCTL_SWXOFF (1 << 22) |
| #define TSTA_DD (1 << 0) |
| #define TSTA_EC (1 << 1) |
| #define TSTA_LC (1 << 2) |
| struct e1000_rx_desc __attribute__ | ( | (packed) | ) |
| void e1000_get_mac_addr | ( | uint8_t * | src_mac_addr | ) |
| int e1000_send_packet | ( | const void * | p_data, |
| uint16_t | p_len | ||
| ) |
| bool init_e1000 | ( | ) |
| volatile uint64_t addr |
| volatile uint16_t checksum |
| volatile uint8_t cmd |
| volatile uint8_t cso |
| volatile uint8_t css |
| volatile uint8_t errors |
| volatile uint16_t length |
| volatile uint16_t special |
| volatile uint8_t status |