Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 469cb928 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/topic/pxa' into asoc-next

parents df8aabe4 7db1698f
Loading
Loading
Loading
Loading
+10 −17
Original line number Original line Diff line number Diff line
@@ -117,8 +117,7 @@ static inline void pxa_ac97_warm_pxa25x(void)
{
{
	gsr_bits = 0;
	gsr_bits = 0;


	GCR |= GCR_WARM_RST | GCR_PRIRDY_IEN | GCR_SECRDY_IEN;
	GCR |= GCR_WARM_RST;
	wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
}
}


static inline void pxa_ac97_cold_pxa25x(void)
static inline void pxa_ac97_cold_pxa25x(void)
@@ -129,8 +128,6 @@ static inline void pxa_ac97_cold_pxa25x(void)
	gsr_bits = 0;
	gsr_bits = 0;


	GCR = GCR_COLD_RST;
	GCR = GCR_COLD_RST;
	GCR |= GCR_CDONE_IE|GCR_SDONE_IE;
	wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
}
}
#endif
#endif


@@ -149,8 +146,6 @@ static inline void pxa_ac97_warm_pxa27x(void)


static inline void pxa_ac97_cold_pxa27x(void)
static inline void pxa_ac97_cold_pxa27x(void)
{
{
	unsigned int timeout;

	GCR &=  GCR_COLD_RST;  /* clear everything but nCRST */
	GCR &=  GCR_COLD_RST;  /* clear everything but nCRST */
	GCR &= ~GCR_COLD_RST;  /* then assert nCRST */
	GCR &= ~GCR_COLD_RST;  /* then assert nCRST */


@@ -161,29 +156,20 @@ static inline void pxa_ac97_cold_pxa27x(void)
	udelay(5);
	udelay(5);
	clk_disable(ac97conf_clk);
	clk_disable(ac97conf_clk);
	GCR = GCR_COLD_RST | GCR_WARM_RST;
	GCR = GCR_COLD_RST | GCR_WARM_RST;
	timeout = 100;     /* wait for the codec-ready bit to be set */
	while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
		mdelay(1);
}
}
#endif
#endif


#ifdef CONFIG_PXA3xx
#ifdef CONFIG_PXA3xx
static inline void pxa_ac97_warm_pxa3xx(void)
static inline void pxa_ac97_warm_pxa3xx(void)
{
{
	int timeout = 100;

	gsr_bits = 0;
	gsr_bits = 0;


	/* Can't use interrupts */
	/* Can't use interrupts */
	GCR |= GCR_WARM_RST;
	GCR |= GCR_WARM_RST;
	while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
		mdelay(1);
}
}


static inline void pxa_ac97_cold_pxa3xx(void)
static inline void pxa_ac97_cold_pxa3xx(void)
{
{
	int timeout = 1000;

	/* Hold CLKBPB for 100us */
	/* Hold CLKBPB for 100us */
	GCR = 0;
	GCR = 0;
	GCR = GCR_CLKBPB;
	GCR = GCR_CLKBPB;
@@ -199,14 +185,13 @@ static inline void pxa_ac97_cold_pxa3xx(void)
	GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
	GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);


	GCR = GCR_WARM_RST | GCR_COLD_RST;
	GCR = GCR_WARM_RST | GCR_COLD_RST;
	while (!(GSR & (GSR_PCR | GSR_SCR)) && timeout--)
		mdelay(10);
}
}
#endif
#endif


