Changes in uspace/drv/bus/usb/uhcirh/main.c [920d0fc:7de1988c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhcirh/main.c
r920d0fc r7de1988c 48 48 #define NAME "uhcirh" 49 49 50 static int hc_get_my_registers(ddf_dev_t *dev, 51 uintptr_t *io_reg_address, size_t *io_reg_size); 50 static int hc_get_my_registers(ddf_dev_t *dev, addr_range_t *io_regs); 52 51 53 52 static int uhci_rh_dev_add(ddf_dev_t *device); … … 90 89 ddf_dev_get_handle(device)); 91 90 92 uintptr_t io_regs = 0; 93 size_t io_size = 0; 91 addr_range_t regs; 94 92 uhci_root_hub_t *rh = NULL; 95 int r et = EOK;93 int rc; 96 94 97 #define CHECK_RET_FREE_RH_RETURN(ret, message...) \ 98 if (ret != EOK) { \ 99 usb_log_error(message); \ 100 return ret; \ 101 } else (void)0 95 rc = hc_get_my_registers(device, ®s); 96 if (rc != EOK) { 97 usb_log_error( "Failed to get registers from HC: %s.\n", 98 str_error(rc)); 99 return rc; 100 } 102 101 103 ret = hc_get_my_registers(device, &io_regs, &io_size);104 CHECK_RET_FREE_RH_RETURN(ret,105 "Failed to get registers from HC: %s.\n", str_error(ret));106 102 usb_log_debug("I/O regs at %p (size %zuB).\n", 107 (void *) io_regs, io_size);103 RNGABSPTR(regs), RNGSZ(regs)); 108 104 109 105 rh = ddf_dev_data_alloc(device, sizeof(uhci_root_hub_t)); 110 ret = (rh == NULL) ? ENOMEM : EOK; 111 CHECK_RET_FREE_RH_RETURN(ret, 112 "Failed to allocate rh driver instance.\n"); 106 if (rh == NULL) { 107 usb_log_error("Failed to allocate rh driver instance.\n"); 108 return ENOMEM; 109 } 113 110 114 ret = uhci_root_hub_init(rh, (void*)io_regs, io_size, device); 115 CHECK_RET_FREE_RH_RETURN(ret, 116 "Failed(%d) to initialize rh driver instance: %s.\n", 117 ret, str_error(ret)); 111 rc = uhci_root_hub_init(rh, ®s, device); 112 if (rc != EOK) { 113 usb_log_error("Failed(%d) to initialize rh driver instance: " 114 "%s.\n", rc, str_error(rc)); 115 return rc; 116 } 118 117 119 118 usb_log_info("Controlling root hub '%s' (%" PRIun ").\n", 120 119 ddf_dev_get_name(device), ddf_dev_get_handle(device)); 120 121 121 return EOK; 122 122 } … … 125 125 * 126 126 * @param[in] dev Device asking for the addresses. 127 * @param[out] io_reg_address Base address of the memory range. 128 * @param[out] io_reg_size Size of the memory range. 127 * @param[out] io_regs_p Pointer to the device's register range. 129 128 * @return Error code. 130 129 */ 131 int hc_get_my_registers( 132 ddf_dev_t *dev, uintptr_t *io_reg_address, size_t *io_reg_size) 130 int hc_get_my_registers(ddf_dev_t *dev, addr_range_t *io_regs_p) 133 131 { 134 132 async_sess_t *parent_sess = … … 151 149 } 152 150 153 if (io_reg_address != NULL) 154 *io_reg_address = hw_res.io_ranges.ranges[0].address; 155 156 if (io_reg_size != NULL) 157 *io_reg_size = hw_res.io_ranges.ranges[0].size; 151 if (io_regs_p != NULL) 152 *io_regs_p = hw_res.io_ranges.ranges[0]; 158 153 159 154 hw_res_list_parsed_clean(&hw_res);
Note:
See TracChangeset
for help on using the changeset viewer.