Changeset cb89430 in mainline for uspace/drv/bus/usb/xhci/hw_struct/regs.h
- Timestamp:
- 2017-06-22T13:59:15Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e4d7363
- Parents:
- 62ba2cbe
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/xhci/hw_struct/regs.h
r62ba2cbe rcb89430 43 43 #include "common.h" 44 44 45 /*46 */47 48 45 #define XHCI_PIO_CHANGE_UDELAY 5 49 50 #define host2xhci(size, val) host2uint##size##_t_le((val))51 #define xhci2host(size, val) uint##size##_t_le2host((val))52 46 53 47 /* … … 63 57 #define XHCI_REG_SET(reg_set, reg_spec, value) XHCI_REG_SET_INNER(reg_set, value, reg_spec) 64 58 #define XHCI_REG_CLR(reg_set, reg_spec, value) XHCI_REG_CLR_INNER(reg_set, value, reg_spec) 59 #define XHCI_REG_MASK(reg_spec) XHCI_REG_MASK_INNER(reg_spec) 60 #define XHCI_REG_SHIFT(reg_spec) XHCI_REG_SHIFT_INNER(reg_spec) 65 61 66 62 /* … … 78 74 #define XHCI_REG_CLR_INNER(reg_set, value, field, size, type, ...) \ 79 75 XHCI_REG_CLR_##type(&(reg_set)->field, value, size, ##__VA_ARGS__) 76 77 #define XHCI_REG_MASK_INNER(field, size, type, ...) \ 78 XHCI_REG_MASK_##type(size, ##__VA_ARGS__) 79 80 #define XHCI_REG_SHIFT_INNER(field, size, type, ...) \ 81 XHCI_REG_SHIFT_##type(size, ##__VA_ARGS__) 80 82 81 83 /* … … 86 88 #define XHCI_REG_SET_FIELD(ptr, value, size) pio_set_##size((ptr), host2xhci(size, value), XHCI_PIO_CHANGE_UDELAY); 87 89 #define XHCI_REG_CLR_FIELD(ptr, value, size) pio_clear_##size((ptr), host2xhci(size, value), XHCI_PIO_CHANGE_UDELAY); 90 #define XHCI_REG_MASK_FIELD(size) (~((uint##size##_t) 0)) 91 #define XHCI_REG_SHIFT_FIELD(size) (0) 88 92 89 93 /* … … 94 98 #define XHCI_REG_SET_FLAG(ptr, value, size, offset) XHCI_REG_SET_RANGE((ptr), (value), size, (offset), (offset)) 95 99 #define XHCI_REG_CLR_FLAG(ptr, value, size, offset) XHCI_REG_CLR_RANGE((ptr), (value), size, (offset), (offset)) 100 #define XHCI_REG_MASK_FLAG(size, offset) BIT_V(uint##size##_t, offset) 101 #define XHCI_REG_SHIFT_FLAG(size, offset) (offset) 96 102 97 103 /* … … 113 119 pio_clear_##size((ptr), host2xhci(size, BIT_RANGE_INSERT(uint##size##_t, (hi), (lo), (value))), \ 114 120 XHCI_PIO_CHANGE_UDELAY); 121 122 #define XHCI_REG_MASK_RANGE(size, hi, lo) BIT_RANGE(uint##size##_t, hi, lo) 123 #define XHCI_REG_SHIFT_RANGE(size, hi, lo) (lo) 115 124 116 125 /** HC capability registers: section 5.3 */ … … 215 224 #define XHCI_CAP_CIC hccparams2, 32, FLAG, 5 216 225 226 static inline unsigned xhci_get_max_spbuf(xhci_cap_regs_t *cap_regs) { 227 return XHCI_REG_RD(cap_regs, XHCI_CAP_MAX_SPBUF_HI) << 5 228 | XHCI_REG_RD(cap_regs, XHCI_CAP_MAX_SPBUF_LO); 229 } 230 217 231 /** 218 232 * XHCI Port Register Set: section 5.4, table 32 … … 395 409 #define XHCI_OP_CRCR_LO crcr_lo, 32, RANGE, 31, 6 396 410 #define XHCI_OP_CRCR_HI crcr_lo, 32, FIELD 411 #define XHCI_OP_DCBAAP_LO dcbaap_lo, 32, FIELD 412 #define XHCI_OP_DCBAAP_HI dcbaap_lo, 32, FIELD 413 #define XHCI_OP_MAX_SLOTS_EN config, 32, RANGE, 7, 0 414 #define XHCI_OP_U3E config, 32, FLAG, 8 415 #define XHCI_OP_CIE config, 32, FLAG, 9 416 417 /* Aggregating field to read & write whole status at once */ 418 #define XHCI_OP_STATUS usbsts, 32, RANGE, 12, 0 419 420 /* RW1C fields in usbsts */ 421 #define XHCI_STATUS_ACK_MASK 0x41C 397 422 398 423 /** … … 444 469 ioport32_t mfindex; 445 470 446 PADD32 [ 5];447 448 xhci_interrupter_regs_t ir [1024];471 PADD32 [7]; 472 473 xhci_interrupter_regs_t ir []; 449 474 } xhci_rt_regs_t; 450 475 … … 452 477 453 478 /** 454 * XHCI Doorbel Registers: section 5.6455 * 456 * These registers are write-only, thus convenience macros are useless.479 * XHCI Doorbell Registers: section 5.6 480 * 481 * These registers are to be written as a whole field. 457 482 */ 458 483 typedef ioport32_t xhci_doorbell_t;
Note:
See TracChangeset
for help on using the changeset viewer.