Changeset 3f03199 in mainline for uspace/drv/bus/usb/ehci
- Timestamp:
- 2013-09-15T06:33:53Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/fix-logger-deadlock, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9348862
- Parents:
- dd7078c (diff), 1c0cef0 (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/bus/usb/ehci
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ehci/main.c
rdd7078c r3f03199 67 67 { 68 68 assert(device); 69 #define CHECK_RET_RETURN(ret, message...) \70 if (ret != EOK) { \71 usb_log_error(message); \72 return ret; \73 }74 69 75 uintptr_t reg_base = 0; 76 size_t reg_size = 0; 70 addr_range_t reg_range; 77 71 int irq = 0; 78 72 79 int ret = get_my_registers(device, ®_ base, ®_size, &irq);80 CHECK_RET_RETURN(ret,81 "Failed to get memory addresses for %" PRIun ": %s.\n",82 ddf_dev_get_handle(device), str_error(ret));83 usb_log_info("Memory mapped regs at 0x%" PRIxn " (size %zu), IRQ %d.\n",84 reg_base, reg_size, irq);73 int ret = get_my_registers(device, ®_range, &irq); 74 if (ret != EOK) { 75 usb_log_error("Failed to get memory addresses for %" PRIun 76 ": %s.\n", ddf_dev_get_handle(device), str_error(ret)); 77 return ret; 78 } 85 79 86 ret = disable_legacy(device, reg_base, reg_size); 87 CHECK_RET_RETURN(ret, 88 "Failed to disable legacy USB: %s.\n", str_error(ret)); 80 usb_log_info("Memory mapped regs at %p (size %zu), IRQ %d.\n", 81 RNGABSPTR(reg_range), RNGSZ(reg_range), irq); 82 83 ret = disable_legacy(device, ®_range); 84 if (ret != EOK) { 85 usb_log_error("Failed to disable legacy USB: %s.\n", 86 str_error(ret)); 87 return ret; 88 } 89 89 90 90 /* High Speed, no bandwidth */ 91 ret = hcd_ddf_setup_hc(device, USB_SPEED_HIGH, 0, NULL); 92 CHECK_RET_RETURN(ret, 93 "Failed to init generci hcd driver: %s\n", str_error(ret)); 91 ret = hcd_ddf_setup_hc(device, USB_SPEED_HIGH, 0, NULL); 92 if (ret != EOK) { 93 usb_log_error("Failed to init generci hcd driver: %s\n", 94 str_error(ret)); 95 return ret; 96 } 94 97 95 98 usb_log_info("Controlling new EHCI device `%s' (handle %" PRIun ").\n", … … 97 100 98 101 return EOK; 99 #undef CHECK_RET_RETURN100 102 } 101 103 -
uspace/drv/bus/usb/ehci/res.c
rdd7078c r3f03199 71 71 * 72 72 * @param[in] dev Device asking for the addresses. 73 * @param[out] mem_reg_address Base address of the memory range. 74 * @param[out] mem_reg_size Size of the memory range. 73 * @param[out] mem_regs_p Pointer to the register range. 75 74 * @param[out] irq_no IRQ assigned to the device. 76 75 * @return Error code. 77 76 */ 78 77 int get_my_registers(ddf_dev_t *dev, 79 uintptr_t *mem_reg_address, size_t *mem_reg_size, int *irq_no)78 addr_range_t *mem_regs_p, int *irq_no) 80 79 { 81 80 assert(dev); … … 99 98 } 100 99 101 if (mem_reg_address) 102 *mem_reg_address = hw_res.mem_ranges.ranges[0].address; 103 if (mem_reg_size) 104 *mem_reg_size = hw_res.mem_ranges.ranges[0].size; 100 if (mem_regs_p) 101 *mem_regs_p = hw_res.mem_ranges.ranges[0]; 105 102 if (irq_no) 106 103 *irq_no = hw_res.irqs.irqs[0]; … … 234 231 } 235 232 236 int disable_legacy(ddf_dev_t *device, uintptr_t reg_base, size_t reg_size)233 int disable_legacy(ddf_dev_t *device, addr_range_t *reg_range) 237 234 { 238 235 assert(device); 239 236 usb_log_debug("Disabling EHCI legacy support.\n"); 240 237 241 #define CHECK_RET_RETURN(ret, message...) \242 if (ret != EOK) { \243 usb_log_error(message); \244 return ret; \245 } else (void)0246 247 238 /* Map EHCI registers */ 248 239 void *regs = NULL; 249 int ret = pio_enable((void*)reg_base, reg_size, ®s); 250 CHECK_RET_RETURN(ret, "Failed to map registers %p: %s.\n", 251 (void *) reg_base, str_error(ret)); 240 int ret = pio_enable_range(reg_range, ®s); 241 if (ret != EOK) { 242 usb_log_error("Failed to map registers %p: %s.\n", 243 RNGABSPTR(*reg_range), str_error(ret)); 244 return ret; 245 } 252 246 253 247 usb_log_debug2("Registers mapped at: %p.\n", regs); … … 264 258 265 259 ret = disable_extended_caps(device, eecp); 266 CHECK_RET_RETURN(ret, "Failed to disable extended capabilities: %s.\n", 267 str_error(ret)); 268 269 #undef CHECK_RET_RETURN 260 if (ret != EOK) { 261 usb_log_error("Failed to disable extended capabilities: %s.\n", 262 str_error(ret)); 263 return ret; 264 } 265 270 266 271 267 /* -
uspace/drv/bus/usb/ehci/res.h
rdd7078c r3f03199 37 37 38 38 #include <ddf/driver.h> 39 #include <device/hw_res_parsed.h> 39 40 40 int get_my_registers(ddf_dev_t *, uintptr_t *, size_t *, int *);41 int get_my_registers(ddf_dev_t *, addr_range_t *, int *); 41 42 int enable_interrupts(ddf_dev_t *); 42 int disable_legacy(ddf_dev_t *, uintptr_t, size_t);43 int disable_legacy(ddf_dev_t *, addr_range_t *); 43 44 44 45 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
