Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
EHCIModule Class Reference

#include <ehci.hpp>

Inheritance diagram for EHCIModule:
IOforgePCI IOForge

Public Member Functions

 EHCIModule ()
 
void setup ()
 
void load ()
 
void unload ()
 
void reset_device ()
 
void stop_device ()
 
void start_device ()
 
void init_periodic ()
 
void start_periodic ()
 
void stop_periodic ()
 
void probe ()
 
void port_reset (int port)
 
void send_async_with_response (uint8_t addr, uint8_t endpoint, uint32_t data_phys, size_t size, uint32_t response, size_t response_size)
 
void insert_periodic (ehci_queue_head_node_t *qh_node, uint16_t interval_ms)
 
void procces_async (ehci_queue_task_descriptor *qtd)
 
void assign_address (int address)
 
void usb_get_descriptor (uint8_t addr, uint8_t type, uint8_t index, uint8_t len, uint8_t *data)
 
void set_controller (ioforge_usb_controller_service *controller)
 
void usb_get_string_descriptor (uint8_t addr, uint8_t index, char *data, size_t size)
 
void init_controller ()
 
boolean_t retrieve_qh (ehci_queue_head_node_t **out)
 
boolean_t retrieve_qtd (ehci_queue_task_descriptor_node_t **out)
 
void store_qh (ehci_queue_head_node_t **in)
 
void store_qtd (ehci_queue_task_descriptor_node_t **in)
 
- Public Member Functions inherited from IOforgePCI
 IOforgePCI (const char *mod)
 
struct ioforge_pci_devicefindDevice (uint16_t vendor_id, uint16_t device_id)
 
- Public Member Functions inherited from IOForge
 IOForge (const char *mod)
 

Static Public Member Functions

static void fireHandler ()
 
static EHCIModulegetInstance ()
 

Private Member Functions

void push_to_qh (ehci_queue_head_node_t *qh_node)
 
void pop_from_qh (ehci_queue_head_node_t *qh)
 
void call_completion_callback (ioforge_device *dev)
 

Private Attributes

ioforge_pci_devicedevice
 
ehci_operationehci_op
 
uint32_thcsparam
 
uint32_thccparam
 
boolean_t is_trasaction_is_running
 
ehci_queue_headqh1
 
ehci_queue_headqh2
 
uintptr_t qh1_paddr
 
uintptr_t qh2_paddr
 
uint32_tframelist
 
ioforge_usb_controller_servicecontroller
 

Additional Inherited Members

- Protected Attributes inherited from IOForge
const char * mod
 

Detailed Description

Definition at line 193 of file ehci.hpp.

Constructor & Destructor Documentation

◆ EHCIModule()

EHCIModule::EHCIModule ( )

Definition at line 8 of file init.cpp.

References IOforgePCI::IOforgePCI().

Referenced by fireHandler(), getInstance(), and unload().

Member Function Documentation

◆ assign_address()

void EHCIModule::assign_address ( int address)

Definition at line 781 of file ehci.cpp.

References address, cmd, log, IOForge::mod, send_async_with_response(), and USB_SETUP_PACKET_SET_ADDRESS.

Referenced by probe().

◆ call_completion_callback()

◆ fireHandler()

void EHCIModule::fireHandler ( )
static

Definition at line 868 of file ehci.cpp.

References EHCIModule(), getInstance(), ioforge_get_usb_devices_root(), log, and status.

Referenced by load().

◆ getInstance()

EHCIModule * EHCIModule::getInstance ( )
static

Definition at line 10 of file init.cpp.

References EHCIModule(), and instance.

Referenced by fireHandler().

◆ init_controller()

◆ init_periodic()

◆ insert_periodic()

void EHCIModule::insert_periodic ( ehci_queue_head_node_t * qh_node,
uint16_t interval_ms )

◆ load()

◆ pop_from_qh()

void EHCIModule::pop_from_qh ( ehci_queue_head_node_t * qh)
private

◆ port_reset()

void EHCIModule::port_reset ( int port)

Definition at line 569 of file ehci.cpp.

References ehci_op, EHCI_PORT_RESET, log, and IOForge::mod.

Referenced by probe().

◆ probe()

void EHCIModule::probe ( )

Definition at line 284 of file ehci.cpp.

References addr, ioforge_usb_device::addr, ioforge_usb_endpoint::address, assign_address(), ioforge_usb_device::base, usb_device_descriptor::bcdUSB, usb_device_descriptor::bDescriptorType, usb_endpoint_descriptor::bDescriptorType, usb_device_descriptor::bDeviceClass, usb_device_descriptor::bDeviceProtocol, usb_device_descriptor::bDeviceSubClass, usb_endpoint_descriptor::bEndpointAddress, usb_endpoint_descriptor::bInterval, usb_device_descriptor::bLength, usb_endpoint_descriptor::bLength, usb_endpoint_descriptor::bmAttributes, usb_device_descriptor::bMaxPacketSize0, usb_device_descriptor::bNumConfigurations, ioforge_usb_device::class_code, config, controller, ioforge_usb_device::controller, data, ehci_op, EHCI_PORT_ENABLED, ioforge_usb_device::endpoints, ioforge_usb_device::ep_count, hcsparam, HCSPARAM_N_PORTS_MASK, iConfiguration, usb_device_descriptor::idProduct, usb_device_descriptor::idVendor, usb_device_descriptor::iManufacturer, ioforge_attach(), ioforge_get_usb_devices_root(), IOFORGE_USB_DEVICE, IoForgeUSB_VERSION_2, usb_device_descriptor::iProduct, usb_device_descriptor::iSerialNumber, kalloc(), log, ioforge_usb_device::max_power, IOForge::mod, ioforge_device::name, ioforge_usb_device::pipe, port_reset(), ioforge_usb_device::product_id, ioforge_usb_device::protocol, ptr, send_async_with_response(), serial2_printf(), ioforge_usb_device::serial_number, setup(), ioforge_usb_device::subclass_code, ioforge_device::type, usb_get_descriptor(), usb_get_string_descriptor(), ioforge_usb_device::usb_version, ioforge_usb_device::vendor_id, and usb_endpoint_descriptor::wMaxPacketSize.

