#include <fibril.h>
#include <fibril_synch.h>
#include <adt/list.h>
#include <ddi.h>
#include <usb/usb.h>
#include <usb/host/device_keeper.h>
#include <usb/host/usb_endpoint_manager.h>
#include <usbhc_iface.h>
#include "batch.h"
#include "ohci_regs.h"
#include "root_hub.h"
#include "endpoint_list.h"
#include "hw_struct/hcca.h"
Go to the source code of this file.
Data Structures | |
struct | hc |
Main OHCI drier structure. More... | |
Defines | |
#define | OHCI_NEEDED_IRQ_COMMANDS 5 |
Typedefs | |
typedef hc | hc_t |
Main OHCI drier structure. | |
Functions | |
static hc_t * | fun_to_hc (ddf_fun_t *fun) |
Get and cast pointer to the driver data. | |
int | hc_add_endpoint (hc_t *instance, usb_address_t address, usb_endpoint_t ep, usb_speed_t speed, usb_transfer_type_t type, usb_direction_t direction, size_t max_packet_size, size_t size, unsigned interval) |
Create end register endpoint structures. | |
static void | hc_fini (hc_t *instance) |
Safely dispose host controller internal structures. | |
endpoint_t * | hc_get_endpoint (hc_t *instance, usb_address_t address, usb_endpoint_t endpoint, usb_direction_t direction, size_t *bw) |
Get access to endpoint structures. | |
int | hc_init (hc_t *instance, uintptr_t regs, size_t reg_size, bool interrupts) |
Initialize OHCI hc driver structure. | |
void | hc_interrupt (hc_t *instance, uint32_t status) |
Interrupt handling routine. | |
int | hc_register_hub (hc_t *instance, ddf_fun_t *hub_fun) |
Announce OHCI root hub to the DDF. | |
int | hc_remove_endpoint (hc_t *instance, usb_address_t address, usb_endpoint_t endpoint, usb_direction_t direction) |
Dequeue and delete endpoint structures. | |
int | hc_schedule (hc_t *instance, usb_transfer_batch_t *batch) |
Add USB transfer to the schedule. | |
void | hc_start_hw (hc_t *instance) |
OHCI hw initialization routine. |
Definition in file hc.h.