This series will add a driver for Softing PCMCIA CAN card. This core CAN networking code exists for a few years in the socketCAN repository. The updates since the latest socketCAN version: * PCMCIA interfacing changed * seperation between the two drivers via a platform:softing device * added conditional bus-error reporting About the platform_device ... Softing Gmbh has PCMCIA & PCI cards. Both share the same Dual Port RAM (DPRAM) interface. Therefore, the driver is split in 2 stages: [1/2] softing.ko: Generic platform bus device driver It expects a platform:softing device with an IO range that contains the DPRAM, and an IRQ line. [2/2] softing_cs.ko: PCMCIA driver This driver will create a platform:softing device on top of the pcmcia device. The 2 driver are not linked in a way that softing.ko depends on softing_cs.ko or vice versa. The reason for doing so is that the DPRAM interface takes quite some code, and building it directly on the PCMCIA or PCI device was difficult to follow. The present design eliminates the need for exotic sysfs API's since all sysfs attributes know they are attached to a platform_device. Differences since v1 of this series: * whitespace issues * use of time_after() to measure elapsed time. * don't copy data for RTR frames (see commit since v1) * use usleep_range(), not schedule(). * threaded irq * fix iomem access (verify with sparse) * totally 'endian-safe' * drop error frame detection again. It's not right that when bus 1 enables error frames, bus 2 would get error frames too. * drop the Kconfig dependency between softingcs.ko & softing.ko Kurt --
This patch adds a driver for the platform:softing device. This will create (up to) 2 CAN network devices from 1 platform:softing device Signed-off-by: Kurt Van Dijck <kurt.van.dijck@eia.be> --- drivers/net/can/Kconfig | 2 + drivers/net/can/Makefile | 1 + drivers/net/can/softing/Kconfig | 16 + drivers/net/can/softing/Makefile | 5 + drivers/net/can/softing/softing.h | 193 ++++++ drivers/net/can/softing/softing_fw.c | 648 ++++++++++++++++++++ drivers/net/can/softing/softing_main.c | 903 ++++++++++++++++++++++++++++ drivers/net/can/softing/softing_platform.h | 38 ++ 8 files changed, 1806 insertions(+), 0 deletions(-) diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig index d5a9db6..986195e 100644 --- a/drivers/net/can/Kconfig +++ b/drivers/net/can/Kconfig @@ -117,6 +117,8 @@ source "drivers/net/can/sja1000/Kconfig" source "drivers/net/can/usb/Kconfig" +source "drivers/net/can/softing/Kconfig" + config CAN_DEBUG_DEVICES bool "CAN devices debugging messages" depends on CAN diff --git a/drivers/net/can/Makefile b/drivers/net/can/Makefile index 07ca159..53c82a7 100644 --- a/drivers/net/can/Makefile +++ b/drivers/net/can/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_CAN_DEV) += can-dev.o can-dev-y := dev.o obj-y += usb/ +obj-y += softing/ obj-$(CONFIG_CAN_SJA1000) += sja1000/ obj-$(CONFIG_CAN_MSCAN) += mscan/ diff --git a/drivers/net/can/softing/Kconfig b/drivers/net/can/softing/Kconfig new file mode 100644 index 0000000..072f337 --- /dev/null +++ b/drivers/net/can/softing/Kconfig @@ -0,0 +1,16 @@ +config CAN_SOFTING + tristate "Softing Gmbh CAN generic support" + depends on CAN_DEV + ---help--- + Support for CAN cards from Softing Gmbh & some cards + from Vector Gmbh. + Softing Gmbh CAN cards come with 1 or 2 physical busses. + Those cards typically use Dual Port RAM to communicate + with the host CPU. The interface ...
This patch adds the driver that creates a platform:softing device from a pcmcia_device Note: the Kconfig indicates a dependency on the softing.ko driver, but this is purely to make configuration intuitive. This driver will work independent, but no CAN network devices appear until softing.ko is loaded too. Signed-off-by: Kurt Van Dijck <kurt.van.dijck@eia.be> --- drivers/net/can/softing/Kconfig | 13 ++ drivers/net/can/softing/Makefile | 1 + drivers/net/can/softing/softing_cs.c | 361 ++++++++++++++++++++++++++++++++++ 3 files changed, 375 insertions(+), 0 deletions(-) diff --git a/drivers/net/can/softing/Kconfig b/drivers/net/can/softing/Kconfig index 072f337..14ebe14 100644 --- a/drivers/net/can/softing/Kconfig +++ b/drivers/net/can/softing/Kconfig @@ -14,3 +14,16 @@ config CAN_SOFTING controls the 2 busses on the card together. As such, some actions (start/stop/busoff recovery) on 1 bus must bring down the other bus too temporarily. + +config CAN_SOFTING_CS + tristate "Softing CAN pcmcia cards" + depends on PCMCIA + ---help--- + Support for PCMCIA cards from Softing Gmbh & some cards + from Vector Gmbh. + You need firmware for these, which you can get at + http://developer.berlios.de/projects/socketcan/ + This version of the driver is written against + firmware version 4.6 (softing-fw-4.6-binaries.tar.gz) + In order to use the card as CAN device, you need the Softing generic + support too. diff --git a/drivers/net/can/softing/Makefile b/drivers/net/can/softing/Makefile index 7878b7b..5f0f527 100644 --- a/drivers/net/can/softing/Makefile +++ b/drivers/net/can/softing/Makefile @@ -1,5 +1,6 @@ softing-y := softing_main.o softing_fw.o obj-$(CONFIG_CAN_SOFTING) += softing.o +obj-$(CONFIG_CAN_SOFTING_CS) += softing_cs.o ccflags-$(CONFIG_CAN_DEBUG_DEVICES) := -DDEBUG diff --git a/drivers/net/can/softing/softing_cs.c b/drivers/net/can/softing/softing_cs.c new file mode 100644 index ...
