Changes in uspace/drv/vhc/hub.c [0995cd6:98d06b8] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/hub.c
r0995cd6 r98d06b8 37 37 #include <usbvirt/device.h> 38 38 #include <errno.h> 39 #include <str_error.h>40 39 #include <stdlib.h> 41 #include <driver.h>42 40 43 41 #include "vhcd.h" 44 42 #include "hub.h" 45 43 #include "hubintern.h" 46 #include "conn.h"47 44 48 45 … … 151 148 hub_device_t hub_dev; 152 149 153 static usb_address_t hub_set_address(usbvirt_device_t *hub)154 {155 usb_address_t new_address;156 int rc = vhc_iface.request_address(NULL, &new_address);157 if (rc != EOK) {158 return rc;159 }160 161 usb_device_request_setup_packet_t setup_packet = {162 .request_type = 0,163 .request = USB_DEVREQ_SET_ADDRESS,164 .index = 0,165 .length = 0,166 };167 setup_packet.value = new_address;168 169 hub->transaction_setup(hub, 0, &setup_packet, sizeof(setup_packet));170 hub->transaction_in(hub, 0, NULL, 0, NULL);171 172 return new_address;173 }174 175 150 /** Initialize virtual hub. */ 176 void hub_init( device_t *hc_dev)151 void hub_init(void) 177 152 { 178 153 size_t i; … … 186 161 187 162 usbvirt_connect_local(&virthub_dev); 163 164 virthub_dev.address = 7; 188 165 189 166 dprintf(1, "virtual hub (%d ports) created", HUB_PORT_COUNT); 190 191 usb_address_t hub_address = hub_set_address(&virthub_dev);192 if (hub_address < 0) {193 dprintf(1, "problem changing hub address (%s)",194 str_error(hub_address));195 }196 197 dprintf(2, "virtual hub address changed to %d", hub_address);198 199 char *id;200 int rc = asprintf(&id, "usb&hub");201 if (rc <= 0) {202 return;203 }204 devman_handle_t hub_handle;205 rc = child_device_register_wrapper(hc_dev, "hub", id, 10, &hub_handle);206 if (rc != EOK) {207 free(id);208 }209 210 vhc_iface.bind_address(NULL, hub_address, hub_handle);211 212 dprintf(2, "virtual hub has devman handle %d", (int) hub_handle);213 167 } 214 168
Note:
See TracChangeset
for help on using the changeset viewer.