Changes in / [f294926:69b1f3d] in mainline
- Location:
- uspace
- Files:
-
- 4 deleted
- 5 edited
-
drv/uhci-rhd/port.c (modified) (10 diffs)
-
drv/uhci-rhd/port.h (modified) (2 diffs)
-
lib/usb/Makefile (modified) (2 diffs)
-
lib/usb/include/usb/hub.h (deleted)
-
lib/usb/include/usb/pipes.h (modified) (3 diffs)
-
lib/usb/include/usb/usbdevice.h (deleted)
-
lib/usb/src/hub.c (deleted)
-
lib/usb/src/pipes.c (modified) (1 diff)
-
lib/usb/src/usbdevice.c (deleted)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-rhd/port.c
rf294926 r69b1f3d 36 36 37 37 #include <usb/usb.h> /* usb_address_t */ 38 #include <usb/usbdevice.h> 39 #include <usb/hub.h> 40 #include <usb/request.h> 38 #include <usb/usbdrv.h> /* usb_drv_* */ 41 39 #include <usb/debug.h> 42 40 #include <usb/recognise.h> … … 60 58 port->attached_device = 0; 61 59 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 } 60 port->hc_phone = parent_phone; 68 61 69 62 port->checker = fibril_create(uhci_port_check, port); … … 105 98 106 99 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 114 100 if (port_status & STATUS_CONNECTED) { 115 101 /* new device */ … … 118 104 uhci_port_remove_device(port_instance); 119 105 } 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 }127 106 } 128 next:129 107 async_usleep(port_instance->wait_period_usec); 130 108 } … … 135 113 { 136 114 assert(port); 137 assert( usb_hc_connection_is_opened(&port->hc_connection));115 assert(port->hc_phone); 138 116 139 117 usb_log_info("Adding new device on port %d.\n", port->number); 140 118 141 119 /* get address of the future device */ 142 const usb_address_t usb_address = usb_ hc_request_address(&port->hc_connection);120 const usb_address_t usb_address = usb_drv_request_address(port->hc_phone); 143 121 144 122 if (usb_address <= 0) { … … 150 128 151 129 /* get default address */ 152 int ret = usb_ hc_reserve_default_address(&port->hc_connection);130 int ret = usb_drv_reserve_default_address(port->hc_phone); 153 131 if (ret != EOK) { 154 132 usb_log_error("Failed to reserve default address on port %d.\n", 155 133 port->number); 156 int ret2 = usb_hc_unregister_device(&port->hc_connection,157 usb_address);134 int ret2 = 135 usb_drv_release_address(port->hc_phone, usb_address); 158 136 if (ret2 != EOK) { 159 137 usb_log_fatal("Failed to return requested address on port %d.\n", … … 196 174 } 197 175 198 /* 199 * Initialize connection to the device. 200 */ 201 /* FIXME: check for errors. */ 202 usb_device_connection_t new_dev_connection; 203 usb_endpoint_pipe_t new_dev_ctrl_pipe; 204 usb_device_connection_initialize_on_default_address( 205 &new_dev_connection, &port->hc_connection); 206 usb_endpoint_pipe_initialize_default_control(&new_dev_ctrl_pipe, 207 &new_dev_connection); 208 209 /* 210 * Assign new address to the device. This function updates 211 * the backing connection to still point to the same device. 212 */ 213 /* FIXME: check for errors. */ 214 usb_endpoint_pipe_start_session(&new_dev_ctrl_pipe); 215 ret = usb_request_set_address(&new_dev_ctrl_pipe, usb_address); 216 usb_endpoint_pipe_end_session(&new_dev_ctrl_pipe); 176 /* assign address to device */ 177 ret = usb_drv_req_set_address(port->hc_phone, 0, usb_address); 217 178 218 179 if (ret != EOK) { /* address assigning went wrong */ 219 180 usb_log_error("Failed(%d) to assign address to the device.\n", ret); 220 181 uhci_port_set_enabled(port, false); 221 int release = usb_ hc_release_default_address(&port->hc_connection);182 int release = usb_drv_release_default_address(port->hc_phone); 222 183 if (release != EOK) { 223 184 usb_log_error("Failed to release default address on port %d.\n", … … 233 194 234 195 /* release default address */ 235 ret = usb_ hc_release_default_address(&port->hc_connection);196 ret = usb_drv_release_default_address(port->hc_phone); 236 197 if (ret != EOK) { 237 198 usb_log_error("Failed to release default address on port %d.\n", … … 245 206 assert(port->attached_device == 0); 246 207 247 ret = usb_device_register_child_in_devman(new_dev_connection.address, 248 new_dev_connection.hc_handle, port->rh, &port->attached_device); 249 208 devman_handle_t hc_handle; 209 ret = usb_drv_find_hc(port->rh, &hc_handle); 210 if (ret != EOK) { 211 usb_log_error("Failed to get handle of host controller: %s.\n", 212 str_error(ret)); 213 uhci_port_set_enabled(port, false); 214 return ENOMEM; 215 } 216 217 ret = usb_device_register_child_in_devman(usb_address, hc_handle, 218 port->rh, &port->attached_device); 250 219 if (ret != EOK) { /* something went wrong */ 251 220 usb_log_error("Failed(%d) in usb_drv_register_child.\n", ret); … … 256 225 port->number, usb_address, port->attached_device); 257 226 258 /* 259 * Register the device in the host controller. 260 */ 261 usb_hc_attached_device_t new_device = { 262 .address = new_dev_connection.address, 263 .handle = port->attached_device 264 }; 265 266 ret = usb_hc_register_device(&port->hc_connection, &new_device); 227 ret = 228 usb_drv_bind_address(port->hc_phone, usb_address, port->attached_device); 267 229 // TODO: proper error check here 268 230 assert(ret == EOK); -
uspace/drv/uhci-rhd/port.h
rf294926 r69b1f3d 38 38 #include <driver.h> /* device_t */ 39 39 #include <stdint.h> 40 #include <usb/usbdevice.h>41 40 42 41 #include "port_status.h" … … 47 46 unsigned number; 48 47 unsigned wait_period_usec; 49 usb_hc_connection_t hc_connection;48 int hc_phone; 50 49 device_t *rh; 51 50 devman_handle_t attached_device; -
uspace/lib/usb/Makefile
rf294926 r69b1f3d 40 40 src/dump.c \ 41 41 src/hidparser.c \ 42 src/hub.c \43 42 src/pipes.c \ 44 43 src/pipesinit.c \ … … 47 46 src/request.c \ 48 47 src/usb.c \ 49 src/usbdevice.c \50 48 src/usbdrvreq.c \ 51 49 src/usbdrv.c \ -
uspace/lib/usb/include/usb/pipes.h
rf294926 r69b1f3d 31 31 */ 32 32 /** @file 33 * USB pipes representation.33 * Communication between device drivers and host controller driver. 34 34 */ 35 35 #ifndef LIBUSB_PIPES_H_ … … 38 38 #include <sys/types.h> 39 39 #include <usb/usb.h> 40 #include <usb/usbdevice.h>41 40 #include <usb/descriptor.h> 42 41 #include <ipc/devman.h> … … 115 114 } usb_endpoint_mapping_t; 116 115 117 int usb_device_connection_initialize_on_default_address(118 usb_device_connection_t *, usb_hc_connection_t *);119 116 int usb_device_connection_initialize_from_device(usb_device_connection_t *, 120 117 device_t *); -
uspace/lib/usb/src/pipes.c
rf294926 r69b1f3d 102 102 } 103 103 104 /** Initialize connection to USB device on default address.105 *106 * @param dev_connection Device connection structure to be initialized.107 * @param hc_connection Initialized connection to host controller.108 * @return Error code.109 */110 int usb_device_connection_initialize_on_default_address(111 usb_device_connection_t *dev_connection,112 usb_hc_connection_t *hc_connection)113 {114 assert(dev_connection);115 116 if (hc_connection == NULL) {117 return EBADMEM;118 }119 120 return usb_device_connection_initialize(dev_connection,121 hc_connection->hc_handle, (usb_address_t) 0);122 }123 124 104 125 105 /** Start a session on the endpoint pipe.
Note:
See TracChangeset
for help on using the changeset viewer.
