Changes in uspace/drv/uhci-hcd/uhci.c [fa3de85:4125b7d] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/uhci.c
rfa3de85 r4125b7d 44 44 #include "pci.h" 45 45 46 /** IRQ handling callback, identifies device46 /** IRQ handling callback, forward status from call to diver structure. 47 47 * 48 48 * @param[in] dev DDF instance of the device to use. 49 49 * @param[in] iid (Unused). 50 * @param[in] call Pointer to the call that represents interrupt.50 * @param[in] call Pointer to the call from kernel. 51 51 */ 52 52 static void irq_handler(ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call) … … 61 61 /** Get address of the device identified by handle. 62 62 * 63 * @param[in] dev DDF instance of the deviceto use.64 * @param[in] iid (Unused).65 * @param[ in] call Pointer to the call that represents interrupt.63 * @param[in] fun DDF instance of the function to use. 64 * @param[in] handle DDF handle of the driver seeking its USB address. 65 * @param[out] address Found address. 66 66 */ 67 67 static int usb_iface_get_address( … … 69 69 { 70 70 assert(fun); 71 usb_device_keeper_t *manager = &((uhci_t*)fun->dev->driver_data)->hc.manager; 71 usb_device_keeper_t *manager = 72 &((uhci_t*)fun->dev->driver_data)->hc.manager; 72 73 73 74 usb_address_t addr = usb_device_keeper_find(manager, handle); … … 83 84 } 84 85 /*----------------------------------------------------------------------------*/ 85 /** Gets handle of the respective hc (this or parent device).86 * 87 * @param[in] root_hub_fun Root hub function seeking hc handle.88 * @param[out] handle Place to write thehandle.86 /** Gets handle of the respective hc. 87 * 88 * @param[in] fun DDF function of uhci device. 89 * @param[out] handle Host cotnroller handle. 89 90 * @return Error code. 90 91 */ … … 100 101 } 101 102 /*----------------------------------------------------------------------------*/ 102 /** This iface is generic for both RH and HC.*/103 /** USB interface implementation used by RH */ 103 104 static usb_iface_t usb_iface = { 104 105 .get_hc_handle = usb_iface_get_hc_handle, … … 106 107 }; 107 108 /*----------------------------------------------------------------------------*/ 109 /** Operations supported by the HC driver */ 108 110 static ddf_dev_ops_t hc_ops = { 109 // .interfaces[USB_DEV_IFACE] = &usb_iface,110 111 .interfaces[USBHC_DEV_IFACE] = &hc_iface, /* see iface.h/c */ 111 112 }; … … 122 123 } 123 124 /*----------------------------------------------------------------------------*/ 125 /** Interface to provide the root hub driver with hw info */ 124 126 static hw_res_ops_t hw_res_iface = { 125 127 .get_resource_list = get_resource_list, … … 127 129 }; 128 130 /*----------------------------------------------------------------------------*/ 131 /** RH function support for uhci-rhd */ 129 132 static ddf_dev_ops_t rh_ops = { 130 133 .interfaces[USB_DEV_IFACE] = &usb_iface, … … 132 135 }; 133 136 /*----------------------------------------------------------------------------*/ 134 /** Initialize hc and rh ddfstructures and their respective drivers.137 /** Initialize hc and rh DDF structures and their respective drivers. 135 138 * 136 139 * @param[in] instance UHCI structure to use. … … 138 141 * 139 142 * This function does all the preparatory work for hc and rh drivers: 140 * - gets device hw resources141 * - disables UHCI legacy support 143 * - gets device's hw resources 144 * - disables UHCI legacy support (PCI config space) 142 145 * - asks for interrupt 143 146 * - registers interrupt handler … … 165 168 pci_get_my_registers(device, &io_reg_base, &io_reg_size, &irq); 166 169 CHECK_RET_DEST_FUN_RETURN(ret, 167 "Failed(%d) to get I/O addresses:.\n", ret, device->handle); 168 usb_log_debug("I/O regs at 0x%X (size %zu), IRQ %d.\n", 169 io_reg_base, io_reg_size, irq); 170 "Failed to get I/O addresses for %" PRIun ": %s.\n", 171 device->handle, str_error(ret)); 172 usb_log_debug("I/O regs at 0x%p (size %zu), IRQ %d.\n", 173 (void *) io_reg_base, io_reg_size, irq); 170 174 171 175 ret = pci_disable_legacy(device); … … 193 197 ret = (instance->hc_fun == NULL) ? ENOMEM : EOK; 194 198 CHECK_RET_DEST_FUN_RETURN(ret, 195 "Failed(%d) to create HC function .\n", ret);199 "Failed(%d) to create HC function: %s.\n", ret, str_error(ret)); 196 200 197 201 ret = hc_init(&instance->hc, instance->hc_fun, 198 202 (void*)io_reg_base, io_reg_size, interrupts); 199 CHECK_RET_DEST_FUN_RETURN(ret, "Failed(%d) to init uhci-hcd.\n", ret); 203 CHECK_RET_DEST_FUN_RETURN(ret, 204 "Failed(%d) to init uhci-hcd: %s.\n", ret, str_error(ret)); 205 200 206 instance->hc_fun->ops = &hc_ops; 201 207 instance->hc_fun->driver_data = &instance->hc; … … 221 227 &instance->hc.interrupt_code); 222 228 CHECK_RET_FINI_RETURN(ret, 223 "Failed(%d) to register interrupt handler.\n", ret); 229 "Failed(%d) to register interrupt handler: %s.\n", 230 ret, str_error(ret)); 224 231 225 232 instance->rh_fun = ddf_fun_create(device, fun_inner, "uhci-rh"); 226 233 ret = (instance->rh_fun == NULL) ? ENOMEM : EOK; 227 234 CHECK_RET_FINI_RETURN(ret, 228 "Failed(%d) to create root hub function.\n", ret); 235 "Failed(%d) to create root hub function: %s.\n", 236 ret, str_error(ret)); 229 237 230 238 ret = rh_init(&instance->rh, instance->rh_fun, 231 239 (uintptr_t)instance->hc.registers + 0x10, 4); 232 240 CHECK_RET_FINI_RETURN(ret, 233 "Failed(%d) to setup UHCI root hub .\n", ret);241 "Failed(%d) to setup UHCI root hub: %s.\n", ret, str_error(ret)); 234 242 235 243 instance->rh_fun->ops = &rh_ops; … … 237 245 ret = ddf_fun_bind(instance->rh_fun); 238 246 CHECK_RET_FINI_RETURN(ret, 239 "Failed(%d) to register UHCI root hub .\n", ret);247 "Failed(%d) to register UHCI root hub: %s.\n", ret, str_error(ret)); 240 248 241 249 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.