Ignore:
File:
1 edited

Legend:

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

    rae3a941 rb7fd2a0  
    11/*
    22 * Copyright (c) 2011 Jan Vesely
    3  * Copyright (c) 2018 Ondrej Hlavaty
    43 * All rights reserved.
    54 *
     
    5352#include "ohci_regs.h"
    5453#include "ohci_rh.h"
    55 #include "ohci_bus.h"
    5654#include "endpoint_list.h"
    5755#include "hw_struct/hcca.h"
     
    5957/** Main OHCI driver structure */
    6058typedef struct hc {
    61         /** Common hcd header */
    62         hc_device_t base;
    63 
    6459        /** Memory mapped I/O registers area */
    6560        ohci_regs_t *registers;
    66        
    6761        /** Host controller communication area structure */
    6862        hcca_t *hcca;
     
    7064        /** Transfer schedules */
    7165        endpoint_list_t lists[4];
     66        /** List of active transfers */
     67        list_t pending_batches;
    7268
    73         /** List of active endpoints */
    74         list_t pending_endpoints;
     69        /** Fibril for periodic checks if interrupts can't be used */
     70        fid_t interrupt_emulator;
    7571
    7672        /** Guards schedule and endpoint manipulation */
    7773        fibril_mutex_t guard;
    7874
     75        /** interrupts available */
     76        bool hw_interrupts;
     77
    7978        /** USB hub emulation structure */
    8079        ohci_rh_t rh;
    81 
    82         /** USB bookkeeping */
    83         ohci_bus_t bus;
    8480} hc_t;
    8581
    86 static inline hc_t *hcd_to_hc(hc_device_t *hcd)
    87 {
    88         assert(hcd);
    89         return (hc_t *) hcd;
    90 }
    91 
    92 extern errno_t hc_add(hc_device_t *, const hw_res_list_parsed_t *);
    93 extern errno_t hc_gen_irq_code(irq_code_t *, hc_device_t *,
    94     const hw_res_list_parsed_t *, int *);
    95 extern errno_t hc_gain_control(hc_device_t *);
    96 extern errno_t hc_start(hc_device_t *);
    97 extern errno_t hc_setup_roothub(hc_device_t *);
    98 extern errno_t hc_gone(hc_device_t *);
     82extern errno_t hc_init(hc_t *, const hw_res_list_parsed_t *, bool);
     83extern void hc_fini(hc_t *);
    9984
    10085extern void hc_enqueue_endpoint(hc_t *, const endpoint_t *);
    10186extern void hc_dequeue_endpoint(hc_t *, const endpoint_t *);
    10287
    103 extern errno_t ohci_hc_schedule(usb_transfer_batch_t *);
    104 extern errno_t ohci_hc_status(bus_t *, uint32_t *);
    105 extern void ohci_hc_interrupt(bus_t *, uint32_t);
     88errno_t ohci_hc_gen_irq_code(irq_code_t *code, const hw_res_list_parsed_t *hw_res, int *irq);
     89
     90extern void ohci_hc_interrupt(hcd_t *, uint32_t);
     91extern errno_t ohci_hc_status(hcd_t *, uint32_t *);
     92extern errno_t ohci_hc_schedule(hcd_t *, usb_transfer_batch_t *);
    10693
    10794#endif
Note: See TracChangeset for help on using the changeset viewer.