diff options
| author | Timur Tabi <timur@freescale.com> | 2007-11-29 17:26:30 -0600 | 
|---|---|---|
| committer | Kumar Gala <galak@kernel.crashing.org> | 2007-12-11 13:57:18 -0600 | 
| commit | 7264ec4454e3a18d06a8949ecbe9e1b55e4f4685 (patch) | |
| tree | 3e9c4f86cfa5143ecab5634958d557a731733277 /arch/powerpc/sysdev/qe_lib/qe.c | |
| parent | c5eeb5599938acb9cda8ff1ef846a26cf70d46e0 (diff) | |
| download | olio-linux-3.10-7264ec4454e3a18d06a8949ecbe9e1b55e4f4685.tar.xz olio-linux-3.10-7264ec4454e3a18d06a8949ecbe9e1b55e4f4685.zip  | |
[POWERPC] QE: change qe_setbrg() to take an enum qe_clock instead of an integer
qe_setbrg() currently takes an integer to indicate the BRG number.  Change that
to take an enum qe_clock instead, since this enum is intended to represent
clock sources.
Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/sysdev/qe_lib/qe.c')
| -rw-r--r-- | arch/powerpc/sysdev/qe_lib/qe.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c index 3d57d3835b0..1df3b4a6832 100644 --- a/arch/powerpc/sysdev/qe_lib/qe.c +++ b/arch/powerpc/sysdev/qe_lib/qe.c @@ -167,19 +167,20 @@ unsigned int get_brg_clk(void)  /* Program the BRG to the given sampling rate and multiplier   * - * @brg: the BRG, 1-16 + * @brg: the BRG, QE_BRG1 - QE_BRG16   * @rate: the desired sampling rate   * @multiplier: corresponds to the value programmed in GUMR_L[RDCR] or   * GUMR_L[TDCR].  E.g., if this BRG is the RX clock, and GUMR_L[RDCR]=01,   * then 'multiplier' should be 8. - * - * Also note that the value programmed into the BRGC register must be even.   */ -void qe_setbrg(unsigned int brg, unsigned int rate, unsigned int multiplier) +int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier)  {  	u32 divisor, tempval;  	u32 div16 = 0; +	if ((brg < QE_BRG1) || (brg > QE_BRG16)) +		return -EINVAL; +  	divisor = get_brg_clk() / (rate * multiplier);  	if (divisor > QE_BRGC_DIVISOR_MAX + 1) { @@ -196,8 +197,11 @@ void qe_setbrg(unsigned int brg, unsigned int rate, unsigned int multiplier)  	tempval = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) |  		QE_BRGC_ENABLE | div16; -	out_be32(&qe_immr->brg.brgc[brg - 1], tempval); +	out_be32(&qe_immr->brg.brgc[brg - QE_BRG1], tempval); + +	return 0;  } +EXPORT_SYMBOL(qe_setbrg);  /* Initialize SNUMs (thread serial numbers) according to   * QE Module Control chapter, SNUM table  |