Changes in uspace/lib/usbdev/src/hub.c [7711296:2179cf95] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/hub.c
r7711296 r2179cf95 76 76 { 77 77 CHECK_CONNECTION(connection); 78 78 79 79 async_exch_t *exch = async_exchange_begin(connection->hc_sess); 80 if (!exch) 81 return (usb_address_t)ENOMEM; 82 83 usb_address_t address = preferred; 84 const int ret = usbhc_request_address(exch, &address, strict, speed); 85 80 81 sysarg_t address; 82 int rc = async_req_4_1(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 83 IPC_M_USBHC_REQUEST_ADDRESS, preferred, strict, speed, &address); 84 86 85 async_exchange_end(exch); 87 return ret == EOK ? address : ret; 86 87 if (rc != EOK) 88 return (usb_address_t) rc; 89 90 return (usb_address_t) address; 88 91 } 89 92 … … 94 97 * @return Error code. 95 98 */ 96 int usb_hc_register_device(usb_hc_connection_t * connection,99 int usb_hc_register_device(usb_hc_connection_t * connection, 97 100 const usb_hub_attached_device_t *attached_device) 98 101 { 99 102 CHECK_CONNECTION(connection); 100 if (attached_device == NULL || attached_device->fun == NULL) 101 return EINVAL; 102 103 104 if (attached_device == NULL) 105 return EBADMEM; 106 103 107 async_exch_t *exch = async_exchange_begin(connection->hc_sess); 104 if (!exch) 105 return ENOMEM; 106 const int ret = usbhc_bind_address(exch, 108 int rc = async_req_3_0(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 109 IPC_M_USBHC_BIND_ADDRESS, 107 110 attached_device->address, attached_device->fun->handle); 108 111 async_exchange_end(exch); 109 110 return r et;112 113 return rc; 111 114 } 112 115 … … 121 124 { 122 125 CHECK_CONNECTION(connection); 123 126 124 127 async_exch_t *exch = async_exchange_begin(connection->hc_sess); 125 if (!exch) 126 return ENOMEM; 127 const int ret = usbhc_release_address(exch, address); 128 int rc = async_req_2_0(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 129 IPC_M_USBHC_RELEASE_ADDRESS, address); 128 130 async_exchange_end(exch); 129 130 return r et;131 132 return rc; 131 133 } 132 134 … … 219 221 * request or requests for descriptors when creating match ids). 220 222 */ 221 int usb_hc_new_device_wrapper(ddf_dev_t *parent, 222 usb_ hc_connection_t *connection, usb_speed_t dev_speed,223 int usb_hc_new_device_wrapper(ddf_dev_t *parent, usb_hc_connection_t *connection, 224 usb_speed_t dev_speed, 223 225 int (*enable_port)(void *arg), void *arg, usb_address_t *assigned_address, 224 226 ddf_dev_ops_t *dev_ops, void *new_dev_data, ddf_fun_t **new_fun) … … 227 229 return EINVAL; 228 230 231 // FIXME: this is awful, we are accessing directly the structure. 229 232 // TODO: Why not use provided connection? 230 usb_hc_connection_t hc_conn; 231 usb_hc_connection_initialize(&hc_conn, connection->hc_handle); 233 usb_hc_connection_t hc_conn = { 234 .hc_handle = connection->hc_handle, 235 .hc_sess = NULL 236 }; 232 237 233 238 int rc;
Note:
See TracChangeset
for help on using the changeset viewer.