GSR_SDONE
writel(GSR_CDONE | GSR_SDONE, 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)) {
writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE, 1);