Changes in uspace/lib/usb/src/hc.c [e8f826b:79ae36dd] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/src/hc.c
re8f826b r79ae36dd 81 81 82 82 connection->hc_handle = hc_handle; 83 connection->hc_ phone = -1;83 connection->hc_sess = NULL; 84 84 85 85 return EOK; … … 94 94 { 95 95 assert(connection); 96 97 if (usb_hc_connection_is_opened(connection)) {96 97 if (usb_hc_connection_is_opened(connection)) 98 98 return EBUSY; 99 } 100 101 int phone = devman_device_connect(connection->hc_handle, 0); 102 if (phone < 0) { 103 return phone; 104 } 105 106 connection->hc_phone = phone; 107 99 100 async_sess_t *sess = devman_device_connect(EXCHANGE_SERIALIZE, 101 connection->hc_handle, 0); 102 if (!sess) 103 return ENOMEM; 104 105 connection->hc_sess = sess; 108 106 return EOK; 109 107 } … … 117 115 { 118 116 assert(connection); 119 120 return (connection->hc_phone >= 0); 117 return (connection->hc_sess != NULL); 121 118 } 122 119 … … 134 131 } 135 132 136 int rc = async_hangup(connection->hc_ phone);133 int rc = async_hangup(connection->hc_sess); 137 134 if (rc != EOK) { 138 135 return rc; 139 136 } 140 137 141 connection->hc_ phone = -1;138 connection->hc_sess = NULL; 142 139 143 140 return EOK; … … 154 151 usb_address_t address, devman_handle_t *handle) 155 152 { 156 if (!usb_hc_connection_is_opened(connection)) {153 if (!usb_hc_connection_is_opened(connection)) 157 154 return ENOENT; 158 } 159 155 156 async_exch_t *exch = async_exchange_begin(connection->hc_sess); 157 160 158 sysarg_t tmp; 161 int rc = async_req_2_1(connection->hc_phone, 162 DEV_IFACE_ID(USBHC_DEV_IFACE), 159 int rc = async_req_2_1(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 163 160 IPC_M_USBHC_GET_HANDLE_BY_ADDRESS, 164 161 address, &tmp); 165 if ((rc == EOK) && (handle != NULL)) { 162 163 async_exchange_end(exch); 164 165 if ((rc == EOK) && (handle != NULL)) 166 166 *handle = tmp; 167 } 168 167 169 168 return rc; 170 169 } … … 177 176 usb_address_t usb_hc_get_address_by_handle(devman_handle_t dev_handle) 178 177 { 179 int parent_phone = devman_parent_device_connect(dev_handle, 178 async_sess_t *parent_sess = 179 devman_parent_device_connect(EXCHANGE_SERIALIZE, dev_handle, 180 180 IPC_FLAG_BLOCKING); 181 if (parent_phone < 0) { 182 return parent_phone; 183 } 184 181 if (!parent_sess) 182 return ENOMEM; 183 184 async_exch_t *exch = async_exchange_begin(parent_sess); 185 185 186 sysarg_t address; 186 187 int rc = async_req_2_1(parent_phone, DEV_IFACE_ID(USB_DEV_IFACE), 187 int rc = async_req_2_1(exch, DEV_IFACE_ID(USB_DEV_IFACE), 188 188 IPC_M_USB_GET_ADDRESS, 189 189 dev_handle, &address); 190 191 if (rc != EOK) {192 return rc;193 }194 195 async_hangup(parent_phone);196 190 191 async_exchange_end(exch); 192 async_hangup(parent_sess); 193 194 if (rc != EOK) 195 return rc; 196 197 197 return (usb_address_t) address; 198 198 } … … 240 240 int usb_hc_find(devman_handle_t device_handle, devman_handle_t *hc_handle) 241 241 { 242 int parent_phone = devman_parent_device_connect(device_handle, 242 async_sess_t *parent_sess = 243 devman_parent_device_connect(EXCHANGE_SERIALIZE, device_handle, 243 244 IPC_FLAG_BLOCKING); 244 if (parent_phone < 0) { 245 return parent_phone; 246 } 247 245 if (!parent_sess) 246 return ENOMEM; 247 248 async_exch_t *exch = async_exchange_begin(parent_sess); 249 248 250 devman_handle_t h; 249 int rc = async_req_1_1( parent_phone, DEV_IFACE_ID(USB_DEV_IFACE),251 int rc = async_req_1_1(exch, DEV_IFACE_ID(USB_DEV_IFACE), 250 252 IPC_M_USB_GET_HOST_CONTROLLER_HANDLE, &h); 251 252 async_ hangup(parent_phone);253 254 if (rc != EOK) {255 return rc;256 }257 258 if (hc_handle != NULL) {253 254 async_exchange_end(exch); 255 async_hangup(parent_sess); 256 257 if (rc != EOK) 258 return rc; 259 260 if (hc_handle != NULL) 259 261 *hc_handle = h; 260 } 261 262 262 263 return EOK; 263 264 }
Note:
See TracChangeset
for help on using the changeset viewer.