[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-28 Thread git repository hosting
Module: xenomai-2.6
Branch: master
Commit: e96c29c969ef721c927c9c9fe195a9f294827aec
URL:
http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=e96c29c969ef721c927c9c9fe195a9f294827aec

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 include/asm-generic/wrappers.h|   13 ++
 ksrc/drivers/can/mscan/rtcan_mscan_proc.c |  147 +++---
 ksrc/drivers/can/rtcan_internal.h |   62 --
 ksrc/drivers/can/rtcan_module.c   |  266 -
 ksrc/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 5 files changed, 233 insertions(+), 303 deletions(-)

diff --git a/include/asm-generic/wrappers.h b/include/asm-generic/wrappers.h
index 0a4b45b..9108cbd 100644
--- a/include/asm-generic/wrappers.h
+++ b/include/asm-generic/wrappers.h
@@ -784,6 +784,19 @@ proc_create_data(const char *name, mode_t mode, struct 
proc_dir_entry *parent,
return pde;
 }
 #endif /* < 2.6.26 */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+static inline struct proc_dir_entry *
+proc_create(const char *name, mode_t mode, struct proc_dir_entry *parent,
+   const struct file_operations *proc_fops)
+{
+   struct proc_dir_entry *pde = create_proc_entry(name, mode, parent);
+
+   if (pde)
+   pde->proc_fops = proc_fops;
+   return pde;
+}
+#endif /* < 2.6.25 */
 #endif /* < 3.10 */
 
 #endif /* _XENO_ASM_GENERIC_WRAPPERS_H */
diff --git a/ksrc/drivers/can/mscan/rtcan_mscan_proc.c 
b/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-   !RTCA

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-28 Thread git repository hosting
Module: xenomai-forge
Branch: master
Commit: c688c19b1b3ae2baa4ee900b730a5240cda22411
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=c688c19b1b3ae2baa4ee900b730a5240cda22411

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 kernel/drivers/can/mscan/rtcan_mscan_proc.c |  147 ++---
 kernel/drivers/can/rtcan_internal.h |   62 --
 kernel/drivers/can/rtcan_module.c   |  266 +++
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 4 files changed, 220 insertions(+), 303 deletions(-)

diff --git a/kernel/drivers/can/mscan/rtcan_mscan_proc.c 
b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/kernel/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantaak )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantbsel)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidac )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar4)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-28 Thread git repository hosting
Module: xenomai-forge
Branch: next
Commit: c688c19b1b3ae2baa4ee900b730a5240cda22411
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=c688c19b1b3ae2baa4ee900b730a5240cda22411

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 kernel/drivers/can/mscan/rtcan_mscan_proc.c |  147 ++---
 kernel/drivers/can/rtcan_internal.h |   62 --
 kernel/drivers/can/rtcan_module.c   |  266 +++
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 4 files changed, 220 insertions(+), 303 deletions(-)

