diff options
| -rw-r--r-- | drivers/net/can/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/net/can/sja1000/plx_pci.c | 23 | ||||
| -rw-r--r-- | drivers/net/can/ti_hecc.c | 10 |
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 | ||
| 105 | config CAN_FLEXCAN | 105 | config 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") | ||
| 48 | MODULE_LICENSE("GPL v2"); | 49 | MODULE_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 | ||
| 242 | static 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 | |||
| 236 | static DEFINE_PCI_DEVICE_TABLE(plx_pci_tbl) = { | 250 | static 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 | }; |
| 323 | MODULE_DEVICE_TABLE(pci, plx_pci_tbl); | 344 | MODULE_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); |
