Changeset 87305bb in mainline


Ignore:
Timestamp:
2011-04-06T22:32:06Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
dcaf819, fc9f88d
Parents:
4ca18ae
Message:

Final cleanup, fix reseting toggle of the last ep in list

Location:
uspace/lib/usb
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/include/usb/host/device_keeper.h

    r4ca18ae r87305bb  
    5656        link_t endpoints;
    5757        uint16_t control_used;
    58         uint16_t toggle_status[2];
    5958        devman_handle_t handle;
    6059};
     
    8180
    8281void usb_device_keeper_reset_if_need(usb_device_keeper_t *instance,
    83     usb_target_t target,
    84     const uint8_t *setup_data);
    85 /*
    86 int usb_device_keeper_get_toggle(usb_device_keeper_t *instance,
    87     usb_target_t target, usb_direction_t direction);
     82    usb_target_t target, const uint8_t *setup_data);
    8883
    89 int usb_device_keeper_set_toggle(usb_device_keeper_t *instance,
    90     usb_target_t target, usb_direction_t direction, bool toggle);
    91 */
    9284usb_address_t device_keeper_get_free_address(usb_device_keeper_t *instance,
    9385    usb_speed_t speed);
  • uspace/lib/usb/src/host/device_keeper.c

    r4ca18ae r87305bb  
    5656                instance->devices[i].control_used = 0;
    5757                instance->devices[i].handle = 0;
    58 //              instance->devices[i].toggle_status[0] = 0;
    59 //              instance->devices[i].toggle_status[1] = 0;
    6058                list_initialize(&instance->devices[i].endpoints);
    6159        }
     
    132130                        /* endpoint number is < 16, thus first byte is enough */
    133131                        assert(!"NOT IMPLEMENTED!");
    134 //                      instance->devices[target.address].toggle_status[0] &=
    135 //                          ~(1 << data[4]);
    136 //                      instance->devices[target.address].toggle_status[1] &=
    137 //                          ~(1 << data[4]);
    138132                }
    139133        break;
     
    146140                            instance->devices[target.address].endpoints.next;
    147141                        while (current !=
    148                            instance->devices[target.address].endpoints.prev)
     142                           &instance->devices[target.address].endpoints)
    149143                        {
    150144                                endpoint_toggle_reset(current);
    151145                                current = current->next;
    152146                        }
    153 //                      instance->devices[target.address].toggle_status[0] = 0;
    154 //                      instance->devices[target.address].toggle_status[1] = 0;
    155147                }
    156148        break;
     
    158150        fibril_mutex_unlock(&instance->guard);
    159151}
    160 /*----------------------------------------------------------------------------*/
    161 #if 0
    162 /** Get current value of endpoint toggle.
    163  *
    164  * @param[in] instance Device keeper structure to use.
    165  * @param[in] target Device and endpoint used.
    166  * @return Error code
    167  */
    168 int usb_device_keeper_get_toggle(usb_device_keeper_t *instance,
    169     usb_target_t target, usb_direction_t direction)
    170 {
    171         assert(instance);
    172         /* only control pipes are bi-directional and those do not need toggle */
    173         if (direction == USB_DIRECTION_BOTH)
    174                 return ENOENT;
    175         int ret;
    176         fibril_mutex_lock(&instance->guard);
    177         if (target.endpoint > 15 || target.endpoint < 0
    178             || target.address >= USB_ADDRESS_COUNT || target.address < 0
    179             || !instance->devices[target.address].occupied) {
    180                 usb_log_error("Invalid data when asking for toggle value.\n");
    181                 ret = EINVAL;
    182         } else {
    183                 ret = (instance->devices[target.address].toggle_status[direction]
    184                         >> target.endpoint) & 1;
    185         }
    186         fibril_mutex_unlock(&instance->guard);
    187         return ret;
    188 }
    189 /*----------------------------------------------------------------------------*/
    190 /** Set current value of endpoint toggle.
    191  *
    192  * @param[in] instance Device keeper structure to use.
    193  * @param[in] target Device and endpoint used.
    194  * @param[in] toggle Toggle value.
    195  * @return Error code.
    196  */
    197 int usb_device_keeper_set_toggle(usb_device_keeper_t *instance,
    198     usb_target_t target, usb_direction_t direction, bool toggle)
    199 {
    200         assert(instance);
    201         /* only control pipes are bi-directional and those do not need toggle */
    202         if (direction == USB_DIRECTION_BOTH)
    203                 return ENOENT;
    204         int ret;
    205         fibril_mutex_lock(&instance->guard);
    206         if (target.endpoint > 15 || target.endpoint < 0
    207             || target.address >= USB_ADDRESS_COUNT || target.address < 0
    208             || !instance->devices[target.address].occupied) {
    209                 usb_log_error("Invalid data when setting toggle value.\n");
    210                 ret = EINVAL;
    211         } else {
    212                 if (toggle) {
    213                         instance->devices[target.address].toggle_status[direction]
    214                             |= (1 << target.endpoint);
    215                 } else {
    216                         instance->devices[target.address].toggle_status[direction]
    217                             &= ~(1 << target.endpoint);
    218                 }
    219                 ret = EOK;
    220         }
    221         fibril_mutex_unlock(&instance->guard);
    222         return ret;
    223 }
    224 #endif
    225152/*----------------------------------------------------------------------------*/
    226153/** Get a free USB address
     
    251178        instance->devices[new_address].occupied = true;
    252179        instance->devices[new_address].speed = speed;
    253         instance->devices[new_address].toggle_status[0] = 0;
    254         instance->devices[new_address].toggle_status[1] = 0;
    255180        instance->last_address = new_address;
    256181        fibril_mutex_unlock(&instance->guard);
Note: See TracChangeset for help on using the changeset viewer.