Changes in uspace/drv/usbhub/usbhub.c [9063484:46e078a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhub/usbhub.c
r9063484 r46e078a 45 45 #include <usb/request.h> 46 46 #include <usb/classes/hub.h> 47 #include <usb/devpoll.h>48 47 #include <stdio.h> 49 48 … … 105 104 } 106 105 107 //usb_pipe_start_session(hub_info->control_pipe);106 usb_pipe_start_session(hub_info->control_pipe); 108 107 //set hub configuration 109 108 opResult = usb_hub_set_configuration(hub_info); … … 122 121 return opResult; 123 122 } 124 //usb_pipe_end_session(hub_info->control_pipe);125 126 127 usb_log_debug("Creating 'hub' function in DDF.\n");123 usb_pipe_end_session(hub_info->control_pipe); 124 125 /// \TODO what is this? 126 usb_log_debug("Creating `hub' function.\n"); 128 127 ddf_fun_t *hub_fun = ddf_fun_create(hub_info->usb_device->ddf_dev, 129 128 fun_exposed, "hub"); … … 153 152 bool hub_port_changes_callback(usb_device_t *dev, 154 153 uint8_t *change_bitmap, size_t change_bitmap_size, void *arg) { 155 usb_log_debug("hub_port_changes_callback\n");156 154 usb_hub_info_t *hub = (usb_hub_info_t *) arg; 157 155 … … 218 216 // get hub descriptor 219 217 usb_log_debug("creating serialized descriptor\n"); 220 //void * serialized_descriptor = malloc(USB_HUB_MAX_DESCRIPTOR_SIZE); 221 uint8_t serialized_descriptor[USB_HUB_MAX_DESCRIPTOR_SIZE]; 218 void * serialized_descriptor = malloc(USB_HUB_MAX_DESCRIPTOR_SIZE); 222 219 usb_hub_descriptor_t * descriptor; 223 220 int opResult; … … 237 234 } 238 235 usb_log_debug2("deserializing descriptor\n"); 239 descriptor = usb_create_deserialized_hub_desriptor( 240 serialized_descriptor); 236 descriptor = usb_deserialize_hub_desriptor(serialized_descriptor); 241 237 if (descriptor == NULL) { 242 238 usb_log_warning("could not deserialize descriptor \n"); 243 return ENOMEM;239 return opResult; 244 240 } 245 241 usb_log_debug("setting port count to %d\n", descriptor->ports_count); 246 242 hub_info->port_count = descriptor->ports_count; 247 243 /// \TODO this is not semantically correct 248 bool is_power_switched =249 ((descriptor->hub_characteristics & 1) ==0);250 bool has_individual_port_powering =251 ((descriptor->hub_characteristics & 1) !=0);252 244 hub_info->ports = malloc( 253 245 sizeof (usb_hub_port_t) * (hub_info->port_count + 1)); … … 256 248 usb_hub_port_init(&hub_info->ports[port]); 257 249 } 258 if(is_power_switched){259 usb_log_debug("is_power_switched\n");260 if(has_individual_port_powering){261 usb_log_debug("has_individual_port_powering\n");262 for (port = 0; port < hub_info->port_count; port++) {263 opResult = usb_hub_set_port_feature(hub_info->control_pipe,264 port+1, USB_HUB_FEATURE_PORT_POWER);265 if (opResult != EOK) {266 usb_log_error("cannot power on port %d; %d\n",267 port+1, opResult);268 }269 }270 }else{271 usb_log_debug("!has_individual_port_powering\n");272 opResult = usb_hub_set_feature(hub_info->control_pipe,273 USB_HUB_FEATURE_C_HUB_LOCAL_POWER);274 if (opResult != EOK) {275 usb_log_error("cannot power hub; %d\n",276 opResult);277 }278 }279 }else{280 usb_log_debug("!is_power_switched\n");281 }282 250 usb_log_debug2("freeing data\n"); 283 //free(serialized_descriptor);284 //free(descriptor->devices_removable);251 free(serialized_descriptor); 252 free(descriptor->devices_removable); 285 253 free(descriptor); 286 254 return EOK; … … 344 312 * auto destruction, this could work better. 345 313 */ 346 int rc = usb_ hc_connection_open(&hub_info->connection);314 int rc = usb_pipe_start_session(hub_info->control_pipe); 347 315 if (rc != EOK) { 348 //usb_pipe_end_session(hub_info->control_pipe); 316 usb_log_error("Failed to start session on control pipe: %s.\n", 317 str_error(rc)); 318 return rc; 319 } 320 rc = usb_hc_connection_open(&hub_info->connection); 321 if (rc != EOK) { 322 usb_pipe_end_session(hub_info->control_pipe); 349 323 usb_log_error("Failed to open connection to HC: %s.\n", 350 324 str_error(rc));
Note:
See TracChangeset
for help on using the changeset viewer.