Changeset df6ded8 in mainline for uspace/drv/bus/usb/ohci/hc.h


Ignore:
Timestamp:
2018-02-28T16:37:50Z (6 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1b20da0
Parents:
f5e5f73 (diff), b2dca8de (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Jakub Jermar <jakub@…> (2018-02-28 16:06:42)
git-committer:
Jakub Jermar <jakub@…> (2018-02-28 16:37:50)
Message:

Merge github.com:helenos-xhci-team/helenos

This commit merges support for USB 3 and generally refactors, fixes,
extends and cleans up the existing USB framework.

Notable additions and features:

  • new host controller driver has been implemented to control various xHC models (among others, NEC Renesas uPD720200)
  • isochronous data transfer mode
  • support for explicit USB device removal
  • USB tablet driver
File:
1 edited

Legend:

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

    rf5e5f73 rdf6ded8  
    11/*
    22 * Copyright (c) 2011 Jan Vesely
     3 * Copyright (c) 2018 Ondrej Hlavaty
    34 * All rights reserved.
    45 *
     
    5253#include "ohci_regs.h"
    5354#include "ohci_rh.h"
     55#include "ohci_bus.h"
    5456#include "endpoint_list.h"
    5557#include "hw_struct/hcca.h"
     
    5759/** Main OHCI driver structure */
    5860typedef struct hc {
     61        /** Common hcd header */
     62        hc_device_t base;
     63
    5964        /** Memory mapped I/O registers area */
    6065        ohci_regs_t *registers;
     66       
    6167        /** Host controller communication area structure */
    6268        hcca_t *hcca;
     
    6470        /** Transfer schedules */
    6571        endpoint_list_t lists[4];
    66         /** List of active transfers */
    67         list_t pending_batches;
    6872
    69         /** Fibril for periodic checks if interrupts can't be used */
    70         fid_t interrupt_emulator;
     73        /** List of active endpoints */
     74        list_t pending_endpoints;
    7175
    7276        /** Guards schedule and endpoint manipulation */
    7377        fibril_mutex_t guard;
    7478
    75         /** interrupts available */
    76         bool hw_interrupts;
    77 
    7879        /** USB hub emulation structure */
    7980        ohci_rh_t rh;
     81
     82        /** USB bookkeeping */
     83        ohci_bus_t bus;
    8084} hc_t;
    8185
    82 extern errno_t hc_init(hc_t *, const hw_res_list_parsed_t *, bool);
    83 extern void hc_fini(hc_t *);
     86static inline hc_t *hcd_to_hc(hc_device_t *hcd)
     87{
     88        assert(hcd);
     89        return (hc_t *) hcd;
     90}
     91
     92extern errno_t hc_add(hc_device_t *, const hw_res_list_parsed_t *);
     93extern errno_t hc_gen_irq_code(irq_code_t *, hc_device_t *,
     94    const hw_res_list_parsed_t *, int *);
     95extern errno_t hc_gain_control(hc_device_t *);
     96extern errno_t hc_start(hc_device_t *);
     97extern errno_t hc_setup_roothub(hc_device_t *);
     98extern errno_t hc_gone(hc_device_t *);
    8499
    85100extern void hc_enqueue_endpoint(hc_t *, const endpoint_t *);
    86101extern void hc_dequeue_endpoint(hc_t *, const endpoint_t *);
    87102
    88 errno_t 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 errno_t ohci_hc_status(hcd_t *, uint32_t *);
    92 extern errno_t ohci_hc_schedule(hcd_t *, usb_transfer_batch_t *);
     103extern errno_t ohci_hc_schedule(usb_transfer_batch_t *);
     104extern errno_t ohci_hc_status(bus_t *, uint32_t *);
     105extern void ohci_hc_interrupt(bus_t *, uint32_t);
    93106
    94107#endif
Note: See TracChangeset for help on using the changeset viewer.