Changes in uspace/drv/vhc/hub.c [b476347:0b31409] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/vhc/hub.c

    rb476347 r0b31409  
    4040#include <stdlib.h>
    4141#include <driver.h>
    42 #include <usb/hub.h>
    43 #include <usb/recognise.h>
     42#include <usb/usbdrv.h>
    4443
    4544#include "hub.h"
     
    7170}
    7271
    73 static int pretend_port_rest(int unused, void *unused2)
    74 {
    75         return EOK;
    76 }
    77 
    7872/** Register root hub in devman.
    7973 *
     
    8579        device_t *hc_dev = (device_t *) arg;
    8680
    87         /*
    88          * Wait until parent device is properly initialized.
    89          */
    90         int phone;
     81        int hc;
    9182        do {
    92                 phone = devman_device_connect(hc_dev->handle, 0);
    93         } while (phone < 0);
    94         async_hangup(phone);
     83                hc = usb_drv_hc_connect(hc_dev, hc_dev->handle,
     84                    IPC_FLAG_BLOCKING);
     85        } while (hc < 0);
    9586
    96         usb_hc_connection_t hc_conn;
    97         usb_hc_connection_initialize(&hc_conn, hc_dev->handle);
     87        usb_drv_reserve_default_address(hc);
    9888
    99         usb_hc_connection_open(&hc_conn);
     89        usb_address_t hub_address = usb_drv_request_address(hc);
     90        usb_drv_req_set_address(hc, USB_ADDRESS_DEFAULT, hub_address);
    10091
    101         int rc = usb_hc_new_device_wrapper(hc_dev, &hc_conn, USB_SPEED_FULL,
    102             pretend_port_rest, 0, NULL,
    103             NULL, NULL);
    104         if (rc != EOK) {
    105                 usb_log_fatal("Failed to create root hub: %s.\n",
    106                     str_error(rc));
    107         }
     92        usb_drv_release_default_address(hc);
    10893
    109         usb_hc_connection_close(&hc_conn);
     94        devman_handle_t hub_handle;
     95        usb_drv_register_child_in_devman(hc, hc_dev, hub_address, &hub_handle);
     96        usb_drv_bind_address(hc, hub_address, hub_handle);
    11097
    111         return 0;
     98        return EOK;
    11299}
    113100       
Note: See TracChangeset for help on using the changeset viewer.