Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/src/recognise.c

    r3f0ef89d r0f21c0c  
    3434 */
    3535#include <sys/types.h>
    36 #include <fibril_synch.h>
    3736#include <usb/pipes.h>
    3837#include <usb/recognise.h>
     
    4241#include <stdio.h>
    4342#include <errno.h>
    44 #include <assert.h>
    4543
    4644static size_t device_name_index = 0;
    4745static FIBRIL_MUTEX_INITIALIZE(device_name_index_mutex);
    4846
    49 ddf_dev_ops_t child_ops = {
     47device_ops_t child_ops = {
    5048        .interfaces[USB_DEV_IFACE] = &usb_iface_hub_child_impl
    5149};
     
    310308        }
    311309
     310        /*
     311         * As a fallback, provide the simplest match id possible.
     312         */
     313        ADD_MATCHID_OR_RETURN(matches, 1, "usb&fallback");
     314
    312315        return EOK;
    313316}
     
    323326int usb_device_register_child_in_devman(usb_address_t address,
    324327    devman_handle_t hc_handle,
    325     ddf_dev_t *parent, devman_handle_t *child_handle,
    326     ddf_dev_ops_t *dev_ops, void *dev_data, ddf_fun_t **child_fun)
     328    device_t *parent, devman_handle_t *child_handle)
    327329{
    328330        size_t this_device_name_index;
     
    333335        fibril_mutex_unlock(&device_name_index_mutex);
    334336
    335         ddf_fun_t *child = NULL;
     337        device_t *child = NULL;
    336338        char *child_name = NULL;
    337339        int rc;
     
    350352        }
    351353
     354        child = create_device();
     355        if (child == NULL) {
     356                rc = ENOMEM;
     357                goto failure;
     358        }
     359
    352360        /*
    353361         * TODO: Once the device driver framework support persistent
     
    358366                goto failure;
    359367        }
    360 
    361         child = ddf_fun_create(parent, fun_inner, child_name);
    362         if (child == NULL) {
    363                 rc = ENOMEM;
    364                 goto failure;
    365         }
    366 
    367         if (dev_ops != NULL) {
    368                 child->ops = dev_ops;
    369         } else {
    370                 child->ops = &child_ops;
    371         }
    372 
    373         child->driver_data = dev_data;
     368        child->parent = parent;
     369        child->name = child_name;
     370        child->ops = &child_ops;
    374371
    375372        rc = usb_endpoint_pipe_start_session(&ctrl_pipe);
     
    388385        }
    389386
    390         rc = ddf_fun_bind(child);
     387        rc = child_device_register(child, parent);
    391388        if (rc != EOK) {
    392389                goto failure;
     
    395392        if (child_handle != NULL) {
    396393                *child_handle = child->handle;
    397         }
    398 
    399         if (child_fun != NULL) {
    400                 *child_fun = child;
    401394        }
    402395
     
    407400                child->name = NULL;
    408401                /* This takes care of match_id deallocation as well. */
    409                 ddf_fun_destroy(child);
     402                delete_device(child);
    410403        }
    411404        if (child_name != NULL) {
Note: See TracChangeset for help on using the changeset viewer.