Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-rhd/port.c

    r6427cf67 r97e87de  
    3333 */
    3434#include <errno.h>
    35 #include <str_error.h>
    3635
    3736#include <usb/usb.h>    /* usb_address_t */
    38 #include <usb/usbdevice.h>
    39 #include <usb/hub.h>
    40 #include <usb/request.h>
     37#include <usb/usbdrv.h> /* usb_drv_*     */
    4138#include <usb/debug.h>
    42 #include <usb/recognise.h>
    4339
    4440#include "port.h"
     
    6056        port->attached_device = 0;
    6157        port->rh = rh;
    62         int rc = usb_hc_connection_initialize_from_device(
    63             &port->hc_connection, rh);
    64         if (rc != EOK) {
    65                 usb_log_error("Failed to initialize connection to HC.");
    66                 return rc;
    67         }
     58        port->hc_phone = parent_phone;
    6859
    6960        port->checker = fibril_create(uhci_port_check, port);
     
    10596
    10697                if (port_status & STATUS_CONNECTED_CHANGED) {
    107                         int rc = usb_hc_connection_open(
    108                             &port_instance->hc_connection);
    109                         if (rc != EOK) {
    110                                 usb_log_error("Failed to connect to HC.");
    111                                 goto next;
    112                         }
    113 
    11498                        if (port_status & STATUS_CONNECTED) {
    11599                                /* new device */
     
    118102                                uhci_port_remove_device(port_instance);
    119103                        }
    120 
    121                         rc = usb_hc_connection_close(
    122                             &port_instance->hc_connection);
    123                         if (rc != EOK) {
    124                                 usb_log_error("Failed to disconnect from HC.");
    125                                 goto next;
    126                         }
    127104                }
    128         next:
    129105                async_usleep(port_instance->wait_period_usec);
    130106        }
     
    135111{
    136112        assert(port);
    137         assert(usb_hc_connection_is_opened(&port->hc_connection));
     113        assert(port->hc_phone);
    138114
    139115        usb_log_info("Adding new device on port %d.\n", port->number);
    140116
    141117        /* get address of the future device */
    142         const usb_address_t usb_address = usb_hc_request_address(
    143             &port->hc_connection, true);
     118        const usb_address_t usb_address = usb_drv_request_address(port->hc_phone);
    144119
    145120        if (usb_address <= 0) {
     
    151126
    152127        /* get default address */
    153         int ret = usb_hc_reserve_default_address(&port->hc_connection, true);
     128        int ret = usb_drv_reserve_default_address(port->hc_phone);
    154129        if (ret != EOK) {
    155130                usb_log_error("Failed to reserve default address on port %d.\n",
    156131                    port->number);
    157                 int ret2 = usb_hc_unregister_device(&port->hc_connection,
    158                     usb_address);
     132                int ret2 =
     133                  usb_drv_release_address(port->hc_phone, usb_address);
    159134                if (ret2 != EOK) {
    160135                        usb_log_fatal("Failed to return requested address on port %d.\n",
     
    197172        }
    198173
    199         /*
    200          * Initialize connection to the device.
    201          */
    202         /* FIXME: check for errors. */
    203         usb_device_connection_t new_dev_connection;
    204         usb_endpoint_pipe_t new_dev_ctrl_pipe;
    205         usb_device_connection_initialize_on_default_address(
    206             &new_dev_connection, &port->hc_connection);
    207         usb_endpoint_pipe_initialize_default_control(&new_dev_ctrl_pipe,
    208             &new_dev_connection);
    209 
    210         /*
    211          * Assign new address to the device. This function updates
    212          * the backing connection to still point to the same device.
    213          */
    214         /* FIXME: check for errors. */
    215         usb_endpoint_pipe_start_session(&new_dev_ctrl_pipe);
    216         ret = usb_request_set_address(&new_dev_ctrl_pipe, usb_address);
    217         usb_endpoint_pipe_end_session(&new_dev_ctrl_pipe);
     174        /* assign address to device */
     175        ret = usb_drv_req_set_address(port->hc_phone, 0, usb_address);
    218176
    219177        if (ret != EOK) { /* address assigning went wrong */
    220178                usb_log_error("Failed(%d) to assign address to the device.\n", ret);
    221179                uhci_port_set_enabled(port, false);
    222                 int release = usb_hc_release_default_address(&port->hc_connection);
     180                int release = usb_drv_release_default_address(port->hc_phone);
    223181                if (release != EOK) {
    224182                        usb_log_error("Failed to release default address on port %d.\n",
     
    234192
    235193        /* release default address */
    236         ret = usb_hc_release_default_address(&port->hc_connection);
     194        ret = usb_drv_release_default_address(port->hc_phone);
    237195        if (ret != EOK) {
    238196                usb_log_error("Failed to release default address on port %d.\n",
     
    246204        assert(port->attached_device == 0);
    247205
    248         ret = usb_device_register_child_in_devman(new_dev_connection.address,
    249             new_dev_connection.hc_handle, port->rh, &port->attached_device);
     206        ret = usb_drv_register_child_in_devman(port->hc_phone, port->rh,
     207          usb_address, &port->attached_device);
    250208
    251209        if (ret != EOK) { /* something went wrong */
     
    257215                port->number, usb_address, port->attached_device);
    258216
    259         /*
    260          * Register the device in the host controller.
    261          */
    262         usb_hc_attached_device_t new_device = {
    263                 .address = new_dev_connection.address,
    264                 .handle = port->attached_device
    265         };
    266 
    267         ret = usb_hc_register_device(&port->hc_connection, &new_device);
     217        ret =
     218          usb_drv_bind_address(port->hc_phone, usb_address, port->attached_device);
    268219        // TODO: proper error check here
    269220        assert(ret == EOK);
Note: See TracChangeset for help on using the changeset viewer.