linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Wolfgang Grandegger <wg@grandegger.com>, Wolfgang Zarre <info@essax.com>
Cc: linux-can@vger.kernel.org, "Heinz-Jürgen Oertel" <oe@port.de>,
	"Henrik W Maier" <henrik@focus-sw.com>
Subject: Re: [PATCH net-next v2 2/4] can: cc770: add legacy ISA bus driver for the CC770 and AN82527
Date: Thu, 05 Jan 2012 21:48:59 +0100	[thread overview]
Message-ID: <4F060CBB.7060003@hartkopp.net> (raw)
In-Reply-To: <4F05FDE1.1040704@hartkopp.net>

Answering myself ...

i found out that the "HM" comment was introduced in the transition
from v3.2 to v3.3.3 . I took the compared versions from Heinz-Jürgen:

http://www.port.de/pages/misc/can4linux.php

The diff which contains the relevant changes is here:

diff -U 10 -w can4linux-3.2/src/can_i82527funcs.c can4linux-3.3.3/can_i82527funcs.c | dos2unix

--- can4linux-3.2/src/can_i82527funcs.c	2004-05-14 12:02:54.000000000 +0200
+++ can4linux-3.3.3/can_i82527funcs.c	2004-12-14 10:35:20.000000000 +0100
@@ -1,32 +1,40 @@
 /*
  * can_i82527funcs.c - i82527 related code
  *
  * Original version Written by Arnaud Westenberg email:arnaud@wanadoo.nl
  * This software is released under the GPL-License.
  *
+ * Modified and extended to support the esd elctronic system
+ * design gmbh PC/104-CAN Card (www.esd-electronics.com)
+ * by Jean-Jacques Tchouto (tchouto@fokus.fraunhofer.de), 2003
+ *
  * Major Refactoring and Integration into can4linux version 3.1 by
  * Henrik W Maier of FOCUS Software Engineering Pty Ltd <www.focus-sw.com>
  *
  * Modified and extended to support the SBS PC7compact DINrail mounted
  * industry PC by FOCUS Software Engineering Pty Ltd <www.focus-sw.com>
  *
- * Modified and extended to support the esd elctronic system
- * design gmbh PC/104-CAN Card (www.esd-electronics.com)
- * by Jean-Jacques Tchouto (tchouto@fokus.fraunhofer.de), 2003
+ * Updated for 2.6 kernel by Henrik W Maier of FOCUS Software
+ * Engineering Pty Ltd <www.focus-sw.com>.
+ * Bugfix in CAN_SendMessage, added wake_up_interruptible for irq_write_handler
+ * Disabled redundant status change interrupt for RX/TX to decrease int
+ * load on CPU.
+ * Fixed issue of a second iteration in the ISR when sending because the
+ * send interrupt didn't sometimes get acknowledged.
  *
- * $Id: can_i82527funcs.c,v 1.3 2004/05/14 10:02:54 oe Exp $
+ * $Id: can_i82527funcs.c,v 1.4 2004/12/14 09:35:20 oe Exp $
  *
  */
 
 
-#include <can_defs.h>
+#include "can_defs.h"
 #include "can_i82527.h"
 
 
 #if defined (PC104_200)
 inline void CANactivateIRQline(int bd)
 {
     unsigned long canIoPort;
     canIoPort = (unsigned long)Base[bd];
     outb_p(0x86, canIoPort+3);
 }
@@ -216,22 +224,22 @@
            MVAL_SET | TXIE_RES | RXIE_SET | INTPD_RES);
 
     CAN_SetMask(board, AccCode[board], AccMask[board]);
 
     // Clear message object for send
     CANout(board, message1Reg.msgCtrl1Reg,
            RMPD_RES | TXRQ_RES | CPUU_RES | NEWD_RES);
     CANout(board, message1Reg.msgCtrl0Reg,
            MVAL_RES | TXIE_RES | RXIE_RES | INTPD_RES);
 
