Subject: Re: [PATCH net-next-2.6] can: sja1000 platform data fixes

From: Marc Kleine-Budde <[email-masked]>
Date: Mon, 17 May 2010 16:42:23 +0200

Wolfgang Grandegger wrote:
> The member "clock" of struct "sja1000_platform_data" is documented as
> "CAN bus oscillator frequency in Hz" but it's actually used as the CAN
> clock frequency, which is half of it. To avoid further confusion, this
> patch fixes it by renaming the member to "osc_freq". That way, also
> non mainline users will notice the change. The platform code for the
> relevant boards is updated accordingly. Furthermore, pre-defined
> values are now used for the members "ocr" and "cdr".
> 
> Signed-off-by: Wolfgang Grandegger <[email-masked]>
> CC: Marc Kleine-Budde <[email-masked]>

Acked-by: Marc Kleine-Budde <[email-masked]>

Cheers, Marc
> 
> diff --git a/arch/arm/mach-mx2/pcm970-baseboard.c b/arch/arm/mach-mx2/pcm970-baseboard.c
> index 4aafd5b..f490a40 100644
> --- a/arch/arm/mach-mx2/pcm970-baseboard.c
> +++ b/arch/arm/mach-mx2/pcm970-baseboard.c
> @@ -201,9 +201,9 @@ static struct resource pcm970_sja1000_resources[] = {
>  };
>  
>  struct sja1000_platform_data pcm970_sja1000_platform_data = {
> -	.clock		= 16000000 / 2,
> -	.ocr		= 0x40 | 0x18,
> -	.cdr		= 0x40,
> +	.osc_freq	= 16000000,
> +	.ocr		= OCR_TX1_PULLDOWN | OCR_TX0_PUSHPULL,
> +	.cdr		= CDR_CBP,
>  };
>  
>  static struct platform_device pcm970_sja1000 = {
> diff --git a/arch/arm/mach-mx3/mach-pcm037.c b/arch/arm/mach-mx3/mach-pcm037.c
> index 2df1ec5..78ecd75 100644
> --- a/arch/arm/mach-mx3/mach-pcm037.c
> +++ b/arch/arm/mach-mx3/mach-pcm037.c
> @@ -530,9 +530,9 @@ static struct resource pcm970_sja1000_resources[] = {
>  };
>  
>  struct sja1000_platform_data pcm970_sja1000_platform_data = {
> -	.clock		= 16000000 / 2,
> -	.ocr		= 0x40 | 0x18,
> -	.cdr		= 0x40,
> +	.osc_freq	= 16000000,
> +	.ocr		= OCR_TX1_PULLDOWN | OCR_TX0_PUSHPULL,
> +	.cdr		= CDR_CBP,
>  };
>  
>  static struct platform_device pcm970_sja1000 = {
> diff --git a/drivers/net/can/sja1000/sja1000_platform.c b/drivers/net/can/sja1000/sja1000_platform.c
> index b65cabb..d9fadc4 100644
> --- a/drivers/net/can/sja1000/sja1000_platform.c
> +++ b/drivers/net/can/sja1000/sja1000_platform.c
> @@ -111,7 +111,8 @@ static int sp_probe(struct platform_device *pdev)
>  	dev->irq = res_irq->start;
>  	priv->irq_flags = res_irq->flags & (IRQF_TRIGGER_MASK | IRQF_SHARED);
>  	priv->reg_base = addr;
> -	priv->can.clock.freq = pdata->clock;
> +	/* The CAN clock frequency is half the oscillator clock frequency */
> +	priv->can.clock.freq = pdata->osc_freq / 2;
>  	priv->ocr = pdata->ocr;
>  	priv->cdr = pdata->cdr;
>  
> diff --git a/include/linux/can/platform/sja1000.h b/include/linux/can/platform/sja1000.h
> index 01ee2ae..96f8fcc 100644
> --- a/include/linux/can/platform/sja1000.h
> +++ b/include/linux/can/platform/sja1000.h
> @@ -26,7 +26,7 @@
>  #define OCR_TX_SHIFT      2
>  
>  struct sja1000_platform_data {
> -	u32 clock;	/* CAN bus oscillator frequency in Hz */
> +	u32 osc_freq;	/* CAN bus oscillator frequency in Hz */
>  
>  	u8 ocr;		/* output control register */
>  	u8 cdr;		/* clock divider register */

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |

_______________________________________________
Socketcan-core mailing list
[email-masked]
https://lists.berlios.de/mailman/listinfo/socketcan-core