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


Ignore:
Timestamp:
2017-12-14T23:01:57Z (6 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
837d53d
Parents:
bd05140
git-author:
Ondřej Hlavatý <aearsis@…> (2017-12-14 23:01:54)
git-committer:
Ondřej Hlavatý <aearsis@…> (2017-12-14 23:01:57)
Message:

usbhost bus: refactor the bus ops

This way, method names better represent the entity it is working with.
Their semantics was shifted a bit.

Regarding the tree of structures:

bus ← device ← endpoint ← batch

Previously, devices were kept in DDF function nodes, and endpoints had
pointer to the bus and device. Now, devices have pointer to bus,
endpoints don't.

Pointer to hcd_t in bus is WIP, and will be removed.

File:
1 edited

Legend:

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

    rbd05140 r6832245  
    101101                endpoint_desc->max_packet_size, endpoint_desc->usb2.polling_interval);
    102102
    103         return bus_add_endpoint(hcd->bus, dev, endpoint_desc, NULL);
     103        return bus_endpoint_add(dev, endpoint_desc, NULL);
    104104}
    105105
     
    128128                usb_str_direction(endpoint_desc->direction));
    129129
    130         endpoint_t *ep = bus_find_endpoint(hcd->bus, dev, target, endpoint_desc->direction);
     130        endpoint_t *ep = bus_find_endpoint(dev, target, endpoint_desc->direction);
    131131        if (!ep)
    132132                return ENOENT;
    133133
    134         return bus_remove_endpoint(hcd->bus, ep);
     134        return bus_endpoint_remove(ep);
    135135}
    136136
     
    362362                const int ret = ddf_fun_unbind(victim->fun);
    363363                if (ret == EOK) {
    364                         bus_remove_device(hcd->bus, hcd, victim);
     364                        bus_device_remove(victim);
    365365                        ddf_fun_destroy(victim->fun);
    366366                } else {
     
    374374}
    375375
    376 device_t *hcd_ddf_device_create(ddf_dev_t *hc, size_t device_size)
     376device_t *hcd_ddf_device_create(ddf_dev_t *hc, bus_t *bus)
    377377{
    378378        /* Create DDF function for the new device */
     
    384384
    385385        /* Create USB device node for the new device */
    386         device_t *dev = ddf_fun_data_alloc(fun, device_size);
     386        device_t *dev = ddf_fun_data_alloc(fun, bus->device_size);
    387387        if (!dev) {
    388388                ddf_fun_destroy(fun);
     
    390390        }
    391391
    392         device_init(dev);
     392        bus_device_init(dev, bus);
    393393        dev->fun = fun;
    394394        return dev;
     
    402402}
    403403
    404 int hcd_ddf_device_explore(hcd_t *hcd, device_t *device)
     404int hcd_ddf_device_explore(device_t *device)
    405405{
    406406        int err;
     
    421421        usb_log_debug("Device(%d): Requesting full device descriptor.",
    422422            device->address);
    423         ssize_t got = hcd_send_batch_sync(hcd, device, control_ep, USB_DIRECTION_IN,
     423        ssize_t got = hcd_send_batch_sync(device->bus->hcd, device, control_ep, USB_DIRECTION_IN,
    424424            (char *) &desc, sizeof(desc), *(uint64_t *)&get_device_desc,
    425425            "read device descriptor");
     
    458458        usb_log_info("Device(%d): Requested to be brought online.", dev->address);
    459459
    460         return bus_online_device(hcd->bus, hcd, dev);
     460        return bus_device_online(dev);
    461461}
    462462
     
    472472        usb_log_info("Device(%d): Requested to be taken offline.", dev->address);
    473473
    474         return bus_offline_device(hcd->bus, hcd, dev);
     474        return bus_device_offline(dev);
    475475}
    476476
     
    483483        assert(hc);
    484484
    485         device_t *dev = hcd_ddf_device_create(hc, hcd->bus->device_size);
     485        device_t *dev = hcd_ddf_device_create(hc, hcd->bus);
    486486        if (!dev) {
    487487                usb_log_error("Failed to create USB device function.");
     
    492492        dev->port = port;
    493493
    494         if ((err = bus_enumerate_device(hcd->bus, hcd, dev))) {
     494        if ((err = bus_device_enumerate(dev))) {
    495495                usb_log_error("Failed to initialize USB dev memory structures.");
    496496                return err;
     
    501501         */
    502502        if (!ddf_fun_get_name(dev->fun)) {
    503                 device_set_default_name(dev);
     503                bus_device_set_default_name(dev);
    504504        }
    505505
     
    538538        }
    539539
    540         device_t *dev = hcd_ddf_device_create(hc, hcd->bus->device_size);
     540        device_t *dev = hcd_ddf_device_create(hc, hcd->bus);
    541541        if (!dev) {
    542542                usb_log_error("Failed to create function for the root hub.");
     
    547547
    548548        /* Assign an address to the device */
    549         if ((err = bus_enumerate_device(hcd->bus, hcd, dev))) {
     549        if ((err = bus_device_enumerate(dev))) {
    550550                usb_log_error("Failed to enumerate roothub device: %s", str_error(err));
    551551                goto err_usb_dev;
Note: See TracChangeset for help on using the changeset viewer.