Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
e1000.hpp
Go to the documentation of this file.
1#ifndef __USB_HID__HID_HPP__
2#define __USB_HID__HID_HPP__
6#include <type.h>
7
8#define E1000_NUM_RX_DESC 256
9#define E1000_NUM_RX_MASK (E1000_NUM_RX_DESC - 1)
10#define E1000_NUM_TX_DESC 64
11#define E1000_VENDOR_ID 0x8086
12#define E1000_DEVICE_ID 0x100c
13
15 volatile uint64_t addr;
16 volatile uint16_t length;
18 volatile uint8_t status;
19 volatile uint8_t errors;
20 volatile uint16_t special;
21} __attribute__((packed));
22
24 volatile uint64_t addr;
25 volatile uint64_t paddr;
26};
27
29 volatile uint64_t addr;
30 volatile uint16_t length;
31 volatile uint8_t cso;
32 volatile uint8_t cmd;
33 volatile uint8_t status;
34 volatile uint8_t css;
35 volatile uint16_t special;
36} __attribute__((packed));
37
38class E1000Module : public IOforgePCI {
39 public:
40 static E1000Module* getInstance();
42 void load() override;
43 void unload() override;
44 int sendPacket(const struct data_template data[], size_t count);
45 // int receivePacket(void** buffer, size_t* size);
46 inline void setNIC(struct ioforge_nic_service* nic) {
47 this->nic = nic;
48 }
49
53 void enableInterrupt();
54 void disableInterrupt();
55 static void fireHandler();
56 void linkup();
57 void write(uint16_t p_address, uint32_t p_value);
58 void receiveHandle();
59 uint32_t read(uint16_t p_address);
60 int getMacAddress(uint8_t mac[6]);
61 void storeBufferToPool(int rx_id, void* vaddr);
62
64
65 private:
66 bool mac_ready = false;
70 void initReceiverX();
71 void initTransmitterX();
72
75
76 // receive packet
77 bool got_packet = false;
80};
81
82#endif //__USB_HID__HID_HPP__
int count
Definition cache.h:2
boolean_t detectEeprom()
Definition e1000.cpp:129
ioforge_pci_device * device
Definition e1000.hpp:68
uint32_t rx_cur
Definition e1000.hpp:73
static E1000Module * getInstance()
Definition init.cpp:13
void receiveHandle()
Definition e1000.cpp:460
void write(uint16_t p_address, uint32_t p_value)
Definition e1000.cpp:119
void setNIC(struct ioforge_nic_service *nic)
Definition e1000.hpp:46
void enableInterrupt()
Definition e1000.cpp:206
boolean_t syncMacAddress()
Definition e1000.cpp:162
int getMacAddress(uint8_t mac[6])
Definition e1000.cpp:537
int last_readed_rx_cur
Definition e1000.hpp:78
void disableInterrupt()
Definition e1000.cpp:218
bool mac_ready
Definition e1000.hpp:66
uint32_t readEeprom(uint32_t addr)
Definition e1000.cpp:144
void linkup()
Definition e1000.cpp:396
void storeBufferToPool(int rx_id, void *vaddr)
Definition e1000.cpp:516
void unload() override
Definition init.cpp:11
void initTransmitterX()
Definition e1000.cpp:321
static void fireHandler()
Definition e1000.cpp:421
uint32_t mac_addr[6]
Definition e1000.hpp:67
uint32_t tx_cur
Definition e1000.hpp:74
boolean_t eerprom_exists
Definition e1000.hpp:69
void load() override
Definition init.cpp:21
uint8_t msix
Definition e1000.hpp:63
bool got_packet
Definition e1000.hpp:77
int sendPacket(const struct data_template data[], size_t count)
Definition e1000.cpp:358
void initReceiverX()
Definition e1000.cpp:238
uint32_t read(uint16_t p_address)
Definition e1000.cpp:125
ioforge_nic_service * nic
Definition e1000.hpp:79
E1000Module()
Definition init.cpp:9
IOforgePCI(const char *mod)
volatile uint64_t addr
Definition e1000.hpp:0
struct e1000_rx_comp __attribute__
struct fs_data data
Definition filesystem.h:1
volatile uint64_t addr
Definition e1000.hpp:24
volatile uint64_t paddr
Definition e1000.hpp:25
volatile uint16_t length
Definition e1000.hpp:16
volatile uint8_t errors
Definition e1000.hpp:19
volatile uint16_t checksum
Definition e1000.hpp:17
volatile uint16_t special
Definition e1000.hpp:20
volatile uint8_t status
Definition e1000.hpp:18
volatile uint64_t addr
Definition e1000.hpp:15
volatile uint8_t css
Definition e1000.hpp:34
volatile uint8_t status
Definition e1000.hpp:33
volatile uint16_t length
Definition e1000.hpp:30
volatile uint8_t cso
Definition e1000.hpp:31
volatile uint16_t special
Definition e1000.hpp:35
volatile uint64_t addr
Definition e1000.hpp:29
volatile uint8_t cmd
Definition e1000.hpp:32
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
uint8_t boolean_t
Definition type.h:89
unsigned long uint64_t
Definition type.h:25
unsigned char uint8_t
Definition type.h:7