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
next prev parent reply other threads:[~2012-01-05 20:49 UTC|newest]
Thread overview: 79+ 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
2011-11-28 14:01 ` 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
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-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 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 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
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 ` Wolfgang Grandegger
2011-11-25 9:43 ` [PATCH net-next v2 4/4] powerpc: tqm8548/tqm8xx: add and update CAN device nodes Wolfgang Grandegger
2011-11-25 9:43 ` 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 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.