Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
ioforge_usb.h
Go to the documentation of this file.
1#ifndef __SYS__IOFORGE__IOFORGE_USB_H_
2#define __SYS__IOFORGE__IOFORGE_USB_H_
3
4#include "ioforge.h"
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
14
16 void (*send)(uint32_t addr, uint8_t endpoint, uint32_t data_phys,
17 size_t request_size, uint32_t response_phys,
18 size_t response_size);
19};
20
26
28 uint8_t address; // bit[3:0]=nomor, bit[7]=1→IN / 0→OUT
29 uint8_t attributes; // bit[1:0]: 00=Control 01=Iso 10=Bulk 11=Interrupt
30 uint16_t max_packet; // maksimal byte per transfer
31 uint8_t interval; // polling interval (ms, untuk Interrupt/Iso)
32};
33
36 const char serial_number[64];
37
38 // usb device descriptor
41 uint8_t usb_version; // 0x10=USB1.1 0x20=USB2.0 0x30=USB3.0
46
47 uint8_t addr; // device address di bus (1–127)
48 uint8_t port; // port pada parent hub/controller
49 uint8_t speed; // USB_SPEED_{LOW, FULL, HIGH, SUPER}
51
54
55 void* pipe; // InterruptPipe (c++)
56};
57
60
61typedef void (*ioforge_usb_visitor_fn)(struct ioforge_usb_device* dev,
62 void* ctx);
63
65 uint16_t devclass,
67 void* ctx);
68#ifdef __cplusplus
69}
70#endif
71
72#endif // __SYS__IOFORGE__IOFORGE_PCI_H_
volatile uint64_t addr
Definition e1000.hpp:0
void(* ioforge_usb_visitor_fn)(struct ioforge_usb_device *dev, void *ctx)
Definition ioforge_usb.h:61
ioforge_usb_version
Definition ioforge_usb.h:10
@ IoForgeUSB_VERSION_2
Definition ioforge_usb.h:11
@ IoForgeUSB_VERSION_3
Definition ioforge_usb.h:12
void ioforge_find_usb_device_by_devclass(struct ioforge_device *node, uint16_t devclass, ioforge_usb_visitor_fn callback, void *ctx)
struct ioforge_device * ioforge_get_usb_devices_root()
struct ioforge_device * ioforge_get_usb_ctrl_root()
void(* send)(uint32_t addr, uint8_t endpoint, uint32_t data_phys, size_t request_size, uint32_t response_phys, size_t response_size)
Definition ioforge_usb.h:16
struct UsbControllerOp ops
Definition ioforge_usb.h:23
struct ioforge_device service
Definition ioforge_usb.h:22
struct ioforge_device base
Definition ioforge_usb.h:35
struct ioforge_usb_controller_service * controller
Definition ioforge_usb.h:52
struct ioforge_usb_endpoint endpoints[16]
Definition ioforge_usb.h:53
const char serial_number[64]
Definition ioforge_usb.h:36
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
unsigned char uint8_t
Definition type.h:7