From 8845db86baf4ed5bd0889bb147a6c2c85062b079 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Tue, 4 Mar 2008 11:14:23 +0100 Subject: [PATCH] --- yaml --- r: 91211 b: refs/heads/master c: 60bfe7fa3dc13fe90d273371b65ae3ec89583c52 h: refs/heads/master i: 91209: dde54b4f725624f23d3d98308be863b7c7e0f941 91207: 1ad0c73da0c18206ee6646db9fde4d382e5aa40a v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-pxa/pxa3xx.c | 30 ++++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a8d2e04109ab..96c6a232c7ed 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 27b98a671ff4cda89ba279452115000da59a9067 +refs/heads/master: 60bfe7fa3dc13fe90d273371b65ae3ec89583c52 diff --git a/trunk/arch/arm/mach-pxa/pxa3xx.c b/trunk/arch/arm/mach-pxa/pxa3xx.c index 54c9e8371a21..93f3236b4100 100644 --- a/trunk/arch/arm/mach-pxa/pxa3xx.c +++ b/trunk/arch/arm/mach-pxa/pxa3xx.c @@ -109,6 +109,25 @@ unsigned int pxa3xx_get_memclk_frequency_10khz(void) return (clk / 10000); } +/* + * Return the current AC97 clock frequency. + */ +static unsigned long clk_pxa3xx_ac97_getrate(struct clk *clk) +{ + unsigned long rate = 312000000; + unsigned long ac97_div; + + ac97_div = AC97_DIV; + + /* This may loose precision for some rates but won't for the + * standard 24.576MHz. + */ + rate /= (ac97_div >> 12) & 0x7fff; + rate *= (ac97_div & 0xfff); + + return rate; +} + /* * Return the current HSIO bus clock frequency */ @@ -156,6 +175,12 @@ static const struct clkops clk_pxa3xx_hsio_ops = { .getrate = clk_pxa3xx_hsio_getrate, }; +static const struct clkops clk_pxa3xx_ac97_ops = { + .enable = clk_pxa3xx_cken_enable, + .disable = clk_pxa3xx_cken_disable, + .getrate = clk_pxa3xx_ac97_getrate, +}; + static void clk_pout_enable(struct clk *clk) { OSCC |= OSCC_PEN; @@ -197,8 +222,9 @@ static struct clk pxa3xx_clks[] = { .delay = 70, }, - PXA3xx_CK("LCDCLK", LCD, &clk_pxa3xx_hsio_ops, &pxa_device_fb.dev), - PXA3xx_CK("CAMCLK", CAMERA, &clk_pxa3xx_hsio_ops, NULL), + PXA3xx_CK("LCDCLK", LCD, &clk_pxa3xx_hsio_ops, &pxa_device_fb.dev), + PXA3xx_CK("CAMCLK", CAMERA, &clk_pxa3xx_hsio_ops, NULL), + PXA3xx_CK("AC97CLK", AC97, &clk_pxa3xx_ac97_ops, NULL), PXA3xx_CKEN("UARTCLK", FFUART, 14857000, 1, &pxa_device_ffuart.dev), PXA3xx_CKEN("UARTCLK", BTUART, 14857000, 1, &pxa_device_btuart.dev),