-    // Clear bus-off, Interrupts on Rx, TX, any Status change and data overrun
-    CANout(board, controlReg, iCTL_IE | iCTL_SIE | iCTL_EIE);
+    // Clear bus-off, Interrupts only for errors, not for status change
+    CANout(board, controlReg, iCTL_IE | iCTL_EIE);
 
     DBGprint(DBG_DATA, ("[%d] CAN_CON 0x%x\n", board, CANin(board, controlReg)));
 
     DBGout();
     return 0;
 }
 
 
 /*
  * Puts chip in bus-off mode
@@ -274,23 +282,28 @@
 int CAN_SendMessage(int board, canmsg_t *tx)
 {
     int i = 0;
     int ext;
     uint8_t id0, id1, id2, id3;
 
     DBGin("i82527_CAN_SendMessage");
 
     DBGin("Wait if there is a transmission in progress");
     // Wait if there is a transmission in progress
-    while ((CANin(board, message1Reg.msgCtrl1Reg) && TXRQ_UNC) == TXRQ_SET) {
+    while ((CANin(board, message1Reg.msgCtrl1Reg) & TXRQ_UNC) == TXRQ_SET) {
  	    #if LINUX_VERSION_CODE >= 131587
-	    if( current->need_resched ) schedule();
+	    # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	    cond_resched();
+	    # else
+	    if( current->need_resched )
+        schedule();
+	    # endif
 	    #else
 	    if( need_resched ) schedule();
 	    #endif
     }
     DBGout();
 
     CANout(board, message1Reg.msgCtrl1Reg,
            RMPD_RES | TXRQ_RES | CPUU_SET | NEWD_SET);
     CANout(board,message1Reg.msgCtrl0Reg,
            MVAL_SET | TXIE_SET | RXIE_RES | INTPD_RES);
@@ -507,32 +520,37 @@
 
     DBGin("i82527_irq_write_handler");
 
     // Enter critical section
     save_flags(flags);
     cli();
 
     if( TxFifo->free[TxFifo->tail] == BUF_EMPTY ) {
         // Nothing more to send, switch off interrupts
         CANout(board, message1Reg.msgCtrl0Reg,
-               (MVAL_RES | TXIE_RES | RXIE_UNC | INTPD_RES));
+               (MVAL_RES | TXIE_RES | RXIE_RES | INTPD_RES));
         TxFifo->status = BUF_EMPTY;
         TxFifo->active = 0;
+        // We had some cases of repeated IRQ, so make sure the INT is acknowledged
+        CANout(board, message1Reg.msgCtrl0Reg,
+               (MVAL_UNC | TXIE_UNC | RXIE_UNC | INTPD_RES));
         /* leave critical section */
         restore_flags(flags);
-
+        // Notify user app
+        wake_up_interruptible(  &CanOutWait[board] );
+        DBGout();
         return;
     }
     CANout(board, message1Reg.msgCtrl1Reg,
                  RMPD_RES | TXRQ_RES | CPUU_SET | NEWD_RES);
     CANout(board, message1Reg.msgCtrl0Reg,
-                 MVAL_SET | TXIE_SET | RXIE_RES | INTPD_UNC);
+                 MVAL_SET | TXIE_SET | RXIE_RES | INTPD_RES);
 
     tx2reg = (TxFifo->data[TxFifo->tail]).length;
 
     ext = (TxFifo->data[TxFifo->tail]).flags & MSG_EXT;
     id = (TxFifo->data[TxFifo->tail]).id;
 
     if ( ext ) {
         CANout(board, message1Reg.messageConfigReg,
                      (tx2reg << 4 ) + ( MCFG_DIR | MCFG_XTD ));
         id0 = (uint8_t)( id << 3 );
@@ -565,20 +583,24 @@
     }
     else {
         CANout(board, message1Reg.msgCtrl1Reg,
                (RMPD_RES | TXRQ_SET | CPUU_RES | NEWD_UNC));
 
     }
 
     TxFifo->free[TxFifo->tail] = BUF_EMPTY; /* now this entry is EMPTY */
     TxFifo->tail = ++(TxFifo->tail) % MAX_BUFSIZE;
 
+    // HM: We had some cases of repeated IRQs, so make sure the INT is acknowledged
+    // I know it's already further up, but doing again fixed the issue
+    CANout(board, message1Reg.msgCtrl0Reg,
+           (MVAL_UNC | TXIE_UNC | RXIE_UNC | INTPD_RES));
     /* leave critical section */
     restore_flags(flags);
 
     DBGout();
 }
 
 
 /*
  * The plain i82527 interrupt
  *
@@ -604,32 +626,41 @@
  *
  *
  * RX Int with to Receive channels:
  * 1)                _____   ___
  *             _____|     |_|   |__
  *                   30    5  20  µs
  *   first ISR normal length,
  *   time between the two ISR -- short
  *   sec. ISR shorter than first, why? it's the same message
  */
