Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci/uhci.h

    rea991e84 r67a1b78  
    11/*
    2  * Copyright (c) 2010 Vojtech Horky
     2 * Copyright (c) 2010 Jan Vesely
    33 * All rights reserved.
    44 *
     
    2626 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2727 */
    28 
    29 /** @addtogroup drvusbuhci
     28/** @addtogroup usb
    3029 * @{
    3130 */
     
    3635#define DRV_UHCI_UHCI_H
    3736
     37#include <fibril.h>
     38
     39#include <usb/addrkeep.h>
    3840#include <usbhc_iface.h>
    3941
    40 #define NAME "uhci"
     42#include "root_hub/root_hub.h"
     43#include "transfer_list.h"
    4144
    42 usbhc_iface_t uhci_iface;
     45typedef struct uhci_regs {
     46        uint16_t usbcmd;
     47#define UHCI_CMD_MAX_PACKET (1 << 7)
     48#define UHCI_CMD_CONFIGURE  (1 << 6)
     49#define UHCI_CMD_DEBUG  (1 << 5)
     50#define UHCI_CMD_FORCE_GLOBAL_RESUME  (1 << 4)
     51#define UHCI_CMD_FORCE_GLOBAL_SUSPEND  (1 << 3)
     52#define UHCI_CMD_GLOBAL_RESET  (1 << 2)
     53#define UHCI_CMD_HCRESET  (1 << 1)
     54#define UHCI_CMD_RUN_STOP  (1 << 0)
    4355
    44 int pci_get_my_registers(device_t *, uintptr_t *, size_t *, int *);
     56        uint16_t usbsts;
     57#define UHCI_STATUS_HALTED (1 << 5)
     58#define UHCI_STATUS_PROCESS_ERROR (1 << 4)
     59#define UHCI_STATUS_SYSTEM_ERROR (1 << 3)
     60#define UHCI_STATUS_RESUME (1 << 2)
     61#define UHCI_STATUS_ERROR_INTERRUPT (1 << 1)
     62#define UHCI_STATUS_INTERRUPT (1 << 0)
     63
     64        uint16_t usbintr;
     65        uint16_t frnum;
     66        uint32_t flbaseadd;
     67        uint8_t sofmod;
     68} regs_t;
     69
     70#define TRANSFER_QUEUES 4
     71#define UHCI_FRAME_LIST_COUNT 1024
     72#define UHCI_CLEANER_TIMEOUT 1000000
     73#define UHCI_DEBUGER_TIMEOUT 500000
     74
     75typedef struct uhci {
     76        usb_address_keeping_t address_manager;
     77        uhci_root_hub_t root_hub;
     78        volatile regs_t *registers;
     79
     80        link_pointer_t *frame_list;
     81
     82        transfer_list_t transfers[TRANSFER_QUEUES];
     83        fid_t cleaner;
     84        fid_t debug_checker;
     85} uhci_t;
     86
     87/* init uhci specifics in device.driver_data */
     88int uhci_init( device_t *device, void *regs );
     89
     90int uhci_destroy( device_t *device );
     91
     92int uhci_transfer(
     93  device_t *dev,
     94  usb_target_t target,
     95  usb_transfer_type_t transfer_type,
     96        bool toggle,
     97  usb_packet_id pid,
     98  void *buffer, size_t size,
     99  usbhc_iface_transfer_out_callback_t callback_out,
     100  usbhc_iface_transfer_in_callback_t callback_in,
     101  void *arg );
    45102
    46103#endif
Note: See TracChangeset for help on using the changeset viewer.