Changeset deece2f in mainline for uspace/drv/vhc
- Timestamp:
- 2011-02-21T22:25:58Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 233e68d
- Parents:
- fb78ae72 (diff), dbe25f1 (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. - Location:
- uspace/drv/vhc
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/conn.h
rfb78ae72 rdeece2f 38 38 #include <usb/usb.h> 39 39 #include <usbhc_iface.h> 40 #include <usb_iface.h> 40 41 #include "vhcd.h" 41 42 #include "devices.h" … … 43 44 void connection_handler_host(sysarg_t); 44 45 45 usbhc_iface_t vhc_iface; 46 extern usbhc_iface_t vhc_iface; 47 extern usb_iface_t vhc_usb_iface; 46 48 47 49 void address_init(void); -
uspace/drv/vhc/connhost.c
rfb78ae72 rdeece2f 37 37 #include <usb/usb.h> 38 38 #include <usb/addrkeep.h> 39 #include <usb/ddfiface.h> 39 40 40 41 #include "vhcd.h" … … 313 314 static usb_address_keeping_t addresses; 314 315 316 static int tell_address(device_t *dev, devman_handle_t handle, 317 usb_address_t *address) 318 { 319 usb_address_t addr = usb_address_keeping_find(&addresses, handle); 320 if (addr < 0) { 321 return addr; 322 } 323 324 *address = addr; 325 return EOK; 326 } 315 327 316 328 static int reserve_default_address(device_t *dev, usb_speed_t ignored) … … 350 362 } 351 363 352 static int tell_address(device_t *dev, devman_handle_t handle,353 usb_address_t *address)354 {355 usb_address_t addr = usb_address_keeping_find(&addresses, handle);356 if (addr < 0) {357 return addr;358 }359 360 *address = addr;361 return EOK;362 }363 364 364 void address_init(void) 365 365 { … … 368 368 369 369 usbhc_iface_t vhc_iface = { 370 .tell_address = tell_address,371 372 370 .reserve_default_address = reserve_default_address, 373 371 .release_default_address = release_default_address, … … 383 381 }; 384 382 383 usb_iface_t vhc_usb_iface = { 384 .get_hc_handle = usb_iface_get_hc_handle_hc_impl, 385 .get_address = tell_address 386 }; 387 388 385 389 /** 386 390 * @} -
uspace/drv/vhc/hcd.c
rfb78ae72 rdeece2f 45 45 46 46 #include <usb/usb.h> 47 #include <usb/ddfiface.h> 47 48 #include <usb_iface.h> 48 49 #include "vhcd.h" … … 52 53 #include "conn.h" 53 54 54 static int usb_iface_get_hc_handle(device_t *dev, devman_handle_t *handle)55 {56 /* This shall be called only for VHC device. */57 assert(dev->parent == NULL);58 59 *handle = dev->handle;60 return EOK;61 }62 63 static usb_iface_t hc_usb_iface = {64 .get_hc_handle = usb_iface_get_hc_handle65 };66 67 55 static device_ops_t vhc_ops = { 68 56 .interfaces[USBHC_DEV_IFACE] = &vhc_iface, 69 .interfaces[USB_DEV_IFACE] = & hc_usb_iface,57 .interfaces[USB_DEV_IFACE] = &vhc_usb_iface, 70 58 .close = on_client_close, 71 59 .default_handler = default_connection_handler -
uspace/drv/vhc/hub.c
rfb78ae72 rdeece2f 40 40 #include <stdlib.h> 41 41 #include <driver.h> 42 #include <usb/ usbdrv.h>42 #include <usb/hub.h> 43 43 #include <usb/recognise.h> 44 44 … … 71 71 } 72 72 73 static int pretend_port_rest(int unused, void *unused2) 74 { 75 return EOK; 76 } 77 73 78 /** Register root hub in devman. 74 79 * … … 80 85 device_t *hc_dev = (device_t *) arg; 81 86 82 int hc; 87 /* 88 * Wait until parent device is properly initialized. 89 */ 90 int phone; 83 91 do { 84 hc = usb_drv_hc_connect(hc_dev, hc_dev->handle,85 IPC_FLAG_BLOCKING);86 } while (hc < 0);92 phone = devman_device_connect(hc_dev->handle, 0); 93 } while (phone < 0); 94 async_hangup(phone); 87 95 88 usb_drv_reserve_default_address(hc); 96 usb_hc_connection_t hc_conn; 97 usb_hc_connection_initialize(&hc_conn, hc_dev->handle); 89 98 90 usb_address_t hub_address = usb_drv_request_address(hc); 91 usb_drv_req_set_address(hc, USB_ADDRESS_DEFAULT, hub_address); 99 usb_hc_connection_open(&hc_conn); 92 100 93 usb_drv_release_default_address(hc); 101 int rc = usb_hc_new_device_wrapper(hc_dev, &hc_conn, USB_SPEED_FULL, 102 pretend_port_rest, 0, NULL, 103 NULL, NULL); 104 if (rc != EOK) { 105 usb_log_fatal("Failed to create root hub: %s.\n", 106 str_error(rc)); 107 } 94 108 95 devman_handle_t hub_handle; 96 usb_device_register_child_in_devman(hub_address, hc_dev->handle, 97 hc_dev, &hub_handle); 98 //usb_drv_register_child_in_devman(hc, hc_dev, hub_address, &hub_handle); 99 usb_drv_bind_address(hc, hub_address, hub_handle); 109 usb_hc_connection_close(&hc_conn); 100 110 101 return EOK;111 return 0; 102 112 } 103 113 -
uspace/drv/vhc/hub/hub.c
rfb78ae72 rdeece2f 40 40 #include <stdlib.h> 41 41 #include <driver.h> 42 #include <usb/usbdrv.h>43 42 44 43 #include "hub.h" -
uspace/drv/vhc/hub/virthub.c
rfb78ae72 rdeece2f 41 41 #include <stdlib.h> 42 42 #include <driver.h> 43 #include <usb/usbdrv.h>44 43 45 44 #include "virthub.h"
Note:
See TracChangeset
for help on using the changeset viewer.
