SayoriOS  0.3.3
rtl8139.h
1 #pragma once
2 
3 #include <common.h>
4 
5 #define RTL8139_VENDOR 0x10EC
6 #define RTL8139_DEVICE 0x8139
7 
8 #define RTL8139_BUFFER_PAGE_COUNT 4
9 
10 enum RTL8139_regs {
11  MAC0_5 = 0x00, // 6 bytes long
12  MAR0_7 = 0x08, // 8 bytes long
13  RBSTART = 0x30, // 4 bytes long
14  CMD = 0x37, // 1 byte long
15  IMR = 0x3C, // 2 bytes long
16  ISR = 0x3D, // 2 bytes long
17  CONFIG_1 = 0x52
18 };
19 
20 #define ROK 1
21 #define TOK (1 << 2)
22 #define CAPR 0x38
23 #define RX_READ_POINTER_MASK (~3)
24 
25 // Ethernet II header (w/o VLAN 802.11Q tag)
26 typedef struct {
27  uint16_t Header;
28  uint16_t Size;
29  char MAC_DEVICE[6];
30  char MAC_SOURCE[6];
31  uint16_t Type;
32 } __attribute__((packed)) EthernetPacked;
33 
34 void rtl8139_init();
35 void rtl8139_wake_up();
36 void rtl8139_sw_reset();
37 void rtl8139_init_buffer();
38 void rtl8139_init_interrupts();
39 void rtl8139_read_mac();
40 void rtl8139_setup_rcr();
41 void rtl8139_enable_rx_tx();
42 void rtl8139_send_packet(void* data, size_t length);
43 void rtl8139_end_interrupt();
Основные определения ядра
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
uint16_t Header
Заголовок (?)
Definition: rtl8139.h:27
uint16_t Size
Размер пакета
Definition: rtl8139.h:28
uint16_t Type
Тип источника
Definition: rtl8139.h:31