Changeset c53007f in mainline for uspace/drv/bus/usb/uhcirh
- Timestamp:
- 2013-07-07T11:53:22Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d930980
- Parents:
- f83666c
- Location:
- uspace/drv/bus/usb/uhcirh
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhcirh/main.c
rf83666c rc53007f 93 93 size_t io_size = 0; 94 94 uhci_root_hub_t *rh = NULL; 95 int r et = EOK;95 int rc; 96 96 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 97 rc = hc_get_my_registers(device, &io_regs, &io_size); 98 if (rc != EOK) { 99 usb_log_error( "Failed to get registers from HC: %s.\n", 100 str_error(rc)); 101 return rc; 102 } 102 103 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 104 usb_log_debug("I/O regs at %p (size %zuB).\n", 107 105 (void *) io_regs, io_size); 108 106 109 107 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"); 108 if (rh == NULL) { 109 usb_log_error("Failed to allocate rh driver instance.\n"); 110 return ENOMEM; 111 } 113 112 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)); 113 rc = uhci_root_hub_init(rh, (void*)io_regs, io_size, device); 114 if (rc != EOK) { 115 usb_log_error("Failed(%d) to initialize rh driver instance: " 116 "%s.\n", rc, str_error(rc)); 117 return rc; 118 } 118 119 119 120 usb_log_info("Controlling root hub '%s' (%" PRIun ").\n", 120 121 ddf_dev_get_name(device), ddf_dev_get_handle(device)); 122 121 123 return EOK; 122 124 } -
uspace/drv/bus/usb/uhcirh/port.c
rf83666c rc53007f 150 150 { 151 151 uhci_port_t *instance = port; 152 int rc; 152 153 assert(instance); 153 154 154 155 unsigned allowed_failures = MAX_ERROR_COUNT; 155 #define CHECK_RET_FAIL(ret, msg...) \156 if (ret != EOK) { \157 usb_log_error(msg); \158 if (!(allowed_failures-- > 0)) { \159 usb_log_fatal( \160 "Maximum number of failures reached, " \161 "bailing out.\n"); \162 return ret; \163 } \164 continue; \165 } else (void)0166 156 167 157 while (1) { … … 182 172 instance->id_string, port_status); 183 173 184 int ret = usb_hc_connection_open(&instance->hc_connection); 185 CHECK_RET_FAIL(ret, "%s: Failed to connect to HC %s.\n", 186 instance->id_string, str_error(ret)); 174 rc = usb_hc_connection_open(&instance->hc_connection); 175 if (rc != EOK) { 176 usb_log_error("%s: Failed to connect to HC %s.\n", 177 instance->id_string, str_error(rc)); 178 if (!(allowed_failures-- > 0)) 179 goto fatal_error; 180 continue; 181 } 187 182 188 183 /* Remove any old device */ … … 204 199 } 205 200 206 ret = usb_hc_connection_close(&instance->hc_connection); 207 CHECK_RET_FAIL(ret, "%s: Failed to disconnect from hc: %s.\n", 208 instance->id_string, str_error(ret)); 209 } 210 return EOK; 201 rc = usb_hc_connection_close(&instance->hc_connection); 202 if (rc != EOK) { 203 usb_log_error("%s: Failed to disconnect from HC %s.\n", 204 instance->id_string, str_error(rc)); 205 if (!(allowed_failures-- > 0)) 206 goto fatal_error; 207 continue; 208 } 209 } 210 211 return EOK; 212 213 fatal_error: 214 usb_log_fatal("Maximum number of failures reached, bailing out.\n"); 215 return rc; 211 216 } 212 217
Note:
See TracChangeset
for help on using the changeset viewer.
