Changeset 7e1b130 in mainline for uspace/drv/bus/usb/usbhub/port.c


Ignore:
Timestamp:
2011-12-23T18:13:33Z (14 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3819ce5, b39eb79, f0b74b2
Parents:
2f0dd2a (diff), 153cc76a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

USB branch changes.

+ USB device drivers use single async session to host controller, this session (represented by usb_hc_connection_t) is used for both HC requests and to back usb device connection.
+ Pipe locking was removed. Reference counting was moved to usb_hc_connection_t. Every read/write operation uses separate parallel exchange thus any contention is resolved on hc side.

  • async_sess_t setup using EXCHANGE_PARALLEL uses one extra phone (session phone, each exch creates its own), thus the number of phones used by usb dvice driver might increase. Possible solutions are: make read/write calls atomic (all other calls are atomic) and use EXCHANGE_ATOMIC, any other solution provided by changes to async_sess_t.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbhub/port.c

    r2f0dd2a r7e1b130  
    288288        port->attached_device.fun = NULL;
    289289
    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));
     290        ret = usb_hub_unregister_device(&hub->usb_device->hc_conn,
     291            &port->attached_device);
     292        if (ret != EOK) {
     293                usb_log_warning("Failed to unregister address of the "
     294                    "removed device: %s.\n", str_error(ret));
    307295        }
    308296
     
    438426
    439427        const int rc = usb_hc_new_device_wrapper(data->hub->usb_device->ddf_dev,
    440             &data->hub->connection, data->speed, enable_port_callback,
     428            &data->hub->usb_device->hc_conn, data->speed, enable_port_callback,
    441429            data->port, &new_address, NULL, NULL, &child_fun);
    442430
Note: See TracChangeset for help on using the changeset viewer.