+#if LINUX_VERSION_CODE >= 0x020500
+irqreturn_t CAN_Interrupt ( int irq, void *dev_id, struct pt_regs *ptregs )
+#else
 void CAN_Interrupt(int irq, void *dev_id, struct pt_regs *ptregs)
+#endif
 {
     int board = *(int *) dev_id;
     msg_fifo_t *RxFifo = &Rx_Buf[board];
     msg_fifo_t *TxFifo = &Tx_Buf[board];
     uint8_t irqreg;
+    uint8_t lastIrqreg;
 
     // Read the highest pending interrupt request
     irqreg = CANin(board, interruptReg);
+    lastIrqreg = irqreg;
+    
     while ( irqreg ) {
-        // Handle change in status register
-        if ( irqreg == 0x01 ) {
+        switch (irqreg)
+        {
+            case 1: // Status register
+            {
             uint8_t status;
 
             // Read the STATUS reg
             status = CANin(board, statusReg);
             CANout (board, statusReg, 0);
 
             if ( status & iSTAT_RXOK ) {
                 // Intel datasheet: Software must clear this bit in ISR
                 CANout (board, statusReg, status & ~iSTAT_RXOK);
             }
@@ -644,42 +675,66 @@
                 DBGprint(DBG_DATA,("i82527_CAN_Interrupt: Bus warning\n" ));
             }
             if ( status & iSTAT_BOFF ) {
                 long flags;
 
                 // Note: status bit is read-only, don't clear
                 // TODO must be implemented here for chip statistic
                 (RxFifo->data[RxFifo->head]).flags += MSG_BUSOFF;
 
                 // Clear init flag and reenable interrupts
-                flags = CANin(board, controlReg) | ( iCTL_IE | iCTL_SIE | iCTL_EIE );
+                    flags = CANin(board, controlReg) | ( iCTL_IE | iCTL_EIE );
                 flags &= ~iCTL_INI; // Reset init flag
                 CANout(board, controlReg, flags);
 
                 (RxFifo->data[RxFifo->head]).id = 0xFFFFFFFF;
                 RxFifo->status = BUF_OK;
                 RxFifo->head = ++(RxFifo->head) % MAX_BUFSIZE;
                 if(RxFifo->head == RxFifo->tail) {
                     RxFifo->status = BUF_OVERRUN;
                 }
+                    // Notify user app
+                    wake_up_interruptible(  &CanWait[board] );
 	            DBGprint(DBG_DATA,("i82527_CAN_Interrupt: Bus off\n" ));
             }
-        } // end if irqreg == 0x01
-        else {
-            if (irqreg == 0x02)
+             }
+             break;
+             case 2: // Receiption, message object 15
                 i82527_irq_read_msg15_handler(board, RxFifo);
-            else
+             break;
+             case 3: // Write, message object 1
                 i82527_irq_write_handler(board, TxFifo);
-        } //end else if irqreg == 0x01
+             break;
+             case 4: // message object 2
+                 //printk("*********** Unexpected i82527_CAN_Interrupt: irqreq2=0x%X\n", irqreg);
+                 DBGprint(DBG_DATA,("Unexpected i82527_CAN_Interrupt: irqreq=0x%X\n", irqreg));
+                 CANout(board, message2Reg.msgCtrl0Reg, 
+                        (MVAL_RES | TXIE_RES | RXIE_RES | INTPD_RES));
+             break;
+             default: // Unexpected
+                 //printk("*********** Unexpected i82527_CAN_Interrupt: irqreq2=0x%X\n", irqreg);
+                 DBGprint(DBG_DATA,("Unexpected i82527_CAN_Interrupt: irqreq=0x%X\n", irqreg));
+             break;
+        }
         // Get irq status again for next loop iteration
         irqreg = CANin(board, interruptReg);
-    } // while
+        if (irqreg == lastIrqreg)
+        {
+           //printk("i82527_CAN_Interrupt: irqreq repeated!!!! 0x%X\n", irqreg);
+           DBGprint(DBG_DATA,("i82527_CAN_Interrupt: irqreq repeated!!!! 0x%X\n", irqreg));
+        }
+        lastIrqreg =     irqreg;
+    } /* end while (irqreq) */
+    DBGout();
+#if LINUX_VERSION_CODE >= 0x020500
+    return IRQ_RETVAL(IRQ_HANDLED);
+#endif
 }
 
 
 int CAN_ShowStat(int board)
 {
   // TODO: Implement
   return -1;
 }
 
 
