Changeset c5b93dc in mainline for uspace/drv/uhci-hcd/uhci_struct
- Timestamp:
- 2011-03-05T00:12:21Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- eae83aa
- Parents:
- 0e06a14
- Location:
- uspace/drv/uhci-hcd/uhci_struct
- Files:
-
- 2 edited
-
transfer_descriptor.c (modified) (3 diffs)
-
transfer_descriptor.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c
r0e06a14 rc5b93dc 38 38 #include "utils/malloc32.h" 39 39 40 void transfer_descriptor_init(transfer_descriptor_t *instance, 41 int error_count, size_t size, bool toggle, bool isochronous, bool low_speed, 42 usb_target_t target, int pid, void *buffer, transfer_descriptor_t *next) 40 void td_init(td_t *instance, int err_count, size_t size, bool toggle, bool iso, 41 bool low_speed, usb_target_t target, int pid, void *buffer, td_t *next) 43 42 { 44 43 assert(instance); 44 assert(size < 1024); 45 45 46 46 instance->next = 0 … … 49 49 50 50 instance->status = 0 51 | ((error_count & TD_STATUS_ERROR_COUNT_MASK) << TD_STATUS_ERROR_COUNT_POS) 52 | (low_speed ? TD_STATUS_LOW_SPEED_FLAG : 0) 53 | TD_STATUS_ERROR_ACTIVE; 51 | ((err_count & TD_STATUS_ERROR_COUNT_MASK) << TD_STATUS_ERROR_COUNT_POS) 52 | (low_speed ? TD_STATUS_LOW_SPEED_FLAG : 0) 53 | (iso ? TD_STATUS_ISOCHRONOUS_FLAG : 0) 54 | TD_STATUS_ERROR_ACTIVE; 54 55 55 assert(size < 1024);56 56 instance->device = 0 57 | (((size - 1) & TD_DEVICE_MAXLEN_MASK) << TD_DEVICE_MAXLEN_POS)58 | (toggle ? TD_DEVICE_DATA_TOGGLE_ONE_FLAG : 0)59 | ((target.address & TD_DEVICE_ADDRESS_MASK) << TD_DEVICE_ADDRESS_POS)60 | ((target.endpoint & TD_DEVICE_ENDPOINT_MASK) << TD_DEVICE_ENDPOINT_POS)61 | ((pid & TD_DEVICE_PID_MASK) << TD_DEVICE_PID_POS);57 | (((size - 1) & TD_DEVICE_MAXLEN_MASK) << TD_DEVICE_MAXLEN_POS) 58 | (toggle ? TD_DEVICE_DATA_TOGGLE_ONE_FLAG : 0) 59 | ((target.address & TD_DEVICE_ADDRESS_MASK) << TD_DEVICE_ADDRESS_POS) 60 | ((target.endpoint & TD_DEVICE_ENDPOINT_MASK) << TD_DEVICE_ENDPOINT_POS) 61 | ((pid & TD_DEVICE_PID_MASK) << TD_DEVICE_PID_POS); 62 62 63 63 instance->buffer_ptr = 0; … … 68 68 69 69 usb_log_debug2("Created TD: %X:%X:%X:%X(%p).\n", 70 instance->next, instance->status, instance->device,71 instance->buffer_ptr, buffer);70 instance->next, instance->status, instance->device, 71 instance->buffer_ptr, buffer); 72 72 } 73 73 /*----------------------------------------------------------------------------*/ 74 int t ransfer_descriptor_status(transfer_descriptor_t *instance)74 int td_status(td_t *instance) 75 75 { 76 76 assert(instance); -
uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h
r0e06a14 rc5b93dc 88 88 * we don't use it anyway 89 89 */ 90 } __attribute__((packed)) t ransfer_descriptor_t;90 } __attribute__((packed)) td_t; 91 91 92 92 93 void transfer_descriptor_init(transfer_descriptor_t *instance, 94 int error_count, size_t size, bool toggle, bool isochronous, bool low_speed, 95 usb_target_t target, int pid, void *buffer, transfer_descriptor_t * next); 93 void td_init(td_t *instance, int error_count, size_t size, bool toggle, bool iso, 94 bool low_speed, usb_target_t target, int pid, void *buffer, td_t * next); 96 95 97 int t ransfer_descriptor_status(transfer_descriptor_t *instance);96 int td_status(td_t *instance); 98 97 99 static inline size_t transfer_descriptor_actual_size( 100 transfer_descriptor_t *instance) 98 static inline size_t td_act_size(td_t *instance) 101 99 { 102 100 assert(instance); 103 101 return 104 ((instance->status >> TD_STATUS_ACTLEN_POS) + 1) & TD_STATUS_ACTLEN_MASK; 102 ((instance->status >> TD_STATUS_ACTLEN_POS) + 1) 103 & TD_STATUS_ACTLEN_MASK; 105 104 } 106 105 107 static inline bool transfer_descriptor_is_active( 108 transfer_descriptor_t *instance) 106 static inline bool td_is_short(td_t *instance) 107 { 108 const size_t act_size = td_act_size(instance); 109 const size_t max_size = 110 ((instance->device >> TD_DEVICE_MAXLEN_POS) + 1) 111 & TD_DEVICE_MAXLEN_MASK; 112 return 113 (instance->status | TD_STATUS_SPD_FLAG) && act_size < max_size; 114 } 115 116 static inline bool td_is_active(td_t *instance) 109 117 { 110 118 assert(instance);
Note:
See TracChangeset
for help on using the changeset viewer.
