From: Wolfgang Grandegger <wg@domain.hid>
To: xenomai-core <xenomai@xenomai.org>
Subject: [Xenomai-core] [PATCH] rtcan: mscan: fix build problems with recent kernel versions
Date: Mon, 25 May 2009 09:42:18 +0200 [thread overview]
Message-ID: <4A1A4BDA.9000204@domain.hid> (raw)
This patch fixes build problems with recent kernel version due
to changes of the OpenFirmware device compatibility names.
Furthermore, it introduces a Kconfig option to leave the CAN
pin routing as-is (normally pre-configured by the boot-loader).
Signed-off-by: Wolfgang Grandegger <wg@domain.hid>
---
ksrc/drivers/can/mscan/Kconfig | 5 ++++-
ksrc/drivers/can/mscan/rtcan_mscan.c | 18 ++++++++++++++----
ksrc/drivers/can/mscan/rtcan_mscan_regs.h | 12 +++++++++---
3 files changed, 27 insertions(+), 8 deletions(-)
Index: xenomai-2.4/ksrc/drivers/can/mscan/rtcan_mscan.c
===================================================================
--- xenomai-2.4.orig/ksrc/drivers/can/mscan/rtcan_mscan.c 2009-05-25 08:25:44.478719020 +0200
+++ xenomai-2.4/ksrc/drivers/can/mscan/rtcan_mscan.c 2009-05-25 08:25:48.287395053 +0200
@@ -703,9 +703,11 @@
static inline void __init mscan_gpio_config(void)
{
struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5xxx_GPIO;
- int can_to_psc2 = 0;
+ int can_to_psc2 = -1;
-#ifdef CONFIG_XENO_DRIVERS_CAN_MSCAN_PSC2
+#if defined(CONFIG_XENO_DRIVERS_CAN_MSCAN_ALT)
+ can_to_psc2 = 0;
+#elif defined(CONFIG_XENO_DRIVERS_CAN_MSCAN_PSC2)
can_to_psc2 = 1;
#endif
@@ -723,6 +725,12 @@
"Please use PSC2 or I2C1/TMR01.\n", mscan_pins);
}
}
+
+ if (!gpio || can_to_psc2 < 0) {
+ printk("%s: use pre-configure CAN routing\n", RTCAN_DRV_NAME);
+ return;
+ }
+
if (can_to_psc2) {
gpio->port_config &= ~0x10000070;
gpio->port_config |= 0x00000010;
@@ -737,7 +745,7 @@
static inline int mscan_get_config(unsigned long *addr,
unsigned int *irq)
{
-#ifdef CONFIG_PPC_MERGE
+#if defined(CONFIG_PPC_MERGE) || LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)
/* Use Open Firmware device tree */
struct device_node *np = NULL;
unsigned int i;
@@ -746,7 +754,9 @@
for (i = 0; i < RTCAN_MSCAN_DEVS; i++) {
struct resource r[2] = {};
- np = of_find_compatible_node(np, "mscan", "mpc5200-mscan");
+ np = of_find_compatible_node(np, NULL, "fsl,mpc5200-mscan");
+ if (np == NULL)
+ np = of_find_compatible_node(np, NULL, "mpc5200-mscan");
if (np == NULL)
break;
ret = of_address_to_resource(np, 0, &r[0]);
Index: xenomai-2.4/ksrc/drivers/can/mscan/rtcan_mscan_regs.h
===================================================================
--- xenomai-2.4.orig/ksrc/drivers/can/mscan/rtcan_mscan_regs.h 2009-05-25 08:25:44.478719020 +0200
+++ xenomai-2.4/ksrc/drivers/can/mscan/rtcan_mscan_regs.h 2009-05-25 08:25:48.287718842 +0200
@@ -27,17 +27,23 @@
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,20)
#include <sysdev/fsl_soc.h>
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)
+#include <linux/of_platform.h>
+#else
#include <asm/of_platform.h>
+#endif
#include <asm/mpc52xx.h>
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)
-static inline void __iomem *mpc52xx_find_and_map(const char *compatible)
+static inline void __iomem *mpc5xxx_gpio_find_and_map(void)
{
struct device_node *ofn;
- ofn = of_find_compatible_node(NULL, NULL, compatible);
+ ofn = of_find_compatible_node(NULL, NULL, "mpc5200-gpio");
+ if (!ofn)
+ ofn = of_find_compatible_node(NULL, NULL, "fsl,mpc5200-gpio");
return ofn ? of_iomap(ofn, 0) : NULL;
}
#endif
-#define MPC5xxx_GPIO mpc52xx_find_and_map("mpc5200-gpio")
+#define MPC5xxx_GPIO mpc5xxx_gpio_find_and_map()
#define mpc5xxx_gpio mpc52xx_gpio
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
#include <asm/mpc5xxx.h>
Index: xenomai-2.4/ksrc/drivers/can/mscan/Kconfig
===================================================================
--- xenomai-2.4.orig/ksrc/drivers/can/mscan/Kconfig 2009-05-25 08:25:44.478719020 +0200
+++ xenomai-2.4/ksrc/drivers/can/mscan/Kconfig 2009-05-25 08:25:48.290720662 +0200
@@ -27,9 +27,12 @@
choice
depends on XENO_DRIVERS_CAN_MSCAN
prompt "Pin Configuration"
- default I2C1/TMR01
+ default XENO_DRIVERS_CAN_MSCAN_PRE
help
+config XENO_DRIVERS_CAN_MSCAN_PRE
+ bool "Use pre-configured CAN routing"
+
config XENO_DRIVERS_CAN_MSCAN_ALT
bool "CAN 1 on I2C1 pins, CAN 2 on TMR01 pins"
reply other threads:[~2009-05-25 7:42 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A1A4BDA.9000204@domain.hid \
--to=wg@domain.hid \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.