Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ohci/ohci_regs.h

    r4e30369 rc44a5f1  
    3535#define DRV_OHCI_OHCI_REGS_H
    3636#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 
    4937
    5038#define LEGACY_REGS_OFFSET 0x100
     
    5442        const ioport32_t revision;
    5543#define R_REVISION_MASK (0x3f)
     44#define R_REVISION_SHIFT (0)
    5645#define R_LEGACY_FLAG   (0x80)
    5746
    5847        ioport32_t control;
    59 /* Control-bulk service ratio */
     48#define C_CBSR_MASK (0x3) /* Control-bulk service ratio */
    6049#define C_CBSR_1_1  (0x0)
    6150#define C_CBSR_1_2  (0x1)
    6251#define C_CBSR_1_3  (0x2)
    6352#define C_CBSR_1_4  (0x3)
    64 #define C_CBSR_MASK (0x3)
    65 #define C_CBSR_SHIFT 0
     53#define C_CBSR_SHIFT (0)
    6654
    6755#define C_PLE (1 << 2)   /* Periodic list enable */
     
    7058#define C_BLE (1 << 5)   /* Bulk list enable */
    7159
    72 /* Host controller functional state */
     60#define C_HCFS_MASK        (0x3) /* Host controller functional state */
    7361#define C_HCFS_RESET       (0x0)
    7462#define C_HCFS_RESUME      (0x1)
    7563#define C_HCFS_OPERATIONAL (0x2)
    7664#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) \
    7970do { \
    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); \
    8473} while (0)
    8574
    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 */
    8878#define C_RWE (1 << 10)  /* Remote wakeup enable */
    8979
     
    9383#define CS_BLF (1 << 2)   /* Bulk list filled */
    9484#define CS_OCR (1 << 3)   /* Ownership change request */
    95 #if 0
    9685#define CS_SOC_MASK (0x3) /* Scheduling overrun count */
    9786#define CS_SOC_SHIFT (16)
    98 #endif
    9987
    10088        /** Interupt enable/disable/status,
     
    113101#define I_RHSC (1 << 6)   /* Root hub status change */
    114102#define I_OC   (1 << 30)  /* Ownership change */
    115 #define I_MI   (1 << 31)  /* Master interrupt (any/all) */
     103#define I_MI   (1 << 31)  /* Master interrupt (all/any interrupts) */
    116104
    117105        /** HCCA pointer (see hw_struct hcca.h) */
     
    157145        /** Remaining bit time in frame to start periodic transfers */
    158146        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) */
    161148
    162149        /** Threshold for starting LS transaction */
     
    166153        /** The first root hub control register */
    167154        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)
    182164
    183165        /** The other root hub control register */
    184166        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)
    191176
    192177        /** Root hub status register */
    193178        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 */
    200184#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 */
    208189#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 */
    215195#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   */
    218197#define RHS_CLEAR_DRWE (1 << 31)
    219198
     
    221200        ioport32_t rh_port_status[];
    222201#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 */
    224203#define RHPS_CLEAR_PORT_ENABLE RHPS_CCS_FLAG
    225204#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 */
    227206#define RHPS_SET_PORT_ENABLE RHPS_PES_FLAG
    228207#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 */
    230209#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 */
    236214#define RHPS_CLEAR_PORT_SUSPEND RHPS_POCI_FLAG
    237215#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 */
    239217#define RHPS_SET_PORT_RESET RHPS_PRS_FLAG
    240218#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 */
    242220#define RHPS_SET_PORT_POWER RHPS_PPS_FLAG
    243221#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 */
    245223#define RHPS_CLEAR_PORT_POWER RHPS_LSDA_FLAG
    246 #define RHPS_CSC_FLAG  (1 << 16) /* connect status change WC */
     224#define RHPS_CSC_FLAG  (1 << 16) /* connect status change Write-Clean */
    247225#define RHPS_PESC_FLAG (1 << 17) /* port enable status change WC */
    248226#define RHPS_PSSC_FLAG (1 << 18) /* port suspend status change WC */
    249227#define RHPS_OCIC_FLAG (1 << 19) /* port over-current change WC */
    250228#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
    252230} __attribute__((packed)) ohci_regs_t;
    253231#endif
Note: See TracChangeset for help on using the changeset viewer.