Changeset eb1a2f4 in mainline for uspace/drv/usbmid/usbmid.c
- Timestamp:
- 2011-02-22T23:30:56Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3b5d1535, a9c674e0
- Parents:
- dbe25f1 (diff), 664af708 (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbmid/usbmid.c
rdbe25f1 reb1a2f4 45 45 46 46 /** Callback for DDF USB interface. */ 47 static int usb_iface_get_address_impl(d evice_t *device, devman_handle_t handle,47 static int usb_iface_get_address_impl(ddf_fun_t *fun, devman_handle_t handle, 48 48 usb_address_t *address) 49 49 { 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); 68 51 } 69 52 70 53 /** Callback for DDF USB interface. */ 71 static int usb_iface_get_interface_impl(d evice_t *device, devman_handle_t handle,54 static int usb_iface_get_interface_impl(ddf_fun_t *fun, devman_handle_t handle, 72 55 int *iface_no) 73 56 { 74 assert( device);75 76 usbmid_interface_t *iface = device->driver_data;57 assert(fun); 58 59 usbmid_interface_t *iface = fun->driver_data; 77 60 assert(iface); 78 61 … … 91 74 92 75 93 static d evice_ops_t child_device_ops = {76 static ddf_dev_ops_t child_device_ops = { 94 77 .interfaces[USB_DEV_IFACE] = &child_usb_iface 95 78 }; 96 79 97 static d evice_ops_t mid_device_ops = {80 static ddf_dev_ops_t mid_device_ops = { 98 81 .interfaces[USB_DEV_IFACE] = &usb_iface_hub_impl 99 82 }; … … 105 88 * @retval NULL Error occured. 106 89 */ 107 usbmid_device_t *usbmid_device_create(d evice_t *dev)90 usbmid_device_t *usbmid_device_create(ddf_dev_t *dev) 108 91 { 109 92 usbmid_device_t *mid = malloc(sizeof(usbmid_device_t)); … … 133 116 134 117 mid->dev = dev; 135 dev->ops =&mid_device_ops;118 (void) &mid_device_ops; 136 119 137 120 return mid; … … 145 128 * @retval NULL Error occured. 146 129 */ 147 usbmid_interface_t *usbmid_interface_create(d evice_t *dev, int iface_no)130 usbmid_interface_t *usbmid_interface_create(ddf_fun_t *fun, int iface_no) 148 131 { 149 132 usbmid_interface_t *iface = malloc(sizeof(usbmid_interface_t)); … … 154 137 } 155 138 156 iface-> dev = dev;139 iface->fun = fun; 157 140 iface->interface_no = iface_no; 158 141 … … 172 155 const usb_standard_interface_descriptor_t *interface_descriptor) 173 156 { 174 d evice_t *child = NULL;157 ddf_fun_t *child = NULL; 175 158 char *child_name = NULL; 176 159 usbmid_interface_t *child_as_interface = NULL; 177 160 int rc; 178 179 /* Create the device. */180 child = create_device();181 if (child == NULL) {182 rc = ENOMEM;183 goto error_leave;184 }185 161 186 162 /* … … 196 172 } 197 173 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 198 183 child_as_interface = usbmid_interface_create(child, 199 184 (int) interface_descriptor->interface_number); … … 204 189 205 190 child->driver_data = child_as_interface; 206 child->parent = parent->dev;207 child->name = child_name;208 191 child->ops = &child_device_ops; 209 192 … … 215 198 } 216 199 217 rc = child_device_register(child, parent->dev);200 rc = ddf_fun_bind(child); 218 201 if (rc != EOK) { 219 202 goto error_leave; … … 226 209 child->name = NULL; 227 210 /* This takes care of match_id deallocation as well. */ 228 d elete_device(child);211 ddf_fun_destroy(child); 229 212 } 230 213 if (child_name != NULL) {
Note:
See TracChangeset
for help on using the changeset viewer.