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: 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).