Changeset 233e68d in mainline for uspace/drv/usbmid


Ignore:
Timestamp:
2011-02-23T18:28:41Z (15 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e9e58ea3
Parents:
deece2f (diff), a9c674e0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Devel changes

Location:
uspace/drv/usbmid
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbmid/explore.c

    rdeece2f r233e68d  
    202202        if (interface_descriptors_count == (size_t) -1) {
    203203                usb_log_error("Problem parsing configuration descriptor.\n");
     204                free(config_descriptor_raw);
     205                free(interface_descriptors);
     206                return false;
     207        }
     208
     209        ddf_fun_t *ctl_fun = ddf_fun_create(dev->dev, fun_exposed, "ctl");
     210        if (ctl_fun == NULL) {
     211                usb_log_error("Failed to create control function.\n");
     212                free(config_descriptor_raw);
     213                free(interface_descriptors);
     214                return false;
     215        }
     216        rc = ddf_fun_bind(ctl_fun);
     217        if (rc != EOK) {
     218                usb_log_error("Failed to bind control function: %s.\n",
     219                    str_error(rc));
    204220                free(config_descriptor_raw);
    205221                free(interface_descriptors);
  • uspace/drv/usbmid/main.c

    rdeece2f r233e68d  
    4444#include "usbmid.h"
    4545
    46 static int usbmid_add_device(device_t *gen_dev)
     46static int usbmid_add_device(ddf_dev_t *gen_dev)
    4747{
    4848        usbmid_device_t *dev = usbmid_device_create(gen_dev);
     
    9999        printf(NAME ": USB multi interface device driver.\n");
    100100
    101         usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME);
    102         return driver_main(&mid_driver);
     101        usb_log_enable(USB_LOG_LEVEL_INFO, NAME);
     102        return ddf_driver_main(&mid_driver);
    103103}
    104104
  • uspace/drv/usbmid/usbmid.c

    rdeece2f r233e68d  
    4545
    4646/** Callback for DDF USB interface. */
    47 static int usb_iface_get_address_impl(device_t *device, devman_handle_t handle,
     47static int usb_iface_get_address_impl(ddf_fun_t *fun, devman_handle_t handle,
    4848    usb_address_t *address)
    4949{
    50         assert(device);
    51         device_t *parent = device->parent;
    52 
    53         /* Default error, device does not support this operation. */
    54         int rc = ENOTSUP;
    55 
    56         if (parent && parent->ops && parent->ops->interfaces[USB_DEV_IFACE]) {
    57                 usb_iface_t *usb_iface
    58                     = (usb_iface_t *) parent->ops->interfaces[USB_DEV_IFACE];
    59                 assert(usb_iface != NULL);
    60 
    61                 if (usb_iface->get_address) {
    62                         rc = usb_iface->get_address(parent, parent->handle,
    63                             address);
    64                 }
    65         }
    66 
    67         return rc;
     50        return usb_iface_get_address_hub_impl(fun, handle, address);
    6851}
    6952
    7053/** Callback for DDF USB interface. */
    71 static int usb_iface_get_interface_impl(device_t *device, devman_handle_t handle,
     54static int usb_iface_get_interface_impl(ddf_fun_t *fun, devman_handle_t handle,
    7255    int *iface_no)
    7356{
    74         assert(device);
    75 
    76         usbmid_interface_t *iface = device->driver_data;
     57        assert(fun);
     58
     59        usbmid_interface_t *iface = fun->driver_data;
    7760        assert(iface);
    7861
     
    9174
    9275
    93 static device_ops_t child_device_ops = {
     76static ddf_dev_ops_t child_device_ops = {
    9477        .interfaces[USB_DEV_IFACE] = &child_usb_iface
    9578};
    9679
    97 static device_ops_t mid_device_ops = {
     80static ddf_dev_ops_t mid_device_ops = {
    9881        .interfaces[USB_DEV_IFACE] = &usb_iface_hub_impl
    9982};
     
    10588 * @retval NULL Error occured.
    10689 */
    107 usbmid_device_t *usbmid_device_create(device_t *dev)
     90usbmid_device_t *usbmid_device_create(ddf_dev_t *dev)
    10891{
    10992        usbmid_device_t *mid = malloc(sizeof(usbmid_device_t));
     
    133116
    134117        mid->dev = dev;
    135         dev->ops = &mid_device_ops;
     118        (void) &mid_device_ops;
    136119
    137120        return mid;
     
    145128 * @retval NULL Error occured.
    146129 */
    147 usbmid_interface_t *usbmid_interface_create(device_t *dev, int iface_no)
     130usbmid_interface_t *usbmid_interface_create(ddf_fun_t *fun, int iface_no)
    148131{
    149132        usbmid_interface_t *iface = malloc(sizeof(usbmid_interface_t));
     
    154137        }
    155138
    156         iface->dev = dev;
     139        iface->fun = fun;
    157140        iface->interface_no = iface_no;
    158141
     
    172155    const usb_standard_interface_descriptor_t *interface_descriptor)
    173156{
    174         device_t *child = NULL;
     157        ddf_fun_t *child = NULL;
    175158        char *child_name = NULL;
    176159        usbmid_interface_t *child_as_interface = NULL;
    177160        int rc;
    178 
    179         /* Create the device. */
    180         child = create_device();
    181         if (child == NULL) {
    182                 rc = ENOMEM;
    183                 goto error_leave;
    184         }
    185161
    186162        /*
     
    196172        }
    197173
     174        /* Create the device. */
     175        child = ddf_fun_create(parent->dev, fun_inner, child_name);
     176        if (child == NULL) {
     177                rc = ENOMEM;
     178                goto error_leave;
     179        }
     180
     181
     182
    198183        child_as_interface = usbmid_interface_create(child,
    199184            (int) interface_descriptor->interface_number);
     
    204189
    205190        child->driver_data = child_as_interface;
    206         child->parent = parent->dev;
    207         child->name = child_name;
    208191        child->ops = &child_device_ops;
    209192
     
    215198        }
    216199
    217         rc = child_device_register(child, parent->dev);
     200        rc = ddf_fun_bind(child);
    218201        if (rc != EOK) {
    219202                goto error_leave;
     
    226209                child->name = NULL;
    227210                /* This takes care of match_id deallocation as well. */
    228                 delete_device(child);
     211                ddf_fun_destroy(child);
    229212        }
    230213        if (child_name != NULL) {
  • uspace/drv/usbmid/usbmid.h

    rdeece2f r233e68d  
    3737#define USBMID_H_
    3838
    39 #include <driver.h>
     39#include <ddf/driver.h>
    4040#include <usb/usb.h>
    4141#include <usb/pipes.h>
     
    4646typedef struct {
    4747        /** Device container. */
    48         device_t *dev;
     48        ddf_dev_t *dev;
    4949
    5050        /** Representation of USB wire. */
     
    5555
    5656typedef struct {
    57         /** Device container. */
    58         device_t *dev;
     57        /** Function container. */
     58        ddf_fun_t *fun;
    5959
    6060        /** Interface number. */
     
    6262} usbmid_interface_t;
    6363
    64 usbmid_device_t *usbmid_device_create(device_t *);
    65 usbmid_interface_t *usbmid_interface_create(device_t *, int);
     64usbmid_device_t *usbmid_device_create(ddf_dev_t *);
     65usbmid_interface_t *usbmid_interface_create(ddf_fun_t *, int);
    6666bool usbmid_explore_device(usbmid_device_t *);
    6767int usbmid_spawn_interface_child(usbmid_device_t *,
Note: See TracChangeset for help on using the changeset viewer.