Changes in uspace/drv/bus/usb/ohci/ohci_regs.h [4e30369:c44a5f1] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ohci/ohci_regs.h
r4e30369 rc44a5f1 35 35 #define DRV_OHCI_OHCI_REGS_H 36 36 #include <sys/types.h> 37 #include <byteorder.h>38 39 40 /* assume OHCI regs are le */41 #define host2ohci_reg(value) host2uint32_t_le(value)42 #define ohci_reg2host(value) uint32_t_le2host(value)43 44 #define OHCI_WR(reg, val) reg = host2uint32_t_le(val)45 #define OHCI_RD(reg) uint32_t_le2host(reg)46 #define OHCI_SET(reg, val) reg |= host2uint32_t_le(val)47 #define OHCI_CLR(reg, val) reg &= host2uint32_t_le(~val)48 49 37 50 38 #define LEGACY_REGS_OFFSET 0x100 … … 54 42 const ioport32_t revision; 55 43 #define R_REVISION_MASK (0x3f) 44 #define R_REVISION_SHIFT (0) 56 45 #define R_LEGACY_FLAG (0x80) 57 46 58 47 ioport32_t control; 59 /* Control-bulk service ratio */48 #define C_CBSR_MASK (0x3) /* Control-bulk service ratio */ 60 49 #define C_CBSR_1_1 (0x0) 61 50 #define C_CBSR_1_2 (0x1) 62 51 #define C_CBSR_1_3 (0x2) 63 52 #define C_CBSR_1_4 (0x3) 64 #define C_CBSR_MASK (0x3) 65 #define C_CBSR_SHIFT 0 53 #define C_CBSR_SHIFT (0) 66 54 67 55 #define C_PLE (1 << 2) /* Periodic list enable */ … … 70 58 #define C_BLE (1 << 5) /* Bulk list enable */ 71 59 72 /* Host controller functional state */60 #define C_HCFS_MASK (0x3) /* Host controller functional state */ 73 61 #define C_HCFS_RESET (0x0) 74 62 #define C_HCFS_RESUME (0x1) 75 63 #define C_HCFS_OPERATIONAL (0x2) 76 64 #define C_HCFS_SUSPEND (0x3) 77 #define C_HCFS_GET(reg) ((OHCI_RD(reg) >> 6) & 0x3) 78 #define C_HCFS_SET(reg, value) \ 65 #define C_HCFS_SHIFT (6) 66 67 #define C_HCFS_GET(reg) \ 68 ((reg >> C_HCFS_SHIFT) & C_HCFS_MASK) 69 #define C_HCFS_SET(reg, hcfs_state) \ 79 70 do { \ 80 uint32_t r = OHCI_RD(reg); \ 81 r &= ~(0x3 << 6); \ 82 r |= (value & 0x3) << 6; \ 83 OHCI_WR(reg, r); \ 71 reg = (reg & ~(C_HCFS_MASK << C_HCFS_SHIFT)) \ 72 | ((hcfs_state & C_HCFS_MASK) << C_HCFS_SHIFT); \ 84 73 } while (0) 85 74 86 #define C_IR (1 << 8) /* Interrupt routing, make sure it's 0 */ 87 #define C_RWC (1 << 9) /* Remote wakeup connected, host specific */ 75 76 #define C_IR (1 << 8) /* Interrupt routing, make sure it's 0 */ 77 #define C_RWC (1 << 9) /* Remote wakeup connected, host specific */ 88 78 #define C_RWE (1 << 10) /* Remote wakeup enable */ 89 79 … … 93 83 #define CS_BLF (1 << 2) /* Bulk list filled */ 94 84 #define CS_OCR (1 << 3) /* Ownership change request */ 95 #if 096 85 #define CS_SOC_MASK (0x3) /* Scheduling overrun count */ 97 86 #define CS_SOC_SHIFT (16) 98 #endif99 87 100 88 /** Interupt enable/disable/status, … … 113 101 #define I_RHSC (1 << 6) /* Root hub status change */ 114 102 #define I_OC (1 << 30) /* Ownership change */ 115 #define I_MI (1 << 31) /* Master interrupt (a ny/all) */103 #define I_MI (1 << 31) /* Master interrupt (all/any interrupts) */ 116 104 117 105 /** HCCA pointer (see hw_struct hcca.h) */ … … 157 145 /** Remaining bit time in frame to start periodic transfers */ 158 146 ioport32_t periodic_start; 159 #define PS_MASK 0x3fff 160 #define PS_SHIFT 0 147 #define PS_PS_MASK (0x3fff) /* bit time when periodic get priority (0x3e67) */ 161 148 162 149 /** Threshold for starting LS transaction */ … … 166 153 /** The first root hub control register */ 167 154 ioport32_t rh_desc_a; 168 /** Number of downstream ports, max 15 */ 169 #define RHDA_NDS_MASK (0xff) 170 /** Power switching mode: 0-global, 1-per port*/ 171 #define RHDA_PSM_FLAG (1 << 8) 172 /** No power switch: 1-power on, 0-use PSM*/ 173 #define RHDA_NPS_FLAG (1 << 9) 174 /** 1-Compound device, must be 0 */ 175 #define RHDA_DT_FLAG (1 << 10) 176 /** Over-current mode: 0-global, 1-per port */ 177 #define RHDA_OCPM_FLAG (1 << 11) 178 /** OC control: 0-use OCPM, 1-OC off */ 179 #define RHDA_NOCP_FLAG (1 << 12) 180 /** Power on to power good time */ 181 #define RHDA_POTPGT_SHIFT 24 155 #define RHDA_NDS_MASK (0xff) /* Number of downstream ports, max 15 */ 156 #define RHDA_NDS_SHIFT (0) 157 #define RHDA_PSM_FLAG (1 << 8) /* Power switching mode: 0-global, 1-per port*/ 158 #define RHDA_NPS_FLAG (1 << 9) /* No power switch: 1-power on, 0-use PSM*/ 159 #define RHDA_DT_FLAG (1 << 10) /* 1-Compound device, must be 0 */ 160 #define RHDA_OCPM_FLAG (1 << 11) /* Over-current mode: 0-global, 1-per port */ 161 #define RHDA_NOCP_FLAG (1 << 12) /* OC control: 0-use OCPM, 1-OC off */ 162 #define RHDA_POTPGT_MASK (0xff) /* Power on to power good time */ 163 #define RHDA_POTPGT_SHIFT (24) 182 164 183 165 /** The other root hub control register */ 184 166 ioport32_t rh_desc_b; 185 /** Device removable mask */ 186 #define RHDB_DR_SHIFT 0 187 #define RHDB_DR_MASK 0xffff 188 /** Power control mask */ 189 #define RHDB_PCC_MASK (0xffff) 190 #define RHDB_PCC_SHIFT 16 167 #define RHDB_DR_MASK (0xffff) /* Device removable mask */ 168 #define RHDB_DR_SHIFT (0) 169 #define RHDB_PCC_MASK (0xffff) /* Power control mask */ 170 #define RHDB_PCC_SHIFT (16) 171 172 /* Port device removable status */ 173 #define RHDB_DR_FLAG(port) (((1 << port) & RHDB_DR_MASK) << RHDB_DR_SHIFT) 174 /* Port power control status: 1-per port power control, 0-global power switch */ 175 #define RHDB_PPC_FLAG(port) (((1 << port) & RHDB_DR_MASK) << RHDB_DR_SHIFT) 191 176 192 177 /** Root hub status register */ 193 178 ioport32_t rh_status; 194 /* read: 0, 195 * write: 0-no effect, 196 * 1-turn off port power for ports 197 * specified in PPCM(RHDB), or all ports, 198 * if power is set globally */ 199 #define RHS_LPS_FLAG (1 << 0) 179 #define RHS_LPS_FLAG (1 << 0)/* read: 0, 180 * write: 0-no effect, 181 * 1-turn off port power for ports 182 * specified in PPCM(RHDB), or all ports, 183 * if power is set globally */ 200 184 #define RHS_CLEAR_GLOBAL_POWER RHS_LPS_FLAG /* synonym for the above */ 201 /** Over-current indicator, if per-port: 0 */ 202 #define RHS_OCI_FLAG (1 << 1) 203 204 /* read: 0-connect status change does not wake HC 205 * 1-connect status change wakes HC 206 * write: 1-set DRWE, 0-no effect */ 207 #define RHS_DRWE_FLAG (1 << 15) 185 #define RHS_OCI_FLAG (1 << 1)/* Over-current indicator, if per-port: 0 */ 186 #define RHS_DRWE_FLAG (1 << 15)/* read: 0-connect status change does not wake HC 187 * 1-connect status change wakes HC 188 * write: 1-set DRWE, 0-no effect */ 208 189 #define RHS_SET_DRWE RHS_DRWE_FLAG 209 /* read: 0, 210 * write: 0-no effect 211 * 1-turn on port power for ports 212 * specified in PPCM(RHDB), or all ports, 213 * if power is set globally */ 214 #define RHS_LPSC_FLAG (1 << 16) 190 #define RHS_LPSC_FLAG (1 << 16)/* read: 0, 191 * write: 0-no effect 192 * 1-turn on port power for ports 193 * specified in PPCM(RHDB), or all ports, 194 * if power is set globally */ 215 195 #define RHS_SET_GLOBAL_POWER RHS_LPSC_FLAG /* synonym for the above */ 216 /** Over-current change indicator*/ 217 #define RHS_OCIC_FLAG (1 << 17) 196 #define RHS_OCIC_FLAG (1 << 17)/* Over-current indicator change */ 218 197 #define RHS_CLEAR_DRWE (1 << 31) 219 198 … … 221 200 ioport32_t rh_port_status[]; 222 201 #define RHPS_CCS_FLAG (1 << 0) /* r: current connect status, 223 * w: 1-clear port enable, 0-N/S*/202 * w: 1-clear port enable, 0-nothing */ 224 203 #define RHPS_CLEAR_PORT_ENABLE RHPS_CCS_FLAG 225 204 #define RHPS_PES_FLAG (1 << 1) /* r: port enable status 226 * w: 1-set port enable, 0-N/S*/205 * w: 1-set port enable, 0-nothing */ 227 206 #define RHPS_SET_PORT_ENABLE RHPS_PES_FLAG 228 207 #define RHPS_PSS_FLAG (1 << 2) /* r: port suspend status 229 * w: 1-set port suspend, 0-N/S*/208 * w: 1-set port suspend, 0-nothing */ 230 209 #define RHPS_SET_PORT_SUSPEND RHPS_PSS_FLAG 231 #define RHPS_POCI_FLAG (1 << 3) /* r: port over-current 232 * (if reports are per-port 233 * w: 1-clear port suspend 234 * (start resume if suspened) 235 * 0-nothing */ 210 #define RHPS_POCI_FLAG (1 << 3) /* r: port over-current (if reports are per-port 211 * w: 1-clear port suspend (start resume 212 * if suspened) 213 * 0-nothing */ 236 214 #define RHPS_CLEAR_PORT_SUSPEND RHPS_POCI_FLAG 237 215 #define RHPS_PRS_FLAG (1 << 4) /* r: port reset status 238 * w: 1-set port reset, 0-N/S*/216 * w: 1-set port reset, 0-nothing */ 239 217 #define RHPS_SET_PORT_RESET RHPS_PRS_FLAG 240 218 #define RHPS_PPS_FLAG (1 << 8) /* r: port power status 241 * w: 1-set port power, 0-N/S*/219 * w: 1-set port power, 0-nothing */ 242 220 #define RHPS_SET_PORT_POWER RHPS_PPS_FLAG 243 221 #define RHPS_LSDA_FLAG (1 << 9) /* r: low speed device attached 244 * w: 1-clear port power, 0-N/S*/222 * w: 1-clear port power, 0-nothing */ 245 223 #define RHPS_CLEAR_PORT_POWER RHPS_LSDA_FLAG 246 #define RHPS_CSC_FLAG (1 << 16) /* connect status change W C*/224 #define RHPS_CSC_FLAG (1 << 16) /* connect status change Write-Clean */ 247 225 #define RHPS_PESC_FLAG (1 << 17) /* port enable status change WC */ 248 226 #define RHPS_PSSC_FLAG (1 << 18) /* port suspend status change WC */ 249 227 #define RHPS_OCIC_FLAG (1 << 19) /* port over-current change WC */ 250 228 #define RHPS_PRSC_FLAG (1 << 20) /* port reset status change WC */ 251 #define RHPS_CHANGE_WC_MASK (0x1f0000)229 #define RHPS_CHANGE_WC_MASK 0x1f0000 252 230 } __attribute__((packed)) ohci_regs_t; 253 231 #endif
Note:
See TracChangeset
for help on using the changeset viewer.