summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2008-12-19 14:32:45 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2009-03-24 11:03:44 +0100
commitd4deb5fc78a221c3fb74054f4dd26284690ce3ef (patch)
tree612d1e3f1eeb1bfb8059395913a041aa1c0ea36e
parentffd7af33149457f6b9fc7ca8dbe37afd74554955 (diff)
downloadlinux-2.6-d4deb5fc78a221c3fb74054f4dd26284690ce3ef.tar.gz
linux-2.6-d4deb5fc78a221c3fb74054f4dd26284690ce3ef.tar.xz
PCM037: Add CAN support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-mx3/pcm037.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/arch/arm/mach-mx3/pcm037.c b/arch/arm/mach-mx3/pcm037.c
index e8b13c6d0a3..c5840f0e06d 100644
--- a/arch/arm/mach-mx3/pcm037.c
+++ b/arch/arm/mach-mx3/pcm037.c
@@ -32,6 +32,9 @@
#include <linux/spi/spi.h>
#include <linux/irq.h>
#include <linux/fb.h>
+#if defined CONFIG_CAN_SJA1000 || defined CONFIG_CAN_SJA1000_MODULE
+#include <linux/can/sja1000_platform.h>
+#endif
#include <mach/hardware.h>
#include <asm/mach-types.h>
@@ -475,6 +478,36 @@ static struct mx3fb_platform_data mx3fb_pdata = {
.num_modes = ARRAY_SIZE(fb_modedb),
};
+#if defined CONFIG_CAN_SJA1000 || defined CONFIG_CAN_SJA1000_MODULE
+static struct resource pcm970_sja1000_resources[] = {
+ [0] = {
+ .start = CS5_BASE_ADDR,
+ .end = CS5_BASE_ADDR + 0x100 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IOMUX_TO_IRQ(IOMUX_PIN(48, 105)),
+ .end = IOMUX_TO_IRQ(IOMUX_PIN(48, 105)),
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
+ },
+};
+
+struct sja1000_platform_data pcm970_sja1000_platform_data = {
+ .clock = 16000000 / 2,
+ .ocr = 0x40 | 0x18,
+ .cdr = 0x40,
+};
+
+static struct platform_device pcm970_sja1000 = {
+ .name = "sja1000_platform",
+ .dev = {
+ .platform_data = &pcm970_sja1000_platform_data,
+ },
+ .resource = pcm970_sja1000_resources,
+ .num_resources = ARRAY_SIZE(pcm970_sja1000_resources),
+};
+#endif
+
/*
* Board specific initialization.
*/
@@ -513,6 +546,10 @@ static void __init mxc_board_init(void)
spi_register_board_info(pcm037_spi_board_info,
ARRAY_SIZE(pcm037_spi_board_info));
#endif
+
+#if defined CONFIG_CAN_SJA1000 || defined CONFIG_CAN_SJA1000_MODULE
+ platform_device_register(&pcm970_sja1000);
+#endif
}
static void __init pcm037_timer_init(void)