@@ -852,21 +907,20 @@
 	/* PCI scan has already remapped the address */
 	can_base[board] = (unsigned char *)Base[board];
 #else
 	can_base[board] = ioremap(Base[board], can_range[board]);
 #endif
 #else 	  /*  LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,11) */
 
 /* both drivers use high memory area */
 #if !defined(CONFIG_PPC) && !defined(CAN4LINUX_PCI)
     if( check_region(Base[board], CAN_RANGE ) ) {
-		     /* MOD_DEC_USE_COUNT; */
 		     DBGout();
 		     return -EBUSY;
     } else {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)
           request_region(Base[board], can_range[board], "CAN-IO" );
 #else
           request_region(Base[board], can_range[board] );
 #endif  /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0) */
     }
 #endif /* !defined  ... */


That's it :-)

I hope it helps.

Cheers,
Oliver




On 05.01.2012 20:45, Oliver Hartkopp wrote:

> Hello Wolfgang(s),
> 
> On 05.01.2012 12:51, Wolfgang Grandegger wrote:
> 
>>>>> diff --git a/drivers/net/can/cc770/cc770_isa.c
>>>>> b/drivers/net/can/cc770/cc770_isa.c
>>>>> index 4be5fe2..48fc128 100644
>>>>> --- a/drivers/net/can/cc770/cc770_isa.c
>>>>> +++ b/drivers/net/can/cc770/cc770_isa.c
>>>>> @@ -148,8 +148,7 @@ static void cc770_isa_port_write_reg_indirect(const
>>>>> struct cc770_priv *priv,
>>>>>   {
>>>>>       unsigned long base = (unsigned long)priv->reg_base;
>>>>>
>>>>> -    outb(reg, base);
>>>>> -    outb(val, base + 1);
>>>>> +    outw( reg + ( val<<  8), base);
>>>>
> 
>>>> That modification does fix your problem, right? The others above don't
>>>> help nor harm but we don't know if it's really realted to the same
>>>> problem. I wll dig a bit deeper.
>>>
>>> Exactly. The others above I removed because facing the opposite, even
>>> missing interrupts but then just to avoid other possible side effects
>>> and then assuming that they might be related.
>>
>> OK. My concern: Can we be sure that 16bit accesses are always supported
>> by the hardware? Does a spinlock_irqsave/spinlock_irqrestore around the
>> 8bit accesses already help?
>>
>> About the "HM:" fixes, I did not find any info in the svn log. Maybe
>> Oliver knows why they have been added.
> 
> 
> 
> No, in fact i don't know 8-)
> 
> As you can see from the initial commit msg here:
> 
> http://svn.berlios.de/wsvn/socketcan/branches/ha/candrv/kernel/2.6/drivers/net/can/i82527/?rev=197&peg=197
> 
> "First implementation of i82527 socketcan driver based on parts from
> socketcan sja1000 netdev / ocan hal / can4linux register access.
> Know issues: Currently only receives SFF CAN frames due different
> handling of SFF/EFF and RTR frames in opposite to the SJA1000 controller."
> 
> I took my sja1000 SocketCAN driver and tried to pick the register access
> sniplets for the i82527 from (mostly) can4linux and kicked it until it
> compiled ...
> 
> This register access part is from can4linux which has a long(!) development
> history too, where a special message regarding the ISR can be found, see:
> 
> http://can4linux.svn.sourceforge.net/viewvc/can4linux/trunk/can4linux/i82527funcs.c?revision=36&view=markup
> 
> /*
>  * can_i82527funcs.c - i82527 related code
>  *
>  * Original version Written by Arnaud Westenberg email:arnaud@wanadoo.nl
>  * This software is released under the GPL-License.
>  *
>  * Modified and extended to support the esd elctronic system
>  * design gmbh PC/104-CAN Card (www.esd-electronics.com)
>  * by Jean-Jacques Tchouto (tchouto@fokus.fraunhofer.de), 2003
>  *
>  * Major Refactoring and Integration into can4linux version 3.1 by
>  * Henrik W Maier of FOCUS Software Engineering Pty Ltd <www.focus-sw.com>
>  *
>  * Modified and extended to support the SBS PC7compact DINrail mounted
>  * industry PC by FOCUS Software Engineering Pty Ltd <www.focus-sw.com>
>  *
>  * Updated for 2.6 kernel by Henrik W Maier of FOCUS Software
>  * Engineering Pty Ltd <www.focus-sw.com>.
>  * Bugfix in CAN_SendMessage, added wake_up_interruptible for irq_write_handler
>  * Disabled redundant status change interrupt for RX/TX to decrease int
>  * load on CPU.
>  * Fixed issue of a second iteration in the ISR when sending because the
>  * send interrupt didn't sometimes get acknowledged.
>  *
>  * $Id: i82527funcs.c,v 1.1 2006/04/21 16:26:51 oe Exp $
>  *
>  */
> 
> My original hardware was the Eurotech COM 1274 board for the US DOT VII OBU:
> http://www.eurotech.com/en/download/com-1274
> 
> Obviously the ISR quirk code was added by Henrik W Maier from FOCUS Software:
> 
> http://www.focus-sw.com/can/can4linux.html
> 
> Maybe Henrik or Heinz-Jürgen remember why this ISR handling has been added
> more than seven years ago ... i added both of them in CC.
> 
> I hope the historical src code research helped a bit.
> 
> Indeed i was not aware of that long i82527 history inside the can4linux
> driver. If there's any interest of the register access authors, we should
> add some credits into the cc770 driver.
> 
> Best regards,
> Oliver
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-can" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



  reply	other threads:[~2012-01-05 20:49 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-25  9:43 [PATCH net-next v2 0/4] can: cc770: add support for the Bosch CC770 and Intel AN82527 Wolfgang Grandegger
2011-11-25  9:43 ` [PATCH net-next v2 1/4] can: cc770: add driver core " Wolfgang Grandegger
     [not found]   ` <1322214204-1121-2-git-send-email-wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-11-26 15:11     ` Oliver Hartkopp
2011-11-28 11:28   ` [Socketcan-users] " Marc Kleine-Budde
2011-11-28 13:52     ` Wolfgang Grandegger
     [not found]       ` <4ED3922A.50704-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-11-28 14:01         ` Marc Kleine-Budde
2011-11-28 14:01           ` [Socketcan-users] " David Laight
     [not found]           ` <4ED3941D.3070302-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2011-11-28 14:10             ` Wolfgang Grandegger
     [not found]               ` <4ED3966E.7080609-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-11-28 14:18                 ` Marc Kleine-Budde
     [not found]     ` <4ED3704D.5020903-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2011-11-29  9:20       ` Wolfgang Grandegger
2011-11-25  9:43 ` [PATCH net-next v2 2/4] can: cc770: add legacy ISA bus driver for the CC770 and AN82527 Wolfgang Grandegger
     [not found]   ` <1322214204-1121-3-git-send-email-wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-11-26 14:59     ` Oliver Hartkopp
2011-11-28  8:56       ` Wolfgang Zarre
2011-11-28  9:17         ` Wolfgang Grandegger
2011-11-28 12:03           ` Wolfgang Zarre
     [not found]             ` <4ED37885.8080909-PyqsHJVlJN8AvxtiuMwx3w@public.gmane.org>
2011-11-28 16:06               ` Oliver Hartkopp
     [not found]                 ` <4ED3B198.2040308-fJ+pQTUTwRTk1uMJSBkQmQ@public.gmane.org>
2011-11-29  9:16                   ` Wolfgang Grandegger
     [not found]                     ` <4ED4A2EC.40103-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-12-04 18:47                       ` Wolfgang Zarre
2011-12-04 18:56                         ` Wolfgang Grandegger
     [not found]                           ` <4EDBC25D.50405-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-12-06 21:08                             ` Wolfgang Zarre
     [not found]                               ` <4EDE8435.5080100-PyqsHJVlJN8AvxtiuMwx3w@public.gmane.org>
2011-12-07 13:42                                 ` Wolfgang Grandegger
2011-12-09 10:26                                   ` Wolfgang Grandegger
2011-12-11 18:33                                     ` Wolfgang Zarre
     [not found]                                       ` <4EE4F76E.3000506-PyqsHJVlJN8AvxtiuMwx3w@public.gmane.org>
2011-12-12  9:23                                         ` Wolfgang Grandegger
     [not found]                                           ` <4EE5C824.2050704-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-12-12 11:18                                             ` Wolfgang Zarre
2011-12-12 11:55                                               ` Wolfgang Grandegger
     [not found]                                                 ` <4EE5EBBF.6080007-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-12-21 18:32                                                   ` Wolfgang Zarre
2011-12-22  9:37                                                     ` Wolfgang Grandegger
     [not found]                                                       ` <4EF2FA3F.3010308-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-12-22 13:20                                                         ` Wolfgang Zarre
     [not found]                                                           ` <4EF32E84.1080006-PyqsHJVlJN8AvxtiuMwx3w@public.gmane.org>
2011-12-31  9:39                                                             ` Wolfgang Zarre
2012-01-04 13:10                                                               ` Wolfgang Grandegger
2012-01-05  3:29                                                                 ` Wolfgang Zarre
     [not found]                                                                   ` <4F051927.8010600-PyqsHJVlJN8AvxtiuMwx3w@public.gmane.org>
2012-01-05 11:51                                                                     ` Wolfgang Grandegger
2012-01-05 12:00                                                                       ` David Laight
2012-01-09 21:47                                                                         ` Wolfgang Zarre
2012-01-09 23:11                                                                           ` Marc Kleine-Budde
2012-01-10  9:30                                                                             ` Wolfgang Grandegger
2012-01-10 12:30                                                                               ` Wolfgang Zarre
2012-01-10 14:20                                                                                 ` Wolfgang Grandegger
2012-01-10 14:25                                                                                   ` Wolfgang Grandegger
2012-01-11  9:00                                                                                 ` Wolfgang Zarre
2012-01-11  9:37                                                                                   ` David Laight
2012-01-11 14:37                                                                                     ` Wolfgang Zarre
2012-01-11  9:38                                                                                   ` Marc Kleine-Budde
2012-01-11 14:42                                                                                     ` Wolfgang Zarre
2012-01-11 15:02                                                                                       ` Marc Kleine-Budde
2012-01-10 10:00                                                                           ` David Laight
2012-01-10 12:41                                                                             ` Wolfgang Zarre
2012-01-10 14:43                                                                               ` Wolfgang Grandegger
2012-01-10 14:50                                                                                 ` Oliver Hartkopp
2012-01-10 16:13                                                                                 ` Wolfgang Zarre
2012-01-10 16:20                                                                                   ` Marc Kleine-Budde
2012-01-10 16:23                                                                                   ` Wolfgang Grandegger
2012-01-10 19:02                                                                                     ` Wolfgang Zarre
2012-01-11  9:05                                                                                       ` Wolfgang Zarre
2012-01-11  9:31                                                                                         ` Marc Kleine-Budde
2012-01-10 11:41                                                                           ` Henrik Maier
2012-01-10 11:59                                                                             ` Wolfgang Grandegger
2012-01-10 12:43                                                                               ` Wolfgang Zarre
2012-01-05 19:45                                                                       ` Oliver Hartkopp
2012-01-05 20:48                                                                         ` Oliver Hartkopp [this message]
2011-12-23 11:32                                                       ` peak_pci: device channels chained list issue Grosjean Stephane
2011-12-23 12:11                                                       ` peak_pci: device channels chained list issue (cont.) Grosjean Stephane
2012-01-31 22:12                                                         ` Marc Kleine-Budde
2011-11-28 12:09   ` [PATCH net-next v2 2/4] can: cc770: add legacy ISA bus driver for the CC770 and AN82527 Marc Kleine-Budde
     [not found]     ` <4ED379F3.1070206-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2011-11-28 13:59       ` Wolfgang Grandegger
2011-11-28 14:03         ` David Laight
     [not found]           ` <AE90C24D6B3A694183C094C60CF0A2F6D8AEE9-CgBM+Bx2aUAnGFn1LkZF6NBPR1lH4CV8@public.gmane.org>
2011-11-28 14:09             ` Marc Kleine-Budde
     [not found]               ` <4ED3960F.4040508-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2011-11-28 15:10                 ` Wolfgang Grandegger
2011-11-25  9:43 ` [PATCH net-next v2 3/4] can: cc770: add platform " Wolfgang Grandegger
2011-11-25  9:43 ` [PATCH net-next v2 4/4] powerpc: tqm8548/tqm8xx: add and update CAN device nodes Wolfgang Grandegger

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=4F060CBB.7060003@hartkopp.net \
    --to=socketcan@hartkopp.net \
    --cc=henrik@focus-sw.com \
    --cc=info@essax.com \
    --cc=linux-can@vger.kernel.org \
    --cc=oe@port.de \
    --cc=wg@grandegger.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).