aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Grandegger <wg@grandegger.com>2010-05-18 01:39:48 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-18 01:39:48 -0400
commit56e6943b902562e09d3e74126d8d8256b5ea17fb (patch)
tree3b37d2e1382a666152b7c655a67b4f7b785c142f
parentd19d56ddc88e7895429ef118db9c83c7bbe3ce6a (diff)
can: sja1000 platform data fixes
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 <wg@grandegger.com> Acked-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/arm/mach-mx2/pcm970-baseboard.c6
-rw-r--r--arch/arm/mach-mx3/mach-pcm037.c6
-rw-r--r--drivers/net/can/sja1000/sja1000_platform.c3
-rw-r--r--include/linux/can/platform/sja1000.h2
4 files changed, 9 insertions, 8 deletions
diff --git a/arch/arm/mach-mx2/pcm970-baseboard.c b/arch/arm/mach-mx2/pcm970-baseboard.c
index 4aafd5b8b85b..f490a406d57e 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[] = {
201}; 201};
202 202
203struct sja1000_platform_data pcm970_sja1000_platform_data = { 203struct sja1000_platform_data pcm970_sja1000_platform_data = {
204 .clock = 16000000 / 2, 204 .osc_freq = 16000000,
205 .ocr = 0x40 | 0x18, 205 .ocr = OCR_TX1_PULLDOWN | OCR_TX0_PUSHPULL,
206 .cdr = 0x40, 206 .cdr = CDR_CBP,
207}; 207};
208 208
209static struct platform_device pcm970_sja1000 = { 209static struct platform_device pcm970_sja1000 = {
diff --git a/arch/arm/mach-mx3/mach-pcm037.c b/arch/arm/mach-mx3/mach-pcm037.c
index 2df1ec55a97e..78ecd751549b 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[] = {
530}; 530};
531 531
532struct sja1000_platform_data pcm970_sja1000_platform_data = { 532struct sja1000_platform_data pcm970_sja1000_platform_data = {
533 .clock = 16000000 / 2, 533 .osc_freq = 16000000,
534 .ocr = 0x40 | 0x18, 534 .ocr = OCR_TX1_PULLDOWN | OCR_TX0_PUSHPULL,
535 .cdr = 0x40, 535 .cdr = CDR_CBP,
536}; 536};
537 537
538static struct platform_device pcm970_sja1000 = { 538static struct platform_device pcm970_sja1000 = {
diff --git a/drivers/net/can/sja1000/sja1000_platform.c b/drivers/net/can/sja1000/sja1000_platform.c
index b65cabb361ab..d9fadc489b32 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)
111 dev->irq = res_irq->start; 111 dev->irq = res_irq->start;
112 priv->irq_flags = res_irq->flags & (IRQF_TRIGGER_MASK | IRQF_SHARED); 112 priv->irq_flags = res_irq->flags & (IRQF_TRIGGER_MASK | IRQF_SHARED);
113 priv->reg_base = addr; 113 priv->reg_base = addr;
114 priv->can.clock.freq = pdata->clock; 114 /* The CAN clock frequency is half the oscillator clock frequency */
115 priv->can.clock.freq = pdata->osc_freq / 2;
115 priv->ocr = pdata->ocr; 116 priv->ocr = pdata->ocr;
116 priv->cdr = pdata->cdr; 117 priv->cdr = pdata->cdr;
117 118
diff --git a/include/linux/can/platform/sja1000.h b/include/linux/can/platform/sja1000.h
index 01ee2aeb048d..96f8fcc78d78 100644
--- a/include/linux/can/platform/sja1000.h
+++ b/include/linux/can/platform/sja1000.h
@@ -26,7 +26,7 @@
26#define OCR_TX_SHIFT 2 26#define OCR_TX_SHIFT 2
27 27
28struct sja1000_platform_data { 28struct sja1000_platform_data {
29 u32 clock; /* CAN bus oscillator frequency in Hz */ 29 u32 osc_freq; /* CAN bus oscillator frequency in Hz */
30 30
31 u8 ocr; /* output control register */ 31 u8 ocr; /* output control register */
32 u8 cdr; /* clock divider register */ 32 u8 cdr; /* clock divider register */