/* AC97 controller asserts a warm reset */ static void au1xpsc_ac97_warm_reset(struct snd_ac97 *ac97) { /* FIXME */ struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata; au_writel(PSC_AC97RST_SNC, AC97_RST(pscdata)); au_sync(); msleep(10); au_writel(0, AC97_RST(pscdata)); au_sync(); }
static void au1xpsc_ac97_cold_reset(struct snd_ac97 *ac97) { /* FIXME */ struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata; int i; /* disable PSC during cold reset */ au_writel(0, AC97_CFG(au1xpsc_ac97_workdata)); au_sync(); au_writel(PSC_CTRL_DISABLE, PSC_CTRL(pscdata)); au_sync(); /* issue cold reset */ au_writel(PSC_AC97RST_RST, AC97_RST(pscdata)); au_sync(); msleep(500); au_writel(0, AC97_RST(pscdata)); au_sync(); /* enable PSC */ au_writel(PSC_CTRL_ENABLE, PSC_CTRL(pscdata)); au_sync(); /* wait for PSC to indicate it's ready */ i = 100000; while (!((au_readl(AC97_STAT(pscdata)) & PSC_AC97STAT_SR)) && (--i)) au_sync(); if (i == 0) { printk(KERN_ERR "au1xpsc-ac97: PSC not ready!\n"); return; } /* enable the ac97 function */ au_writel(pscdata->cfg | PSC_AC97CFG_DE_ENABLE, AC97_CFG(pscdata)); au_sync(); /* wait for AC97 core to become ready */ i = 100000; while (!((au_readl(AC97_STAT(pscdata)) & PSC_AC97STAT_DR)) && (--i)) au_sync(); if (i == 0) printk(KERN_ERR "au1xpsc-ac97: AC97 ctrl not ready\n"); }
static void au1xpsc_ac97_cold_reset(struct snd_ac97 *ac97) { struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata; int i; au_writel(0, AC97_CFG(au1xpsc_ac97_workdata)); au_sync(); au_writel(PSC_CTRL_DISABLE, PSC_CTRL(pscdata)); au_sync(); au_writel(PSC_AC97RST_RST, AC97_RST(pscdata)); au_sync(); msleep(500); au_writel(0, AC97_RST(pscdata)); au_sync(); au_writel(PSC_CTRL_ENABLE, PSC_CTRL(pscdata)); au_sync(); i = 1000; while (!((au_readl(AC97_STAT(pscdata)) & PSC_AC97STAT_SR)) && (--i)) msleep(1); if (i == 0) { printk(KERN_ERR "au1xpsc-ac97: PSC not ready!\n"); return; } au_writel(pscdata->cfg | PSC_AC97CFG_DE_ENABLE, AC97_CFG(pscdata)); au_sync(); i = 1000; while (!((au_readl(AC97_STAT(pscdata)) & PSC_AC97STAT_DR)) && (--i)) msleep(1); if (i == 0) printk(KERN_ERR "au1xpsc-ac97: AC97 ctrl not ready\n"); }