Changes in / [0f191a2:ae1f70e] in mainline
- Location:
- uspace
- Files:
-
- 3 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci/main.c
r0f191a2 rae1f70e 27 27 */ 28 28 #include <usb/hcdhubd.h> 29 #include <usb_iface.h>30 29 #include <usb/debug.h> 31 30 #include <errno.h> … … 33 32 #include "uhci.h" 34 33 35 static int usb_iface_get_hc_handle(device_t *dev, devman_handle_t *handle)36 {37 /* This shall be called only for the UHCI itself. */38 assert(dev->parent == NULL);39 40 *handle = dev->handle;41 return EOK;42 }43 44 static usb_iface_t hc_usb_iface = {45 .get_hc_handle = usb_iface_get_hc_handle46 };47 48 34 static device_ops_t uhci_ops = { 49 .interfaces[USB_DEV_IFACE] = &hc_usb_iface, 50 .interfaces[USBHC_DEV_IFACE] = &uhci_iface 35 .interfaces[USBHC_DEV_IFACE] = &uhci_iface, 51 36 }; 52 37 -
uspace/drv/usbhub/usbhub.c
r0f191a2 rae1f70e 37 37 #include <errno.h> 38 38 39 #include <usb _iface.h>39 #include <usbhc_iface.h> 40 40 #include <usb/usbdrv.h> 41 41 #include <usb/descriptor.h> … … 46 46 #include "usbhub_private.h" 47 47 #include "port_status.h" 48 49 static usb_iface_t hub_usb_iface = {50 .get_hc_handle = usb_drv_find_hc51 };52 53 static device_ops_t hub_device_ops = {54 .interfaces[USB_DEV_IFACE] = &hub_usb_iface55 };56 48 57 49 //********************************************* … … 143 135 * connected devices. 144 136 */ 145 dev->ops = &hub_device_ops;146 137 147 138 //create the hub structure 148 139 //get hc connection 149 int hc = usb_drv_hc_connect_auto(dev, 0); 150 if (hc < 0) { 151 return hc; 152 } 140 int hc = usb_drv_hc_connect(dev, 0); 153 141 154 142 usb_hub_info_t * hub_info = usb_create_hub_info(dev, hc); … … 476 464 * Connect to respective HC. 477 465 */ 478 int hc = usb_drv_hc_connect _auto(hub_info->device, 0);466 int hc = usb_drv_hc_connect(hub_info->device, 0); 479 467 if (hc < 0) { 480 468 continue; -
uspace/drv/usbkbd/main.c
r0f191a2 rae1f70e 190 190 // get phone to my HC and save it as my parent's phone 191 191 // TODO: maybe not a good idea if DDF will use parent_phone 192 kbd_dev->device->parent_phone = usb_drv_hc_connect _auto(dev, 0);192 kbd_dev->device->parent_phone = usb_drv_hc_connect(dev, 0); 193 193 194 194 kbd_dev->address = usb_drv_get_my_address(dev->parent_phone, … … 325 325 * Not supported yet, skip.. 326 326 */ 327 // int phone = usb_drv_hc_connect _auto(dev, 0);327 // int phone = usb_drv_hc_connect(dev, 0); 328 328 // if (phone < 0) { 329 329 // /* -
uspace/drv/vhc/hcd.c
r0f191a2 rae1f70e 46 46 47 47 #include <usb/usb.h> 48 #include <usb_iface.h>49 48 #include "vhcd.h" 50 49 #include "hc.h" … … 53 52 #include "conn.h" 54 53 55 static int usb_iface_get_hc_handle(device_t *dev, devman_handle_t *handle)56 {57 /* This shall be called only for VHC device. */58 assert(dev->parent == NULL);59 60 *handle = dev->handle;61 return EOK;62 }63 64 static usb_iface_t hc_usb_iface = {65 .get_hc_handle = usb_iface_get_hc_handle66 };67 68 54 static device_ops_t vhc_ops = { 69 55 .interfaces[USBHC_DEV_IFACE] = &vhc_iface, 70 .interfaces[USB_DEV_IFACE] = &hc_usb_iface,71 56 .default_handler = default_connection_handler 72 57 }; -
uspace/drv/vhc/hub.c
r0f191a2 rae1f70e 79 79 device_t *hc_dev = (device_t *) arg; 80 80 81 int hc = usb_drv_hc_connect(hc_dev, hc_dev->handle,IPC_FLAG_BLOCKING);81 int hc = usb_drv_hc_connect(hc_dev, IPC_FLAG_BLOCKING); 82 82 if (hc < 0) { 83 83 printf(NAME ": failed to register root hub\n"); -
uspace/lib/c/include/ipc/dev_iface.h
r0f191a2 rae1f70e 39 39 CHAR_DEV_IFACE, 40 40 41 /** Interface provided by any USB device. */42 USB_DEV_IFACE,43 41 /** Interface provided by USB host controller. */ 44 42 USBHC_DEV_IFACE, -
uspace/lib/drv/Makefile
r0f191a2 rae1f70e 36 36 generic/dev_iface.c \ 37 37 generic/remote_res.c \ 38 generic/remote_usb.c \39 38 generic/remote_usbhc.c \ 40 39 generic/remote_char.c -
uspace/lib/drv/generic/dev_iface.c
r0f191a2 rae1f70e 39 39 #include "remote_res.h" 40 40 #include "remote_char.h" 41 #include "remote_usb.h"42 41 #include "remote_usbhc.h" 43 42 … … 46 45 &remote_res_iface, 47 46 &remote_char_iface, 48 &remote_usb_iface,49 47 &remote_usbhc_iface 50 48 } -
uspace/lib/drv/generic/remote_usbhc.c
r0f191a2 rae1f70e 59 59 //static void remote_usbhc(device_t *, void *, ipc_callid_t, ipc_call_t *); 60 60 61 /** Remote USB host controllerinterface operations. */61 /** Remote USB interface operations. */ 62 62 static remote_iface_func_ptr_t remote_usbhc_iface_ops [] = { 63 63 remote_usbhc_get_address, … … 84 84 }; 85 85 86 /** Remote USB host controllerinterface structure.86 /** Remote USB interface structure. 87 87 */ 88 88 remote_iface_t remote_usbhc_iface = { -
uspace/lib/drv/include/usbhc_iface.h
r0f191a2 rae1f70e 31 31 */ 32 32 /** @file 33 * @brief USB host controllerinterface definition.33 * @brief USB interface definition. 34 34 */ 35 35 … … 226 226 usbhc_iface_transfer_in_callback_t, void *); 227 227 228 /** USB host controllercommunication interface. */228 /** USB devices communication interface. */ 229 229 typedef struct { 230 230 int (*tell_address)(device_t *, devman_handle_t, usb_address_t *); -
uspace/lib/usb/include/usb/usbdrv.h
r0f191a2 rae1f70e 41 41 #include <usb/descriptor.h> 42 42 43 int usb_drv_find_hc(device_t *, devman_handle_t *); 44 int usb_drv_hc_connect(device_t *, devman_handle_t, unsigned int); 45 int usb_drv_hc_connect_auto(device_t *, unsigned int); 43 int usb_drv_hc_connect(device_t *, unsigned int); 46 44 47 45 int usb_drv_reserve_default_address(int); -
uspace/lib/usb/src/hcdhubd.c
r0f191a2 rae1f70e 36 36 #include <usb/devreq.h> 37 37 #include <usbhc_iface.h> 38 #include <usb_iface.h>39 38 #include <usb/descriptor.h> 40 39 #include <driver.h> … … 46 45 #include "hcdhubd_private.h" 47 46 48 49 static int usb_iface_get_hc_handle(device_t *dev, devman_handle_t *handle)50 {51 assert(dev);52 assert(dev->parent != NULL);53 54 device_t *parent = dev->parent;55 56 if (parent->ops && parent->ops->interfaces[USB_DEV_IFACE]) {57 usb_iface_t *usb_iface58 = (usb_iface_t *) parent->ops->interfaces[USB_DEV_IFACE];59 assert(usb_iface != NULL);60 if (usb_iface->get_hc_handle) {61 int rc = usb_iface->get_hc_handle(parent, handle);62 return rc;63 }64 }65 66 return ENOTSUP;67 }68 69 static usb_iface_t usb_iface = {70 .get_hc_handle = usb_iface_get_hc_handle71 };72 73 static device_ops_t child_ops = {74 .interfaces[USB_DEV_IFACE] = &usb_iface75 };76 77 47 /** Callback when new device is detected and must be handled by this driver. 78 48 * … … 159 129 } 160 130 child->name = child_info->name; 161 child->parent = child_info->parent;162 child->ops = &child_ops;163 131 164 132 match_id = create_match_id(); -
uspace/lib/usb/src/recognise.c
r0f191a2 rae1f70e 33 33 * @brief Functions for recognising kind of attached devices. 34 34 */ 35 #include <usb_iface.h>36 35 #include <usb/usbdrv.h> 37 36 #include <usb/classes/classes.h> … … 39 38 #include <errno.h> 40 39 41 static int usb_iface_get_hc_handle(device_t *dev, devman_handle_t *handle)42 {43 assert(dev);44 assert(dev->parent != NULL);45 46 device_t *parent = dev->parent;47 48 if (parent->ops && parent->ops->interfaces[USB_DEV_IFACE]) {49 usb_iface_t *usb_iface50 = (usb_iface_t *) parent->ops->interfaces[USB_DEV_IFACE];51 assert(usb_iface != NULL);52 if (usb_iface->get_hc_handle) {53 int rc = usb_iface->get_hc_handle(parent, handle);54 return rc;55 }56 }57 58 return ENOTSUP;59 }60 61 static usb_iface_t usb_iface = {62 .get_hc_handle = usb_iface_get_hc_handle63 };64 65 static device_ops_t child_ops = {66 .interfaces[USB_DEV_IFACE] = &usb_iface67 };68 40 69 41 #define BCD_INT(a) (((unsigned int)(a)) / 256) … … 313 285 goto failure; 314 286 } 315 child->parent = parent;316 287 child->name = child_name; 317 child->ops = &child_ops;318 288 319 289 rc = usb_drv_create_device_match_ids(hc, &child->match_ids, address); -
uspace/lib/usb/src/usbdrv.c
r0f191a2 rae1f70e 35 35 #include <usb/usbdrv.h> 36 36 #include <usbhc_iface.h> 37 #include <usb_iface.h>38 37 #include <errno.h> 39 38 #include <str_error.h> … … 55 54 } transfer_info_t; 56 55 57 /** Find handle of host controller the device is physically attached to.58 *59 * @param[in] dev Device looking for its host controller.60 * @param[out] handle Host controller devman handle.61 * @return Error code.62 */63 int usb_drv_find_hc(device_t *dev, devman_handle_t *handle)64 {65 if (dev == NULL) {66 return EBADMEM;67 }68 if (handle == NULL) {69 return EBADMEM;70 }71 72 int parent_phone = devman_parent_device_connect(dev->handle,73 IPC_FLAG_BLOCKING);74 if (parent_phone < 0) {75 return parent_phone;76 }77 78 devman_handle_t h;79 int rc = async_req_1_1(parent_phone, DEV_IFACE_ID(USB_DEV_IFACE),80 IPC_M_USB_GET_HOST_CONTROLLER_HANDLE, &h);81 82 ipc_hangup(parent_phone);83 84 if (rc != EOK) {85 return rc;86 }87 88 *handle = h;89 90 return EOK;91 }92 93 /** Connect to host controller the device is physically attached to.94 *95 * @param dev Device asking for connection.96 * @param hc_handle Devman handle of the host controller.97 * @param flags Connection flags (blocking connection).98 * @return Phone to the HC or error code.99 */100 int usb_drv_hc_connect(device_t *dev, devman_handle_t hc_handle,101 unsigned int flags)102 {103 return devman_device_connect(hc_handle, flags);104 }105 106 56 /** Connect to host controller the device is physically attached to. 107 57 * … … 110 60 * @return Phone to corresponding HC or error code. 111 61 */ 112 int usb_drv_hc_connect_auto(device_t *dev, unsigned int flags) 113 { 114 int rc; 115 devman_handle_t hc_handle; 116 62 int usb_drv_hc_connect(device_t *dev, unsigned int flags) 63 { 117 64 /* 118 65 * Call parent hub to obtain device handle of respective HC. 119 66 */ 120 rc = usb_drv_find_hc(dev, &hc_handle); 67 68 /* 69 * FIXME: currently we connect always to virtual host controller. 70 */ 71 int rc; 72 devman_handle_t handle; 73 74 rc = devman_device_get_handle("/virt/usbhc", &handle, flags); 121 75 if (rc != EOK) { 122 76 return rc; 123 77 } 124 78 125 return usb_drv_hc_connect(dev, hc_handle, flags); 79 int phone = devman_device_connect(handle, flags); 80 81 return phone; 126 82 } 127 83 -
uspace/srv/devman/main.c
r0f191a2 rae1f70e 458 458 459 459 if (driver == NULL) { 460 printf(NAME ": devman_forward error - the device %" PRIun \ 461 " (%s) is not in usable state.\n", 462 handle, dev->pathname); 460 printf(NAME ": devman_forward error - the device is not in %" PRIun 461 " usable state.\n", handle); 463 462 ipc_answer_0(iid, ENOENT); 464 463 return;
Note:
See TracChangeset
for help on using the changeset viewer.