aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can/sja1000
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-02-04 16:42:19 -0500
committerDavid S. Miller <davem@davemloft.net>2012-02-04 16:42:19 -0500
commitd07d4c239bbf428db5581ccd5ca3770bbd15bfbd (patch)
tree969df78fbbc76b9ff1289e154b641a06f983569b /drivers/net/can/sja1000
parentdd48dc34fe7639a8b2e22d8b609672f5f81aa7cb (diff)
parentaabdfd6adb804d0aaba0188ade0f1afe42a52e31 (diff)
Merge branch 'master' of git://gitorious.org/linux-can/linux-can-next
Conflicts: drivers/net/can/usb/ems_usb.c Minor dev_warn --> netdev_warn conversion conflicts.
Diffstat (limited to 'drivers/net/can/sja1000')
-rw-r--r--drivers/net/can/sja1000/Kconfig1
-rw-r--r--drivers/net/can/sja1000/plx_pci.c22
-rw-r--r--drivers/net/can/sja1000/sja1000.c19
3 files changed, 31 insertions, 11 deletions
diff --git a/drivers/net/can/sja1000/Kconfig b/drivers/net/can/sja1000/Kconfig
index 36e9d594069d..b21523ddff3c 100644
--- a/drivers/net/can/sja1000/Kconfig
+++ b/drivers/net/can/sja1000/Kconfig
@@ -71,6 +71,7 @@ config CAN_PLX_PCI
71 - esd CAN-PCIe/2000 71 - esd CAN-PCIe/2000
72 - Marathon CAN-bus-PCI card (http://www.marathon.ru/) 72 - Marathon CAN-bus-PCI card (http://www.marathon.ru/)
73 - TEWS TECHNOLOGIES TPMC810 card (http://www.tews.com/) 73 - TEWS TECHNOLOGIES TPMC810 card (http://www.tews.com/)
74 - IXXAT Automation PC-I 04/PCI card (http://www.ixxat.com/)
74 75
75config CAN_TSCAN1 76config CAN_TSCAN1
76 tristate "TS-CAN1 PC104 boards" 77 tristate "TS-CAN1 PC104 boards"
diff --git a/drivers/net/can/sja1000/plx_pci.c b/drivers/net/can/sja1000/plx_pci.c
index c7f3d4ea1167..a227586ddd52 100644
--- a/drivers/net/can/sja1000/plx_pci.c
+++ b/drivers/net/can/sja1000/plx_pci.c
@@ -43,7 +43,8 @@ MODULE_SUPPORTED_DEVICE("Adlink PCI-7841/cPCI-7841, "
43 "TEWS TECHNOLOGIES TPMC810, " 43 "TEWS TECHNOLOGIES TPMC810, "
44 "esd CAN-PCI/CPCI/PCI104/200, " 44 "esd CAN-PCI/CPCI/PCI104/200, "
45 "esd CAN-PCI/PMC/266, " 45 "esd CAN-PCI/PMC/266, "
46 "esd CAN-PCIe/2000") 46 "esd CAN-PCIe/2000, "
47 "IXXAT PC-I 04/PCI")
47MODULE_LICENSE("GPL v2"); 48MODULE_LICENSE("GPL v2");
48 49
49#define PLX_PCI_MAX_CHAN 2 50#define PLX_PCI_MAX_CHAN 2
@@ -121,6 +122,10 @@ struct plx_pci_card {
121#define ESD_PCI_SUB_SYS_ID_PCIE2000 0x0200 122#define ESD_PCI_SUB_SYS_ID_PCIE2000 0x0200
122#define ESD_PCI_SUB_SYS_ID_PCI104200 0x0501 123#define ESD_PCI_SUB_SYS_ID_PCI104200 0x0501
123 124
125#define IXXAT_PCI_VENDOR_ID 0x10b5
126#define IXXAT_PCI_DEVICE_ID 0x9050
127#define IXXAT_PCI_SUB_SYS_ID 0x2540
128
124#define MARATHON_PCI_DEVICE_ID 0x2715 129#define MARATHON_PCI_DEVICE_ID 0x2715
125 130
126#define TEWS_PCI_VENDOR_ID 0x1498 131#define TEWS_PCI_VENDOR_ID 0x1498
@@ -193,6 +198,14 @@ static struct plx_pci_card_info plx_pci_card_info_esd2000 __devinitdata = {
193 /* based on PEX8311 */ 198 /* based on PEX8311 */
194}; 199};
195 200
201static struct plx_pci_card_info plx_pci_card_info_ixxat __devinitdata = {
202 "IXXAT PC-I 04/PCI", 2,
203 PLX_PCI_CAN_CLOCK, PLX_PCI_OCR, PLX_PCI_CDR,
204 {0, 0x00, 0x00}, { {2, 0x00, 0x80}, {2, 0x200, 0x80} },
205 &plx_pci_reset_common
206 /* based on PLX9050 */
207};
208
196static struct plx_pci_card_info plx_pci_card_info_marathon __devinitdata = { 209static struct plx_pci_card_info plx_pci_card_info_marathon __devinitdata = {
197 "Marathon CAN-bus-PCI", 2, 210 "Marathon CAN-bus-PCI", 2,
198 PLX_PCI_CAN_CLOCK, PLX_PCI_OCR, PLX_PCI_CDR, 211 PLX_PCI_CAN_CLOCK, PLX_PCI_OCR, PLX_PCI_CDR,
@@ -267,6 +280,13 @@ static DEFINE_PCI_DEVICE_TABLE(plx_pci_tbl) = {
267 (kernel_ulong_t)&plx_pci_card_info_esd2000 280 (kernel_ulong_t)&plx_pci_card_info_esd2000
268 }, 281 },
269 { 282 {
283 /* IXXAT PC-I 04/PCI card */
284 IXXAT_PCI_VENDOR_ID, IXXAT_PCI_DEVICE_ID,
285 PCI_ANY_ID, IXXAT_PCI_SUB_SYS_ID,
286 0, 0,
287 (kernel_ulong_t)&plx_pci_card_info_ixxat
288 },
289 {
270 /* Marathon CAN-bus-PCI card */ 290 /* Marathon CAN-bus-PCI card */
271 PCI_VENDOR_ID_PLX, MARATHON_PCI_DEVICE_ID, 291 PCI_VENDOR_ID_PLX, MARATHON_PCI_DEVICE_ID,
272 PCI_ANY_ID, PCI_ANY_ID, 292 PCI_ANY_ID, PCI_ANY_ID,
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
index 04a3f1b756a8..ebbcfcafe29b 100644
--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -128,7 +128,7 @@ static void set_reset_mode(struct net_device *dev)
128 status = priv->read_reg(priv, REG_MOD); 128 status = priv->read_reg(priv, REG_MOD);
129 } 129 }
130 130
131 dev_err(dev->dev.parent, "setting SJA1000 into reset mode failed!\n"); 131 netdev_err(dev, "setting SJA1000 into reset mode failed!\n");
132} 132}
133 133
134static void set_normal_mode(struct net_device *dev) 134static void set_normal_mode(struct net_device *dev)
@@ -156,7 +156,7 @@ static void set_normal_mode(struct net_device *dev)
156 status = priv->read_reg(priv, REG_MOD); 156 status = priv->read_reg(priv, REG_MOD);
157 } 157 }
158 158
159 dev_err(dev->dev.parent, "setting SJA1000 into normal mode failed!\n"); 159 netdev_err(dev, "setting SJA1000 into normal mode failed!\n");
160} 160}
161 161
162static void sja1000_start(struct net_device *dev) 162static void sja1000_start(struct net_device *dev)
@@ -209,8 +209,7 @@ static int sja1000_set_bittiming(struct net_device *dev)
209 if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES) 209 if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
210 btr1 |= 0x80; 210 btr1 |= 0x80;
211 211
212 dev_info(dev->dev.parent, 212 netdev_info(dev, "setting BTR0=0x%02x BTR1=0x%02x\n", btr0, btr1);
213 "setting BTR0=0x%02x BTR1=0x%02x\n", btr0, btr1);
214 213
215 priv->write_reg(priv, REG_BTR0, btr0); 214 priv->write_reg(priv, REG_BTR0, btr0);
216 priv->write_reg(priv, REG_BTR1, btr1); 215 priv->write_reg(priv, REG_BTR1, btr1);
@@ -378,7 +377,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)
378 377
379 if (isrc & IRQ_DOI) { 378 if (isrc & IRQ_DOI) {
380 /* data overrun interrupt */ 379 /* data overrun interrupt */
381 dev_dbg(dev->dev.parent, "data overrun interrupt\n"); 380 netdev_dbg(dev, "data overrun interrupt\n");
382 cf->can_id |= CAN_ERR_CRTL; 381 cf->can_id |= CAN_ERR_CRTL;
383 cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW; 382 cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
384 stats->rx_over_errors++; 383 stats->rx_over_errors++;
@@ -388,7 +387,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)
388 387
389 if (isrc & IRQ_EI) { 388 if (isrc & IRQ_EI) {
390 /* error warning interrupt */ 389 /* error warning interrupt */
391 dev_dbg(dev->dev.parent, "error warning interrupt\n"); 390 netdev_dbg(dev, "error warning interrupt\n");
392 391
393 if (status & SR_BS) { 392 if (status & SR_BS) {
394 state = CAN_STATE_BUS_OFF; 393 state = CAN_STATE_BUS_OFF;
@@ -429,7 +428,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)
429 } 428 }
430 if (isrc & IRQ_EPI) { 429 if (isrc & IRQ_EPI) {
431 /* error passive interrupt */ 430 /* error passive interrupt */
432 dev_dbg(dev->dev.parent, "error passive interrupt\n"); 431 netdev_dbg(dev, "error passive interrupt\n");
433 if (status & SR_ES) 432 if (status & SR_ES)
434 state = CAN_STATE_ERROR_PASSIVE; 433 state = CAN_STATE_ERROR_PASSIVE;
435 else 434 else
@@ -437,7 +436,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)
437 } 436 }
438 if (isrc & IRQ_ALI) { 437 if (isrc & IRQ_ALI) {
439 /* arbitration lost interrupt */ 438 /* arbitration lost interrupt */
440 dev_dbg(dev->dev.parent, "arbitration lost interrupt\n"); 439 netdev_dbg(dev, "arbitration lost interrupt\n");
441 alc = priv->read_reg(priv, REG_ALC); 440 alc = priv->read_reg(priv, REG_ALC);
442 priv->can.can_stats.arbitration_lost++; 441 priv->can.can_stats.arbitration_lost++;
443 stats->tx_errors++; 442 stats->tx_errors++;
@@ -495,7 +494,7 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
495 status = priv->read_reg(priv, REG_SR); 494 status = priv->read_reg(priv, REG_SR);
496 495
497 if (isrc & IRQ_WUI) 496 if (isrc & IRQ_WUI)
498 dev_warn(dev->dev.parent, "wakeup interrupt\n"); 497 netdev_warn(dev, "wakeup interrupt\n");
499 498
500 if (isrc & IRQ_TI) { 499 if (isrc & IRQ_TI) {
501 /* transmission complete interrupt */ 500 /* transmission complete interrupt */
@@ -522,7 +521,7 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
522 priv->post_irq(priv); 521 priv->post_irq(priv);
523 522
524 if (n >= SJA1000_MAX_IRQ) 523 if (n >= SJA1000_MAX_IRQ)
525 dev_dbg(dev->dev.parent, "%d messages handled in ISR", n); 524 netdev_dbg(dev, "%d messages handled in ISR", n);
526 525
527 return (n) ? IRQ_HANDLED : IRQ_NONE; 526 return (n) ? IRQ_HANDLED : IRQ_NONE;
528} 527}