aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-01-14 18:29:25 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-14 18:29:25 -0500
commit08c93cd99b2f31ba9e85ce28ad8946f285b5dc0f (patch)
tree34aa6a716240b540152f19bc322dcb2b4fd63f67
parent63862b5bef7349dd1137e4c70702c67d77565785 (diff)
parentea79c1c18520c3a60a2fc8193e2fb58710812d4e (diff)
Merge branch 'for-davem' of git://gitorious.org/linux-can/linux-can-next
Marc Kleine-Budde says: ==================== this is a pull request of three patches for net-next/master. Oleg Moroz added support for a new PCI card to the generic SJA1000 PCI driver, Guenter Roeck's patch limits the flexcan driver to little endian arm (and powerpc) and I fixed a sparse warning found by the kbuild robot in the ti_hecc driver. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/can/Kconfig2
-rw-r--r--drivers/net/can/sja1000/plx_pci.c23
-rw-r--r--drivers/net/can/ti_hecc.c10
3 files changed, 27 insertions, 8 deletions
diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
index 9e7d95dae2c7..d447b881bbde 100644
--- a/drivers/net/can/Kconfig
+++ b/drivers/net/can/Kconfig
@@ -104,7 +104,7 @@ config CAN_JANZ_ICAN3
104 104
105config CAN_FLEXCAN 105config CAN_FLEXCAN
106 tristate "Support for Freescale FLEXCAN based chips" 106 tristate "Support for Freescale FLEXCAN based chips"
107 depends on ARM || PPC 107 depends on (ARM && CPU_LITTLE_ENDIAN) || PPC
108 ---help--- 108 ---help---
109 Say Y here if you want to support for Freescale FlexCAN. 109 Say Y here if you want to support for Freescale FlexCAN.
110 110
diff --git a/drivers/net/can/sja1000/plx_pci.c b/drivers/net/can/sja1000/plx_pci.c
index 5df7f9848823..fbb61a0d901f 100644
--- a/drivers/net/can/sja1000/plx_pci.c
+++ b/drivers/net/can/sja1000/plx_pci.c
@@ -44,7 +44,8 @@ MODULE_SUPPORTED_DEVICE("Adlink PCI-7841/cPCI-7841, "
44 "esd CAN-PCI/PMC/266, " 44 "esd CAN-PCI/PMC/266, "
45 "esd CAN-PCIe/2000, " 45 "esd CAN-PCIe/2000, "
46 "Connect Tech Inc. CANpro/104-Plus Opto (CRG001), " 46 "Connect Tech Inc. CANpro/104-Plus Opto (CRG001), "
47 "IXXAT PC-I 04/PCI") 47 "IXXAT PC-I 04/PCI, "
48 "ELCUS CAN-200-PCI")
48MODULE_LICENSE("GPL v2"); 49MODULE_LICENSE("GPL v2");
49 50
50#define PLX_PCI_MAX_CHAN 2 51#define PLX_PCI_MAX_CHAN 2
@@ -122,6 +123,11 @@ struct plx_pci_card {
122#define ESD_PCI_SUB_SYS_ID_PCIE2000 0x0200 123#define ESD_PCI_SUB_SYS_ID_PCIE2000 0x0200
123#define ESD_PCI_SUB_SYS_ID_PCI104200 0x0501 124#define ESD_PCI_SUB_SYS_ID_PCI104200 0x0501
124 125
126#define CAN200PCI_DEVICE_ID 0x9030
127#define CAN200PCI_VENDOR_ID 0x10b5
128#define CAN200PCI_SUB_DEVICE_ID 0x0301
129#define CAN200PCI_SUB_VENDOR_ID 0xe1c5
130
125#define IXXAT_PCI_VENDOR_ID 0x10b5 131#define IXXAT_PCI_VENDOR_ID 0x10b5
126#define IXXAT_PCI_DEVICE_ID 0x9050 132#define IXXAT_PCI_DEVICE_ID 0x9050
127#define IXXAT_PCI_SUB_SYS_ID 0x2540 133#define IXXAT_PCI_SUB_SYS_ID 0x2540
@@ -233,6 +239,14 @@ static struct plx_pci_card_info plx_pci_card_info_cti = {
233 /* based on PLX9030 */ 239 /* based on PLX9030 */
234}; 240};
235 241
242static struct plx_pci_card_info plx_pci_card_info_elcus = {
243 "Eclus CAN-200-PCI", 2,
244 PLX_PCI_CAN_CLOCK, PLX_PCI_OCR, PLX_PCI_CDR,
245 {1, 0x00, 0x00}, { {2, 0x00, 0x80}, {3, 0x00, 0x80} },
246 &plx_pci_reset_common
247 /* based on PLX9030 */
248};
249
236static DEFINE_PCI_DEVICE_TABLE(plx_pci_tbl) = { 250static DEFINE_PCI_DEVICE_TABLE(plx_pci_tbl) = {
237 { 251 {
238 /* Adlink PCI-7841/cPCI-7841 */ 252 /* Adlink PCI-7841/cPCI-7841 */
@@ -318,6 +332,13 @@ static DEFINE_PCI_DEVICE_TABLE(plx_pci_tbl) = {
318 0, 0, 332 0, 0,
319 (kernel_ulong_t)&plx_pci_card_info_cti 333 (kernel_ulong_t)&plx_pci_card_info_cti
320 }, 334 },
335 {
336 /* Elcus CAN-200-PCI */
337 CAN200PCI_VENDOR_ID, CAN200PCI_DEVICE_ID,
338 CAN200PCI_SUB_VENDOR_ID, CAN200PCI_SUB_DEVICE_ID,
339 0, 0,
340 (kernel_ulong_t)&plx_pci_card_info_elcus
341 },
321 { 0,} 342 { 0,}
322}; 343};
323MODULE_DEVICE_TABLE(pci, plx_pci_tbl); 344MODULE_DEVICE_TABLE(pci, plx_pci_tbl);
diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c
index 60d95b44d0f7..3e2bd9d635ab 100644
--- a/drivers/net/can/ti_hecc.c
+++ b/drivers/net/can/ti_hecc.c
@@ -518,10 +518,10 @@ static netdev_tx_t ti_hecc_xmit(struct sk_buff *skb, struct net_device *ndev)
518 data = (cf->can_id & CAN_SFF_MASK) << 18; 518 data = (cf->can_id & CAN_SFF_MASK) << 18;
519 hecc_write_mbx(priv, mbxno, HECC_CANMID, data); 519 hecc_write_mbx(priv, mbxno, HECC_CANMID, data);
520 hecc_write_mbx(priv, mbxno, HECC_CANMDL, 520 hecc_write_mbx(priv, mbxno, HECC_CANMDL,
521 be32_to_cpu(*(u32 *)(cf->data))); 521 be32_to_cpu(*(__be32 *)(cf->data)));
522 if (cf->can_dlc > 4) 522 if (cf->can_dlc > 4)
523 hecc_write_mbx(priv, mbxno, HECC_CANMDH, 523 hecc_write_mbx(priv, mbxno, HECC_CANMDH,
524 be32_to_cpu(*(u32 *)(cf->data + 4))); 524 be32_to_cpu(*(__be32 *)(cf->data + 4)));
525 else 525 else
526 *(u32 *)(cf->data + 4) = 0; 526 *(u32 *)(cf->data + 4) = 0;
527 can_put_echo_skb(skb, ndev, mbxno); 527 can_put_echo_skb(skb, ndev, mbxno);
@@ -569,12 +569,10 @@ static int ti_hecc_rx_pkt(struct ti_hecc_priv *priv, int mbxno)
569 cf->can_id |= CAN_RTR_FLAG; 569 cf->can_id |= CAN_RTR_FLAG;
570 cf->can_dlc = get_can_dlc(data & 0xF); 570 cf->can_dlc = get_can_dlc(data & 0xF);
571 data = hecc_read_mbx(priv, mbxno, HECC_CANMDL); 571 data = hecc_read_mbx(priv, mbxno, HECC_CANMDL);
572 *(u32 *)(cf->data) = cpu_to_be32(data); 572 *(__be32 *)(cf->data) = cpu_to_be32(data);
573 if (cf->can_dlc > 4) { 573 if (cf->can_dlc > 4) {
574 data = hecc_read_mbx(priv, mbxno, HECC_CANMDH); 574 data = hecc_read_mbx(priv, mbxno, HECC_CANMDH);
575 *(u32 *)(cf->data + 4) = cpu_to_be32(data); 575 *(__be32 *)(cf->data + 4) = cpu_to_be32(data);
576 } else {
577 *(u32 *)(cf->data + 4) = 0;
578 } 576 }
579 spin_lock_irqsave(&priv->mbx_lock, flags); 577 spin_lock_irqsave(&priv->mbx_lock, flags);
580 hecc_clear_bit(priv, HECC_CANME, mbx_mask); 578 hecc_clear_bit(priv, HECC_CANME, mbx_mask);