Subject: Re: [PATCH 2/9] cpm2: Fix off-by-one error in setbrg().

From: Vitaly Bordug <[email-masked]>
Date: Thu, 30 Aug 2007 02:09:07 +0400

On Tue, 28 Aug 2007 15:19:21 -0500
Scott Wood wrote:

> The hardware adds one to the BRG value to get the divider, so it must
> be subtracted by software.

Prolly a note why it used to work, or what exactly this is resulting in the code. IIRC this was
just fw-ported so arch/ppc should have this as well.
> 
> Signed-off-by: Scott Wood <[email-masked]>
> ---
>  arch/powerpc/sysdev/cpm2_common.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/powerpc/sysdev/cpm2_common.c
> b/arch/powerpc/sysdev/cpm2_common.c index dbef50c..99ad1ed 100644
> --- a/arch/powerpc/sysdev/cpm2_common.c
> +++ b/arch/powerpc/sysdev/cpm2_common.c
> @@ -102,7 +102,7 @@ cpm_setbrg(uint brg, uint rate)
>  		brg -= 4;
>  	}
>  	bp += brg;
> -	out_be32(bp, ((BRG_UART_CLK / rate) << 1) | CPM_BRG_EN);
> +	out_be32(bp, (((BRG_UART_CLK / rate) - 1) << 1) |
> CPM_BRG_EN); 
>  	cpm2_unmap(bp);
>  }

-- 
Sincerely, Vitaly