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