Changeset 5c1a65e in mainline


Ignore:
Timestamp:
2011-05-28T20:16:03Z (13 years ago)
Author:
Matus Dekanek <smekideki@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6ab7f3e9
Parents:
4166fb1
Message:

code tiding

Location:
uspace/drv/usbhub
Files:
2 edited

Legend:

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

    r4166fb1 r5c1a65e  
    4747#include "port_status.h"
    4848
    49 
    5049/** Information for fibril for device discovery. */
    5150struct add_device_phase1 {
     
    6564 * any function here and must be cleared by hand
    6665 */
    67 static const int non_handled_changes[] =  {
     66static const int non_handled_changes[] = {
    6867        USB_HUB_FEATURE_C_PORT_ENABLE,
    6968        USB_HUB_FEATURE_C_PORT_SUSPEND
     
    7170
    7271static void usb_hub_removed_device(
    73         usb_hub_info_t * hub, uint16_t port);
    74 
    75 static void usb_hub_port_reset_completed(usb_hub_info_t * hub,
    76         uint16_t port, uint32_t status);
    77 
    78 static void usb_hub_port_over_current(usb_hub_info_t * hub,
    79         uint16_t port, uint32_t status);
     72    usb_hub_info_t *hub, uint16_t port);
     73
     74static void usb_hub_port_reset_completed(usb_hub_info_t *hub,
     75    uint16_t port, uint32_t status);
     76
     77static void usb_hub_port_over_current(usb_hub_info_t *hub,
     78    uint16_t port, uint32_t status);
    8079
    8180static int get_port_status(usb_pipe_t *ctrl_pipe, size_t port,
     
    9695 * @param port port number, starting from 1
    9796 */
    98 void usb_hub_process_interrupt(usb_hub_info_t * hub,
    99         uint16_t port) {
    100         usb_log_debug("interrupt at port %zu\n", (size_t) port);
     97void usb_hub_process_interrupt(usb_hub_info_t *hub,
     98    uint16_t port) {
     99        usb_log_debug("Interrupt at port %zu\n", (size_t) port);
    101100        //determine type of change
    102101        //usb_pipe_t *pipe = hub->control_pipe;
     
    134133        if (usb_port_is_status(status, USB_HUB_FEATURE_C_PORT_OVER_CURRENT)) {
    135134                //check if it was not auto-resolved
    136                 usb_log_debug("overcurrent change on port\n");
     135                usb_log_debug("Overcurrent change on port\n");
    137136                usb_hub_port_over_current(hub, port, status);
    138137        }
     
    141140                usb_hub_port_reset_completed(hub, port, status);
    142141        }
    143         usb_log_debug("status x%x : %d\n ", status, status);
     142        usb_log_debug("Status x%x : %d\n ", status, status);
    144143
    145144        usb_port_status_set_bit(
    146             &status, USB_HUB_FEATURE_C_PORT_CONNECTION,false);
     145            &status, USB_HUB_FEATURE_C_PORT_CONNECTION, false);
    147146        usb_port_status_set_bit(
    148             &status, USB_HUB_FEATURE_C_PORT_RESET,false);
     147            &status, USB_HUB_FEATURE_C_PORT_RESET, false);
    149148        usb_port_status_set_bit(
    150             &status, USB_HUB_FEATURE_C_PORT_OVER_CURRENT,false);
    151        
     149            &status, USB_HUB_FEATURE_C_PORT_OVER_CURRENT, false);
     150
    152151        //clearing not yet handled changes     
    153152        unsigned int feature_idx;
    154         for(feature_idx = 0;feature_idx<non_handled_changes_count;
    155             ++feature_idx){
     153        for (feature_idx = 0;
     154            feature_idx < non_handled_changes_count;
     155            ++feature_idx) {
    156156                unsigned int bit_idx = non_handled_changes[feature_idx];
    157                 if(status & (1<<bit_idx)){
     157                if (status & (1 << bit_idx)) {
    158158                        usb_log_info(
    159                             "there was not yet handled change on port %d: %d"
     159                            "There was not yet handled change on port %d: %d"
    160160                            ";clearing it\n",
    161                         port, bit_idx);
     161                            port, bit_idx);
    162162                        int opResult = usb_hub_clear_port_feature(
    163163                            hub->control_pipe,
     
    165165                        if (opResult != EOK) {
    166166                                usb_log_warning(
    167                                     "could not clear port flag %d: %d\n",
    168                                     bit_idx, opResult
     167                                    "Could not clear port flag %d: %s\n",
     168                                    bit_idx, str_error(opResult)
    169169                                    );
    170170                        }
    171171                        usb_port_status_set_bit(
    172                             &status, bit_idx,false);
     172                            &status, bit_idx, false);
    173173                }
    174174        }
    175         if(status>>16){
    176                 usb_log_info("there is still some unhandled change %X\n",
     175        if (status >> 16) {
     176                usb_log_info("There is still some unhandled change %X\n",
    177177                    status);
    178178        }
    179179}
    180 
    181180
    182181/**
     
    190189 */
    191190static void usb_hub_removed_device(
    192         usb_hub_info_t * hub, uint16_t port) {
     191    usb_hub_info_t *hub, uint16_t port) {
    193192
    194193        int opResult = usb_hub_clear_port_feature(hub->control_pipe,
    195                 port, USB_HUB_FEATURE_C_PORT_CONNECTION);
     194            port, USB_HUB_FEATURE_C_PORT_CONNECTION);
    196195        if (opResult != EOK) {
    197                 usb_log_warning("could not clear port-change-connection flag\n");
     196                usb_log_warning("Could not clear port-change-connection flag\n");
    198197        }
    199198        /** \TODO remove device from device manager - not yet implemented in
     
    231230}
    232231
    233 
    234232/**
    235233 * Process port reset change
     
    241239 * @param status
    242240 */
    243 static void usb_hub_port_reset_completed(usb_hub_info_t * hub,
    244         uint16_t port, uint32_t status){
     241static void usb_hub_port_reset_completed(usb_hub_info_t *hub,
     242    uint16_t port, uint32_t status) {
    245243        usb_log_debug("Port %zu reset complete.\n", (size_t) port);
    246244        if (usb_port_is_status(status, USB_HUB_FEATURE_PORT_ENABLE)) {
     
    274272 * @param port port number, starting from 1
    275273 */
    276 static void usb_hub_port_over_current(usb_hub_info_t * hub,
    277         uint16_t port, uint32_t status) {
     274static void usb_hub_port_over_current(usb_hub_info_t *hub,
     275    uint16_t port, uint32_t status) {
    278276        int opResult;
    279         if(usb_port_is_status(status, USB_HUB_FEATURE_PORT_OVER_CURRENT)){
     277        if (usb_port_is_status(status, USB_HUB_FEATURE_PORT_OVER_CURRENT)) {
    280278                opResult = usb_hub_clear_port_feature(hub->control_pipe,
    281                         port, USB_HUB_FEATURE_PORT_POWER);
     279                    port, USB_HUB_FEATURE_PORT_POWER);
    282280                if (opResult != EOK) {
    283                         usb_log_error("cannot power off port %d;  %d\n",
    284                                 port, opResult);
     281                        usb_log_error("Cannot power off port %d; %s\n",
     282                            port, str_error(opResult));
    285283                }
    286         }else{
     284        } else {
    287285                opResult = usb_hub_set_port_feature(hub->control_pipe,
    288                         port, USB_HUB_FEATURE_PORT_POWER);
     286                    port, USB_HUB_FEATURE_PORT_POWER);
    289287                if (opResult != EOK) {
    290                         usb_log_error("cannot power on port %d;  %d\n",
    291                                 port, opResult);
     288                        usb_log_error("Cannot power on port %d; %s\n",
     289                            port, str_error(opResult));
    292290                }
    293291        }
     
    302300 */
    303301static int get_port_status(usb_pipe_t *ctrl_pipe, size_t port,
    304     usb_port_status_t *status)
    305 {
     302    usb_port_status_t *status) {
    306303        size_t recv_size;
    307304        usb_device_request_setup_packet_t request;
     
    310307        usb_hub_set_port_status_request(&request, port);
    311308        int rc = usb_pipe_control_read(ctrl_pipe,
    312             &request, sizeof(usb_device_request_setup_packet_t),
    313             &status_tmp, sizeof(status_tmp), &recv_size);
     309            &request, sizeof (usb_device_request_setup_packet_t),
     310            &status_tmp, sizeof (status_tmp), &recv_size);
    314311        if (rc != EOK) {
    315312                return rc;
     
    336333 * @return Error code.
    337334 */
    338 static int enable_port_callback(int port_no, void *arg)
    339 {
     335static int enable_port_callback(int port_no, void *arg) {
    340336        usb_hub_info_t *hub = arg;
    341337        int rc;
     
    345341        usb_hub_set_reset_port_request(&request, port_no);
    346342        rc = usb_pipe_control_write(hub->control_pipe,
    347             &request, sizeof(request), NULL, 0);
     343            &request, sizeof (request), NULL, 0);
    348344        if (rc != EOK) {
    349345                usb_log_warning("Port reset failed: %s.\n", str_error(rc));
     
    375371 * @return 0 Always.
    376372 */
    377 static int add_device_phase1_worker_fibril(void *arg)
    378 {
     373static int add_device_phase1_worker_fibril(void *arg) {
    379374        struct add_device_phase1 *data
    380375            = (struct add_device_phase1 *) arg;
     
    418413}
    419414
    420 
    421415/** Start device adding when connection change is detected.
    422416 *
     
    429423 */
    430424static int create_add_device_fibril(usb_hub_info_t *hub, size_t port,
    431     usb_speed_t speed)
    432 {
     425    usb_speed_t speed) {
    433426        struct add_device_phase1 *data
    434             = malloc(sizeof(struct add_device_phase1));
     427            = malloc(sizeof (struct add_device_phase1));
    435428        if (data == NULL) {
    436429                return ENOMEM;
  • uspace/drv/usbhub/usbhub.c

    r4166fb1 r5c1a65e  
    5656
    5757
    58 static usb_hub_info_t * usb_hub_info_create(usb_device_t * usb_dev);
    59 
    60 static int usb_hub_process_hub_specific_info(usb_hub_info_t * hub_info);
    61 
    62 static int usb_hub_set_configuration(usb_hub_info_t * hub_info);
    63 
    64 static int usb_hub_start_hub_fibril(usb_hub_info_t * hub_info);
    65 
    66 static int usb_process_hub_over_current(usb_hub_info_t * hub_info,
     58static usb_hub_info_t * usb_hub_info_create(usb_device_t *usb_dev);
     59
     60static int usb_hub_process_hub_specific_info(usb_hub_info_t *hub_info);
     61
     62static int usb_hub_set_configuration(usb_hub_info_t *hub_info);
     63
     64static int usb_hub_start_hub_fibril(usb_hub_info_t *hub_info);
     65
     66static int usb_process_hub_over_current(usb_hub_info_t *hub_info,
    6767    usb_hub_status_t status);
    6868
    69 static int usb_process_hub_local_power_change(usb_hub_info_t * hub_info,
     69static int usb_process_hub_local_power_change(usb_hub_info_t *hub_info,
    7070    usb_hub_status_t status);
    7171
    72 static void usb_hub_process_global_interrupt(usb_hub_info_t * hub_info);
    73 
    74 static void usb_hub_polling_terminated_callback(usb_device_t * device,
     72static void usb_hub_process_global_interrupt(usb_hub_info_t *hub_info);
     73
     74static void usb_hub_polling_terminated_callback(usb_device_t *device,
    7575    bool was_error, void * data);
    7676
     
    9090 * @return error code
    9191 */
    92 int usb_hub_add_device(usb_device_t * usb_dev) {
     92int usb_hub_add_device(usb_device_t *usb_dev) {
    9393        if (!usb_dev) return EINVAL;
    94         usb_hub_info_t * hub_info = usb_hub_info_create(usb_dev);
     94        usb_hub_info_t *hub_info = usb_hub_info_create(usb_dev);
    9595        //create hc connection
    9696        usb_log_debug("Initializing USB wire abstraction.\n");
     
    9999            hub_info->usb_device->ddf_dev);
    100100        if (opResult != EOK) {
    101                 usb_log_error("could not initialize connection to device, "
    102                     "errno %d\n",
    103                     opResult);
     101                usb_log_error("Could not initialize connection to device, "
     102                    " %s\n",
     103                    str_error(opResult));
    104104                free(hub_info);
    105105                return opResult;
     
    109109        opResult = usb_hub_set_configuration(hub_info);
    110110        if (opResult != EOK) {
    111                 usb_log_error("could not set hub configuration, errno %d\n",
    112                     opResult);
     111                usb_log_error("Could not set hub configuration, %s\n",
     112                    str_error(opResult));
    113113                free(hub_info);
    114114                return opResult;
     
    117117        opResult = usb_hub_process_hub_specific_info(hub_info);
    118118        if (opResult != EOK) {
    119                 usb_log_error("could process hub specific info, errno %d\n",
    120                     opResult);
     119                usb_log_error("Could process hub specific info, %s\n",
     120                    str_error(opResult));
    121121                free(hub_info);
    122122                return opResult;
     
    135135
    136136        opResult = usb_hub_start_hub_fibril(hub_info);
    137         if(opResult!=EOK)
     137        if (opResult != EOK)
    138138                free(hub_info);
    139139        return opResult;
    140140}
    141 
    142141
    143142/** Callback for polling hub for changes.
     
    193192 * @return basic usb_hub_info_t structure
    194193 */
    195 static usb_hub_info_t * usb_hub_info_create(usb_device_t * usb_dev) {
    196         usb_hub_info_t * result = malloc(sizeof(usb_hub_info_t));
     194static usb_hub_info_t * usb_hub_info_create(usb_device_t *usb_dev) {
     195        usb_hub_info_t * result = malloc(sizeof (usb_hub_info_t));
    197196        if (!result) return NULL;
    198197        result->usb_device = usb_dev;
     
    202201
    203202        result->ports = NULL;
    204         result->port_count = (size_t) -1;
     203        result->port_count = (size_t) - 1;
    205204        fibril_mutex_initialize(&result->port_mutex);
    206205
     
    221220 * @return error code
    222221 */
    223 static int usb_hub_process_hub_specific_info(usb_hub_info_t * hub_info) {
     222static int usb_hub_process_hub_specific_info(usb_hub_info_t *hub_info) {
    224223        // get hub descriptor
    225         usb_log_debug("creating serialized descriptor\n");
     224        usb_log_debug("Creating serialized descriptor\n");
    226225        uint8_t serialized_descriptor[USB_HUB_MAX_DESCRIPTOR_SIZE];
    227226        usb_hub_descriptor_t * descriptor;
     
    235234
    236235        if (opResult != EOK) {
    237                 usb_log_error("failed when receiving hub descriptor, "
    238                     "badcode = %d\n",
    239                     opResult);
     236                usb_log_error("Failed when receiving hub descriptor, "
     237                    "%s\n",
     238                    str_error(opResult));
    240239                free(serialized_descriptor);
    241240                return opResult;
    242241        }
    243         usb_log_debug2("deserializing descriptor\n");
     242        usb_log_debug2("Deserializing descriptor\n");
    244243        descriptor = usb_create_deserialized_hub_desriptor(
    245244            serialized_descriptor);
     
    252251        /// \TODO this is not semantically correct
    253252        bool is_power_switched =
    254             ((descriptor->hub_characteristics & 1) ==0);
     253            ((descriptor->hub_characteristics & 1) == 0);
    255254        bool has_individual_port_powering =
    256             ((descriptor->hub_characteristics & 1) !=0);
     255            ((descriptor->hub_characteristics & 1) != 0);
    257256        hub_info->ports = malloc(
    258257            sizeof (usb_hub_port_t) * (hub_info->port_count + 1));
    259         if(!hub_info->ports){
     258        if (!hub_info->ports) {
    260259                return ENOMEM;
    261260        }
     
    264263                usb_hub_port_init(&hub_info->ports[port]);
    265264        }
    266         if(is_power_switched){
    267                 usb_log_debug("is_power_switched\n");
    268                
    269                 if(!has_individual_port_powering){
    270                         usb_log_debug("!has_individual_port_powering\n");
     265        if (is_power_switched) {
     266                usb_log_debug("Hub power switched\n");
     267
     268                if (!has_individual_port_powering) {
     269                        usb_log_debug("Has_global powering\n");
    271270                        opResult = usb_hub_set_feature(hub_info->control_pipe,
    272271                            USB_HUB_FEATURE_C_HUB_LOCAL_POWER);
    273272                        if (opResult != EOK) {
    274                                 usb_log_error("cannot power hub: %s\n",
     273                                usb_log_error("Cannot power hub: %s\n",
    275274                                    str_error(opResult));
    276275                        }
     
    278277
    279278                for (port = 1; port <= hub_info->port_count; ++port) {
    280                         usb_log_debug("Powering port %zu.\n",port);
     279                        usb_log_debug("Powering port %zu.\n", port);
    281280                        opResult = usb_hub_set_port_feature(hub_info->control_pipe,
    282281                            port, USB_HUB_FEATURE_PORT_POWER);
     
    286285                        }
    287286                }
    288                
    289         }else{
    290                 usb_log_debug("!is_power_switched, not going to be powered\n");
    291         }
    292         usb_log_debug2("freeing data\n");
     287
     288        } else {
     289                usb_log_debug("Power not switched, not going to be powered\n");
     290        }
     291        usb_log_debug2("Freeing data\n");
    293292        free(descriptor);
    294293        return EOK;
     
    303302 * @return error code
    304303 */
    305 static int usb_hub_set_configuration(usb_hub_info_t * hub_info) {
     304static int usb_hub_set_configuration(usb_hub_info_t *hub_info) {
    306305        //device descriptor
    307306        usb_standard_device_descriptor_t *std_descriptor
    308307            = &hub_info->usb_device->descriptors.device;
    309         usb_log_debug("hub has %d configurations\n",
     308        usb_log_debug("Hub has %d configurations\n",
    310309            std_descriptor->configuration_count);
    311310        if (std_descriptor->configuration_count < 1) {
    312                 usb_log_error("there are no configurations available\n");
     311                usb_log_error("There are no configurations available\n");
    313312                return EINVAL;
    314313        }
     
    328327                return opResult;
    329328        }
    330         usb_log_debug("\tused configuration %d\n",
     329        usb_log_debug("\tUsed configuration %d\n",
    331330            config_descriptor->configuration_number);
    332331
     
    343342 * @return error code
    344343 */
    345 static int usb_hub_start_hub_fibril(usb_hub_info_t * hub_info){
     344static int usb_hub_start_hub_fibril(usb_hub_info_t *hub_info) {
    346345        int rc;
    347346
     
    367366//*********************************************
    368367
    369 
    370368/**
    371369 * process hub over current change
     
    376374 * @return error code
    377375 */
    378 static int usb_process_hub_over_current(usb_hub_info_t * hub_info,
     376static int usb_process_hub_over_current(usb_hub_info_t *hub_info,
    379377    usb_hub_status_t status) {
    380378        int opResult;
    381         if (usb_hub_is_status(status,USB_HUB_FEATURE_HUB_OVER_CURRENT)){
     379        if (usb_hub_is_status(status, USB_HUB_FEATURE_HUB_OVER_CURRENT)) {
    382380                //poweroff all ports
    383381                unsigned int port;
    384                 for(port = 1;port <= hub_info->port_count;++port){
     382                for (port = 1; port <= hub_info->port_count; ++port) {
    385383                        opResult = usb_hub_clear_port_feature(
    386                             hub_info->control_pipe,port,
     384                            hub_info->control_pipe, port,
    387385                            USB_HUB_FEATURE_PORT_POWER);
    388386                        if (opResult != EOK) {
    389387                                usb_log_warning(
    390                                     "cannot power off port %d;  %d\n",
    391                                     port, opResult);
     388                                    "Cannot power off port %d;  %s\n",
     389                                    port, str_error(opResult));
    392390                        }
    393391                }
     
    395393                //power all ports
    396394                unsigned int port;
    397                 for(port = 1;port <= hub_info->port_count;++port){
     395                for (port = 1; port <= hub_info->port_count; ++port) {
    398396                        opResult = usb_hub_set_port_feature(
    399                             hub_info->control_pipe,port,
     397                            hub_info->control_pipe, port,
    400398                            USB_HUB_FEATURE_PORT_POWER);
    401399                        if (opResult != EOK) {
    402400                                usb_log_warning(
    403                                     "cannot power off port %d;  %d\n",
    404                                     port, opResult);
     401                                    "Cannot power off port %d;  %s\n",
     402                                    port, str_error(opResult));
    405403                        }
    406404                }
     
    417415 * @return error code
    418416 */
    419 static int usb_process_hub_local_power_change(usb_hub_info_t * hub_info,
     417static int usb_process_hub_local_power_change(usb_hub_info_t *hub_info,
    420418    usb_hub_status_t status) {
    421419        int opResult = EOK;
    422420        opResult = usb_hub_clear_feature(hub_info->control_pipe,
    423421            USB_HUB_FEATURE_C_HUB_LOCAL_POWER);
    424                 if (opResult != EOK) {
    425                 usb_log_error("cannnot clear hub power change flag: "
    426                     "%d\n",
    427                     opResult);
     422        if (opResult != EOK) {
     423                usb_log_error("Cannnot clear hub power change flag: "
     424                    "%s\n",
     425                    str_error(opResult));
    428426        }
    429427        return opResult;
     
    437435 * @param hub_info hub instance
    438436 */
    439 static void usb_hub_process_global_interrupt(usb_hub_info_t * hub_info) {
    440         usb_log_debug("global interrupt on a hub\n");
     437static void usb_hub_process_global_interrupt(usb_hub_info_t *hub_info) {
     438        usb_log_debug("Global interrupt on a hub\n");
    441439        usb_pipe_t *pipe = hub_info->control_pipe;
    442440        int opResult;
     
    455453            );
    456454        if (opResult != EOK) {
    457                 usb_log_error("could not get hub status\n");
     455                usb_log_error("Could not get hub status: %s\n",
     456                    str_error(opResult));
    458457                return;
    459458        }
    460459        if (rcvd_size != sizeof (usb_port_status_t)) {
    461                 usb_log_error("received status has incorrect size\n");
     460                usb_log_error("Received status has incorrect size\n");
    462461                return;
    463462        }
    464463        //port reset
    465464        if (
    466             usb_hub_is_status(status,16+USB_HUB_FEATURE_C_HUB_OVER_CURRENT)) {
     465            usb_hub_is_status(status, 16 + USB_HUB_FEATURE_C_HUB_OVER_CURRENT)) {
    467466                usb_process_hub_over_current(hub_info, status);
    468467        }
    469468        if (
    470             usb_hub_is_status(status,16+USB_HUB_FEATURE_C_HUB_LOCAL_POWER)) {
     469            usb_hub_is_status(status, 16 + USB_HUB_FEATURE_C_HUB_LOCAL_POWER)) {
    471470                usb_process_hub_local_power_change(hub_info, status);
    472471        }
     
    481480 * @param data pointer to usb_hub_info_t structure
    482481 */
    483 static void usb_hub_polling_terminated_callback(usb_device_t * device,
    484     bool was_error, void * data){
     482static void usb_hub_polling_terminated_callback(usb_device_t *device,
     483    bool was_error, void *data) {
    485484        usb_hub_info_t * hub = data;
    486485        assert(hub);
Note: See TracChangeset for help on using the changeset viewer.