Changeset 904b1bc in mainline for uspace/drv
- Timestamp:
- 2018-05-22T10:36:58Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a4eb3ba2
- Parents:
- 4f8772d4
- git-author:
- Jiri Svoboda <jiri@…> (2018-05-21 17:36:30)
- git-committer:
- Jiri Svoboda <jiri@…> (2018-05-22 10:36:58)
- Location:
- uspace/drv
- Files:
-
- 10 edited
-
audio/sb16/dsp_commands.h (modified) (1 diff)
-
bus/usb/ehci/hw_struct/iso_transfer_descriptor.h (modified) (3 diffs)
-
bus/usb/ehci/hw_struct/queue_head.h (modified) (6 diffs)
-
bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h (modified) (5 diffs)
-
bus/usb/ehci/hw_struct/transfer_descriptor.h (modified) (2 diffs)
-
bus/usb/ohci/ohci_regs.h (modified) (3 diffs)
-
bus/usb/uhci/hc.c (modified) (1 diff)
-
bus/usb/xhci/commands.h (modified) (2 diffs)
-
nic/ne2k/dp8390.c (modified) (1 diff)
-
nic/rtl8139/defs.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/audio/sb16/dsp_commands.h
r4f8772d4 r904b1bc 38 38 /** See Sound Blaster Series HW programming Guide Chapter 6. */ 39 39 typedef enum dsp_command { 40 DIRECT_8B_OUTPUT = 0x10, /* Followed by unsigned byte of digital data, 41 * software controls sampling rate */ 42 DIRECT_8B_INPUT = 0x20, /* Same as DIRECT_8B_OUTPUT but for input */ 43 44 TRANSFER_TIME_CONSTANT = 0x40, /* Followed by time constant. 45 * TC = 65536 - (256 000 000 / 46 * (channels * sampling rate)) 47 * Send only high byte */ 48 49 SINGLE_DMA_8B_OUTPUT = 0x14, /* Followed by length.high and length.low 50 * starts single-cycle DMA, length is -1 */ 51 SINGLE_DMA_8B_INPUT = 0x24, /* Same as SINGLE_DMA_8B_OUTPUT, but for 52 * input */ 53 SINGLE_DMA_8B_ADPCM_2B_OUT = 0x16, /* Starts single-cycle DMA using 54 * Creative ADPSM 8->2 bit compressed 55 * data, Followed by length.low 56 * and length.high. Length is -1 */ 57 SINGLE_DMA_8B_ADPCM_2B_OUT_REF = 0x17, /* Starts single-cycle DMA using 58 * DPSM 8->2 bit compressed data 59 * with reference byte. 60 * Followed by length.low and 61 * length.high. Length is -1 */ 62 SINGLE_DMA_8B_ADPCM_4B_OUT = 0x74, /* Same as 63 * SINGLE_DMA_8B_ADPCM_2B_OUT */ 64 SINGLE_DMA_8B_ADPCM_4B_OUT_REF = 0x75, /* Same as 65 * SINGLE_DMA_8B_ADPCM_2B_OUT_REF 66 */ 67 SINGLE_DMA_8B_ADPCM_3B_OUT = 0x76, /* Same as 68 * SINGLE_DMA_8B_ADPCM_2B_OUT */ 69 SINGLE_DMA_8B_ADPCM_3B_OUT_REF = 0x77, /* Same as 70 * SINGLE_DMA_8B_ADPCM_2B_OUT_REF 71 */ 72 73 DMA_8B_PAUSE = 0xd0, /* Stop sending DMA request, 74 * works for SINGLE and AUTO */ 75 DMA_8B_CONTINUE = 0xd4, /* Resume transfers paused by DMA_8B_PAUSE */ 76 77 SPEAKER_ON = 0xd1, /* Connect speaker via internal amplifier, 78 * has no effect on 4.xx */ 79 SPEAKER_OFF = 0xd3, /* Disconnect output from the amplifier, 80 * has no effect on 4.xx */ 81 82 MIDI_POLLING = 0x30, /* Read DSP for MIDI data */ 83 MIDI_INTERRUPT = 0x31, /* Start interrupt mode, interrupt will be 84 * generated when there is in-bound data. 85 * To exit send again */ 86 MIDI_OUTPUT = 0x38, /* Followed by midi_data */ 87 88 PAUSE = 0x80, /* Followed by duration.low, duration.high. Duration is -1 89 * In the units of sampling period. Generates interrupt 90 * at the end of period */ 91 DSP_VERSION = 0xe1, /* Read 2 bytes, major and minor number */ 92 93 AUTO_DMA_8B_OUTPUT = 0x1c, /* Starts auto-init DMA mode using 8-bit 94 * Interrupt after every block. 95 * To terminate, switch to single or use 96 * EXIT command*/ 97 AUTO_DMA_8B_INPUT = 0x2c, /* Same as AUTO_DMA_8B_OUTPUT, but for input*/ 98 AUTO_DMA_8B_ADPCM_2B_REF = 0x1f, /* Same as AUTO_DMA_8B_OUTPUT, but use 99 * 8->2bit ADPCM audio format */ 100 AUTO_DMA_8B_ADPCM_4B_REF = 0x7d, /* Same as AUTO_DMA_8B_ADPCM_2B_REF */ 101 AUTO_DMA_8B_ADPCM_3B_REF = 0x7f, /* Same as AUTO_DMA_8B_ADPCM_2B_REF */ 102 103 DMA_8B_EXIT = 0xda, /* Ends DMA transfer and terminates I/O process */ 104 105 BLOCK_TRANSFER_SIZE = 0x48, /* Followed by size.low, size.high 106 * Used with HIGH_SPEED AUTO_DMA */ 107 108 UART_MIDI_POLLING = 0x34, /* Start UART MIDI polling mode, read and 109 * write from/to DSP is interpreted as 110 * read/write from/to MIDI. 111 * To exit use reset signal. Note that reset 112 * will restore previous state and won't do 113 * complete reset */ 114 UART_MIDI_INTERRUPT = 0x35, /* Same as UART_MIDI_POLLING, but use 115 * interrupts instead of polling. */ 116 UART_MIDI_POLLING_TS = 0x36, /* Add time stamp to inbound data, the 117 * order is time.low time.mid time.high 118 * data */ 119 UART_MIDI_INTERRUPT_TS = 0x37, /* Same as UART_MIDI_POLLING_TS, but use 120 * interrupts instead of polling */ 121 122 SPEAKER_STATUS = 0xd8, /* 0xff means amp is on, 0x00 means it's off */ 123 124 AUTO_DMA_8B_HIGH_OUTPUT = 0x90, /* DSP will generate interrupt after 125 * every block. No other commands are 126 * accepted in this mode. To exit 127 * the mode send RESET command. 128 * Note that reset will restore 129 * previous state. */ 130 AUTO_DMA_8B_HIGH_INPUT = 0x98, /* Same as AUTO_DMA_8B_HIGH_OUTPUT */ 131 SINGLE_DMA_8B_HIGH_OUTPUT = 0x91, /* Transfer one block and exit, 132 * generates interrupt */ 133 SINGLE_DMA_8B_HIGH_INPUT = 0x99, /* Same as SINGLE_DMA_8B_HIGH_OUTPUT */ 134 135 SET_MONO_INPUT = 0xa0, /* Mono mode is the default, only on 3.xx */ 136 SET_STEREO_INPUT = 0xa8, /* Switch to stereo recording, only on 3.xx */ 137 138 SET_SAMPLING_RATE_OUTPUT = 0x41, /* Followed by sapling rate 139 * 5000 to 45000 Hz, inclusive */ 140 SET_SAMPLING_RATE_INPUT = 0x42, /* Same as SET_SAMPLING_RATE_OUTPUT */ 141 142 SINGLE_DMA_16B_DA = 0xb0, /* Followed by mode, size.low, size.high*/ 143 SINGLE_DMA_16B_DA_FIFO = 0xb2,/* mode format is: */ 144 AUTO_DMA_16B_DA = 0xb4, /* 0x00 - unsigned mono */ 145 AUTO_DMA_16B_DA_FIFO = 0xb6, /* 0x10 - signed mono */ 146 SINGLE_DMA_16B_AD = 0xb8, /* 0x20 - unsigned stereo */ 147 SINGLE_DMA_16B_AD_FIFO = 0xba,/* 0x30 - signed stereo */ 148 AUTO_DMA_16B_AD = 0xbc, /* Size is -1. Terminate by EXIT */ 149 AUTO_DMA_16B_AD_FIFO = 0xbe, /* or switch to SINGLE_DMA */ 150 151 SINGLE_DMA_8B_DA = 0xc0, /* Followed by mode, size.low, size.high */ 152 SINGLE_DMA_8B_DA_FIFO = 0xc2,/* mode format is: */ 153 AUTO_DMA_8B_DA = 0xc4, /* 0x00 - unsigned mono */ 154 AUTO_DMA_8B_DA_FIFO = 0xc6, /* 0x10 - signed mono */ 155 SINGLE_DMA_8B_AD = 0xc8, /* 0x20 - unsigned stereo */ 156 SINGLE_DMA_8B_AD_FIFO = 0xca,/* 0x30 - signed stereo */ 157 AUTO_DMA_8B_AD = 0xcc, /* Size is -1. Terminate by EXIT */ 158 AUTO_DMA_8B_AD_FIFO = 0xce, /* or switch to SINGLE_DMA */ 159 160 DMA_16B_PAUSE = 0xd5,/* Stop sending DMA request, both SINGLE and AUTO*/ 161 DMA_16B_CONTINUE = 0xd6, /* Resume requests paused by DMA_16B_PAUSE */ 162 DMA_16B_EXIT = 0xd9, /* Ends DMA transfer and terminates I/O process */ 40 /* 41 * Followed by unsigned byte of digital data, 42 * software controls sampling rate 43 */ 44 DIRECT_8B_OUTPUT = 0x10, 45 /* Same as DIRECT_8B_OUTPUT but for input */ 46 DIRECT_8B_INPUT = 0x20, 47 48 /* 49 * Followed by time constant. 50 * TC = 65536 - (256 000 000 / 51 * (channels * sampling rate)) 52 * Send only high byte 53 */ 54 TRANSFER_TIME_CONSTANT = 0x40, 55 56 /* 57 * Followed by length.high and length.low 58 * starts single-cycle DMA, length is -1 59 */ 60 SINGLE_DMA_8B_OUTPUT = 0x14, 61 /* 62 * Same as SINGLE_DMA_8B_OUTPUT, but for 63 * input 64 */ 65 SINGLE_DMA_8B_INPUT = 0x24, 66 /* 67 * Starts single-cycle DMA using 68 * Creative ADPSM 8->2 bit compressed 69 * data, Followed by length.low 70 * and length.high. Length is -1 71 */ 72 SINGLE_DMA_8B_ADPCM_2B_OUT = 0x16, 73 /* 74 * Starts single-cycle DMA using 75 * DPSM 8->2 bit compressed data 76 * with reference byte. 77 * Followed by length.low and 78 * length.high. Length is -1 79 */ 80 SINGLE_DMA_8B_ADPCM_2B_OUT_REF = 0x17, 81 /* 82 * Same as 83 * SINGLE_DMA_8B_ADPCM_2B_OUT 84 */ 85 SINGLE_DMA_8B_ADPCM_4B_OUT = 0x74, 86 /* 87 * Same as 88 * SINGLE_DMA_8B_ADPCM_2B_OUT_REF 89 */ 90 SINGLE_DMA_8B_ADPCM_4B_OUT_REF = 0x75, 91 /* 92 * Same as 93 * SINGLE_DMA_8B_ADPCM_2B_OUT 94 */ 95 SINGLE_DMA_8B_ADPCM_3B_OUT = 0x76, 96 /* 97 * Same as 98 * SINGLE_DMA_8B_ADPCM_2B_OUT_REF 99 */ 100 SINGLE_DMA_8B_ADPCM_3B_OUT_REF = 0x77, 101 /* 102 * Stop sending DMA request, 103 * works for SINGLE and AUTO 104 */ 105 DMA_8B_PAUSE = 0xd0, 106 /* Resume transfers paused by DMA_8B_PAUSE */ 107 DMA_8B_CONTINUE = 0xd4, 108 109 /* 110 * Connect speaker via internal amplifier, 111 * has no effect on 4.xx 112 */ 113 SPEAKER_ON = 0xd1, 114 /* 115 * Disconnect output from the amplifier, 116 * has no effect on 4.xx 117 */ 118 SPEAKER_OFF = 0xd3, 119 120 /* Read DSP for MIDI data */ 121 MIDI_POLLING = 0x30, 122 /* 123 * Start interrupt mode, interrupt will be 124 * generated when there is in-bound data. 125 * To exit send again 126 */ 127 MIDI_INTERRUPT = 0x31, 128 /* Followed by midi_data */ 129 MIDI_OUTPUT = 0x38, 130 131 /* 132 * Followed by duration.low, duration.high. Duration is -1 133 * In the units of sampling period. Generates interrupt 134 * at the end of period 135 */ 136 PAUSE = 0x80, 137 /* Read 2 bytes, major and minor number */ 138 DSP_VERSION = 0xe1, 139 140 /* 141 * Starts auto-init DMA mode using 8-bit 142 * Interrupt after every block. 143 * To terminate, switch to single or use 144 * EXIT command 145 */ 146 AUTO_DMA_8B_OUTPUT = 0x1c, 147 /* Same as AUTO_DMA_8B_OUTPUT, but for input */ 148 AUTO_DMA_8B_INPUT = 0x2c, 149 /* 150 * Same as AUTO_DMA_8B_OUTPUT, but use 151 * 8->2bit ADPCM audio format 152 */ 153 AUTO_DMA_8B_ADPCM_2B_REF = 0x1f, 154 /* Same as AUTO_DMA_8B_ADPCM_2B_REF */ 155 AUTO_DMA_8B_ADPCM_4B_REF = 0x7d, 156 /* Same as AUTO_DMA_8B_ADPCM_2B_REF */ 157 AUTO_DMA_8B_ADPCM_3B_REF = 0x7f, 158 159 /* Ends DMA transfer and terminates I/O process */ 160 DMA_8B_EXIT = 0xda, 161 162 /* 163 * Followed by size.low, size.high 164 * Used with HIGH_SPEED AUTO_DMA 165 */ 166 BLOCK_TRANSFER_SIZE = 0x48, 167 /* 168 * Start UART MIDI polling mode, read and 169 * write from/to DSP is interpreted as 170 * read/write from/to MIDI. 171 * To exit use reset signal. Note that reset 172 * will restore previous state and won't do 173 * complete reset 174 */ 175 UART_MIDI_POLLING = 0x34, 176 /* 177 * Same as UART_MIDI_POLLING, but use 178 * interrupts instead of polling. 179 */ 180 UART_MIDI_INTERRUPT = 0x35, 181 /* 182 * Add time stamp to inbound data, the 183 * order is time.low time.mid time.high 184 * data 185 */ 186 UART_MIDI_POLLING_TS = 0x36, 187 /* 188 * Same as UART_MIDI_POLLING_TS, but use 189 * interrupts instead of polling 190 */ 191 UART_MIDI_INTERRUPT_TS = 0x37, 192 193 /* 0xff means amp is on, 0x00 means it's off */ 194 SPEAKER_STATUS = 0xd8, 195 196 /* 197 * DSP will generate interrupt after 198 * every block. No other commands are 199 * accepted in this mode. To exit 200 * the mode send RESET command. 201 * Note that reset will restore 202 * previous state. 203 */ 204 AUTO_DMA_8B_HIGH_OUTPUT = 0x90, 205 /* Same as AUTO_DMA_8B_HIGH_OUTPUT */ 206 AUTO_DMA_8B_HIGH_INPUT = 0x98, 207 /* 208 * Transfer one block and exit, 209 * generates interrupt 210 */ 211 SINGLE_DMA_8B_HIGH_OUTPUT = 0x91, 212 /* Same as SINGLE_DMA_8B_HIGH_OUTPUT */ 213 SINGLE_DMA_8B_HIGH_INPUT = 0x99, 214 215 /* Mono mode is the default, only on 3.xx */ 216 SET_MONO_INPUT = 0xa0, 217 /* Switch to stereo recording, only on 3.xx */ 218 SET_STEREO_INPUT = 0xa8, 219 220 /* 221 * Followed by sapling rate 222 * 5000 to 45000 Hz, inclusive 223 */ 224 SET_SAMPLING_RATE_OUTPUT = 0x41, 225 /* Same as SET_SAMPLING_RATE_OUTPUT */ 226 SET_SAMPLING_RATE_INPUT = 0x42, 227 228 /* 229 * Followed by mode, size.low, size.high 230 * mode format is: 231 * 0x00 - unsigned mono 232 * 0x10 - signed mono 233 * 0x20 - unsigned stereo 234 * 0x30 - signed stereo 235 * Size is -1. Terminate AUTO_DMA by EXIT 236 * or switch to SINGLE_DMA 237 */ 238 SINGLE_DMA_16B_DA = 0xb0, 239 SINGLE_DMA_16B_DA_FIFO = 0xb2, 240 AUTO_DMA_16B_DA = 0xb4, 241 AUTO_DMA_16B_DA_FIFO = 0xb6, 242 SINGLE_DMA_16B_AD = 0xb8, 243 SINGLE_DMA_16B_AD_FIFO = 0xba, 244 AUTO_DMA_16B_AD = 0xbc, 245 AUTO_DMA_16B_AD_FIFO = 0xbe, 246 247 /* 248 * Followed by mode, size.low, size.high 249 * mode format is: 250 * 0x00 - unsigned mono 251 * 0x10 - signed mono 252 * 0x20 - unsigned stereo 253 * 0x30 - signed stereo 254 * Size is -1. Terminate AUTO_DMA by EXIT 255 * or switch to SINGLE_DMA 256 */ 257 SINGLE_DMA_8B_DA = 0xc0, 258 SINGLE_DMA_8B_DA_FIFO = 0xc2, 259 AUTO_DMA_8B_DA = 0xc4, 260 AUTO_DMA_8B_DA_FIFO = 0xc6, 261 SINGLE_DMA_8B_AD = 0xc8, 262 SINGLE_DMA_8B_AD_FIFO = 0xca, 263 AUTO_DMA_8B_AD = 0xcc, 264 AUTO_DMA_8B_AD_FIFO = 0xce, 265 266 /* Stop sending DMA request, both SINGLE and AUTO */ 267 DMA_16B_PAUSE = 0xd5, 268 /* Resume requests paused by DMA_16B_PAUSE */ 269 DMA_16B_CONTINUE = 0xd6, 270 /* Ends DMA transfer and terminates I/O process */ 271 DMA_16B_EXIT = 0xd9, 163 272 } dsp_command_t; 164 273 -
uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h
r4f8772d4 r904b1bc 43 43 44 44 volatile uint32_t transaction[8]; 45 volatile uint32_t buffer_pointer[7]; 46 47 /* 64 bit struct only */ 48 volatile uint32_t extended_bp[7]; 49 } __attribute__((packed, aligned(32))) itd_t; 50 51 /* 52 * itd_t.transaction 53 */ 45 54 #define ITD_TRANSACTION_STATUS_ACTIVE_FLAG (1 << 31) 46 55 #define ITD_TRANSACTION_STATUS_BUFFER_ERROR_FLAG (1 << 30) … … 55 64 #define ITD_TRANSACTION_OFFSET_SHIFT 0 56 65 57 volatile uint32_t buffer_pointer[7]; 66 /* 67 * itd_t.buffer_pointer 68 */ 58 69 #define ITD_BUFFER_POINTER_MASK 0xfffff000 59 70 /* First buffer pointer */ … … 70 81 #define ITD_BUFFER_POINTER_MULTI_SHIFT 0 71 82 72 /* 64 bit struct only */73 volatile uint32_t extended_bp[7];74 } __attribute__((packed, aligned(32))) itd_t;75 83 #endif 84 76 85 /** 77 86 * @} -
uspace/drv/bus/usb/ehci/hw_struct/queue_head.h
r4f8772d4 r904b1bc 49 49 50 50 volatile uint32_t ep_char; 51 volatile uint32_t ep_cap; 52 53 link_pointer_t current; 54 /* Transfer overlay starts here */ 55 link_pointer_t next; 56 link_pointer_t alternate; 57 volatile uint32_t status; 58 volatile uint32_t buffer_pointer[5]; 59 60 /* 64 bit struct only */ 61 volatile uint32_t extended_bp[5]; 62 } __attribute__((packed, aligned(32))) qh_t; 63 64 /* 65 * qh_t.ep_char 66 */ 51 67 #define QH_EP_CHAR_RL_MASK 0xf 52 68 #define QH_EP_CHAR_RL_SHIFT 28 … … 78 94 (((val) >> QH_EP_CHAR_ADDR_SHIFT) & QH_EP_CHAR_ADDR_MASK) 79 95 80 volatile uint32_t ep_cap; 96 /* 97 * qh_t.ep_cap 98 */ 81 99 #define QH_EP_CAP_MULTI_MASK 0x3 82 100 #define QH_EP_CAP_MULTI_SHIFT 30 … … 100 118 (((val) & QH_EP_CAP_S_MASK_MASK) << QH_EP_CAP_S_MASK_SHIFT) 101 119 102 link_pointer_t current; 103 /* Transfer overlay starts here */ 104 link_pointer_t next; 105 link_pointer_t alternate; 120 /* 121 * qh_t.alternate 122 */ 106 123 #define QH_ALTERNATE_NACK_CNT_MASK 0x7 107 124 #define QH_ALTERNATE_NACK_CNT_SHIFT 1 108 125 109 volatile uint32_t status; 126 /* 127 * qh_t.status 128 */ 110 129 #define QH_STATUS_TOGGLE_FLAG (1 << 31) 111 130 #define QH_STATUS_TOTAL_MASK 0x7fff … … 127 146 #define QH_STATUS_PING_FLAG (1 << 0) 128 147 129 volatile uint32_t buffer_pointer[5]; 148 /* 149 * qh_t.buffer_pointer 150 */ 130 151 #define QH_BUFFER_POINTER_MASK 0xfffff000 131 152 /* Only the first buffer pointer */ … … 141 162 #define QH_BUFFER_POINTER_FTAG_SHIFT 0 142 163 143 /* 64 bit struct only */144 volatile uint32_t extended_bp[5];145 } __attribute__((packed, aligned(32))) qh_t;146 164 147 165 static inline void qh_append_qh(qh_t *qh, const qh_t *next) … … 212 230 } 213 231 214 215 void qh_init(qh_t *instance, const endpoint_t *ep); 232 extern void qh_init(qh_t *instance, const endpoint_t *ep); 233 216 234 #endif 217 235 /** -
uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h
r4f8772d4 r904b1bc 43 43 44 44 volatile uint32_t ep; 45 volatile uint32_t uframe; 46 volatile uint32_t status; 47 volatile uint32_t buffer_pointer[2]; 48 link_pointer_t back; 49 50 /* 64 bit struct only */ 51 volatile uint32_t extended_bp[2]; 52 } __attribute__((packed, aligned(32))) sitd_t; 53 54 /* 55 * sitd_t.ep 56 */ 45 57 #define SITD_EP_IN_FLAG (1 << 31) 46 58 #define SITD_EP_PORT_MASK 0x3f … … 53 65 #define SITD_EP_ADDR_SHIFT 0 54 66 55 volatile uint32_t uframe; 67 /* 68 * sitd_t.uframe 69 */ 56 70 #define SITD_uFRAME_CMASK_MASK 0xff 57 71 #define SITD_uFRAME_CMASK_SHIFT 8 … … 59 73 #define SITD_uFRAME_SMASK_SHIFT 0 60 74 61 volatile uint32_t status; 75 /* 76 * sitd_t.status 77 */ 62 78 #define SITD_STATUS_IOC_FLAG (1 << 31) 63 79 #define SITD_STATUS_PAGE_FLAG (1 << 30) … … 74 90 #define SITD_STATUS_SPLIT_COMPLETE_FLAG (1 << 1) 75 91 76 volatile uint32_t buffer_pointer[2]; 92 /* 93 * sitd_t.buffer_pointer 94 */ 77 95 #define SITD_BUFFER_POINTER_MASK 0xfffff000 78 96 /* Only the first page pointer */ … … 85 103 #define SITD_BUFFER_POINTER_COUNT_SHIFT 0 86 104 87 link_pointer_t back; 105 #endif 88 106 89 /* 64 bit struct only */90 volatile uint32_t extended_bp[2];91 } __attribute__((packed, aligned(32))) sitd_t;92 #endif93 107 /** 94 108 * @} -
uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h
r4f8772d4 r904b1bc 47 47 48 48 volatile uint32_t status; 49 50 volatile uint32_t buffer_pointer[5]; 51 52 /* 64 bit struct only */ 53 volatile uint32_t extended_bp[5]; 54 55 } __attribute__((packed, aligned(32))) td_t; 56 57 /* 58 * td_t.status 59 */ 49 60 #define TD_STATUS_TOGGLE_FLAG (1 << 31) 50 61 #define TD_STATUS_TOTAL_MASK 0x7fff … … 69 80 #define TD_STATUS_PING_FLAG (1 << 0) 70 81 71 volatile uint32_t buffer_pointer[5]; 82 /* 83 * td_t.buffer_pointer 84 */ 85 72 86 #define TD_BUFFER_POINTER_MASK 0xfffff000 73 87 /* Only the first page pointer */ 74 88 #define TD_BUFFER_POINTER_OFFSET_MASK 0xfff 75 76 /* 64 bit struct only */77 volatile uint32_t extended_bp[5];78 79 } __attribute__((packed, aligned(32))) td_t;80 89 81 90 static_assert(sizeof(td_t) % 32 == 0); -
uspace/drv/bus/usb/ohci/ohci_regs.h
r4f8772d4 r904b1bc 50 50 typedef struct ohci_regs { 51 51 const ioport32_t revision; 52 #define R_REVISION_MASK (0x3f)53 #define R_LEGACY_FLAG (0x80)54 52 55 53 ioport32_t control; 56 /* Control-bulk service ratio */57 #define C_CBSR_1_1 (0x0)58 #define C_CBSR_1_2 (0x1)59 #define C_CBSR_1_3 (0x2)60 #define C_CBSR_1_4 (0x3)61 #define C_CBSR_MASK (0x3)62 #define C_CBSR_SHIFT 063 64 #define C_PLE (1 << 2) /* Periodic list enable */65 #define C_IE (1 << 3) /* Isochronous enable */66 #define C_CLE (1 << 4) /* Control list enable */67 #define C_BLE (1 << 5) /* Bulk list enable */68 69 /* Host controller functional state */70 #define C_HCFS_RESET (0x0)71 #define C_HCFS_RESUME (0x1)72 #define C_HCFS_OPERATIONAL (0x2)73 #define C_HCFS_SUSPEND (0x3)74 #define C_HCFS_GET(reg) ((OHCI_RD(reg) >> 6) & 0x3)75 #define C_HCFS_SET(reg, value) \76 do { \77 uint32_t r = OHCI_RD(reg); \78 r &= ~(0x3 << 6); \79 r |= (value & 0x3) << 6; \80 OHCI_WR(reg, r); \81 } while (0)82 83 #define C_IR (1 << 8) /* Interrupt routing, make sure it's 0 */84 #define C_RWC (1 << 9) /* Remote wakeup connected, host specific */85 #define C_RWE (1 << 10) /* Remote wakeup enable */86 54 87 55 ioport32_t command_status; 88 #define CS_HCR (1 << 0) /* Host controller reset */89 #define CS_CLF (1 << 1) /* Control list filled */90 #define CS_BLF (1 << 2) /* Bulk list filled */91 #define CS_OCR (1 << 3) /* Ownership change request */92 #if 093 #define CS_SOC_MASK (0x3) /* Scheduling overrun count */94 #define CS_SOC_SHIFT (16)95 #endif96 56 97 57 /** Interupt enable/disable/status, 98 58 * reads give the same value, 99 59 * writing causes enable/disable, 100 * status is write-clean (writing 1 clears the bit*/ 60 * status is write-clean (writing 1 clears the bit 61 */ 101 62 ioport32_t interrupt_status; 102 63 ioport32_t interrupt_enable; 103 64 ioport32_t interrupt_disable; 104 #define I_SO (1 << 0) /* Scheduling overrun */105 #define I_WDH (1 << 1) /* Done head write-back */106 #define I_SF (1 << 2) /* Start of frame */107 #define I_RD (1 << 3) /* Resume detect */108 #define I_UE (1 << 4) /* Unrecoverable error */109 #define I_FNO (1 << 5) /* Frame number overflow */110 #define I_RHSC (1 << 6) /* Root hub status change */111 #define I_OC (1 << 30) /* Ownership change */112 #define I_MI (1 << 31) /* Master interrupt (any/all) */113 65 114 66 /** HCCA pointer (see hw_struct hcca.h) */ 115 67 ioport32_t hcca; 116 #define HCCA_PTR_MASK 0xffffff00 /* HCCA is 256B aligned */117 68 118 69 /** Currently executed periodic endpoint */ … … 136 87 /** Frame time and max packet size for all transfers */ 137 88 ioport32_t fm_interval; 138 #define FMI_FI_MASK (0x3fff) /* Frame interval in bit times (should be 11999)*/139 #define FMI_FI_SHIFT (0)140 #define FMI_FSMPS_MASK (0x7fff) /* Full speed max packet size */141 #define FMI_FSMPS_SHIFT (16)142 #define FMI_TOGGLE_FLAG (1 << 31)143 89 144 90 /** Bit times remaining in current frame */ 145 91 const ioport32_t fm_remaining; 146 #define FMR_FR_MASK FMI_FI_MASK147 #define FMR_FR_SHIFT FMI_FI_SHIFT148 #define FMR_TOGGLE_FLAG FMI_TOGGLE_FLAG149 92 150 93 /** Frame number */ 151 94 const ioport32_t fm_number; 152 #define FMN_NUMBER_MASK (0xffff)153 95 154 96 /** Remaining bit time in frame to start periodic transfers */ 155 97 ioport32_t periodic_start; 156 #define PS_MASK 0x3fff157 #define PS_SHIFT 0158 98 159 99 /** Threshold for starting LS transaction */ 160 100 ioport32_t ls_threshold; 161 #define LST_LST_MASK (0x7fff)162 101 163 102 /** The first root hub control register */ 164 103 ioport32_t rh_desc_a; 165 /** Number of downstream ports, max 15 */166 #define RHDA_NDS_MASK (0xff)167 /** Power switching mode: 0-global, 1-per port*/168 #define RHDA_PSM_FLAG (1 << 8)169 /** No power switch: 1-power on, 0-use PSM*/170 #define RHDA_NPS_FLAG (1 << 9)171 /** 1-Compound device, must be 0 */172 #define RHDA_DT_FLAG (1 << 10)173 /** Over-current mode: 0-global, 1-per port */174 #define RHDA_OCPM_FLAG (1 << 11)175 /** OC control: 0-use OCPM, 1-OC off */176 #define RHDA_NOCP_FLAG (1 << 12)177 /** Power on to power good time */178 #define RHDA_POTPGT_SHIFT 24179 104 180 105 /** The other root hub control register */ 181 106 ioport32_t rh_desc_b; 182 /** Device removable mask */183 #define RHDB_DR_SHIFT 0184 #define RHDB_DR_MASK 0xffffU185 /** Power control mask */186 #define RHDB_PCC_MASK 0xffffU187 #define RHDB_PCC_SHIFT 16188 107 189 108 /** Root hub status register */ 190 109 ioport32_t rh_status; 191 /* read: 0,192 * write: 0-no effect,193 * 1-turn off port power for ports194 * specified in PPCM(RHDB), or all ports,195 * if power is set globally */196 #define RHS_LPS_FLAG (1 << 0)197 #define RHS_CLEAR_GLOBAL_POWER RHS_LPS_FLAG /* synonym for the above */198 /** Over-current indicator, if per-port: 0 */199 #define RHS_OCI_FLAG (1 << 1)200 201 /* read: 0-connect status change does not wake HC202 * 1-connect status change wakes HC203 * write: 1-set DRWE, 0-no effect */204 #define RHS_DRWE_FLAG (1 << 15)205 #define RHS_SET_DRWE RHS_DRWE_FLAG206 /* read: 0,207 * write: 0-no effect208 * 1-turn on port power for ports209 * specified in PPCM(RHDB), or all ports,210 * if power is set globally */211 #define RHS_LPSC_FLAG (1 << 16)212 #define RHS_SET_GLOBAL_POWER RHS_LPSC_FLAG /* synonym for the above */213 /** Over-current change indicator*/214 #define RHS_OCIC_FLAG (1 << 17)215 #define RHS_CLEAR_DRWE (1 << 31)216 110 217 111 /** Root hub per port status */ … … 249 143 } ohci_regs_t; 250 144 145 /* 146 * ohci_regs_t.revision 147 */ 148 149 #define R_REVISION_MASK (0x3f) 150 #define R_LEGACY_FLAG (0x80) 151 152 /* 153 * ohci_regs_t.control 154 */ 155 156 /* Control-bulk service ratio */ 157 #define C_CBSR_1_1 (0x0) 158 #define C_CBSR_1_2 (0x1) 159 #define C_CBSR_1_3 (0x2) 160 #define C_CBSR_1_4 (0x3) 161 #define C_CBSR_MASK (0x3) 162 #define C_CBSR_SHIFT 0 163 164 #define C_PLE (1 << 2) /* Periodic list enable */ 165 #define C_IE (1 << 3) /* Isochronous enable */ 166 #define C_CLE (1 << 4) /* Control list enable */ 167 #define C_BLE (1 << 5) /* Bulk list enable */ 168 169 /* Host controller functional state */ 170 #define C_HCFS_RESET (0x0) 171 #define C_HCFS_RESUME (0x1) 172 #define C_HCFS_OPERATIONAL (0x2) 173 #define C_HCFS_SUSPEND (0x3) 174 #define C_HCFS_GET(reg) ((OHCI_RD(reg) >> 6) & 0x3) 175 #define C_HCFS_SET(reg, value) \ 176 do { \ 177 uint32_t r = OHCI_RD(reg); \ 178 r &= ~(0x3 << 6); \ 179 r |= (value & 0x3) << 6; \ 180 OHCI_WR(reg, r); \ 181 } while (0) 182 183 #define C_IR (1 << 8) /* Interrupt routing, make sure it's 0 */ 184 #define C_RWC (1 << 9) /* Remote wakeup connected, host specific */ 185 #define C_RWE (1 << 10) /* Remote wakeup enable */ 186 187 /* 188 * ohci_regs_t.command_status 189 */ 190 191 #define CS_HCR (1 << 0) /* Host controller reset */ 192 #define CS_CLF (1 << 1) /* Control list filled */ 193 #define CS_BLF (1 << 2) /* Bulk list filled */ 194 #define CS_OCR (1 << 3) /* Ownership change request */ 195 #if 0 196 #define CS_SOC_MASK (0x3) /* Scheduling overrun count */ 197 #define CS_SOC_SHIFT (16) 251 198 #endif 199 200 /* 201 * ohci_regs_t.interrupt_xxx 202 */ 203 204 #define I_SO (1 << 0) /* Scheduling overrun */ 205 #define I_WDH (1 << 1) /* Done head write-back */ 206 #define I_SF (1 << 2) /* Start of frame */ 207 #define I_RD (1 << 3) /* Resume detect */ 208 #define I_UE (1 << 4) /* Unrecoverable error */ 209 #define I_FNO (1 << 5) /* Frame number overflow */ 210 #define I_RHSC (1 << 6) /* Root hub status change */ 211 #define I_OC (1 << 30) /* Ownership change */ 212 #define I_MI (1 << 31) /* Master interrupt (any/all) */ 213 214 215 /* 216 * ohci_regs_t.hcca 217 */ 218 219 #define HCCA_PTR_MASK 0xffffff00 /* HCCA is 256B aligned */ 220 221 /* 222 * ohci_regs_t.fm_interval 223 */ 224 225 #define FMI_FI_MASK (0x3fff) /* Frame interval in bit times (should be 11999)*/ 226 #define FMI_FI_SHIFT (0) 227 #define FMI_FSMPS_MASK (0x7fff) /* Full speed max packet size */ 228 #define FMI_FSMPS_SHIFT (16) 229 #define FMI_TOGGLE_FLAG (1 << 31) 230 231 /* 232 * ohci_regs_t.fm_remaining 233 */ 234 235 #define FMR_FR_MASK FMI_FI_MASK 236 #define FMR_FR_SHIFT FMI_FI_SHIFT 237 #define FMR_TOGGLE_FLAG FMI_TOGGLE_FLAG 238 239 /* 240 * ohci_regs_t.fm_number 241 */ 242 243 #define FMN_NUMBER_MASK (0xffff) 244 245 /* 246 * ohci_regs_t.periodic_start 247 */ 248 249 #define PS_MASK 0x3fff 250 #define PS_SHIFT 0 251 252 /* 253 * ohci_regs_t.ls_threshold 254 */ 255 256 #define LST_LST_MASK (0x7fff) 257 258 /* 259 * ohci_regs_t.rh_desc_a 260 */ 261 262 /** Number of downstream ports, max 15 */ 263 #define RHDA_NDS_MASK (0xff) 264 /** Power switching mode: 0-global, 1-per port*/ 265 #define RHDA_PSM_FLAG (1 << 8) 266 /** No power switch: 1-power on, 0-use PSM*/ 267 #define RHDA_NPS_FLAG (1 << 9) 268 /** 1-Compound device, must be 0 */ 269 #define RHDA_DT_FLAG (1 << 10) 270 /** Over-current mode: 0-global, 1-per port */ 271 #define RHDA_OCPM_FLAG (1 << 11) 272 /** OC control: 0-use OCPM, 1-OC off */ 273 #define RHDA_NOCP_FLAG (1 << 12) 274 /** Power on to power good time */ 275 #define RHDA_POTPGT_SHIFT 24 276 277 /* 278 * ohci_regs_t.rh_desc_b 279 */ 280 281 /** Device removable mask */ 282 #define RHDB_DR_SHIFT 0 283 #define RHDB_DR_MASK 0xffffU 284 285 /** Power control mask */ 286 #define RHDB_PCC_MASK 0xffffU 287 #define RHDB_PCC_SHIFT 16 288 289 /* 290 * ohci_regs_t.rh_status 291 */ 292 293 /* 294 * read: 0, 295 * write: 0-no effect, 296 * 1-turn off port power for ports 297 * specified in PPCM(RHDB), or all ports, 298 * if power is set globally 299 */ 300 #define RHS_LPS_FLAG (1 << 0) 301 #define RHS_CLEAR_GLOBAL_POWER RHS_LPS_FLAG /* synonym for the above */ 302 /** Over-current indicator, if per-port: 0 */ 303 #define RHS_OCI_FLAG (1 << 1) 304 /* 305 * read: 0-connect status change does not wake HC 306 * 1-connect status change wakes HC 307 * write: 1-set DRWE, 0-no effect 308 */ 309 #define RHS_DRWE_FLAG (1 << 15) 310 #define RHS_SET_DRWE RHS_DRWE_FLAG 311 /* 312 * read: 0, 313 * write: 0-no effect 314 * 1-turn on port power for ports 315 * specified in PPCM(RHDB), or all ports, 316 * if power is set globally 317 */ 318 #define RHS_LPSC_FLAG (1 << 16) 319 #define RHS_SET_GLOBAL_POWER RHS_LPSC_FLAG /* synonym for the above */ 320 /** Over-current change indicator*/ 321 #define RHS_OCIC_FLAG (1 << 17) 322 #define RHS_CLEAR_DRWE (1 << 31) 323 324 #endif 325 326 /* 327 * ohci_regs_t.rh_port_status[x] 328 */ 329 330 /** r: current connect status, w: 1-clear port enable, 0-N/S*/ 331 #define RHPS_CCS_FLAG (1 << 0) 332 #define RHPS_CLEAR_PORT_ENABLE RHPS_CCS_FLAG 333 /** r: port enable status, w: 1-set port enable, 0-N/S */ 334 #define RHPS_PES_FLAG (1 << 1) 335 #define RHPS_SET_PORT_ENABLE RHPS_PES_FLAG 336 /** r: port suspend status, w: 1-set port suspend, 0-N/S */ 337 #define RHPS_PSS_FLAG (1 << 2) 338 #define RHPS_SET_PORT_SUSPEND RHPS_PSS_FLAG 339 /** r: port over-current (if reports are per-port 340 * w: 1-clear port suspend (start resume if suspened), 0-nothing 341 */ 342 #define RHPS_POCI_FLAG (1 << 3) 343 #define RHPS_CLEAR_PORT_SUSPEND RHPS_POCI_FLAG 344 /** r: port reset status, w: 1-set port reset, 0-N/S */ 345 #define RHPS_PRS_FLAG (1 << 4) 346 #define RHPS_SET_PORT_RESET RHPS_PRS_FLAG 347 /** r: port power status, w: 1-set port power, 0-N/S */ 348 #define RHPS_PPS_FLAG (1 << 8) 349 #define RHPS_SET_PORT_POWER RHPS_PPS_FLAG 350 /** r: low speed device attached, w: 1-clear port power, 0-N/S */ 351 #define RHPS_LSDA_FLAG (1 << 9) 352 #define RHPS_CLEAR_PORT_POWER RHPS_LSDA_FLAG 353 /** connect status change WC */ 354 #define RHPS_CSC_FLAG (1 << 16) 355 /** port enable status change WC */ 356 #define RHPS_PESC_FLAG (1 << 17) 357 /** port suspend status change WC */ 358 #define RHPS_PSSC_FLAG (1 << 18) 359 /** port over-current change WC */ 360 #define RHPS_OCIC_FLAG (1 << 19) 361 /** port reset status change WC */ 362 #define RHPS_PRSC_FLAG (1 << 20) 363 #define RHPS_CHANGE_WC_MASK (0x1f0000) 252 364 253 365 /** -
uspace/drv/bus/usb/uhci/hc.c
r4f8772d4 r904b1bc 531 531 &instance->transfers_control_slow); 532 532 533 /*FSBR, This feature is not needed (adds no benefit) and is supposedly 534 * buggy on certain hw, enable at your own risk. */ 533 /* 534 * FSBR, This feature is not needed (adds no benefit) and is supposedly 535 * buggy on certain hw, enable at your own risk. 536 */ 535 537 #ifdef FSBR 536 538 transfer_list_set_next(&instance->transfers_bulk_full, -
uspace/drv/bus/usb/xhci/commands.h
r4f8772d4 r904b1bc 79 79 xhci_trb_ring_t trb_ring; 80 80 81 fibril_mutex_t guard; /**< Guard access to this structure. */ 81 /** Guard access to this structure. */ 82 fibril_mutex_t guard; 82 83 list_t cmd_list; 83 84 84 xhci_cr_state_t state; /**< Whether commands are allowed to be 85 added. */ 86 fibril_condvar_t state_cv; /**< For waiting on CR state change. */ 85 /** Whether commands are allowed to be added. */ 86 xhci_cr_state_t state; 87 /** For waiting on CR state change. */ 88 fibril_condvar_t state_cv; 87 89 88 fibril_condvar_t stopped_cv; /**< For waiting on CR stopped event. */ 90 /** For waiting on CR stopped event. */ 91 fibril_condvar_t stopped_cv; 89 92 } xhci_cmd_ring_t; 90 93 … … 108 111 109 112 /** Below are arguments of all commands mixed together. 110 * Be sure to know which command accepts what arguments. */ 113 * Be sure to know which command accepts what arguments. 114 */ 111 115 112 116 uint32_t slot_id; -
uspace/drv/nic/ne2k/dp8390.c
r4f8772d4 r904b1bc 475 475 size_t frames_count = 0; 476 476 477 /* We may block sending in this loop - after so many received frames there 477 /* 478 * We may block sending in this loop - after so many received frames there 478 479 * must be some interrupt pending (for the frames not yet downloaded) and 479 * we will continue in its handler. */ 480 * we will continue in its handler. 481 */ 480 482 while (frames_count < 16) { 481 483 //TODO: isn't some locking necessary here? -
uspace/drv/nic/rtl8139/defs.h
r4f8772d4 r904b1bc 280 280 /** Receiver control register values */ 281 281 enum rtl8139_rcr { 282 RCR_ERTH_SHIFT = 24, /**< Early Rx treshold part shift */ 283 RCR_ERTH_SIZE = 4, /**< Early Rx treshold part size */ 284 285 RCR_MulERINT = 1 << 17, /**< Multiple early interrupt select */ 286 287 /** Minimal error frame length (1 = 8B, 0 = 64B). If AER/AR is set, RER8 288 * is "Don't care" 282 /** Early Rx treshold part shift */ 283 RCR_ERTH_SHIFT = 24, 284 /** Early Rx treshold part size */ 285 RCR_ERTH_SIZE = 4, 286 287 /** Multiple early interrupt select */ 288 RCR_MulERINT = 1 << 17, 289 290 /** Minimal error frame length (1 = 8B, 0 = 64B). 291 * If AER/AR is set, RER8 is "Don't care" 289 292 */ 290 293 RCR_RER8 = 1 << 16, 291 294 292 RCR_RXFTH_SHIFT = 13, /**< Rx FIFO treshold part shitf */ 293 RCR_RXFTH_SIZE = 3, /**< Rx FIFO treshold part size */ 294 295 RCR_RBLEN_SHIFT = 11, /**< Rx buffer length part shift */ 296 RCR_RBLEN_SIZE = 2, /**< Rx buffer length part size */ 297 298 RCR_RBLEN_8k = 0x00 << RCR_RBLEN_SHIFT, /**< 8K + 16 byte rx buffer */ 299 RCR_RBLEN_16k = 0x01 << RCR_RBLEN_SHIFT, /**< 16K + 16 byte rx buffer */ 300 RCR_RBLEN_32k = 0x02 << RCR_RBLEN_SHIFT, /**< 32K + 16 byte rx buffer */ 301 RCR_RBLEN_64k = 0x03 << RCR_RBLEN_SHIFT, /**< 64K + 16 byte rx buffer */ 302 303 RCR_MXDMA_SHIFT = 8, /**< Max DMA Burst Size part shift */ 304 RCR_MXDMA_SIZE = 3, /**< Max DMA Burst Size part size */ 305 306 RCR_WRAP = 1 << 7, /**< Rx buffer wrapped */ 307 RCR_ACCEPT_ERROR = 1 << 5, /**< Accept error frame */ 308 RCR_ACCEPT_RUNT = 1 << 4, /**< Accept Runt (8-64 bytes) frames */ 309 RCR_ACCEPT_BROADCAST = 1 << 3, /**< Accept broadcast */ 310 RCR_ACCEPT_MULTICAST = 1 << 2, /**< Accept multicast */ 311 RCR_ACCEPT_PHYS_MATCH = 1 << 1, /**< Accept device MAC address match */ 312 RCR_ACCEPT_ALL_PHYS = 1 << 0, /**< Accept all frames with 313 * phys. desticnation 314 */ 315 RCR_ACCEPT_MASK = (1 << 6) - 1 /**< Mask of accept part */ 295 /** Rx FIFO treshold part shift */ 296 RCR_RXFTH_SHIFT = 13, 297 /** Rx FIFO treshold part size */ 298 RCR_RXFTH_SIZE = 3, 299 300 /** Rx buffer length part shift */ 301 RCR_RBLEN_SHIFT = 11, 302 /** Rx buffer length part size */ 303 RCR_RBLEN_SIZE = 2, 304 305 /** 8K + 16 byte rx buffer */ 306 RCR_RBLEN_8k = 0x00 << RCR_RBLEN_SHIFT, 307 /** 16K + 16 byte rx buffer */ 308 RCR_RBLEN_16k = 0x01 << RCR_RBLEN_SHIFT, 309 /** 32K + 16 byte rx buffer */ 310 RCR_RBLEN_32k = 0x02 << RCR_RBLEN_SHIFT, 311 /** 64K + 16 byte rx buffer */ 312 RCR_RBLEN_64k = 0x03 << RCR_RBLEN_SHIFT, 313 314 /** Max DMA Burst Size part shift */ 315 RCR_MXDMA_SHIFT = 8, 316 /** Max DMA Burst Size part size */ 317 RCR_MXDMA_SIZE = 3, 318 319 /** Rx buffer wrapped */ 320 RCR_WRAP = 1 << 7, 321 /** Accept error frame */ 322 RCR_ACCEPT_ERROR = 1 << 5, 323 /** Accept Runt (8-64 bytes) frames */ 324 RCR_ACCEPT_RUNT = 1 << 4, 325 /** Accept broadcast */ 326 RCR_ACCEPT_BROADCAST = 1 << 3, 327 /** Accept multicast */ 328 RCR_ACCEPT_MULTICAST = 1 << 2, 329 /** Accept device MAC address match */ 330 RCR_ACCEPT_PHYS_MATCH = 1 << 1, 331 /** Accept all frames with phys. destination */ 332 RCR_ACCEPT_ALL_PHYS = 1 << 0, 333 /** Mask of accept part */ 334 RCR_ACCEPT_MASK = (1 << 6) - 1 316 335 }; 317 336 … … 320 339 enum rtl8139_cscr { 321 340 CS_Testfun = (1 << 15), 322 CS_LD = (1 << 9), /**< Low TPI link disable signal */ 323 CS_HEART_BEAT = (1 << 8), /**< Heart beat enable; 10Mbit mode only */ 324 CS_JABBER_ENABLE = (1 << 7), /**< Enable jabber function */ 341 /** Low TPI link disable signal */ 342 CS_LD = (1 << 9), 343 /** Heart beat enable; 10Mbit mode only */ 344 CS_HEART_BEAT = (1 << 8), 345 /** Enable jabber function */ 346 CS_JABBER_ENABLE = (1 << 7), 325 347 CS_F_LINK100 = (1 << 6), 326 348 CS_F_CONNECT = (1 << 5), 327 CS_CON_STATUS = (1 << 3), /**< connection status: 328 * 1 = valid, 0 = disconnected 329 */ 330 CS_CON_STATUS_EN = (1 << 2), /**< LED1 pin connection status indication */ 331 CS_PASS_SCR = (1 << 0) /**< Bypass Scramble */ 349 /** connection status: 1 = valid, 0 = disconnected */ 350 CS_CON_STATUS = (1 << 3), 351 /** LED1 pin connection status indication */ 352 CS_CON_STATUS_EN = (1 << 2), 353 /** Bypass Scramble */ 354 CS_PASS_SCR = (1 << 0) 332 355 }; 333 356 … … 360 383 /** Auto-negotiation advertisement register */ 361 384 enum rtl8139_anar { 362 ANAR_NEXT_PAGE = (1 << 15), /**< Next page bit, 0 - primary capability 363 * 1 - protocol specific 364 */ 365 ANAR_ACK = (1 << 14), /**< Capability reception acknowledge */ 366 ANAR_REMOTE_FAULT = (1 << 13), /**< Remote fault detection capability */ 367 ANAR_PAUSE = (1 << 10), /**< Symetric pause frame capability */ 368 ANAR_100T4 = (1 << 9), /**< T4, not supported by the device */ 369 ANAR_100TX_FD = (1 << 8), /**< 100BASE_TX full duplex */ 370 ANAR_100TX_HD = (1 << 7), /**< 100BASE_TX half duplex */ 371 ANAR_10_FD = (1 << 6), /**< 10BASE_T full duplex */ 372 ANAR_10_HD = (1 << 5), /**< 10BASE_T half duplex */ 373 ANAR_SELECTOR = 0x1 /**< Selector, 374 * CSMA/CD (0x1) supported only 375 */ 385 /** Next page bit, 0 - primary capability, 1 - protocol specific */ 386 ANAR_NEXT_PAGE = (1 << 15), 387 /** Capability reception acknowledge */ 388 ANAR_ACK = (1 << 14), 389 /** Remote fault detection capability */ 390 ANAR_REMOTE_FAULT = (1 << 13), 391 /** Symetric pause frame capability */ 392 ANAR_PAUSE = (1 << 10), 393 /** T4, not supported by the device */ 394 ANAR_100T4 = (1 << 9), 395 /** 100BASE_TX full duplex */ 396 ANAR_100TX_FD = (1 << 8), 397 /** 100BASE_TX half duplex */ 398 ANAR_100TX_HD = (1 << 7), 399 /** 10BASE_T full duplex */ 400 ANAR_10_FD = (1 << 6), 401 /** 10BASE_T half duplex */ 402 ANAR_10_HD = (1 << 5), 403 /** Selector, CSMA/CD (0x1) supported only */ 404 ANAR_SELECTOR = 0x1 376 405 }; 377 406 … … 409 438 410 439 enum rtl8139_config4 { 411 CONFIG4_RxFIFOAutoClr = (1 << 7), /**< Automatic RxFIFO owerflow clear */ 412 CONFIG4_AnaOff = (1 << 6), /**< Analog poweroff */ 413 CONFIG4_LongWF = (1 << 5), /**< Long wakeup frame 414 * (2xCRC8 + 3xCRC16) 415 */ 416 CONFIG4_LWPME = (1 << 4), /**< LWAKE and PMEB assertion */ 417 CONFIG4_LWPTN = (1 << 2), /**< LWake pattern */ 418 CONFIG4_PBWakeup = (1 << 0) /**< Preboot wakeup */ 440 /** Automatic RxFIFO owerflow clear */ 441 CONFIG4_RxFIFOAutoClr = (1 << 7), 442 /** Analog poweroff */ 443 CONFIG4_AnaOff = (1 << 6), 444 /** Long wakeup frame (2xCRC8 + 3xCRC16) */ 445 CONFIG4_LongWF = (1 << 5), 446 /** LWAKE and PMEB assertion */ 447 CONFIG4_LWPME = (1 << 4), 448 /** LWake pattern */ 449 CONFIG4_LWPTN = (1 << 2), 450 /** Preboot wakeup */ 451 CONFIG4_PBWakeup = (1 << 0) 419 452 }; 420 453 … … 438 471 439 472 enum rtl8139_tcr_bits { 440 HWVERID_A_SHIFT = 26, /**< HW version id, part A shift */ 441 HWVERID_A_SIZE = 5, /**< HW version id, part A bit size */ 442 HWVERID_A_MASK = (1 << 5) - 1, /**< HW version id, part A mask */ 443 444 IFG_SHIFT = 24, /**< The interframe gap time setting shift */ 445 IFG_SIZE = 2, /**< The interframe gap time setting bit size */ 446 447 HWVERID_B_SHIFT = 22, /**< HW version id, part B shift */ 448 HWVERID_B_SIZE = 2, /**< HW version id, part B bit size */ 449 HWVERID_B_MASK = (1 << 2) - 1, /**< HW version id, part B mask */ 450 451 LOOPBACK_SHIFT = 17, /**< Loopback mode shift */ 452 LOOPBACK_SIZE = 2, /**< Loopback mode size 453 * 00 = normal, 11 = loopback 454 */ 455 456 APPEND_CRC = 1 << 16, /**< Append CRC at the end of a frame */ 457 458 MXTxDMA_SHIFT = 8, /**< Max. DMA Burst per TxDMA shift, burst = 16^value */ 459 MXTxDMA_SIZE = 3, /**< Max. DMA Burst per TxDMA bit size */ 460 461 TX_RETRY_COUNT_SHIFT = 4, /**< Retries before aborting shift */ 462 TX_RETRY_COUNT_SIZE = 4, /**< Retries before aborting size */ 463 464 CLEAR_ABORT = 1 << 0 /**< Retransmit aborted frame at the last 465 * transmitted descriptor 466 */ 473 /** HW version id, part A shift */ 474 HWVERID_A_SHIFT = 26, 475 /** HW version id, part A bit size */ 476 HWVERID_A_SIZE = 5, 477 /** HW version id, part A mask */ 478 HWVERID_A_MASK = (1 << 5) - 1, 479 480 /** The interframe gap time setting shift */ 481 IFG_SHIFT = 24, 482 /** The interframe gap time setting bit size */ 483 IFG_SIZE = 2, 484 485 /** HW version id, part B shift */ 486 HWVERID_B_SHIFT = 22, 487 /** HW version id, part B bit size */ 488 HWVERID_B_SIZE = 2, 489 /** HW version id, part B mask */ 490 HWVERID_B_MASK = (1 << 2) - 1, 491 492 /** Loopback mode shift */ 493 LOOPBACK_SHIFT = 17, 494 /** Loopback mode size. 00 = normal, 11 = loopback */ 495 LOOPBACK_SIZE = 2, 496 497 /** Append CRC at the end of a frame */ 498 APPEND_CRC = 1 << 16, 499 500 /** Max. DMA Burst per TxDMA shift, burst = 16^value */ 501 MXTxDMA_SHIFT = 8, 502 /** Max. DMA Burst per TxDMA bit size */ 503 MXTxDMA_SIZE = 3, 504 505 /** Retries before aborting shift */ 506 TX_RETRY_COUNT_SHIFT = 4, 507 /** Retries before aborting size */ 508 TX_RETRY_COUNT_SIZE = 4, 509 510 /** Retransmit aborted frame at the last transmitted descriptor */ 511 CLEAR_ABORT = 1 << 0 467 512 }; 468 513
Note:
See TracChangeset
for help on using the changeset viewer.
