Package: linux-patch-xenomai
Version: 2.5.4-1
Tags: patch

there is a fix for dual channel can cards which got forgotten in the
upstream 2.5.4 release. [1]

patch attached.

Regards,
Stefan

[1] https://mail.gna.org/public/xenomai-help/2010-08/msg00085.html

From 5c7bec10b099fd1973394b2a6ca388a5e3742b64 Mon Sep 17 00:00:00 2001
From: Peter Soetens <pe...@thesourceworks.com>
Date: Fri, 9 Jul 2010 15:21:53 +0200
Subject: [PATCH] rtcan: Mask the SJA_MOD register when probing for channels

Inspired by the plx_pci.c driver which does the same.
Tested on IXXAT PC-I 04

Signed-off-by: Peter Soetens <pe...@thesourceworks.com>
---
 ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c b/ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c
index 5faa763..8c91efd 100644
--- a/ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c
+++ b/ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c
@@ -63,6 +63,7 @@ struct rtcan_ixxat_pci
 #define IXXAT_INTCSR_OFFSET  0x4c /* Offset in PLX9050 conf registers */
 #define IXXAT_INTCSR_SLAVE   0x41 /* LINT1 and PCI interrupt enabled */
 #define IXXAT_INTCSR_MASTER  0x08 /* LINT2 enabled */
+#define IXXAT_SJA_MOD_MASK   0xa1 /* Mask for reading dual/single channel */
 
 /* PCI vender, device and sub-device ID */
 #define IXXAT_PCI_VENDOR_ID  0x10b5
@@ -238,7 +239,7 @@ static int __devinit ixxat_pci_init_one (struct pci_dev *pdev,
     writeb(0x1, base_addr + CHANNEL_MASTER_RESET);
     writeb(0x1, base_addr + CHANNEL_SLAVE_RESET);
     udelay(100);
-    if (readb(base_addr + CHANNEL_OFFSET + SJA_MOD) != 0x21 ||
+    if ( (readb(base_addr + CHANNEL_OFFSET + SJA_MOD) & IXXAT_SJA_MOD_MASK ) != 0x21 ||
 	readb(base_addr + CHANNEL_OFFSET + SJA_SR ) != 0x0c ||
 	readb(base_addr + CHANNEL_OFFSET + SJA_IR ) != 0xe0)
 	channel = CHANNEL_SINGLE;
-- 
1.6.3.3

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to