bool pxa2xx_ac97_try_warm_reset(struct snd_ac97 *ac97)
bool pxa2xx_ac97_try_warm_reset(struct snd_ac97 *ac97)
{
{
	unsigned long gsr;
	unsigned long gsr;
	unsigned int timeout = 100;


#ifdef CONFIG_PXA25x
#ifdef CONFIG_PXA25x
	if (cpu_is_pxa25x())
	if (cpu_is_pxa25x())
@@ -224,6 +209,10 @@ bool pxa2xx_ac97_try_warm_reset(struct snd_ac97 *ac97)
	else
	else
#endif
#endif
		BUG();
		BUG();

	while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
		mdelay(1);

	gsr = GSR | gsr_bits;
	gsr = GSR | gsr_bits;
	if (!(gsr & (GSR_PCR | GSR_SCR))) {
	if (!(gsr & (GSR_PCR | GSR_SCR))) {
		printk(KERN_INFO "%s: warm reset timeout (GSR=%#lx)\n",
		printk(KERN_INFO "%s: warm reset timeout (GSR=%#lx)\n",
@@ -239,6 +228,7 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_try_warm_reset);
bool pxa2xx_ac97_try_cold_reset(struct snd_ac97 *ac97)
bool pxa2xx_ac97_try_cold_reset(struct snd_ac97 *ac97)
{
{
	unsigned long gsr;
	unsigned long gsr;
	unsigned int timeout = 1000;


#ifdef CONFIG_PXA25x
#ifdef CONFIG_PXA25x
	if (cpu_is_pxa25x())
	if (cpu_is_pxa25x())
@@ -257,6 +247,9 @@ bool pxa2xx_ac97_try_cold_reset(struct snd_ac97 *ac97)
#endif
#endif
		BUG();
		BUG();


	while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
		mdelay(1);

	gsr = GSR | gsr_bits;
	gsr = GSR | gsr_bits;
	if (!(gsr & (GSR_PCR | GSR_SCR))) {
	if (!(gsr & (GSR_PCR | GSR_SCR))) {
		printk(KERN_INFO "%s: cold reset timeout (GSR=%#lx)\n",
		printk(KERN_INFO "%s: cold reset timeout (GSR=%#lx)\n",
+1 −0
Original line number Original line Diff line number Diff line
@@ -163,6 +163,7 @@ static struct platform_driver mmp_driver = {
	.driver		= {
	.driver		= {
		.name	= "brownstone-audio",
		.name	= "brownstone-audio",
		.owner	= THIS_MODULE,
		.owner	= THIS_MODULE,
		.pm     = &snd_soc_pm_ops,
	},
	},
	.probe		= brownstone_probe,
	.probe		= brownstone_probe,
	.remove		= brownstone_remove,
	.remove		= brownstone_remove,
+1 −0
Original line number Original line Diff line number Diff line
@@ -329,6 +329,7 @@ static struct platform_driver corgi_driver = {
	.driver		= {
	.driver		= {
		.name	= "corgi-audio",
		.name	= "corgi-audio",
		.owner	= THIS_MODULE,
		.owner	= THIS_MODULE,
		.pm     = &snd_soc_pm_ops,
	},
	},
	.probe		= corgi_probe,
	.probe		= corgi_probe,
	.remove		= corgi_remove,
	.remove		= corgi_remove,
+1 −0
Original line number Original line Diff line number Diff line
@@ -178,6 +178,7 @@ static struct platform_driver e740_driver = {
	.driver		= {
	.driver		= {
		.name	= "e740-audio",
		.name	= "e740-audio",
		.owner	= THIS_MODULE,
		.owner	= THIS_MODULE,
		.pm     = &snd_soc_pm_ops,
	},
	},
	.probe		= e740_probe,
	.probe		= e740_probe,
	.remove		= e740_remove,
	.remove		= e740_remove,
+1 −0
Original line number Original line Diff line number Diff line
@@ -160,6 +160,7 @@ static struct platform_driver e750_driver = {
	.driver		= {
	.driver		= {
		.name	= "e750-audio",
		.name	= "e750-audio",
		.owner	= THIS_MODULE,
		.owner	= THIS_MODULE,
		.pm     = &snd_soc_pm_ops,
	},
	},
	.probe		= e750_probe,
	.probe		= e750_probe,
	.remove		= e750_remove,
	.remove		= e750_remove,
Loading