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