Changeset e50cd7f in mainline for uspace/drv/ohci/hw_struct/endpoint_descriptor.h
- Timestamp:
- 2011-04-17T19:17:55Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 63517c2, cfbbe1d3
- Parents:
- ef354b6 (diff), 8595577b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/ohci/hw_struct/endpoint_descriptor.h
ref354b6 re50cd7f 35 35 #define DRV_OHCI_HW_STRUCT_ENDPOINT_DESCRIPTOR_H 36 36 37 #include <assert.h> 37 38 #include <stdint.h> 39 40 #include <usb/host/endpoint.h> 41 42 #include "utils/malloc32.h" 43 #include "transfer_descriptor.h" 38 44 39 45 #include "completion_codes.h" … … 44 50 #define ED_STATUS_FA_SHIFT (0) 45 51 #define ED_STATUS_EN_MASK (0xf) /* USB endpoint address */ 46 #define ED_STATUS_EN_SHIFT ( 6)52 #define ED_STATUS_EN_SHIFT (7) 47 53 #define ED_STATUS_D_MASK (0x3) /* direction */ 48 #define ED_STATUS_D_SHIFT (10) 49 #define ED_STATUS_D_IN (0x1) 50 #define ED_STATUS_D_OUT (0x2) 54 #define ED_STATUS_D_SHIFT (11) 55 #define ED_STATUS_D_OUT (0x1) 56 #define ED_STATUS_D_IN (0x2) 57 #define ED_STATUS_D_TRANSFER (0x3) 51 58 52 #define ED_STATUS_S_FLAG (1 << 13) /* speed flag */59 #define ED_STATUS_S_FLAG (1 << 13) /* speed flag: 1 = low */ 53 60 #define ED_STATUS_K_FLAG (1 << 14) /* skip flag (no not execute this ED) */ 54 61 #define ED_STATUS_F_FLAG (1 << 15) /* format: 1 = isochronous*/ … … 66 73 #define ED_TDHEAD_ZERO_SHIFT (2) 67 74 #define ED_TDHEAD_TOGGLE_CARRY (0x2) 75 #define ED_TDHEAD_HALTED_FLAG (0x1) 68 76 69 77 volatile uint32_t next; … … 71 79 #define ED_NEXT_PTR_SHIFT (0) 72 80 } __attribute__((packed)) ed_t; 81 82 void ed_init(ed_t *instance, endpoint_t *ep); 83 84 static inline void ed_set_td(ed_t *instance, td_t *td) 85 { 86 assert(instance); 87 uintptr_t pa = addr_to_phys(td); 88 instance->td_head = 89 ((pa & ED_TDHEAD_PTR_MASK) 90 | (instance->td_head & ~ED_TDHEAD_PTR_MASK)); 91 instance->td_tail = pa & ED_TDTAIL_PTR_MASK; 92 } 93 94 static inline void ed_set_end_td(ed_t *instance, td_t *td) 95 { 96 assert(instance); 97 uintptr_t pa = addr_to_phys(td); 98 instance->td_tail = pa & ED_TDTAIL_PTR_MASK; 99 } 100 101 static inline void ed_append_ed(ed_t *instance, ed_t *next) 102 { 103 assert(instance); 104 assert(next); 105 uint32_t pa = addr_to_phys(next); 106 assert((pa & ED_NEXT_PTR_MASK) << ED_NEXT_PTR_SHIFT == pa); 107 instance->next = pa; 108 } 109 110 static inline int ed_toggle_get(ed_t *instance) 111 { 112 assert(instance); 113 return (instance->td_head & ED_TDHEAD_TOGGLE_CARRY) ? 1 : 0; 114 } 115 116 static inline void ed_toggle_set(ed_t *instance, int toggle) 117 { 118 assert(instance); 119 assert(toggle == 0 || toggle == 1); 120 if (toggle == 1) { 121 instance->td_head |= ED_TDHEAD_TOGGLE_CARRY; 122 } else { 123 /* clear halted flag when reseting toggle */ 124 instance->td_head &= ~ED_TDHEAD_TOGGLE_CARRY; 125 instance->td_head &= ~ED_TDHEAD_HALTED_FLAG; 126 } 127 } 73 128 #endif 74 129 /**
Note:
See TracChangeset
for help on using the changeset viewer.