Changes in uspace/drv/usbmid/usbmid.c [51f0e410:a6add7a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbmid/usbmid.c
r51f0e410 ra6add7a 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 … … 84 67 } 85 68 69 /** DDF interface of the child - interface function. */ 86 70 static usb_iface_t child_usb_iface = { 87 71 .get_hc_handle = usb_iface_get_hc_handle_hub_child_impl, … … 90 74 }; 91 75 92 93 static d evice_ops_t child_device_ops = {76 /** Operations for children - interface functions. */ 77 static ddf_dev_ops_t child_device_ops = { 94 78 .interfaces[USB_DEV_IFACE] = &child_usb_iface 95 79 }; 96 80 97 static device_ops_t mid_device_ops = { 81 /** Operations of the device itself. */ 82 static ddf_dev_ops_t mid_device_ops = { 98 83 .interfaces[USB_DEV_IFACE] = &usb_iface_hub_impl 99 84 }; … … 105 90 * @retval NULL Error occured. 106 91 */ 107 usbmid_device_t *usbmid_device_create(d evice_t *dev)92 usbmid_device_t *usbmid_device_create(ddf_dev_t *dev) 108 93 { 109 94 usbmid_device_t *mid = malloc(sizeof(usbmid_device_t)); … … 133 118 134 119 mid->dev = dev; 135 dev->ops =&mid_device_ops;120 (void) &mid_device_ops; 136 121 137 122 return mid; … … 145 130 * @retval NULL Error occured. 146 131 */ 147 usbmid_interface_t *usbmid_interface_create(d evice_t *dev, int iface_no)132 usbmid_interface_t *usbmid_interface_create(ddf_fun_t *fun, int iface_no) 148 133 { 149 134 usbmid_interface_t *iface = malloc(sizeof(usbmid_interface_t)); … … 154 139 } 155 140 156 iface-> dev = dev;141 iface->fun = fun; 157 142 iface->interface_no = iface_no; 158 143 … … 172 157 const usb_standard_interface_descriptor_t *interface_descriptor) 173 158 { 174 d evice_t *child = NULL;159 ddf_fun_t *child = NULL; 175 160 char *child_name = NULL; 176 161 usbmid_interface_t *child_as_interface = NULL; 177 162 int rc; 178 179 /* Create the device. */180 child = create_device();181 if (child == NULL) {182 rc = ENOMEM;183 goto error_leave;184 }185 163 186 164 /* … … 196 174 } 197 175 176 /* Create the device. */ 177 child = ddf_fun_create(parent->dev, fun_inner, child_name); 178 if (child == NULL) { 179 rc = ENOMEM; 180 goto error_leave; 181 } 182 183 184 198 185 child_as_interface = usbmid_interface_create(child, 199 186 (int) interface_descriptor->interface_number); … … 204 191 205 192 child->driver_data = child_as_interface; 206 child->parent = parent->dev;207 child->name = child_name;208 193 child->ops = &child_device_ops; 209 194 … … 215 200 } 216 201 217 rc = child_device_register(child, parent->dev);202 rc = ddf_fun_bind(child); 218 203 if (rc != EOK) { 219 204 goto error_leave; … … 226 211 child->name = NULL; 227 212 /* This takes care of match_id deallocation as well. */ 228 d elete_device(child);213 ddf_fun_destroy(child); 229 214 } 230 215 if (child_name != NULL) {
Note:
See TracChangeset
for help on using the changeset viewer.