Referenced by load().

◆ procces_async()

void EHCIModule::procces_async ( ehci_queue_task_descriptor * qtd)

◆ push_to_qh()

void EHCIModule::push_to_qh ( ehci_queue_head_node_t * qh_node)
private

◆ reset_device()

void EHCIModule::reset_device ( )

Definition at line 166 of file ehci.cpp.

References EHCI_CONTROLLER_RESET, ehci_op, log, and IOForge::mod.

Referenced by load().

◆ retrieve_qh()

boolean_t EHCIModule::retrieve_qh ( ehci_queue_head_node_t ** out)

◆ retrieve_qtd()

boolean_t EHCIModule::retrieve_qtd ( ehci_queue_task_descriptor_node_t ** out)

Definition at line 913 of file ehci.cpp.

References EHCI_MAX_QTD_CACHE_MASK, h, idx, qtd_pool, qtd_ring, qtd_ring_head, and qtd_ring_tail.

Referenced by send_async_with_response().

◆ send_async_with_response()

◆ set_controller()

void EHCIModule::set_controller ( ioforge_usb_controller_service * controller)

Definition at line 892 of file ehci.cpp.

References controller.

◆ setup()

void EHCIModule::setup ( )

Referenced by probe(), and send_async_with_response().

◆ start_device()

void EHCIModule::start_device ( )

Definition at line 193 of file ehci.cpp.

References EHCI_CONTROLLER_START, EHCI_HC_HALTED_STATUS, ehci_op, log, and IOForge::mod.

Referenced by load().

◆ start_periodic()

void EHCIModule::start_periodic ( )

Definition at line 251 of file ehci.cpp.

References ehci_op, and EHCI_PERIODIC_SCHEDULE_ENABLE.

Referenced by init_periodic().

◆ stop_device()

void EHCIModule::stop_device ( )

Definition at line 177 of file ehci.cpp.

References ehci_op, log, and IOForge::mod.

Referenced by load().

◆ stop_periodic()

void EHCIModule::stop_periodic ( )

Definition at line 255 of file ehci.cpp.

References ehci_op, and EHCI_PERIODIC_SCHEDULE_ENABLE.

◆ store_qh()

void EHCIModule::store_qh ( ehci_queue_head_node_t ** in)

◆ store_qtd()

void EHCIModule::store_qtd ( ehci_queue_task_descriptor_node_t ** in)

◆ unload()

void EHCIModule::unload ( )
virtual

Implements IOforgePCI.

References addr, address, controller, data, EHCIModule(), len, size, and type.

◆ usb_get_descriptor()

void EHCIModule::usb_get_descriptor ( uint8_t addr,
uint8_t type,
uint8_t index,
uint8_t len,
uint8_t * data )

Definition at line 800 of file ehci.cpp.

References addr, cmd, data, len, send_async_with_response(), and type.

Referenced by probe(), and usb_get_string_descriptor().

◆ usb_get_string_descriptor()

void EHCIModule::usb_get_string_descriptor ( uint8_t addr,
uint8_t index,
char * data,
size_t size )

Definition at line 261 of file ehci.cpp.

References addr, buffer, ch, data, kalloc(), len, size, str(), and usb_get_descriptor().

Referenced by probe().

Field Documentation

◆ controller

ioforge_usb_controller_service* EHCIModule::controller
private

Definition at line 252 of file ehci.hpp.

Referenced by load(), probe(), set_controller(), and unload().

◆ device

ioforge_pci_device* EHCIModule::device
private

Definition at line 233 of file ehci.hpp.

Referenced by load().

◆ ehci_op

◆ framelist

uint32_t* EHCIModule::framelist
private

Definition at line 243 of file ehci.hpp.

Referenced by init_periodic().

◆ hccparam

uint32_t* EHCIModule::hccparam
private

Definition at line 236 of file ehci.hpp.

Referenced by load().

◆ hcsparam

uint32_t* EHCIModule::hcsparam
private

Definition at line 235 of file ehci.hpp.

Referenced by load(), and probe().

◆ is_trasaction_is_running

boolean_t EHCIModule::is_trasaction_is_running
private

Definition at line 237 of file ehci.hpp.

◆ qh1

ehci_queue_head* EHCIModule::qh1
private

Definition at line 239 of file ehci.hpp.

◆ qh1_paddr

uintptr_t EHCIModule::qh1_paddr
private

Definition at line 242 of file ehci.hpp.

◆ qh2

ehci_queue_head* EHCIModule::qh2
private

Definition at line 240 of file ehci.hpp.

◆ qh2_paddr

uintptr_t EHCIModule::qh2_paddr
private

Definition at line 242 of file ehci.hpp.


The documentation for this class was generated from the following files: