Changeset 48997 in vbox for trunk/src/VBox/Devices/Audio
- Timestamp:
- Oct 9, 2013 11:31:38 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevIchHda.cpp
r46272 r48997 76 76 #define HDA_NREGS 112 77 77 /* Registers */ 78 #define HDA_REG_IND_NAME(x) ICH6_HDA_REG_##x79 #define HDA_REG_FIELD_NAME(reg, x) ICH6_HDA_##reg##_##x80 #define HDA_REG_FIELD_MASK(reg, x) ICH6_HDA_##reg##_##x##_MASK81 #define HDA_REG_FIELD_FLAG_MASK(reg, x) RT_BIT( ICH6_HDA_##reg##_##x##_SHIFT)82 #define HDA_REG_FIELD_SHIFT(reg, x) ICH6_HDA_##reg##_##x##_SHIFT78 #define HDA_REG_IND_NAME(x) HDA_REG_##x 79 #define HDA_REG_FIELD_NAME(reg, x) HDA_##reg##_##x 80 #define HDA_REG_FIELD_MASK(reg, x) HDA_##reg##_##x##_MASK 81 #define HDA_REG_FIELD_FLAG_MASK(reg, x) RT_BIT(HDA_##reg##_##x##_SHIFT) 82 #define HDA_REG_FIELD_SHIFT(reg, x) HDA_##reg##_##x##_SHIFT 83 83 #define HDA_REG_IND(pThis, x) ((pThis)->au32Regs[(x)]) 84 84 #define HDA_REG(pThis, x) (HDA_REG_IND((pThis), HDA_REG_IND_NAME(x))) … … 87 87 #define HDA_REG_SVALUE(pThis, reg, val) (HDA_REG_VALUE(pThis, reg, val) >> (HDA_REG_FIELD_SHIFT(reg, val))) 88 88 89 #define ICH6_HDA_REG_GCAP 0 /* range 0x00-0x01*/89 #define HDA_REG_GCAP 0 /* range 0x00-0x01*/ 90 90 #define GCAP(pThis) (HDA_REG((pThis), GCAP)) 91 91 /* GCAP HDASpec 3.3.2 This macro encodes the following information about HDA in a compact manner: … … 102 102 | (((bds) & 0x3) << 2) \ 103 103 | ((b64sup) & 1)) 104 #define ICH6_HDA_REG_VMIN1 /* range 0x02 */104 #define HDA_REG_VMIN 1 /* range 0x02 */ 105 105 #define VMIN(pThis) (HDA_REG((pThis), VMIN)) 106 106 107 #define ICH6_HDA_REG_VMAJ2 /* range 0x03 */107 #define HDA_REG_VMAJ 2 /* range 0x03 */ 108 108 #define VMAJ(pThis) (HDA_REG((pThis), VMAJ)) 109 109 110 #define ICH6_HDA_REG_OUTPAY3 /* range 0x04-0x05 */110 #define HDA_REG_OUTPAY 3 /* range 0x04-0x05 */ 111 111 #define OUTPAY(pThis) (HDA_REG((pThis), OUTPAY)) 112 112 113 #define ICH6_HDA_REG_INPAY4 /* range 0x06-0x07 */113 #define HDA_REG_INPAY 4 /* range 0x06-0x07 */ 114 114 #define INPAY(pThis) (HDA_REG((pThis), INPAY)) 115 115 116 #define ICH6_HDA_REG_GCTL (5)117 #define ICH6_HDA_GCTL_RST_SHIFT (0)118 #define ICH6_HDA_GCTL_FSH_SHIFT (1)119 #define ICH6_HDA_GCTL_UR_SHIFT (8)116 #define HDA_REG_GCTL 5 117 #define HDA_GCTL_RST_SHIFT 0 118 #define HDA_GCTL_FSH_SHIFT 1 119 #define HDA_GCTL_UR_SHIFT 8 120 120 #define GCTL(pThis) (HDA_REG((pThis), GCTL)) 121 121 122 #define ICH6_HDA_REG_WAKEEN6 /* 0x0C */122 #define HDA_REG_WAKEEN 6 /* 0x0C */ 123 123 #define WAKEEN(pThis) (HDA_REG((pThis), WAKEEN)) 124 124 125 #define ICH6_HDA_REG_STATESTS7 /* range 0x0E */125 #define HDA_REG_STATESTS 7 /* range 0x0E */ 126 126 #define STATESTS(pThis) (HDA_REG((pThis), STATESTS)) 127 #define ICH6_HDA_STATES_SCSF0x7128 129 #define ICH6_HDA_REG_GSTS8 /* range 0x10-0x11*/130 #define ICH6_HDA_GSTS_FSH_SHIFT (1)127 #define HDA_STATES_SCSF 0x7 128 129 #define HDA_REG_GSTS 8 /* range 0x10-0x11*/ 130 #define HDA_GSTS_FSH_SHIFT 1 131 131 #define GSTS(pThis) (HDA_REG(pThis, GSTS)) 132 132 133 #define ICH6_HDA_REG_INTCTL9 /* 0x20 */134 #define ICH6_HDA_INTCTL_GIE_SHIFT31135 #define ICH6_HDA_INTCTL_CIE_SHIFT30136 #define ICH6_HDA_INTCTL_S0_SHIFT (0)137 #define ICH6_HDA_INTCTL_S1_SHIFT (1)138 #define ICH6_HDA_INTCTL_S2_SHIFT (2)139 #define ICH6_HDA_INTCTL_S3_SHIFT (3)140 #define ICH6_HDA_INTCTL_S4_SHIFT (4)141 #define ICH6_HDA_INTCTL_S5_SHIFT (5)142 #define ICH6_HDA_INTCTL_S6_SHIFT (6)143 #define ICH6_HDA_INTCTL_S7_SHIFT (7)133 #define HDA_REG_INTCTL 9 /* 0x20 */ 134 #define HDA_INTCTL_GIE_SHIFT 31 135 #define HDA_INTCTL_CIE_SHIFT 30 136 #define HDA_INTCTL_S0_SHIFT 0 137 #define HDA_INTCTL_S1_SHIFT 1 138 #define HDA_INTCTL_S2_SHIFT 2 139 #define HDA_INTCTL_S3_SHIFT 3 140 #define HDA_INTCTL_S4_SHIFT 4 141 #define HDA_INTCTL_S5_SHIFT 5 142 #define HDA_INTCTL_S6_SHIFT 6 143 #define HDA_INTCTL_S7_SHIFT 7 144 144 #define INTCTL(pThis) (HDA_REG((pThis), INTCTL)) 145 145 #define INTCTL_GIE(pThis) (HDA_REG_FLAG_VALUE(pThis, INTCTL, GIE)) … … 152 152 * the datasheet. 153 153 */ 154 #define ICH6_HDA_REG_SSYNC12 /* 0x34 */154 #define HDA_REG_SSYNC 12 /* 0x34 */ 155 155 #define SSYNC(pThis) (HDA_REG((pThis), SSYNC)) 156 156 157 #define ICH6_HDA_REG_INTSTS10 /* 0x24 */158 #define ICH6_HDA_INTSTS_GIS_SHIFT (31)159 #define ICH6_HDA_INTSTS_CIS_SHIFT (30)160 #define ICH6_HDA_INTSTS_S0_SHIFT (0)161 #define ICH6_HDA_INTSTS_S1_SHIFT (1)162 #define ICH6_HDA_INTSTS_S2_SHIFT (2)163 #define ICH6_HDA_INTSTS_S3_SHIFT (3)164 #define ICH6_HDA_INTSTS_S4_SHIFT (4)165 #define ICH6_HDA_INTSTS_S5_SHIFT (5)166 #define ICH6_HDA_INTSTS_S6_SHIFT (6)167 #define ICH6_HDA_INTSTS_S7_SHIFT (7)168 #define ICH6_HDA_INTSTS_S_MASK(num)RT_BIT(HDA_REG_FIELD_SHIFT(S##num))157 #define HDA_REG_INTSTS 10 /* 0x24 */ 158 #define HDA_INTSTS_GIS_SHIFT 31 159 #define HDA_INTSTS_CIS_SHIFT 30 160 #define HDA_INTSTS_S0_SHIFT 0 161 #define HDA_INTSTS_S1_SHIFT 1 162 #define HDA_INTSTS_S2_SHIFT 2 163 #define HDA_INTSTS_S3_SHIFT 3 164 #define HDA_INTSTS_S4_SHIFT 4 165 #define HDA_INTSTS_S5_SHIFT 5 166 #define HDA_INTSTS_S6_SHIFT 6 167 #define HDA_INTSTS_S7_SHIFT 7 168 #define HDA_INTSTS_S_MASK(num) RT_BIT(HDA_REG_FIELD_SHIFT(S##num)) 169 169 #define INTSTS(pThis) (HDA_REG((pThis), INTSTS)) 170 170 #define INTSTS_GIS(pThis) (HDA_REG_FLAG_VALUE((pThis), INTSTS, GIS) … … 173 173 #define INTSTS_SANY(pThis) (INTSTS((pThis)) & 0xFF) 174 174 175 #define ICH6_HDA_REG_CORBLBASE13 /* 0x40 */175 #define HDA_REG_CORBLBASE 13 /* 0x40 */ 176 176 #define CORBLBASE(pThis) (HDA_REG((pThis), CORBLBASE)) 177 #define ICH6_HDA_REG_CORBUBASE14 /* 0x44 */177 #define HDA_REG_CORBUBASE 14 /* 0x44 */ 178 178 #define CORBUBASE(pThis) (HDA_REG((pThis), CORBUBASE)) 179 #define ICH6_HDA_REG_CORBWP15 /* 48 */180 #define ICH6_HDA_REG_CORBRP16 /* 4A */181 #define ICH6_HDA_CORBRP_RST_SHIFT15182 #define ICH6_HDA_CORBRP_WP_SHIFT0183 #define ICH6_HDA_CORBRP_WP_MASK0xFF179 #define HDA_REG_CORBWP 15 /* 48 */ 180 #define HDA_REG_CORBRP 16 /* 4A */ 181 #define HDA_CORBRP_RST_SHIFT 15 182 #define HDA_CORBRP_WP_SHIFT 0 183 #define HDA_CORBRP_WP_MASK 0xFF 184 184 185 185 #define CORBRP(pThis) (HDA_REG(pThis, CORBRP)) 186 186 #define CORBWP(pThis) (HDA_REG(pThis, CORBWP)) 187 187 188 #define ICH6_HDA_REG_CORBCTL17 /* 0x4C */189 #define ICH6_HDA_CORBCTL_DMA_SHIFT (1)190 #define ICH6_HDA_CORBCTL_CMEIE_SHIFT (0)188 #define HDA_REG_CORBCTL 17 /* 0x4C */ 189 #define HDA_CORBCTL_DMA_SHIFT 1 190 #define HDA_CORBCTL_CMEIE_SHIFT 0 191 191 192 192 #define CORBCTL(pThis) (HDA_REG(pThis, CORBCTL)) 193 193 194 194 195 #define ICH6_HDA_REG_CORBSTS18 /* 0x4D */195 #define HDA_REG_CORBSTS 18 /* 0x4D */ 196 196 #define CORBSTS(pThis) (HDA_REG(pThis, CORBSTS)) 197 #define ICH6_HDA_CORBSTS_CMEI_SHIFT (0)198 199 #define ICH6_HDA_REG_CORBSIZE19 /* 0x4E */200 #define ICH6_HDA_CORBSIZE_SZ_CAP0xF0201 #define ICH6_HDA_CORBSIZE_SZ0x3202 #define CORBSIZE_SZ(pThis) (HDA_REG(pThis, ICH6_HDA_REG_CORBSIZE) & ICH6_HDA_CORBSIZE_SZ)203 #define CORBSIZE_SZ_CAP(pThis) (HDA_REG(pThis, ICH6_HDA_REG_CORBSIZE) & ICH6_HDA_CORBSIZE_SZ_CAP)197 #define HDA_CORBSTS_CMEI_SHIFT 0 198 199 #define HDA_REG_CORBSIZE 19 /* 0x4E */ 200 #define HDA_CORBSIZE_SZ_CAP 0xF0 201 #define HDA_CORBSIZE_SZ 0x3 202 #define CORBSIZE_SZ(pThis) (HDA_REG(pThis, HDA_REG_CORBSIZE) & HDA_CORBSIZE_SZ) 203 #define CORBSIZE_SZ_CAP(pThis) (HDA_REG(pThis, HDA_REG_CORBSIZE) & HDA_CORBSIZE_SZ_CAP) 204 204 /* till ich 10 sizes of CORB and RIRB are hardcoded to 256 in real hw */ 205 205 206 #define ICH6_HDA_REG_RIRLBASE20 /* 0x50 */206 #define HDA_REG_RIRLBASE 20 /* 0x50 */ 207 207 #define RIRLBASE(pThis) (HDA_REG((pThis), RIRLBASE)) 208 208 209 #define ICH6_HDA_REG_RIRUBASE21 /* 0x54 */209 #define HDA_REG_RIRUBASE 21 /* 0x54 */ 210 210 #define RIRUBASE(pThis) (HDA_REG((pThis), RIRUBASE)) 211 211 212 #define ICH6_HDA_REG_RIRBWP22 /* 0x58 */213 #define ICH6_HDA_RIRBWP_RST_SHIFT (15)214 #define ICH6_HDA_RIRBWP_WP_MASK0xFF212 #define HDA_REG_RIRBWP 22 /* 0x58 */ 213 #define HDA_RIRBWP_RST_SHIFT 15 214 #define HDA_RIRBWP_WP_MASK 0xFF 215 215 #define RIRBWP(pThis) (HDA_REG(pThis, RIRBWP)) 216 216 217 #define ICH6_HDA_REG_RINTCNT23 /* 0x5A */217 #define HDA_REG_RINTCNT 23 /* 0x5A */ 218 218 #define RINTCNT(pThis) (HDA_REG((pThis), RINTCNT)) 219 219 #define RINTCNT_N(pThis) (RINTCNT((pThis)) & 0xff) 220 220 221 #define ICH6_HDA_REG_RIRBCTL24 /* 0x5C */222 #define ICH6_HDA_RIRBCTL_RIC_SHIFT (0)223 #define ICH6_HDA_RIRBCTL_DMA_SHIFT (1)224 #define ICH6_HDA_ROI_DMA_SHIFT (2)221 #define HDA_REG_RIRBCTL 24 /* 0x5C */ 222 #define HDA_RIRBCTL_RIC_SHIFT 0 223 #define HDA_RIRBCTL_DMA_SHIFT 1 224 #define HDA_ROI_DMA_SHIFT 2 225 225 #define RIRBCTL(pThis) (HDA_REG((pThis), RIRBCTL)) 226 226 #define RIRBCTL_RIRB_RIC(pThis) (HDA_REG_FLAG_VALUE(pThis, RIRBCTL, RIC)) … … 228 228 #define RIRBCTL_ROI(pThis) (HDA_REG_FLAG_VALUE((pThis), RIRBCTL, ROI)) 229 229 230 #define ICH6_HDA_REG_RIRBSTS25 /* 0x5D */231 #define ICH6_HDA_RIRBSTS_RINTFL_SHIFT (0)232 #define ICH6_HDA_RIRBSTS_RIRBOIS_SHIFT (2)230 #define HDA_REG_RIRBSTS 25 /* 0x5D */ 231 #define HDA_RIRBSTS_RINTFL_SHIFT 0 232 #define HDA_RIRBSTS_RIRBOIS_SHIFT 2 233 233 #define RIRBSTS(pThis) (HDA_REG(pThis, RIRBSTS)) 234 234 #define RIRBSTS_RINTFL(pThis) (HDA_REG_FLAG_VALUE(pThis, RIRBSTS, RINTFL)) 235 235 #define RIRBSTS_RIRBOIS(pThis) (HDA_REG_FLAG_VALUE(pThis, RIRBSTS, RIRBOIS)) 236 236 237 #define ICH6_HDA_REG_RIRBSIZE26 /* 0x5E */238 #define ICH6_HDA_RIRBSIZE_SZ_CAP0xF0239 #define ICH6_HDA_RIRBSIZE_SZ0x3240 241 #define RIRBSIZE_SZ(pThis) (HDA_REG(pThis, ICH6_HDA_REG_RIRBSIZE) & ICH6_HDA_RIRBSIZE_SZ)242 #define RIRBSIZE_SZ_CAP(pThis) (HDA_REG(pThis, ICH6_HDA_REG_RIRBSIZE) & ICH6_HDA_RIRBSIZE_SZ_CAP)243 244 245 #define ICH6_HDA_REG_IC27 /* 0x60 */237 #define HDA_REG_RIRBSIZE 26 /* 0x5E */ 238 #define HDA_RIRBSIZE_SZ_CAP 0xF0 239 #define HDA_RIRBSIZE_SZ 0x3 240 241 #define RIRBSIZE_SZ(pThis) (HDA_REG(pThis, HDA_REG_RIRBSIZE) & HDA_RIRBSIZE_SZ) 242 #define RIRBSIZE_SZ_CAP(pThis) (HDA_REG(pThis, HDA_REG_RIRBSIZE) & HDA_RIRBSIZE_SZ_CAP) 243 244 245 #define HDA_REG_IC 27 /* 0x60 */ 246 246 #define IC(pThis) (HDA_REG(pThis, IC)) 247 #define ICH6_HDA_REG_IR28 /* 0x64 */247 #define HDA_REG_IR 28 /* 0x64 */ 248 248 #define IR(pThis) (HDA_REG(pThis, IR)) 249 #define ICH6_HDA_REG_IRS29 /* 0x68 */250 #define ICH6_HDA_IRS_ICB_SHIFT (0)251 #define ICH6_HDA_IRS_IRV_SHIFT (1)249 #define HDA_REG_IRS 29 /* 0x68 */ 250 #define HDA_IRS_ICB_SHIFT 0 251 #define HDA_IRS_IRV_SHIFT 1 252 252 #define IRS(pThis) (HDA_REG(pThis, IRS)) 253 253 #define IRS_ICB(pThis) (HDA_REG_FLAG_VALUE(pThis, IRS, ICB)) 254 254 #define IRS_IRV(pThis) (HDA_REG_FLAG_VALUE(pThis, IRS, IRV)) 255 255 256 #define ICH6_HDA_REG_DPLBASE30 /* 0x70 */256 #define HDA_REG_DPLBASE 30 /* 0x70 */ 257 257 #define DPLBASE(pThis) (HDA_REG((pThis), DPLBASE)) 258 #define ICH6_HDA_REG_DPUBASE31 /* 0x74 */258 #define HDA_REG_DPUBASE 31 /* 0x74 */ 259 259 #define DPUBASE(pThis) (HDA_REG((pThis), DPUBASE)) 260 260 #define DPBASE_ENABLED 1 261 261 #define DPBASE_ADDR_MASK (~(uint64_t)0x7f) 262 262 263 #define HDA_STREAM_REG_DEF(name, num) ( ICH6_HDA_REG_SD##num##name)263 #define HDA_STREAM_REG_DEF(name, num) (HDA_REG_SD##num##name) 264 264 #define HDA_STREAM_REG(pThis, name, num) (HDA_REG((pThis), N_(HDA_STREAM_REG_DEF(name, num)))) 265 265 /* Note: sdnum here _MUST_ be stream reg number [0,7] */ 266 #define HDA_STREAM_REG2(pThis, name, sdnum) (HDA_REG_IND((pThis), ICH6_HDA_REG_SD0##name + (sdnum) * 10))267 268 #define ICH6_HDA_REG_SD0CTL32 /* 0x80 */269 #define ICH6_HDA_REG_SD1CTL(HDA_STREAM_REG_DEF(CTL, 0) + 10) /* 0xA0 */270 #define ICH6_HDA_REG_SD2CTL(HDA_STREAM_REG_DEF(CTL, 0) + 20) /* 0xC0 */271 #define ICH6_HDA_REG_SD3CTL(HDA_STREAM_REG_DEF(CTL, 0) + 30) /* 0xE0 */272 #define ICH6_HDA_REG_SD4CTL(HDA_STREAM_REG_DEF(CTL, 0) + 40) /* 0x100 */273 #define ICH6_HDA_REG_SD5CTL(HDA_STREAM_REG_DEF(CTL, 0) + 50) /* 0x120 */274 #define ICH6_HDA_REG_SD6CTL(HDA_STREAM_REG_DEF(CTL, 0) + 60) /* 0x140 */275 #define ICH6_HDA_REG_SD7CTL(HDA_STREAM_REG_DEF(CTL, 0) + 70) /* 0x160 */266 #define HDA_STREAM_REG2(pThis, name, sdnum) (HDA_REG_IND((pThis), HDA_REG_SD0##name + (sdnum) * 10)) 267 268 #define HDA_REG_SD0CTL 32 /* 0x80 */ 269 #define HDA_REG_SD1CTL (HDA_STREAM_REG_DEF(CTL, 0) + 10) /* 0xA0 */ 270 #define HDA_REG_SD2CTL (HDA_STREAM_REG_DEF(CTL, 0) + 20) /* 0xC0 */ 271 #define HDA_REG_SD3CTL (HDA_STREAM_REG_DEF(CTL, 0) + 30) /* 0xE0 */ 272 #define HDA_REG_SD4CTL (HDA_STREAM_REG_DEF(CTL, 0) + 40) /* 0x100 */ 273 #define HDA_REG_SD5CTL (HDA_STREAM_REG_DEF(CTL, 0) + 50) /* 0x120 */ 274 #define HDA_REG_SD6CTL (HDA_STREAM_REG_DEF(CTL, 0) + 60) /* 0x140 */ 275 #define HDA_REG_SD7CTL (HDA_STREAM_REG_DEF(CTL, 0) + 70) /* 0x160 */ 276 276 277 277 #define SD(func, num) SD##num##func 278 278 #define SDCTL(pThis, num) HDA_REG((pThis), SD(CTL, num)) 279 279 #define SDCTL_NUM(pThis, num) ((SDCTL((pThis), num) & HDA_REG_FIELD_MASK(SDCTL,NUM)) >> HDA_REG_FIELD_SHIFT(SDCTL, NUM)) 280 #define ICH6_HDA_SDCTL_NUM_MASK (0xF)281 #define ICH6_HDA_SDCTL_NUM_SHIFT (20)282 #define ICH6_HDA_SDCTL_DIR_SHIFT (19)283 #define ICH6_HDA_SDCTL_TP_SHIFT (18)284 #define ICH6_HDA_SDCTL_STRIPE_MASK (0x3)285 #define ICH6_HDA_SDCTL_STRIPE_SHIFT (16)286 #define ICH6_HDA_SDCTL_DEIE_SHIFT (4)287 #define ICH6_HDA_SDCTL_FEIE_SHIFT (3)288 #define ICH6_HDA_SDCTL_ICE_SHIFT (2)289 #define ICH6_HDA_SDCTL_RUN_SHIFT (1)290 #define ICH6_HDA_SDCTL_SRST_SHIFT (0)291 292 #define ICH6_HDA_REG_SD0STS33 /* 0x83 */293 #define ICH6_HDA_REG_SD1STS(HDA_STREAM_REG_DEF(STS, 0) + 10) /* 0xA3 */294 #define ICH6_HDA_REG_SD2STS(HDA_STREAM_REG_DEF(STS, 0) + 20) /* 0xC3 */295 #define ICH6_HDA_REG_SD3STS(HDA_STREAM_REG_DEF(STS, 0) + 30) /* 0xE3 */296 #define ICH6_HDA_REG_SD4STS(HDA_STREAM_REG_DEF(STS, 0) + 40) /* 0x103 */297 #define ICH6_HDA_REG_SD5STS(HDA_STREAM_REG_DEF(STS, 0) + 50) /* 0x123 */298 #define ICH6_HDA_REG_SD6STS(HDA_STREAM_REG_DEF(STS, 0) + 60) /* 0x143 */299 #define ICH6_HDA_REG_SD7STS(HDA_STREAM_REG_DEF(STS, 0) + 70) /* 0x163 */280 #define HDA_SDCTL_NUM_MASK 0xF 281 #define HDA_SDCTL_NUM_SHIFT 20 282 #define HDA_SDCTL_DIR_SHIFT 19 283 #define HDA_SDCTL_TP_SHIFT 18 284 #define HDA_SDCTL_STRIPE_MASK 0x3 285 #define HDA_SDCTL_STRIPE_SHIFT 16 286 #define HDA_SDCTL_DEIE_SHIFT 4 287 #define HDA_SDCTL_FEIE_SHIFT 3 288 #define HDA_SDCTL_ICE_SHIFT 2 289 #define HDA_SDCTL_RUN_SHIFT 1 290 #define HDA_SDCTL_SRST_SHIFT 0 291 292 #define HDA_REG_SD0STS 33 /* 0x83 */ 293 #define HDA_REG_SD1STS (HDA_STREAM_REG_DEF(STS, 0) + 10) /* 0xA3 */ 294 #define HDA_REG_SD2STS (HDA_STREAM_REG_DEF(STS, 0) + 20) /* 0xC3 */ 295 #define HDA_REG_SD3STS (HDA_STREAM_REG_DEF(STS, 0) + 30) /* 0xE3 */ 296 #define HDA_REG_SD4STS (HDA_STREAM_REG_DEF(STS, 0) + 40) /* 0x103 */ 297 #define HDA_REG_SD5STS (HDA_STREAM_REG_DEF(STS, 0) + 50) /* 0x123 */ 298 #define HDA_REG_SD6STS (HDA_STREAM_REG_DEF(STS, 0) + 60) /* 0x143 */ 299 #define HDA_REG_SD7STS (HDA_STREAM_REG_DEF(STS, 0) + 70) /* 0x163 */ 300 300 301 301 #define SDSTS(pThis, num) HDA_REG((pThis), SD(STS, num)) 302 #define ICH6_HDA_SDSTS_FIFORDY_SHIFT (5)303 #define ICH6_HDA_SDSTS_DE_SHIFT (4)304 #define ICH6_HDA_SDSTS_FE_SHIFT (3)305 #define ICH6_HDA_SDSTS_BCIS_SHIFT (2)306 307 #define ICH6_HDA_REG_SD0LPIB34 /* 0x84 */308 #define ICH6_HDA_REG_SD1LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 10) /* 0xA4 */309 #define ICH6_HDA_REG_SD2LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 20) /* 0xC4 */310 #define ICH6_HDA_REG_SD3LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 30) /* 0xE4 */311 #define ICH6_HDA_REG_SD4LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 40) /* 0x104 */312 #define ICH6_HDA_REG_SD5LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 50) /* 0x124 */313 #define ICH6_HDA_REG_SD6LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 60) /* 0x144 */314 #define ICH6_HDA_REG_SD7LPIB(HDA_STREAM_REG_DEF(LPIB, 0) + 70) /* 0x164 */302 #define HDA_SDSTS_FIFORDY_SHIFT 5 303 #define HDA_SDSTS_DE_SHIFT 4 304 #define HDA_SDSTS_FE_SHIFT 3 305 #define HDA_SDSTS_BCIS_SHIFT 2 306 307 #define HDA_REG_SD0LPIB 34 /* 0x84 */ 308 #define HDA_REG_SD1LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 10) /* 0xA4 */ 309 #define HDA_REG_SD2LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 20) /* 0xC4 */ 310 #define HDA_REG_SD3LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 30) /* 0xE4 */ 311 #define HDA_REG_SD4LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 40) /* 0x104 */ 312 #define HDA_REG_SD5LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 50) /* 0x124 */ 313 #define HDA_REG_SD6LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 60) /* 0x144 */ 314 #define HDA_REG_SD7LPIB (HDA_STREAM_REG_DEF(LPIB, 0) + 70) /* 0x164 */ 315 315 316 316 #define SDLPIB(pThis, num) HDA_REG((pThis), SD(LPIB, num)) 317 317 318 #define ICH6_HDA_REG_SD0CBL35 /* 0x88 */319 #define ICH6_HDA_REG_SD1CBL(HDA_STREAM_REG_DEF(CBL, 0) + 10) /* 0xA8 */320 #define ICH6_HDA_REG_SD2CBL(HDA_STREAM_REG_DEF(CBL, 0) + 20) /* 0xC8 */321 #define ICH6_HDA_REG_SD3CBL(HDA_STREAM_REG_DEF(CBL, 0) + 30) /* 0xE8 */322 #define ICH6_HDA_REG_SD4CBL(HDA_STREAM_REG_DEF(CBL, 0) + 40) /* 0x108 */323 #define ICH6_HDA_REG_SD5CBL(HDA_STREAM_REG_DEF(CBL, 0) + 50) /* 0x128 */324 #define ICH6_HDA_REG_SD6CBL(HDA_STREAM_REG_DEF(CBL, 0) + 60) /* 0x148 */325 #define ICH6_HDA_REG_SD7CBL(HDA_STREAM_REG_DEF(CBL, 0) + 70) /* 0x168 */318 #define HDA_REG_SD0CBL 35 /* 0x88 */ 319 #define HDA_REG_SD1CBL (HDA_STREAM_REG_DEF(CBL, 0) + 10) /* 0xA8 */ 320 #define HDA_REG_SD2CBL (HDA_STREAM_REG_DEF(CBL, 0) + 20) /* 0xC8 */ 321 #define HDA_REG_SD3CBL (HDA_STREAM_REG_DEF(CBL, 0) + 30) /* 0xE8 */ 322 #define HDA_REG_SD4CBL (HDA_STREAM_REG_DEF(CBL, 0) + 40) /* 0x108 */ 323 #define HDA_REG_SD5CBL (HDA_STREAM_REG_DEF(CBL, 0) + 50) /* 0x128 */ 324 #define HDA_REG_SD6CBL (HDA_STREAM_REG_DEF(CBL, 0) + 60) /* 0x148 */ 325 #define HDA_REG_SD7CBL (HDA_STREAM_REG_DEF(CBL, 0) + 70) /* 0x168 */ 326 326 327 327 #define SDLCBL(pThis, num) HDA_REG((pThis), SD(CBL, num)) 328 328 329 #define ICH6_HDA_REG_SD0LVI36 /* 0x8C */330 #define ICH6_HDA_REG_SD1LVI(HDA_STREAM_REG_DEF(LVI, 0) + 10) /* 0xAC */331 #define ICH6_HDA_REG_SD2LVI(HDA_STREAM_REG_DEF(LVI, 0) + 20) /* 0xCC */332 #define ICH6_HDA_REG_SD3LVI(HDA_STREAM_REG_DEF(LVI, 0) + 30) /* 0xEC */333 #define ICH6_HDA_REG_SD4LVI(HDA_STREAM_REG_DEF(LVI, 0) + 40) /* 0x10C */334 #define ICH6_HDA_REG_SD5LVI(HDA_STREAM_REG_DEF(LVI, 0) + 50) /* 0x12C */335 #define ICH6_HDA_REG_SD6LVI(HDA_STREAM_REG_DEF(LVI, 0) + 60) /* 0x14C */336 #define ICH6_HDA_REG_SD7LVI(HDA_STREAM_REG_DEF(LVI, 0) + 70) /* 0x16C */329 #define HDA_REG_SD0LVI 36 /* 0x8C */ 330 #define HDA_REG_SD1LVI (HDA_STREAM_REG_DEF(LVI, 0) + 10) /* 0xAC */ 331 #define HDA_REG_SD2LVI (HDA_STREAM_REG_DEF(LVI, 0) + 20) /* 0xCC */ 332 #define HDA_REG_SD3LVI (HDA_STREAM_REG_DEF(LVI, 0) + 30) /* 0xEC */ 333 #define HDA_REG_SD4LVI (HDA_STREAM_REG_DEF(LVI, 0) + 40) /* 0x10C */ 334 #define HDA_REG_SD5LVI (HDA_STREAM_REG_DEF(LVI, 0) + 50) /* 0x12C */ 335 #define HDA_REG_SD6LVI (HDA_STREAM_REG_DEF(LVI, 0) + 60) /* 0x14C */ 336 #define HDA_REG_SD7LVI (HDA_STREAM_REG_DEF(LVI, 0) + 70) /* 0x16C */ 337 337 338 338 #define SDLVI(pThis, num) HDA_REG((pThis), SD(LVI, num)) 339 339 340 #define ICH6_HDA_REG_SD0FIFOW37 /* 0x8E */341 #define ICH6_HDA_REG_SD1FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 10) /* 0xAE */342 #define ICH6_HDA_REG_SD2FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 20) /* 0xCE */343 #define ICH6_HDA_REG_SD3FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 30) /* 0xEE */344 #define ICH6_HDA_REG_SD4FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 40) /* 0x10E */345 #define ICH6_HDA_REG_SD5FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 50) /* 0x12E */346 #define ICH6_HDA_REG_SD6FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 60) /* 0x14E */347 #define ICH6_HDA_REG_SD7FIFOW(HDA_STREAM_REG_DEF(FIFOW, 0) + 70) /* 0x16E */340 #define HDA_REG_SD0FIFOW 37 /* 0x8E */ 341 #define HDA_REG_SD1FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 10) /* 0xAE */ 342 #define HDA_REG_SD2FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 20) /* 0xCE */ 343 #define HDA_REG_SD3FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 30) /* 0xEE */ 344 #define HDA_REG_SD4FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 40) /* 0x10E */ 345 #define HDA_REG_SD5FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 50) /* 0x12E */ 346 #define HDA_REG_SD6FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 60) /* 0x14E */ 347 #define HDA_REG_SD7FIFOW (HDA_STREAM_REG_DEF(FIFOW, 0) + 70) /* 0x16E */ 348 348 349 349 /* 350 350 * ICH6 datasheet defined limits for FIFOW values (18.2.38) 351 351 */ 352 #define HDA_SDFIFOW_8B (0x2)353 #define HDA_SDFIFOW_16B (0x3)354 #define HDA_SDFIFOW_32B (0x4)352 #define HDA_SDFIFOW_8B 0x2 353 #define HDA_SDFIFOW_16B 0x3 354 #define HDA_SDFIFOW_32B 0x4 355 355 #define SDFIFOW(pThis, num) HDA_REG((pThis), SD(FIFOW, num)) 356 356 357 #define ICH6_HDA_REG_SD0FIFOS38 /* 0x90 */358 #define ICH6_HDA_REG_SD1FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 10) /* 0xB0 */359 #define ICH6_HDA_REG_SD2FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 20) /* 0xD0 */360 #define ICH6_HDA_REG_SD3FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 30) /* 0xF0 */361 #define ICH6_HDA_REG_SD4FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 40) /* 0x110 */362 #define ICH6_HDA_REG_SD5FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 50) /* 0x130 */363 #define ICH6_HDA_REG_SD6FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 60) /* 0x150 */364 #define ICH6_HDA_REG_SD7FIFOS(HDA_STREAM_REG_DEF(FIFOS, 0) + 70) /* 0x170 */357 #define HDA_REG_SD0FIFOS 38 /* 0x90 */ 358 #define HDA_REG_SD1FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 10) /* 0xB0 */ 359 #define HDA_REG_SD2FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 20) /* 0xD0 */ 360 #define HDA_REG_SD3FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 30) /* 0xF0 */ 361 #define HDA_REG_SD4FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 40) /* 0x110 */ 362 #define HDA_REG_SD5FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 50) /* 0x130 */ 363 #define HDA_REG_SD6FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 60) /* 0x150 */ 364 #define HDA_REG_SD7FIFOS (HDA_STREAM_REG_DEF(FIFOS, 0) + 70) /* 0x170 */ 365 365 366 366 /* … … 369 369 * Other values not listed are not supported. 370 370 */ 371 #define HDA_SDONFIFO_16B (0x0F)/* 8-, 16-, 20-, 24-, 32-bit Output Streams */372 #define HDA_SDONFIFO_32B (0x1F)/* 8-, 16-, 20-, 24-, 32-bit Output Streams */373 #define HDA_SDONFIFO_64B (0x3F)/* 8-, 16-, 20-, 24-, 32-bit Output Streams */374 #define HDA_SDONFIFO_128B (0x7F)/* 8-, 16-, 20-, 24-, 32-bit Output Streams */375 #define HDA_SDONFIFO_192B (0xBF)/* 8-, 16-, 20-, 24-, 32-bit Output Streams */376 #define HDA_SDONFIFO_256B (0xFF)/* 20-, 24-bit Output Streams */377 #define HDA_SDINFIFO_120B (0x77)/* 8-, 16-, 20-, 24-, 32-bit Input Streams */378 #define HDA_SDINFIFO_160B (0x9F)/* 20-, 24-bit Input Streams Streams */371 #define HDA_SDONFIFO_16B 0x0F /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 372 #define HDA_SDONFIFO_32B 0x1F /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 373 #define HDA_SDONFIFO_64B 0x3F /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 374 #define HDA_SDONFIFO_128B 0x7F /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 375 #define HDA_SDONFIFO_192B 0xBF /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 376 #define HDA_SDONFIFO_256B 0xFF /* 20-, 24-bit Output Streams */ 377 #define HDA_SDINFIFO_120B 0x77 /* 8-, 16-, 20-, 24-, 32-bit Input Streams */ 378 #define HDA_SDINFIFO_160B 0x9F /* 20-, 24-bit Input Streams Streams */ 379 379 #define SDFIFOS(pThis, num) HDA_REG((pThis), SD(FIFOS, num)) 380 380 381 #define ICH6_HDA_REG_SD0FMT39 /* 0x92 */382 #define ICH6_HDA_REG_SD1FMT(HDA_STREAM_REG_DEF(FMT, 0) + 10) /* 0xB2 */383 #define ICH6_HDA_REG_SD2FMT(HDA_STREAM_REG_DEF(FMT, 0) + 20) /* 0xD2 */384 #define ICH6_HDA_REG_SD3FMT(HDA_STREAM_REG_DEF(FMT, 0) + 30) /* 0xF2 */385 #define ICH6_HDA_REG_SD4FMT(HDA_STREAM_REG_DEF(FMT, 0) + 40) /* 0x112 */386 #define ICH6_HDA_REG_SD5FMT(HDA_STREAM_REG_DEF(FMT, 0) + 50) /* 0x132 */387 #define ICH6_HDA_REG_SD6FMT(HDA_STREAM_REG_DEF(FMT, 0) + 60) /* 0x152 */388 #define ICH6_HDA_REG_SD7FMT(HDA_STREAM_REG_DEF(FMT, 0) + 70) /* 0x172 */381 #define HDA_REG_SD0FMT 39 /* 0x92 */ 382 #define HDA_REG_SD1FMT (HDA_STREAM_REG_DEF(FMT, 0) + 10) /* 0xB2 */ 383 #define HDA_REG_SD2FMT (HDA_STREAM_REG_DEF(FMT, 0) + 20) /* 0xD2 */ 384 #define HDA_REG_SD3FMT (HDA_STREAM_REG_DEF(FMT, 0) + 30) /* 0xF2 */ 385 #define HDA_REG_SD4FMT (HDA_STREAM_REG_DEF(FMT, 0) + 40) /* 0x112 */ 386 #define HDA_REG_SD5FMT (HDA_STREAM_REG_DEF(FMT, 0) + 50) /* 0x132 */ 387 #define HDA_REG_SD6FMT (HDA_STREAM_REG_DEF(FMT, 0) + 60) /* 0x152 */ 388 #define HDA_REG_SD7FMT (HDA_STREAM_REG_DEF(FMT, 0) + 70) /* 0x172 */ 389 389 390 390 #define SDFMT(pThis, num) (HDA_REG((pThis), SD(FMT, num))) 391 #define ICH6_HDA_SDFMT_BASE_RATE_SHIFT (14)392 #define ICH6_HDA_SDFMT_MULT_SHIFT (11)393 #define ICH6_HDA_SDFMT_MULT_MASK (0x7)394 #define ICH6_HDA_SDFMT_DIV_SHIFT (8)395 #define ICH6_HDA_SDFMT_DIV_MASK (0x7)396 #define ICH6_HDA_SDFMT_BITS_SHIFT (4)397 #define ICH6_HDA_SDFMT_BITS_MASK (0x7)391 #define HDA_SDFMT_BASE_RATE_SHIFT 14 392 #define HDA_SDFMT_MULT_SHIFT 11 393 #define HDA_SDFMT_MULT_MASK 0x7 394 #define HDA_SDFMT_DIV_SHIFT 8 395 #define HDA_SDFMT_DIV_MASK 0x7 396 #define HDA_SDFMT_BITS_SHIFT 4 397 #define HDA_SDFMT_BITS_MASK 0x7 398 398 #define SDFMT_BASE_RATE(pThis, num) ((SDFMT(pThis, num) & HDA_REG_FIELD_FLAG_MASK(SDFMT, BASE_RATE)) >> HDA_REG_FIELD_SHIFT(SDFMT, BASE_RATE)) 399 399 #define SDFMT_MULT(pThis, num) ((SDFMT((pThis), num) & HDA_REG_FIELD_MASK(SDFMT,MULT)) >> HDA_REG_FIELD_SHIFT(SDFMT, MULT)) 400 400 #define SDFMT_DIV(pThis, num) ((SDFMT((pThis), num) & HDA_REG_FIELD_MASK(SDFMT,DIV)) >> HDA_REG_FIELD_SHIFT(SDFMT, DIV)) 401 401 402 #define ICH6_HDA_REG_SD0BDPL40 /* 0x98 */403 #define ICH6_HDA_REG_SD1BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 10) /* 0xB8 */404 #define ICH6_HDA_REG_SD2BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 20) /* 0xD8 */405 #define ICH6_HDA_REG_SD3BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 30) /* 0xF8 */406 #define ICH6_HDA_REG_SD4BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 40) /* 0x118 */407 #define ICH6_HDA_REG_SD5BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 50) /* 0x138 */408 #define ICH6_HDA_REG_SD6BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 60) /* 0x158 */409 #define ICH6_HDA_REG_SD7BDPL(HDA_STREAM_REG_DEF(BDPL, 0) + 70) /* 0x178 */402 #define HDA_REG_SD0BDPL 40 /* 0x98 */ 403 #define HDA_REG_SD1BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 10) /* 0xB8 */ 404 #define HDA_REG_SD2BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 20) /* 0xD8 */ 405 #define HDA_REG_SD3BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 30) /* 0xF8 */ 406 #define HDA_REG_SD4BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 40) /* 0x118 */ 407 #define HDA_REG_SD5BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 50) /* 0x138 */ 408 #define HDA_REG_SD6BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 60) /* 0x158 */ 409 #define HDA_REG_SD7BDPL (HDA_STREAM_REG_DEF(BDPL, 0) + 70) /* 0x178 */ 410 410 411 411 #define SDBDPL(pThis, num) HDA_REG((pThis), SD(BDPL, num)) 412 412 413 #define ICH6_HDA_REG_SD0BDPU41 /* 0x9C */414 #define ICH6_HDA_REG_SD1BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 10) /* 0xBC */415 #define ICH6_HDA_REG_SD2BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 20) /* 0xDC */416 #define ICH6_HDA_REG_SD3BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 30) /* 0xFC */417 #define ICH6_HDA_REG_SD4BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 40) /* 0x11C */418 #define ICH6_HDA_REG_SD5BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 50) /* 0x13C */419 #define ICH6_HDA_REG_SD6BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 60) /* 0x15C */420 #define ICH6_HDA_REG_SD7BDPU(HDA_STREAM_REG_DEF(BDPU, 0) + 70) /* 0x17C */413 #define HDA_REG_SD0BDPU 41 /* 0x9C */ 414 #define HDA_REG_SD1BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 10) /* 0xBC */ 415 #define HDA_REG_SD2BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 20) /* 0xDC */ 416 #define HDA_REG_SD3BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 30) /* 0xFC */ 417 #define HDA_REG_SD4BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 40) /* 0x11C */ 418 #define HDA_REG_SD5BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 50) /* 0x13C */ 419 #define HDA_REG_SD6BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 60) /* 0x15C */ 420 #define HDA_REG_SD7BDPU (HDA_STREAM_REG_DEF(BDPU, 0) + 70) /* 0x17C */ 421 421 422 422 #define SDBDPU(pThis, num) HDA_REG((pThis), SD(BDPU, num)) … … 1042 1042 { 1043 1043 Log(("hda: unexpected unsolicited response.\n")); 1044 pThis->au32Regs[ ICH6_HDA_REG_CORBRP] = corbRp;1044 pThis->au32Regs[HDA_REG_CORBRP] = corbRp; 1045 1045 return rc; 1046 1046 } … … 1050 1050 break; 1051 1051 } 1052 pThis->au32Regs[ ICH6_HDA_REG_CORBRP] = corbRp;1053 pThis->au32Regs[ ICH6_HDA_REG_RIRBWP] = rirbWp;1052 pThis->au32Regs[HDA_REG_CORBRP] = corbRp; 1053 pThis->au32Regs[HDA_REG_RIRBWP] = rirbWp; 1054 1054 rc = hdaCmdSync(pThis, false); 1055 1055 Log(("hda: CORB(RP:%x, WP:%x) RIRBWP:%x\n", CORBRP(pThis), CORBWP(pThis), RIRBWP(pThis))); … … 1200 1200 { 1201 1201 uint32_t v = pThis->au32Regs[iReg]; 1202 uint32_t nv = u32Value & ICH6_HDA_STATES_SCSF;1202 uint32_t nv = u32Value & HDA_STATES_SCSF; 1203 1203 pThis->au32Regs[iReg] &= ~(v & nv); /* write of 1 clears corresponding bit */ 1204 1204 return VINF_SUCCESS; … … 1327 1327 switch (iReg) 1328 1328 { 1329 case ICH6_HDA_REG_SD0CTL:1329 case HDA_REG_SD0CTL: 1330 1330 u8Strm = 0; 1331 1331 pBdle = &pThis->StInBdle; 1332 1332 break; 1333 case ICH6_HDA_REG_SD4CTL:1333 case HDA_REG_SD4CTL: 1334 1334 u8Strm = 4; 1335 1335 pBdle = &pThis->StOutBdle; … … 1356 1356 switch (iReg) 1357 1357 { 1358 case ICH6_HDA_REG_SD0CTL:1358 case HDA_REG_SD0CTL: 1359 1359 AUD_set_active_in(pThis->pCodec->SwVoiceIn, fRun); 1360 1360 break; 1361 case ICH6_HDA_REG_SD4CTL:1361 case HDA_REG_SD4CTL: 1362 1362 AUD_set_active_out(pThis->pCodec->SwVoiceOut, fRun); 1363 1363 break; … … 1416 1416 { 1417 1417 /* SDInFIFOS is RO, n=0-3 */ 1418 case ICH6_HDA_REG_SD0FIFOS:1419 case ICH6_HDA_REG_SD1FIFOS:1420 case ICH6_HDA_REG_SD2FIFOS:1421 case ICH6_HDA_REG_SD3FIFOS:1418 case HDA_REG_SD0FIFOS: 1419 case HDA_REG_SD1FIFOS: 1420 case HDA_REG_SD2FIFOS: 1421 case HDA_REG_SD3FIFOS: 1422 1422 Log(("hda: Guest tries change value of FIFO size of Input Stream\n")); 1423 1423 return VINF_SUCCESS; 1424 case ICH6_HDA_REG_SD4FIFOS:1425 case ICH6_HDA_REG_SD5FIFOS:1426 case ICH6_HDA_REG_SD6FIFOS:1427 case ICH6_HDA_REG_SD7FIFOS:1424 case HDA_REG_SD4FIFOS: 1425 case HDA_REG_SD5FIFOS: 1426 case HDA_REG_SD6FIFOS: 1427 case HDA_REG_SD7FIFOS: 1428 1428 switch(u32Value) 1429 1429 { … … 1452 1452 Assert((pAudSetting)); 1453 1453 #define EXTRACT_VALUE(v, mask, shift) ((v & ((mask) << (shift))) >> (shift)) 1454 uint32_t u32Hz = (u32SdFmt & ICH6_HDA_SDFMT_BASE_RATE_SHIFT) ? 44100 : 48000;1454 uint32_t u32Hz = (u32SdFmt & HDA_SDFMT_BASE_RATE_SHIFT) ? 44100 : 48000; 1455 1455 uint32_t u32HzMult = 1; 1456 1456 uint32_t u32HzDiv = 1; 1457 switch (EXTRACT_VALUE(u32SdFmt, ICH6_HDA_SDFMT_MULT_MASK, ICH6_HDA_SDFMT_MULT_SHIFT))1457 switch (EXTRACT_VALUE(u32SdFmt, HDA_SDFMT_MULT_MASK, HDA_SDFMT_MULT_SHIFT)) 1458 1458 { 1459 1459 case 0: u32HzMult = 1; break; … … 1464 1464 Log(("hda: unsupported multiplier %x\n", u32SdFmt)); 1465 1465 } 1466 switch (EXTRACT_VALUE(u32SdFmt, ICH6_HDA_SDFMT_DIV_MASK, ICH6_HDA_SDFMT_DIV_SHIFT))1466 switch (EXTRACT_VALUE(u32SdFmt, HDA_SDFMT_DIV_MASK, HDA_SDFMT_DIV_SHIFT)) 1467 1467 { 1468 1468 case 0: u32HzDiv = 1; break; … … 1477 1477 pAudSetting->freq = u32Hz * u32HzMult / u32HzDiv; 1478 1478 1479 switch (EXTRACT_VALUE(u32SdFmt, ICH6_HDA_SDFMT_BITS_MASK, ICH6_HDA_SDFMT_BITS_SHIFT))1479 switch (EXTRACT_VALUE(u32SdFmt, HDA_SDFMT_BITS_MASK, HDA_SDFMT_BITS_SHIFT)) 1480 1480 { 1481 1481 case 0: … … 1520 1520 switch (iReg) 1521 1521 { 1522 case ICH6_HDA_REG_SD0FMT:1522 case HDA_REG_SD0FMT: 1523 1523 rc = hdaCodecOpenVoice(pThis->pCodec, PI_INDEX, &as); 1524 1524 break; 1525 case ICH6_HDA_REG_SD4FMT:1525 case HDA_REG_SD4FMT: 1526 1526 rc = hdaCodecOpenVoice(pThis->pCodec, PO_INDEX, &as); 1527 1527 break; … … 1633 1633 switch(iReg) 1634 1634 { 1635 case ICH6_HDA_REG_CORBLBASE:1635 case HDA_REG_CORBLBASE: 1636 1636 pThis->u64CORBBase &= UINT64_C(0xFFFFFFFF00000000); 1637 1637 pThis->u64CORBBase |= pThis->au32Regs[iReg]; 1638 1638 break; 1639 case ICH6_HDA_REG_CORBUBASE:1639 case HDA_REG_CORBUBASE: 1640 1640 pThis->u64CORBBase &= UINT64_C(0x00000000FFFFFFFF); 1641 1641 pThis->u64CORBBase |= ((uint64_t)pThis->au32Regs[iReg] << 32); 1642 1642 break; 1643 case ICH6_HDA_REG_RIRLBASE:1643 case HDA_REG_RIRLBASE: 1644 1644 pThis->u64RIRBBase &= UINT64_C(0xFFFFFFFF00000000); 1645 1645 pThis->u64RIRBBase |= pThis->au32Regs[iReg]; 1646 1646 break; 1647 case ICH6_HDA_REG_RIRUBASE:1647 case HDA_REG_RIRUBASE: 1648 1648 pThis->u64RIRBBase &= UINT64_C(0x00000000FFFFFFFF); 1649 1649 pThis->u64RIRBBase |= ((uint64_t)pThis->au32Regs[iReg] << 32); 1650 1650 break; 1651 case ICH6_HDA_REG_DPLBASE:1651 case HDA_REG_DPLBASE: 1652 1652 /** @todo: first bit has special meaning */ 1653 1653 pThis->u64DPBase &= UINT64_C(0xFFFFFFFF00000000); 1654 1654 pThis->u64DPBase |= pThis->au32Regs[iReg]; 1655 1655 break; 1656 case ICH6_HDA_REG_DPUBASE:1656 case HDA_REG_DPUBASE: 1657 1657 pThis->u64DPBase &= UINT64_C(0x00000000FFFFFFFF); 1658 1658 pThis->u64DPBase |= ((uint64_t)pThis->au32Regs[iReg] << 32); … … 2100 2100 Assert(cb == 4); Assert((offReg & 3) == 0); 2101 2101 2102 if (pThis->fInReset && idxReg != ICH6_HDA_REG_GCTL)2102 if (pThis->fInReset && idxReg != HDA_REG_GCTL) 2103 2103 Log(("hda: access to registers except GCTL is blocked while reset\n")); 2104 2104 … … 2215 2215 DECLINLINE(int) hdaWriteReg(PHDASTATE pThis, int idxReg, uint32_t u32Value, char const *pszLog) 2216 2216 { 2217 if (pThis->fInReset && idxReg != ICH6_HDA_REG_GCTL)2217 if (pThis->fInReset && idxReg != HDA_REG_GCTL) 2218 2218 Log(("hda: access to registers except GCTL is blocked while reset\n")); /** @todo where is this enforced? */ 2219 2219 … … 2431 2431 #endif 2432 2432 IOMMMIO_FLAGS_WRITE_PASSTHRU, 2433 hdaMMIOWrite, hdaMMIORead, " ICH6_HDA");2433 hdaMMIOWrite, hdaMMIORead, "HDA"); 2434 2434 2435 2435 if (RT_FAILURE(rc)) … … 2584 2584 "SDCTL(raw: %#x, strm:%#x, dir:%RTbool, tp:%RTbool strip:%x, deie:%RTbool, ioce:%RTbool, run:%RTbool, srst:%RTbool)", 2585 2585 sdCtl, 2586 (sdCtl & HDA_REG_FIELD_MASK(SDCTL, NUM)) >> ICH6_HDA_SDCTL_NUM_SHIFT,2586 (sdCtl & HDA_REG_FIELD_MASK(SDCTL, NUM)) >> HDA_SDCTL_NUM_SHIFT, 2587 2587 RT_BOOL(sdCtl & HDA_REG_FIELD_FLAG_MASK(SDCTL, DIR)), 2588 2588 RT_BOOL(sdCtl & HDA_REG_FIELD_FLAG_MASK(SDCTL, TP)), 2589 (sdCtl & HDA_REG_FIELD_MASK(SDCTL, STRIPE)) >> ICH6_HDA_SDCTL_STRIPE_SHIFT,2589 (sdCtl & HDA_REG_FIELD_MASK(SDCTL, STRIPE)) >> HDA_SDCTL_STRIPE_SHIFT, 2590 2590 RT_BOOL(sdCtl & HDA_REG_FIELD_FLAG_MASK(SDCTL, DEIE)), 2591 2591 RT_BOOL(sdCtl & HDA_REG_FIELD_FLAG_MASK(SDCTL, ICE)), … … 2790 2790 OUTPAY(pThis) = 0x003C; /* see 6.2.4 */ 2791 2791 INPAY(pThis) = 0x001D; /* see 6.2.5 */ 2792 pThis->au32Regs[ ICH6_HDA_REG_CORBSIZE] = 0x42; /* see 6.2.1 */2793 pThis->au32Regs[ ICH6_HDA_REG_RIRBSIZE] = 0x42; /* see 6.2.1 */2792 pThis->au32Regs[HDA_REG_CORBSIZE] = 0x42; /* see 6.2.1 */ 2793 pThis->au32Regs[HDA_REG_RIRBSIZE] = 0x42; /* see 6.2.1 */ 2794 2794 CORBRP(pThis) = 0x0; 2795 2795 RIRBWP(pThis) = 0x0;
Note:
See TracChangeset
for help on using the changeset viewer.