Changeset eeca8a6 in mainline for uspace/lib/usbhost/src/ddf_helpers.c


Ignore:
Timestamp:
2018-01-16T19:22:58Z (7 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4603b35
Parents:
47e9494
Message:

usb: speed moved from default address reservation to enumeration callback

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhost/src/ddf_helpers.c

    r47e9494 reeca8a6  
    117117 *
    118118 * @param fun DDF function of the device (hub) requesting the address.
    119  * @param speed An USB speed of the device for which the address is reserved.
    120  */
    121 static int reserve_default_address(ddf_fun_t *fun, usb_speed_t speed)
     119 */
     120static int reserve_default_address(ddf_fun_t *fun)
    122121{
    123122        assert(fun);
     
    128127        assert(dev);
    129128
    130         usb_log_debug("Device %d requested default address at %s speed",
    131             dev->address, usb_str_speed(speed));
    132         return bus_reserve_default_address(hcd->bus, speed);
     129        usb_log_debug("Device %d requested default address", dev->address);
     130        return bus_reserve_default_address(hcd->bus, dev);
    133131}
    134132
     
    148146
    149147        usb_log_debug("Device %d released default address", dev->address);
    150         bus_release_default_address(hcd->bus);
     148        bus_release_default_address(hcd->bus, dev);
    151149
    152150        return EOK;
     
    157155 *
    158156 * @param fun DDF function of the device (hub) requesting the address.
    159  */
    160 static int device_enumerate(ddf_fun_t *fun, unsigned port)
     157 * @param speed USB speed of the new device
     158 */
     159static int device_enumerate(ddf_fun_t *fun, unsigned port, usb_speed_t speed)
    161160{
    162161        assert(fun);
     
    170169        int err;
    171170
    172         usb_log_debug("Hub %d reported a new USB device on port: %u",
    173             hub->address, port);
    174 
    175         device_t *dev = hcd_ddf_fun_create(hcd);
     171        usb_log_debug("Hub %d reported a new %s device on port: %u",
     172            hub->address, usb_str_speed(speed), port);
     173
     174        device_t *dev = hcd_ddf_fun_create(hcd, speed);
    176175        if (!dev) {
    177176                usb_log_error("Failed to create USB device function.");
     
    181180        dev->hub = hub;
    182181        dev->port = port;
     182        dev->speed = speed;
    183183
    184184        if ((err = bus_device_enumerate(dev))) {
     
    380380}
    381381
    382 device_t *hcd_ddf_fun_create(hc_device_t *hc)
     382device_t *hcd_ddf_fun_create(hc_device_t *hc, usb_speed_t speed)
    383383{
    384384        /* Create DDF function for the new device */
     
    398398        bus_device_init(dev, hc->bus);
    399399        dev->fun = fun;
     400        dev->speed = speed;
    400401        return dev;
    401402}
     
    464465        assert(hcd);
    465466
    466         if ((err = bus_reserve_default_address(hcd->bus, USB_SPEED_MAX))) {
    467                 usb_log_error("Failed to reserve default address for roothub setup: %s", str_error(err));
    468                 return err;
    469         }
    470 
    471         device_t *dev = hcd_ddf_fun_create(hcd);
     467        device_t *dev = hcd_ddf_fun_create(hcd, USB_SPEED_MAX);
    472468        if (!dev) {
    473469                usb_log_error("Failed to create function for the root hub.");
    474                 goto err_default_address;
     470                return ENOMEM;
    475471        }
    476472
     
    488484        }
    489485
    490         bus_release_default_address(hcd->bus);
    491486        return EOK;
    492487
     
    495490err_usb_dev:
    496491        hcd_ddf_fun_destroy(dev);
    497 err_default_address:
    498         bus_release_default_address(hcd->bus);
    499492        return err;
    500493}
Note: See TracChangeset for help on using the changeset viewer.