Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/hc.h

    r27205841 r6ce42e85  
    4848#include "transfer_list.h"
    4949
    50 /** UHCI I/O registers layout */
    5150typedef struct uhci_regs {
    52         /** Command register, controls HC behaviour */
    5351        uint16_t usbcmd;
    5452#define UHCI_CMD_MAX_PACKET (1 << 7)
     
    6159#define UHCI_CMD_RUN_STOP  (1 << 0)
    6260
    63         /** Status register, 1 means interrupt is asserted (if enabled) */
    6461        uint16_t usbsts;
    6562#define UHCI_STATUS_HALTED (1 << 5)
     
    7067#define UHCI_STATUS_INTERRUPT (1 << 0)
    7168
    72         /** Interrupt enabled registers */
    7369        uint16_t usbintr;
    7470#define UHCI_INTR_SHORT_PACKET (1 << 3)
     
    7773#define UHCI_INTR_CRC (1 << 0)
    7874
    79         /** Register stores frame number used in SOF packet */
    8075        uint16_t frnum;
    81 
    82         /** Pointer(physical) to the Frame List */
    8376        uint32_t flbaseadd;
    84 
    85         /** SOF modification to match external timers */
    8677        uint8_t sofmod;
    8778} regs_t;
    8879
    8980#define UHCI_FRAME_LIST_COUNT 1024
    90 #define UHCI_INT_EMULATOR_TIMEOUT 10000
     81#define UHCI_CLEANER_TIMEOUT 10000
    9182#define UHCI_DEBUGER_TIMEOUT 5000000
    9283#define UHCI_ALLOWED_HW_FAIL 5
    9384
    94 /* Main HC driver structure */
    9585typedef struct hc {
    96         /** USB bus driver, devices and addresses */
    9786        usb_device_keeper_t manager;
    98         /** USB bus driver, endpoints */
    9987        usb_endpoint_manager_t ep_manager;
    10088
    101         /** Addresses of I/O registers */
    10289        regs_t *registers;
    10390
    104         /** Frame List contains 1024 link pointers */
    10591        link_pointer_t *frame_list;
    10692
    107         /** List and queue of interrupt transfers */
     93        transfer_list_t transfers_bulk_full;
     94        transfer_list_t transfers_control_full;
     95        transfer_list_t transfers_control_slow;
    10896        transfer_list_t transfers_interrupt;
    109         /** List and queue of low speed control transfers */
    110         transfer_list_t transfers_control_slow;
    111         /** List and queue of full speed bulk transfers */
    112         transfer_list_t transfers_bulk_full;
    113         /** List and queue of full speed control transfers */
    114         transfer_list_t transfers_control_full;
    11597
    116         /** Pointer table to the above lists, helps during scheduling */
    11798        transfer_list_t *transfers[2][4];
    11899
    119         /** Code to be executed in kernel interrupt handler */
    120100        irq_code_t interrupt_code;
    121101
    122         /** Fibril periodically checking status register*/
    123         fid_t interrupt_emulator;
     102        fid_t cleaner;
     103        fid_t debug_checker;
     104        bool hw_interrupts;
     105        unsigned hw_failures;
    124106
    125         /** Indicator of hw interrupts availability */
    126         bool hw_interrupts;
    127 
    128         /** Number of hw failures detected. */
    129         unsigned hw_failures;
     107        ddf_fun_t *ddf_instance;
    130108} hc_t;
    131109
Note: See TracChangeset for help on using the changeset viewer.