Changes in uspace/drv/bus/usb/usbhub/port.c [e882e3a:344a0ac] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbhub/port.c
re882e3a r344a0ac 35 35 36 36 #include <bool.h> 37 #include <devman.h> 37 38 #include <errno.h> 38 39 #include <str_error.h> … … 287 288 port->attached_device.fun = NULL; 288 289 289 ret = usb_hub_unregister_device(&hub->usb_device->hc_conn, 290 &port->attached_device); 291 if (ret != EOK) { 292 usb_log_warning("Failed to unregister address of the " 293 "removed device: %s.\n", str_error(ret)); 290 ret = usb_hc_connection_open(&hub->connection); 291 if (ret == EOK) { 292 ret = usb_hc_unregister_device(&hub->connection, 293 port->attached_device.address); 294 if (ret != EOK) { 295 usb_log_warning("Failed to unregister address of the " 296 "removed device: %s.\n", str_error(ret)); 297 } 298 ret = usb_hc_connection_close(&hub->connection); 299 if (ret != EOK) { 300 usb_log_warning("Failed to close hc connection %s.\n", 301 str_error(ret)); 302 } 303 304 } else { 305 usb_log_warning("Failed to open hc connection %s.\n", 306 str_error(ret)); 294 307 } 295 308 … … 388 401 { 389 402 usb_hub_port_t *port = arg; 390 assert(port);391 403 const int rc = 392 404 usb_hub_port_set_feature(port, USB_HUB_FEATURE_PORT_RESET); … … 425 437 426 438 const int rc = usb_hc_new_device_wrapper(data->hub->usb_device->ddf_dev, 427 &data->hub-> usb_device->hc_conn, data->speed, enable_port_callback,439 &data->hub->connection, data->speed, enable_port_callback, 428 440 data->port, &new_address, NULL, NULL, &child_fun); 429 441 430 if (rc == EOK) { 431 fibril_mutex_lock(&data->port->mutex); 432 data->port->attached_device.fun = child_fun; 433 data->port->attached_device.address = new_address; 434 fibril_mutex_unlock(&data->port->mutex); 435 436 usb_log_info("Detected new device on `%s' (port %zu), " 437 "address %d (handle %" PRIun ").\n", 438 data->hub->usb_device->ddf_dev->name, 439 data->port->port_number, new_address, child_fun->handle); 440 } else { 442 if (rc != EOK) { 441 443 usb_log_error("Failed registering device on port %zu: %s.\n", 442 444 data->port->port_number, str_error(rc)); 443 } 444 445 445 goto leave; 446 } 447 448 fibril_mutex_lock(&data->port->mutex); 449 data->port->attached_device.fun = child_fun; 450 data->port->attached_device.address = new_address; 451 fibril_mutex_unlock(&data->port->mutex); 452 453 usb_log_info("Detected new device on `%s' (port %zu), " 454 "address %d (handle %" PRIun ").\n", 455 data->hub->usb_device->ddf_dev->name, data->port->port_number, 456 new_address, child_fun->handle); 457 458 leave: 446 459 fibril_mutex_lock(&data->hub->pending_ops_mutex); 447 460 assert(data->hub->pending_ops_count > 0);
Note:
See TracChangeset
for help on using the changeset viewer.