Changeset 7f56fb7 in mainline


Ignore:
Timestamp:
2011-02-20T18:01:57Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c20da9f
Parents:
51f0e410
Message:

Removal of useless function

It makes no sens to create match ids from configuration descriptor at all.

Also, it is very dangerous to add interface entries to match ids of the
whole device. Thus removed.

Location:
uspace/lib/usb
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/include/usb/usbdrv.h

    r51f0e410 r7f56fb7  
    103103int usb_drv_create_match_ids_from_device_descriptor(match_id_list_t *,
    104104    const usb_standard_device_descriptor_t *);
    105 int usb_drv_create_match_ids_from_configuration_descriptor(match_id_list_t *,
    106     const void *, size_t);
    107 
    108105
    109106#endif
  • uspace/lib/usb/src/recognise.c

    r51f0e410 r7f56fb7  
    278278}
    279279
    280 /** Create DDF match ids from USB configuration descriptor.
    281  * The configuration descriptor is expected to be in the complete form,
    282  * i.e. including interface, endpoint etc. descriptors.
    283  *
    284  * @param matches List of match ids to extend.
    285  * @param config_descriptor Configuration descriptor returned by given device.
    286  * @param total_size Size of the @p config_descriptor.
    287  * @return Error code.
    288  */
    289 int usb_drv_create_match_ids_from_configuration_descriptor(
    290     match_id_list_t *matches,
    291     const void *config_descriptor, size_t total_size)
    292 {
    293         /*
    294          * Iterate through config descriptor to find the interface
    295          * descriptors.
    296          */
    297         size_t position = sizeof(usb_standard_configuration_descriptor_t);
    298         while (position + 1 < total_size) {
    299                 uint8_t *current_descriptor
    300                     = ((uint8_t *) config_descriptor) + position;
    301                 uint8_t cur_descr_len = current_descriptor[0];
    302                 uint8_t cur_descr_type = current_descriptor[1];
    303 
    304                 if (cur_descr_len == 0) {
    305                         return ENOENT;
    306                 }
    307 
    308                 position += cur_descr_len;
    309 
    310                 if (cur_descr_type != USB_DESCTYPE_INTERFACE) {
    311                         continue;
    312                 }
    313 
    314                 /*
    315                  * Finally, we found an interface descriptor.
    316                  */
    317                 usb_standard_interface_descriptor_t *interface
    318                     = (usb_standard_interface_descriptor_t *)
    319                     current_descriptor;
    320 
    321                 ADD_MATCHID_OR_RETURN(matches, 50,
    322                     "usb&interface&class=%s",
    323                     usb_str_class(interface->interface_class));
    324         }
    325 
    326         return EOK;
    327 }
    328 
    329 /** Add match ids based on configuration descriptor.
    330  *
    331  * @param pipe Control pipe to the device.
    332  * @param matches Match ids list to add matches to.
    333  * @param config_count Number of configurations the device has.
    334  * @return Error code.
    335  */
    336 static int usb_add_config_descriptor_match_ids(usb_endpoint_pipe_t *pipe,
    337     match_id_list_t *matches, int config_count)
    338 {
    339         int final_rc = EOK;
    340 
    341         int config_index;
    342         for (config_index = 0; config_index < config_count; config_index++) {
    343                 int rc;
    344                 usb_standard_configuration_descriptor_t config_descriptor;
    345                 rc = usb_request_get_bare_configuration_descriptor(pipe,
    346                     config_index, &config_descriptor);
    347                 if (rc != EOK) {
    348                         final_rc = rc;
    349                         continue;
    350                 }
    351 
    352                 size_t full_config_descriptor_size;
    353                 void *full_config_descriptor
    354                     = malloc(config_descriptor.total_length);
    355                 rc = usb_request_get_full_configuration_descriptor(pipe,
    356                     config_index,
    357                     full_config_descriptor, config_descriptor.total_length,
    358                     &full_config_descriptor_size);
    359                 if (rc != EOK) {
    360                         final_rc = rc;
    361                         continue;
    362                 }
    363                 if (full_config_descriptor_size
    364                     != config_descriptor.total_length) {
    365                         final_rc = ERANGE;
    366                         continue;
    367                 }
    368 
    369                 rc = usb_drv_create_match_ids_from_configuration_descriptor(
    370                     matches,
    371                     full_config_descriptor, full_config_descriptor_size);
    372                 if (rc != EOK) {
    373                         final_rc = rc;
    374                         continue;
    375                 }
    376 
    377         }
    378 
    379         return final_rc;
    380 }
    381280
    382281/** Create match ids describing attached device.
     
    406305        rc = usb_drv_create_match_ids_from_device_descriptor(matches,
    407306            &device_descriptor);
    408         if (rc != EOK) {
    409                 return rc;
    410         }
    411 
    412         /*
    413          * Go through all configurations and add matches
    414          * based on interface class.
    415          */
    416         rc = usb_add_config_descriptor_match_ids(ctrl_pipe, matches,
    417             device_descriptor.configuration_count);
    418307        if (rc != EOK) {
    419308                return rc;
Note: See TracChangeset for help on using the changeset viewer.