Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbhub/usbhub.c

    r42a3a57 r4e900c1  
    7272int usb_hub_control_loop(void * hub_info_param){
    7373        usb_hub_info_t * hub_info = (usb_hub_info_t*)hub_info_param;
    74         int errorCode = EOK;
    75 
    76         while(errorCode == EOK){
    77                 errorCode = usb_hub_check_hub_changes(hub_info);
     74        while(true){
     75                usb_hub_check_hub_changes(hub_info);
    7876                async_usleep(1000 * 1000 );/// \TODO proper number once
    7977        }
    80         dprintf(USB_LOG_LEVEL_ERROR,
    81                                 "something in ctrl loop went wrong, errno %d",errorCode);
    8278        return 0;
    8379}
     
    122118                dprintf(USB_LOG_LEVEL_ERROR,
    123119                                "could not initialize connection to device endpoint, errno %d",opResult);
    124                 return opResult;
    125         }
    126 
    127         opResult = usb_endpoint_pipe_probe_default_control(&hub->endpoints.control);
    128         if (opResult != EOK) {
    129                 dprintf(USB_LOG_LEVEL_ERROR, "failed probing endpoint 0, %d", opResult);
    130                 return opResult;
    131         }
    132 
    133         return EOK;
     120        }
     121        return opResult;
    134122}
    135123
     
    384372 * @param target
    385373 */
    386 static void usb_hub_init_add_device(usb_hub_info_t * hub, uint16_t port,
    387                 bool isLowSpeed) {
     374static void usb_hub_init_add_device(usb_hub_info_t * hub, uint16_t port) {
    388375        usb_device_request_setup_packet_t request;
    389376        int opResult;
     
    391378        assert(hub->endpoints.control.hc_phone);
    392379        //get default address
    393         usb_speed_t speed = isLowSpeed?USB_SPEED_LOW:USB_SPEED_FULL;
    394         opResult = usb_hc_reserve_default_address(&hub->connection, speed);
     380        //opResult = usb_drv_reserve_default_address(hc);
     381        opResult = usb_hc_reserve_default_address(&hub->connection, USB_SPEED_LOW);
    395382       
    396383        if (opResult != EOK) {
     
    443430                        &new_device_pipe,
    444431                        &new_device_connection);
    445         usb_endpoint_pipe_probe_default_control(&new_device_pipe);
    446432        /// \TODO get highspeed info
    447433        usb_speed_t speed = isLowSpeed?USB_SPEED_LOW:USB_SPEED_FULL;
     
    451437        usb_address_t new_device_address = usb_hc_request_address(
    452438                        &hub->connection,
    453                         speed
     439                        speed/// \TODO fullspeed??
    454440                        );
    455441        if (new_device_address < 0) {
     
    515501static void usb_hub_removed_device(
    516502    usb_hub_info_t * hub,uint16_t port) {
    517                
     503        //usb_device_request_setup_packet_t request;
     504        int opResult;
     505       
    518506        /** \TODO remove device from device manager - not yet implemented in
    519507         * devide manager
     
    522510        //close address
    523511        if(hub->attached_devs[port].address!=0){
    524                 /*uncomment this code to use it when DDF allows device removal
     512                //opResult = usb_drv_release_address(hc,hub->attached_devs[port].address);
    525513                opResult = usb_hc_unregister_device(
    526514                                &hub->connection, hub->attached_devs[port].address);
     
    531519                hub->attached_devs[port].address = 0;
    532520                hub->attached_devs[port].handle = 0;
    533                  */
    534521        }else{
    535522                dprintf(USB_LOG_LEVEL_WARNING, "this is strange, disconnected device had no address");
     
    601588                if (usb_port_dev_connected(&status)) {
    602589                        dprintf(USB_LOG_LEVEL_INFO, "some connection changed");
    603                         usb_hub_init_add_device(hub, port, usb_port_low_speed(&status));
     590                        usb_hub_init_add_device(hub, port);
    604591                } else {
    605592                        usb_hub_removed_device(hub, port);
     
    639626/**
    640627 * Check changes on particular hub
    641  * @param hub_info_param pointer to usb_hub_info_t structure
    642  * @return error code if there is problem when initializing communication with
    643  * hub, EOK otherwise
    644  */
    645 int usb_hub_check_hub_changes(usb_hub_info_t * hub_info){
     628 * @param hub_info_param
     629 */
     630void usb_hub_check_hub_changes(usb_hub_info_t * hub_info){
    646631        int opResult;
    647632        opResult = usb_endpoint_pipe_start_session(&hub_info->endpoints.status_change);
     
    649634                dprintf(USB_LOG_LEVEL_ERROR,
    650635                                "could not initialize communication for hub; %d", opResult);
    651                 return opResult;
     636                return;
    652637        }
    653638
     
    671656                dprintf(USB_LOG_LEVEL_WARNING, "something went wrong while getting status of hub");
    672657                usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change);
    673                 return opResult;
     658                return;
    674659        }
    675660        unsigned int port;
     
    679664                                opResult);
    680665                usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change);
    681                 return opResult;
     666                return;
    682667        }
    683668        opResult = usb_hc_connection_open(&hub_info->connection);
     
    687672                usb_endpoint_pipe_end_session(&hub_info->endpoints.control);
    688673                usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change);
    689                 return opResult;
     674                return;
    690675        }
    691676
     
    703688        usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change);
    704689        free(change_bitmap);
    705         return EOK;
    706690}
    707691
Note: See TracChangeset for help on using the changeset viewer.