EMS CPC-PCI fix correcting poorly undocumented PITA2 IRQ behavior.
This workaround compiles only for 2.6.x kernels now and correct
fix compatible with 2.4 requires driver wide changes.
That is why CPC-PCI is not enabled by default.
CPC-PCI second chip IRQ corrected. Message timestamp code added.
The timestamp code has some time overhead. If it is problem,
it can be disabled in the main.h file.
Some problems fixup in RTR read mode in read system-call.
This mode is there for compatibility reasons with old driver
version and should be moved to its own IOCTL.
ppisa [Thu, 24 Jun 2004 13:10:44 +0000 (13:10 +0000)]
Correction of spinlock acquire order.
BUGFIX of possible deadlock on real SMP systems in the
canqueue functions. Significantly faster implementation
of canque_edge_decref() implemented for systems
defining CAN_HAVE_ARCH_CMPXCHG.
ppisa [Thu, 17 Jun 2004 17:28:24 +0000 (17:28 +0000)]
Changed filling of the chip specific operations.
This enables simpler fine tuning for specific boards
which needs modified functions.
ENS CPC-PCI requires special interrupt handling for example.
ppisa [Sun, 6 Jun 2004 10:17:11 +0000 (10:17 +0000)]
Changed data size from byte to unsigned for write_register indirect call
This is required for the support of the cards connected to the wider
bus architecture. This should not have negative impact, because
char has been propagated to int by C call convention anyway.
The global inline canobj_write_reg function has been left intact
(byte only), because it could better optimize for static call case.
Added support for Unicontrols PCAN cards series and baudrate setting.
PCAN support has been tested on PCAN104 card for Linux only
and Linux/RT-Linux driver compilation mode. There are many
unimplemented features still.
ppisa [Thu, 18 Mar 2004 02:26:42 +0000 (02:26 +0000)]
Corrected typo in Kconfig (OC_LINCAN_CARD_bfad -> OC_LINCAN_CARD_bfadcan)
and leaved out LinCAN sources "can_quertl.c" and "can_devrtl.c"
from standard Linux compilation mode without RT-Linux support.
ppisa [Wed, 3 Mar 2004 00:37:25 +0000 (00:37 +0000)]
Added individual Kconfig for CAN and ORTE components.
Work is based on the proposal and initial version done by Pierre.
The option names has been preserved from the previous Kconfig version.
This means, that compilation should work correctly with actual Kconfig
and with new one after upper level Kconfig changes.
IRQ manipulation changed to spin-locks for rest of boards
to support better RT-Linux.
ppisa [Sat, 21 Feb 2004 21:23:47 +0000 (21:23 +0000)]
Change to CAN_MSG_VERSION_2 and elimination of linux/*.h headers from user space apps.
Layout of canmsg_t changed to CAN_MSG_VERSION_2, which is compatible
with PORT GmbH <http://www.port.de/> can4linux-3.1 implementation.
The driver and utilities can be compiled with old version,
if definition of CAN_MSG_VERSION_2 is commented out in
lincan/include/canmsg.h and canvca/libvca/canmsg.h headers.
The change from __u8 .. __u32 types to standard compliant u_int8_t .. u_int32_t
types has been required to eliminate linux/*.h files. This can make
problems to ancient Linux distributions and some workaround could
be necessary.
ppisa [Fri, 20 Feb 2004 03:48:58 +0000 (03:48 +0000)]
OMK makefiles updated to support OCERA Qconf tool.
The new rule (default-config) added to generate
"config.omk-default" file. This file can be used as is
or can be edited and saved into "config.omk" file.
If "config.omk" exists, it is preferred over "config.omk-default"
file.
ppisa [Tue, 17 Feb 2004 23:37:21 +0000 (23:37 +0000)]
Small changes to fix GCC-2.95.3 compilation and strict headers separation.
The GCC option -nostdinc is used to ensure that default user-space includes
are not mistakenly read by RT-Linux or Linux kernel targets compilation.
The standard headers as "string.h" are allowed by addition of
$(LINUX_DIR)/include/linux path.
ppisa [Fri, 23 Jan 2004 04:18:30 +0000 (04:18 +0000)]
Added missing indication CAN_ENDSF_MEM_RTL for RTL pool malloc.
This fixes serious bug in RTL LinCAN mode.
Some more small updates added.
The call canque_notify_bothends(edge,CANQUEUE_NOTIFY_NOUSR)
invoked without locks hold now.
ppisa [Fri, 23 Jan 2004 04:10:51 +0000 (04:10 +0000)]
Added missing indication CAN_ENDSF_MEM_RTL for RTL pool malloc.
This fixes serious bug in RTL LinCAN mode.
Some more small updates added.
The call canque_notify_bothends(edge,CANQUEUE_NOTIFY_NOUSR)
invoked without locks hold now.
ppisa [Sun, 18 Jan 2004 22:40:32 +0000 (22:40 +0000)]
Rearranged setup to better support cards with irq count differing from chip count.
Checked compilation with 2.2.19 kernel. Functionality with 2.2.x not checked.
ppisa [Sun, 4 Jan 2004 15:53:14 +0000 (15:53 +0000)]
Added RT-Linux version of sendburst and readburst utilities.
It worked on the first try with previously committed LinCAN RTL changes :-).
Corrected one forgotten line in ioctl_rtl.c => filters work from RT-linux
same way as from Linux user-space applications.
ppisa [Sun, 4 Jan 2004 00:09:32 +0000 (00:09 +0000)]
Added full RT-Linux POSIX interface to LinCAN driver, needs preparation of RT tests.
Linux-only and RT-Linux chip thread based version passed Linux users-pace
tests on PCM3680 and PiKRON ISA cards.
Fundamental design flaws found in rtl_posixio.c concerning concurrent open
and/or close processing. There is even bug if open fails reaction.
The fiels private_data should be added to structure rtl_file.
ppisa [Mon, 29 Dec 2003 01:42:15 +0000 (01:42 +0000)]
Main OMK conversion step for CAN components. Recent MAKE program is required !!!
The updated and new CAN components are committed into OCERA CVS now.
The integration is not fully finished yet.
New OMK make-system build all object code out of sources directory
(in the OCERA top-level "build" directory).
Compiled libraries, headers, programs and modules are stored into
OCERA top-level directory "compiled".
Please: excuse probable problems caused by massive changes.
Critique and constructive suggestions are welcome.
ppisa [Tue, 18 Nov 2003 13:47:17 +0000 (13:47 +0000)]
Edge and ends structures equipped with single purpose outlist.
This additional list enlarges structures about 8 bytes, but
it is big help for asynchronous dispose of the ends.
This breaks last spinlock_irqsave holding loops and simplifies
edge handling logic.
ppisa [Wed, 5 Nov 2003 02:44:22 +0000 (02:44 +0000)]
Header-files cleanup and CAN queue edges and ends locking reimplemented.
The code has been updated and tested with 2.6.0-test9 as well.
Default asynchronous close does not wait for transmission of the
messages left in the Tx FIFOs. ENDS dispose is delayed in such case.
Virtual chip driver can model bus latency if nonzero baudrate is selected.
ppisa [Sun, 26 Oct 2003 17:46:22 +0000 (17:46 +0000)]
Added support for local message processing and some cleanups.
The local messages processing feature suggested by Unicontrols.
Driver can be directed by "processlocal" parameter to
distribute sent messages back to the local clients.
Values 0 .. disabled, 1 .. can be enabled by CANQUE_FILT IOCTL,
2 .. enabled by default, but can be specified on per queue as well.
Update of Makefiles to support "Standalone" compilation.
If file "lincan/Standalone.mk" is found, the driver does not
require OCERA framework. The compile for 2.2.19, 2.4.19,
2.6.0-t4 and OCERA target tested.
First integration step:
Included in linux kernel tree hrt, gensched and rtlinux patches.
Included in rtlinux tree dynmem,psignals,ptimers,ptrace,pmqueue,pbarriers
and rtlcbs patches
Many fixes to the linux kernel build process.
Many fixes to the rtlinux module build process.
Even more fixes to the makefiles and tree structure of the components tree.
This is the first step on integration path, please, report standing problems.