Changeset 3f189c5 in mainline for uspace/drv/uhci-hcd/uhci_struct
- Timestamp:
- 2011-02-07T14:06:57Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/fix-logger-deadlock, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fe10e72
- Parents:
- 7e62b62
- Location:
- uspace/drv/uhci-hcd/uhci_struct
- Files:
-
- 2 edited
-
transfer_descriptor.c (modified) (3 diffs)
-
transfer_descriptor.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c
r7e62b62 r3f189c5 36 36 37 37 #include "transfer_descriptor.h" 38 #include "utils/malloc32.h" 38 39 39 40 void transfer_descriptor_init(transfer_descriptor_t *instance, … … 58 59 59 60 instance->buffer_ptr = 0; 60 61 instance->next_va = NULL;62 instance->callback = NULL;63 61 64 62 if (size) { … … 118 116 return EOK; 119 117 } 120 /*----------------------------------------------------------------------------*/121 void transfer_descriptor_fini(transfer_descriptor_t *instance)122 {123 assert(instance);124 callback_run(instance->callback,125 convert_outcome(instance->status),126 ((instance->status >> TD_STATUS_ACTLEN_POS) + 1) & TD_STATUS_ACTLEN_MASK127 );128 }129 118 /** 130 119 * @} -
uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h
r7e62b62 r3f189c5 38 38 #include <usb/usb.h> 39 39 40 #include "utils/malloc32.h"41 #include "callback.h"42 40 #include "link_pointer.h" 43 41 … … 86 84 volatile uint32_t buffer_ptr; 87 85 88 /* there is 16 bytes of data available here 89 * those are used to store callback pointer 90 * and next pointer. Thus, there is some free space 91 * on 32bits systems. 86 /* there is 16 bytes of data available here, according to UHCI 87 * Design guide, according to linux kernel the hardware does not care 88 * we don't use it anyway 92 89 */ 93 struct transfer_descriptor *next_va;94 callback_t *callback;95 90 } __attribute__((packed)) transfer_descriptor_t; 96 91 … … 100 95 int pid, void *buffer); 101 96 102 static inline transfer_descriptor_t * transfer_descriptor_get(103 int error_count, size_t size, bool isochronous, usb_target_t target,104 int pid, void *buffer)105 {106 transfer_descriptor_t * instance =107 malloc32(sizeof(transfer_descriptor_t));108 109 if (instance)110 transfer_descriptor_init(111 instance, error_count, size, isochronous, target, pid, buffer);112 return instance;113 }114 115 void transfer_descriptor_fini(transfer_descriptor_t *instance);116 117 static inline void transfer_descriptor_dispose(transfer_descriptor_t *instance)118 {119 assert(instance);120 transfer_descriptor_fini(instance);121 free32(instance);122 }123 97 124 98 int transfer_descriptor_status(transfer_descriptor_t *instance); … … 130 104 return instance->status & TD_STATUS_ERROR_ACTIVE; 131 105 } 132 133 static inline void transfer_descriptor_append(134 transfer_descriptor_t *instance, transfer_descriptor_t *item)135 {136 assert(instance);137 instance->next_va = item;138 instance->next = (uintptr_t)addr_to_phys(item) & LINK_POINTER_ADDRESS_MASK;139 }140 106 #endif 141 107 /**
Note:
See TracChangeset
for help on using the changeset viewer.
