BA0WRITE4
BA0WRITE4(sc, CS4280_CLKCR1, 0);
BA0WRITE4(sc, CS4280_SERMC1, 0);
BA0WRITE4(sc, CS4280_SERACC, SERACC_HSP | SERACC_CTYPE_1_03); /* AC 97 1.03 */
BA0WRITE4(sc, CS4280_SERACC, SERACC_HSP | SERACC_CTYPE_2_0); /* AC 97 2.0 */
BA0WRITE4(sc, CS4280_ACCTL, 0);
BA0WRITE4(sc, CS4280_ACCTL, ACCTL_RSTN);
BA0WRITE4(sc, CS4280_ACCTL, ACCTL_ESYN | ACCTL_RSTN);
BA0WRITE4(sc, CS4280_SERMC1, SERMC1_PTC_AC97);
BA0WRITE4(sc, CS4280_PLLCC, PLLCC_CDR_STATE|PLLCC_LPF_STATE);
BA0WRITE4(sc, CS4280_PLLM, PLLM_STATE);
BA0WRITE4(sc, CS4280_CLKCR2, CLKCR2_PDIVS_8);
BA0WRITE4(sc, CS4280_CLKCR1, CLKCR1_PLLP);
BA0WRITE4(sc, CS4280_CLKCR1, mem);
BA0WRITE4(sc, CS4280_SERBSP, 0);
BA0WRITE4(sc, CS4280_SERC1, SERC1_SO1EN | SERC1_SO1F_AC97);
BA0WRITE4(sc, CS4280_SERC2, SERC2_SI1EN | SERC2_SI1F_AC97);
BA0WRITE4(sc, CS4280_SERMC1, SERMC1_MSPE | SERMC1_PTC_AC97);
BA0WRITE4(sc, CS4280_ACCTL, ACCTL_VFRM | ACCTL_ESYN | ACCTL_RSTN);
BA0WRITE4(sc, CS4280_ACOSV, ACOSV_SLV3 | ACOSV_SLV4);
BA0WRITE4(sc, CS4280_HICR, HICR_IEV|HICR_CHGM);
BA0WRITE4(sc, CS4280_MIDCR, mem | MIDCR_MRST);
BA0WRITE4(sc, CS4280_MIDCR, mem);
BA0WRITE4(sc, CS4280_CLKCR1, mem | CLKCR1_SWCE);
BA0WRITE4(sc, CS4280_SERBWP, 0);
BA0WRITE4(sc, CS4280_SERBAD, cnt);
BA0WRITE4(sc, CS4280_SERBCM, SERBCM_WRC);
BA0WRITE4(sc, CS4280_CLKCR1, mem);
BA0WRITE4(sc, CS4280_MIDCR, mem);
BA0WRITE4(sc, CS4280_MIDCR, mem);
BA0WRITE4(sc, CS4280_MIDWP, mem);
BA0WRITE4(sc, CS4280_ACCAD, add);
BA0WRITE4(sc, CS4280_ACCDA, 0);
BA0WRITE4(sc, CS4280_ACCTL,
BA0WRITE4(sc, CS4280_ACCAD, add);
BA0WRITE4(sc, CS4280_ACCDA, data);
BA0WRITE4(sc, CS4280_ACCTL,
BA0WRITE4(sc, CS4280_HICR, HICR_CHGM | HICR_IEV);
BA0WRITE4(sc, CS4280_ACCTL, 0);
BA0WRITE4(sc, CS4280_ACCTL, ACCTL_RSTN);
BA0WRITE4(sc, CS4280_ACCTL, ACCTL_ESYN | ACCTL_RSTN);
BA0WRITE4(sc, CS4280_ACCTL, ACCTL_VFRM | ACCTL_ESYN | ACCTL_RSTN);
BA0WRITE4(sc, CS4281_SERMC, SERMC_TCID);
BA0WRITE4(sc, CS4281_ACCTL, ACCTL_ESYN);
BA0WRITE4(sc, CS4281_SERMC, SERMC_PTCAC97);
BA0WRITE4(sc, CS4281_ACCTL, ACCTL_ESYN | ACCTL_VFRM);
BA0WRITE4(sc, CS4281_SERMC, SERMC_PTCAC97);
BA0WRITE4(sc, CS4281_ACOSV, (ACOSV_SLV3 | ACOSV_SLV4));
BA0WRITE4(sc, CS4281_ACCAD, ac97_addr);
BA0WRITE4(sc, CS4281_ACCDA, 0);
BA0WRITE4(sc, CS4281_ACCTL, acctl);
BA0WRITE4(sc, CS4281_ACCAD, ac97_addr);
BA0WRITE4(sc, CS4281_ACCDA, ac97_data);
BA0WRITE4(sc, CS4281_ACCTL, acctl);
BA0WRITE4(sc, CS4281_HICR, HICR_IEV | HICR_CHGM);
BA0WRITE4(sc, CS4281_HICR, HICR_IEV | HICR_CHGM);
BA0WRITE4(sc, CS4281_DCR0, BA0READ4(sc, CS4281_DCR0) | DCRn_MSK);
BA0WRITE4(sc, CS4281_DCR1, BA0READ4(sc, CS4281_DCR1) | DCRn_MSK);
BA0WRITE4(sc, CS4281_DCR0, BA0READ4(sc, CS4281_DCR0) | DCRn_MSK);
BA0WRITE4(sc, CS4281_DBA0, DMAADDR(p));
BA0WRITE4(sc, CS4281_DBC0, dma_count - 1);
BA0WRITE4(sc, CS4281_DMR0, fmt);
BA0WRITE4(sc, CS4281_DCR0, BA0READ4(sc, CS4281_DCR0) & ~DCRn_MSK);
BA0WRITE4(sc, CS4281_HICR, HICR_IEV | HICR_CHGM);
BA0WRITE4(sc, CS4281_PPRVC, 7);
BA0WRITE4(sc, CS4281_PPLVC, 7);
BA0WRITE4(sc, CS4281_DCR1, BA0READ4(sc, CS4281_DCR1) | DCRn_MSK);
BA0WRITE4(sc, CS4281_DBA1, DMAADDR(p));
BA0WRITE4(sc, CS4281_DBC1, dma_count-1);
BA0WRITE4(sc, CS4281_DMR1, fmt);
BA0WRITE4(sc, CS4281_DCR1, BA0READ4(sc, CS4281_DCR1) & ~DCRn_MSK);
BA0WRITE4(sc, CS4281_HICR, HICR_IEV | HICR_CHGM);
BA0WRITE4(sc, CS4281_DACSR, cs4281_sr2regval(rate));
BA0WRITE4(sc, CS4281_ADCSR, cs4281_sr2regval(rate));
BA0WRITE4(sc, CS4281_CWPR, 0x4281);
BA0WRITE4(sc, CS4281_EPPMC, dat32 & ~EPPMC_FPDN);
BA0WRITE4(sc, CS4281_CLKCR1, 0);
BA0WRITE4(sc, CS4281_SERMC, 0);
BA0WRITE4(sc, CS4281_ACCTL, 0);
BA0WRITE4(sc, CS4281_SPMC, 0);
BA0WRITE4(sc, CS4281_SPMC, SPMC_RSTN);
BA0WRITE4(sc, CS4281_SPMC, SPMC_RSTN | SPCM_ASDIN2E);
BA0WRITE4(sc, CS4281_SERMC, SERMC_TCID);
BA0WRITE4(sc, CS4281_CLKCR1, CLKCR1_DLLP);
BA0WRITE4(sc, CS4281_CLKCR1, CLKCR1_SWCE | CLKCR1_DLLP);
BA0WRITE4(sc, CS4281_SSPM,
BA0WRITE4(sc, CS4281_ACCTL, ACCTL_ESYN);
BA0WRITE4(sc, CS4281_SERMC, SERMC_PTCAC97);
BA0WRITE4(sc, CS4281_ACCTL, ACCTL_ESYN | ACCTL_VFRM);
BA0WRITE4(sc, CS4281_SERMC, SERMC_PTCAC97);
BA0WRITE4(sc, CS4281_ACOSV, (ACOSV_SLV3 | ACOSV_SLV4));
BA0WRITE4(sc, CS4281_SSCR, ~SSCR_HVC); /* disable HW volume setting */
BA0WRITE4(sc, CS4281_SSCR, SSCR_SB);
BA0WRITE4(sc, CS4281_FCR0, (BA0READ4(sc,CS4281_FCR0) & ~FCRn_FEN));
BA0WRITE4(sc, CS4281_FCR0, dat32);
BA0WRITE4(sc, CS4281_FCR0, dat32 | FCRn_FEN);
BA0WRITE4(sc, CS4281_FCR1, (BA0READ4(sc,CS4281_FCR1) & ~FCRn_FEN));
BA0WRITE4(sc, CS4281_FCR1, dat32 | FCRn_PSH);
BA0WRITE4(sc, CS4281_FCR1, dat32 | FCRn_FEN);
BA0WRITE4(sc, CS4281_FCR2, (BA0READ4(sc,CS4281_FCR2) & ~FCRn_FEN));
BA0WRITE4(sc, CS4281_FCR3, (BA0READ4(sc,CS4281_FCR3) & ~FCRn_FEN));
BA0WRITE4(sc, CS4281_SRCSA, dat32);
BA0WRITE4(sc, CS4281_DCR0, dat32);
BA0WRITE4(sc, CS4281_DCR1, dat32);
BA0WRITE4(sc, CS4281_DMR0,
BA0WRITE4(sc, CS4281_DMR1,
BA0WRITE4(sc, CS4281_HIMR, dat32);
BA0WRITE4(sc, CS4281_ACCTL, 0);
BA0WRITE4(sc, CS4281_SPMC, 0);
BA0WRITE4(sc, CS4281_SPMC, SPMC_RSTN);
BA0WRITE4(sc, CS4281_SPMC, SPMC_RSTN | SPCM_ASDIN2E);