Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ohci/hc.h

    r68e5406 r129b821f  
    5252#include "ohci_regs.h"
    5353#include "ohci_rh.h"
     54#include "ohci_bus.h"
    5455#include "endpoint_list.h"
    5556#include "hw_struct/hcca.h"
     
    5758/** Main OHCI driver structure */
    5859typedef struct hc {
     60        /** Common hcd header */
     61        hc_device_t base;
     62
    5963        /** Memory mapped I/O registers area */
    6064        ohci_regs_t *registers;
     65       
    6166        /** Host controller communication area structure */
    6267        hcca_t *hcca;
     
    6469        /** Transfer schedules */
    6570        endpoint_list_t lists[4];
    66         /** List of active transfers */
    67         list_t pending_batches;
    6871
    69         /** Fibril for periodic checks if interrupts can't be used */
    70         fid_t interrupt_emulator;
     72        /** List of active endpoints */
     73        list_t pending_endpoints;
    7174
    7275        /** Guards schedule and endpoint manipulation */
    7376        fibril_mutex_t guard;
    7477
    75         /** interrupts available */
    76         bool hw_interrupts;
    77 
    7878        /** USB hub emulation structure */
    7979        ohci_rh_t rh;
     80
     81        /** USB bookkeeping */
     82        ohci_bus_t bus;
    8083} hc_t;
    8184
    82 extern int hc_init(hc_t *, const hw_res_list_parsed_t *, bool);
    83 extern void hc_fini(hc_t *);
     85static inline hc_t * hcd_to_hc(hc_device_t *hcd)
     86{
     87        assert(hcd);
     88        return (hc_t *) hcd;
     89}
     90
     91extern int hc_add(hc_device_t *, const hw_res_list_parsed_t *);
     92extern int hc_gen_irq_code(irq_code_t *, hc_device_t *, const hw_res_list_parsed_t *);
     93extern int hc_gain_control(hc_device_t *);
     94extern int hc_start(hc_device_t *);
     95extern int hc_setup_roothub(hc_device_t *);
     96extern int hc_gone(hc_device_t *);
    8497
    8598extern void hc_enqueue_endpoint(hc_t *, const endpoint_t *);
    8699extern void hc_dequeue_endpoint(hc_t *, const endpoint_t *);
    87100
    88 int ohci_hc_gen_irq_code(irq_code_t *code, const hw_res_list_parsed_t *hw_res, int *irq);
    89 
    90 extern void ohci_hc_interrupt(hcd_t *, uint32_t);
    91 extern int ohci_hc_status(hcd_t *, uint32_t *);
    92 extern int ohci_hc_schedule(hcd_t *, usb_transfer_batch_t *);
     101extern int ohci_hc_schedule(usb_transfer_batch_t *);
     102extern int ohci_hc_status(bus_t *, uint32_t *);
     103extern void ohci_hc_interrupt(bus_t *, uint32_t);
    93104
    94105#endif
Note: See TracChangeset for help on using the changeset viewer.