diff --git a/kernel/drivers/can/mscan/rtcan_mscan_proc.c 
b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/kernel/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantaak )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantbsel)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidac )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar4)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(ca

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-28 Thread git repository hosting
Module: xenomai-jki
Branch: for-forge
Commit: c688c19b1b3ae2baa4ee900b730a5240cda22411
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=c688c19b1b3ae2baa4ee900b730a5240cda22411

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 kernel/drivers/can/mscan/rtcan_mscan_proc.c |  147 ++---
 kernel/drivers/can/rtcan_internal.h |   62 --
 kernel/drivers/can/rtcan_module.c   |  266 +++
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 4 files changed, 220 insertions(+), 303 deletions(-)

diff --git a/kernel/drivers/can/mscan/rtcan_mscan_proc.c 
b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/kernel/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantaak )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantbsel)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidac )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar4)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(c

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-28 Thread git repository hosting
Module: xenomai-jki
Branch: for-forge
Commit: 91d3ea096da964334858561babdf29abc1154889
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=91d3ea096da964334858561babdf29abc1154889

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 kernel/drivers/can/mscan/rtcan_mscan_proc.c |  147 ++---
 kernel/drivers/can/rtcan_internal.h |   62 --
 kernel/drivers/can/rtcan_module.c   |  266 +++
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 4 files changed, 220 insertions(+), 303 deletions(-)

diff --git a/kernel/drivers/can/mscan/rtcan_mscan_proc.c 
b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/kernel/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantaak )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantbsel)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidac )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar4)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(c

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-28 Thread git repository hosting
Module: xenomai-jki
Branch: for-forge
Commit: 20c78f0de549357f6097551d6c15e66181608669
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=20c78f0de549357f6097551d6c15e66181608669

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 kernel/drivers/can/mscan/rtcan_mscan_proc.c |  147 ++---
 kernel/drivers/can/rtcan_internal.h |   62 --
 kernel/drivers/can/rtcan_module.c   |  266 +++
 kernel/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 4 files changed, 220 insertions(+), 303 deletions(-)

diff --git a/kernel/drivers/can/mscan/rtcan_mscan_proc.c 
b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/kernel/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/kernel/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantaak )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantbsel)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidac )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantxerr)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr0)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr1)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr2)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidmr3)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canidar4)) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(c

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-21 Thread git repository hosting
Module: xenomai-jki
Branch: queues/ftrace
Commit: 2a44fdb633ddb68ef01cab5d65041f23c635a4c8
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=2a44fdb633ddb68ef01cab5d65041f23c635a4c8

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 include/asm-generic/wrappers.h|   13 ++
 ksrc/drivers/can/mscan/rtcan_mscan_proc.c |  147 +++---
 ksrc/drivers/can/rtcan_internal.h |   62 --
 ksrc/drivers/can/rtcan_module.c   |  266 -
 ksrc/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 5 files changed, 233 insertions(+), 303 deletions(-)

diff --git a/include/asm-generic/wrappers.h b/include/asm-generic/wrappers.h
index 0a4b45b..9108cbd 100644
--- a/include/asm-generic/wrappers.h
+++ b/include/asm-generic/wrappers.h
@@ -784,6 +784,19 @@ proc_create_data(const char *name, mode_t mode, struct 
proc_dir_entry *parent,
return pde;
 }
 #endif /* < 2.6.26 */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+static inline struct proc_dir_entry *
+proc_create(const char *name, mode_t mode, struct proc_dir_entry *parent,
+   const struct file_operations *proc_fops)
+{
+   struct proc_dir_entry *pde = create_proc_entry(name, mode, parent);
+
+   if (pde)
+   pde->proc_fops = proc_fops;
+   return pde;
+}
+#endif /* < 2.6.25 */
 #endif /* < 3.10 */
 
 #endif /* _XENO_ASM_GENERIC_WRAPPERS_H */
diff --git a/ksrc/drivers/can/mscan/rtcan_mscan_proc.c 
b/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
- 

[Xenomai-git] Jan Kiszka : rtcan: Update procfs usage to latest kernel API

2013-08-21 Thread git repository hosting
Module: xenomai-jki
Branch: for-upstream
Commit: 2a44fdb633ddb68ef01cab5d65041f23c635a4c8
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=2a44fdb633ddb68ef01cab5d65041f23c635a4c8

Author: Jan Kiszka 
Date:   Wed Aug 21 15:58:27 2013 +0200

rtcan: Update procfs usage to latest kernel API

This both overcomes RTCAN_PROC_* macros and makes the CAN layer
compatible with kernel 3.10. We simply switch all procfs nodes to
seq_file.

Signed-off-by: Jan Kiszka 

---

 include/asm-generic/wrappers.h|   13 ++
 ksrc/drivers/can/mscan/rtcan_mscan_proc.c |  147 +++---
 ksrc/drivers/can/rtcan_internal.h |   62 --
 ksrc/drivers/can/rtcan_module.c   |  266 -
 ksrc/drivers/can/sja1000/rtcan_sja1000_proc.c |   48 ++---
 5 files changed, 233 insertions(+), 303 deletions(-)

diff --git a/include/asm-generic/wrappers.h b/include/asm-generic/wrappers.h
index 0a4b45b..9108cbd 100644
--- a/include/asm-generic/wrappers.h
+++ b/include/asm-generic/wrappers.h
@@ -784,6 +784,19 @@ proc_create_data(const char *name, mode_t mode, struct 
proc_dir_entry *parent,
return pde;
 }
 #endif /* < 2.6.26 */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+static inline struct proc_dir_entry *
+proc_create(const char *name, mode_t mode, struct proc_dir_entry *parent,
+   const struct file_operations *proc_fops)
+{
+   struct proc_dir_entry *pde = create_proc_entry(name, mode, parent);
+
+   if (pde)
+   pde->proc_fops = proc_fops;
+   return pde;
+}
+#endif /* < 2.6.25 */
 #endif /* < 3.10 */
 
 #endif /* _XENO_ASM_GENERIC_WRAPPERS_H */
diff --git a/ksrc/drivers/can/mscan/rtcan_mscan_proc.c 
b/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
index 69f77a2..c5aad74 100644
--- a/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
+++ b/ksrc/drivers/can/mscan/rtcan_mscan_proc.c
@@ -33,8 +33,7 @@
 
 #ifdef CONFIG_XENO_DRIVERS_CAN_DEBUG
 
-static int rtcan_mscan_proc_regs(char *buf, char **start, off_t offset,
-int count, int *eof, void *data)
+static int rtcan_mscan_proc_regs(struct seq_file *p, void *data)
 {
struct rtcan_device *dev = (struct rtcan_device *)data;
struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr;
@@ -43,98 +42,94 @@ static int rtcan_mscan_proc_regs(char *buf, char **start, 
off_t offset,
u32 port_config;
 #endif
u8 canctl0, canctl1;
-   RTCAN_PROC_PRINT_VARS(80);
 
-   if (!RTCAN_PROC_PRINT("MSCAN registers at %p\n", regs))
-   goto done;
+   seq_printf(p, "MSCAN registers at %p\n", regs);
+
canctl0 = in_8(®s->canctl0);
-   if (!RTCAN_PROC_PRINT("canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
- canctl0,
- (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
- (canctl0 & MSCAN_RXACT) ? " rxact" :"",
- (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
- (canctl0 & MSCAN_SYNCH) ? " synch" :"",
- (canctl0 & MSCAN_TIME)  ? " time"  :"",
- (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
- (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
- (canctl0 & MSCAN_INITRQ)? " initrq":"" ))
-   goto done;
+   seq_printf(p, "canctl0  0x%02x%s%s%s%s%s%s%s%s\n",
+  canctl0,
+  (canctl0 & MSCAN_RXFRM) ? " rxfrm" :"",
+  (canctl0 & MSCAN_RXACT) ? " rxact" :"",
+  (canctl0 & MSCAN_CSWAI) ? " cswai" :"",
+  (canctl0 & MSCAN_SYNCH) ? " synch" :"",
+  (canctl0 & MSCAN_TIME)  ? " time"  :"",
+  (canctl0 & MSCAN_WUPE)  ? " wupe"  :"",
+  (canctl0 & MSCAN_SLPRQ) ? " slprq" :"",
+  (canctl0 & MSCAN_INITRQ)? " initrq":"" );
canctl1 = in_8(®s->canctl1);
-   if (!RTCAN_PROC_PRINT("canctl1  0x%02x%s%s%s%s%s%s%s\n",
-  canctl1,
- (canctl1 & MSCAN_CANE)  ? " cane"  :"",
- (canctl1 & MSCAN_CLKSRC)? " clksrc":"",
- (canctl1 & MSCAN_LOOPB) ? " loopb" :"",
- (canctl1 & MSCAN_LISTEN)? " listen":"",
- (canctl1 & MSCAN_WUPM)  ? " wump"  :"",
- (canctl1 & MSCAN_SLPAK) ? " slpak" :"",
- (canctl1 & MSCAN_INITAK)? " initak":""))
-   goto done;
-   if (!RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr0 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canbtr1 )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(canrier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantflg )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantier )) |
-   !RTCAN_PROC_PRINT(MSCAN_REG_ARGS(cantarq )) |
-