GSR
writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
if (wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_CDONE, 1) <= 0 &&
!((readl(ac97_reg_base + GSR) | gsr_bits) & GSR_CDONE)) {
__func__, reg, readl(ac97_reg_base + GSR) | gsr_bits);
while (!((readl(ac97_reg_base + GSR) | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
gsr = readl(ac97_reg_base + GSR) | gsr_bits;
while (!((readl(ac97_reg_base + GSR) | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
gsr = readl(ac97_reg_base + GSR) | gsr_bits;
status = readl(ac97_reg_base + GSR);
writel(status, ac97_reg_base + GSR);
writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
if (wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE, 1) <= 0 &&
!((readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE)) {
__func__, reg, readl(ac97_reg_base + GSR) | gsr_bits);
writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE, 1);