Changeset e4d7363 in mainline for uspace/drv/bus/usb/uhci/hc.c


Ignore:
Timestamp:
2017-06-22T21:34:39Z (7 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
91ca111
Parents:
cb89430
Message:

usbhost: refactor the initialization

Before that, drivers had to setup MMIO range multiple times, or even parse hw
resources themselves again. The former init method was split in half - init and
start. Init shall allocate and initialize inner structures, start shall start
the HC.

In the XHCI it is demonstrated how to isolate inner HC implementation from the
fact this driver is using libusbhost. It adds some boilerplate code, but
I think it leads to cleaner design.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/uhci/hc.c

    rcb89430 re4d7363  
    106106 * @return Error code.
    107107 */
    108 int uhci_hc_gen_irq_code(irq_code_t *code, const hw_res_list_parsed_t *hw_res)
     108int uhci_hc_gen_irq_code(irq_code_t *code, hcd_t *hcd, const hw_res_list_parsed_t *hw_res)
    109109{
    110110        assert(code);
     
    214214 * interrupt fibrils.
    215215 */
    216 int hc_init(hc_t *instance, const hw_res_list_parsed_t *hw_res, bool interrupts)
     216int hc_init(hc_t *instance, const hw_res_list_parsed_t *hw_res)
    217217{
    218218        assert(instance);
     
    222222            return EINVAL;
    223223
    224         instance->hw_interrupts = interrupts;
    225224        instance->hw_failures = 0;
    226225
     
    246245        }
    247246
     247        return EOK;
     248}
     249
     250void hc_start(hc_t *instance)
     251{
    248252        hc_init_hw(instance);
    249253        (void)hc_debug_checker;
    250254
    251255        uhci_rh_init(&instance->rh, instance->registers->ports, "uhci");
    252 
    253         return EOK;
    254256}
    255257
Note: See TracChangeset for help on using the changeset viewer.