/******************************************************************************
 *  MODULE:           FPGA PROTOCOL DRIVER
 ******************************************************************************
 *
 * This source code is owned by Raritan Computer, Inc. and is confidential
 * proprietary information distributed solely pursuant to a confidentiality
 * agreement or other confidentiality obligation.  It is intended for
 * informational purposes only and is distributed "as is" with no support
 * and no warranty of any kind.
 *
 * Copyright @ 2005-2006 Raritan Computer, Inc. All rights reserved.
 * Reproduction of any element without the prior written consent of
 * Raritan Computer, Inc. is expressly forbidden.
 *
 *****************************************************************************/

Building driver and applications:
=================================

To compile correctly, please do the following steps:

1. This first step is optional.  It is currently setup to compile for KX2.0
   and it is expected that Linux kernel 2.6 is used on the platform.

   To select the for a different configuration

   a. CLIPR board with PCI configuration running on kernel 2.4

       linux> make clipr-2.4

   b. KX2.0 board/KIM module running on kernel 2.6

       linux> make kim-2.6

2. Set KERNELDIR environment to point to the location of the Linux kernel.
   Make sure that pp-wrapper-* is in the PATH environment.

3. Create the file dependencies

       linux> make depend

4. Create drivers/fpd.ko [2.6] (or drivers/bin/fpd.o [2.4]) and applications

       linux> make


Driver Release Notes:
=====================

Version 0.12.0 (08-29-2006)
- Implemented FPD_POLL_LINE_STATUS ioctl
- Modified FPD_event_t structure. Removed bgnd_link_if.rx_priority and added
  an event_mask parameter

Version 0.11.0 (08-26-2006)
- do not use u8/u16/u32 in user space - use iso types (u_intXX_t)
- add buf_const as alternative to buf in FPD_data_t

Version 0.10.0 (08-24-2006)
- Added FPD_RESET_LINK_INTERFACE ioctl
- Added FPD_WRITE_VSCHIP_REG ioctl
- Added logic to allow protocol data to be send immediately if possible.
  However, this feature is not turned on yet.

Version 0.9.0 (08-18-2006 to 08-21-2006)
- Added logic for clean Link Interface disconnection. It will now try to wait
  for the driver's Tx buffer and FPGA's Tx buffer to empty out or timeout
  if it cannot. It will also prohibits the user-app to send data anymore
  to the Link IF that is in the middle of disconnection.
- Added tuning parameters for time to wait before disconnecting/switching
  a Link Interface.

Version 0.8.0 (08-09-2006)
- Fixed Background Link IF slow response to Paragon Echo Request
- Cleared Link IF events upon reset of the Link IF

Version 0.7.0 (06-12-2006)
- Fixed Host Buffer data integrity issue where DMA buffers are getting cached
- Set the local video to be switched to Local GUI during init
- Implemented CIM type dependency on EL4544 gain setting
- Fixed bug in fpd_local_video.c when disabling the local video

Version 0.6.0 (06-05-2006)
- Removed #ifdef FPGA_VERSION_LESS_THAN_0_24
- Removed #ifdef ECHO_REQ_FIX
- Removed #ifdef LEGACY_CIM_SUPPORT

Version 0.5.3 (06-02-2006)
- Re-implemented Video Switching according to the new logic based on
  FPGA HLD v1.4
- Implemented Video Switch Register dump
- Fixed bug in pdata_link.c where a Background Link should not have a
  priority buffer in it
- Fixed bug in fpd_driver.c in routine fpd_switch_channel that causes the 
  Link IF to switch to the wrong target port

Version 0.5.2 (04-28-2006)
- Implemented non-cacheable DMA RX Buffer Descriptor Table
- Fixed an issue in fpd_host.c with the function fpd_host_read

Version 0.5.1 (04-26-2006)
- Replace calls to swap32 for optimization

Version 0.5.0 (04-18-2006)
- Implemented Video Switching Interface

Version 0.4.7 (04-14-2006)
- Fixed Linux kernel 2.6 porting issues

Version 0.4.6 (04-06-2006)
- Cleared CIM Update Mode bits upon a Link Interface reset

Version 0.4.5 (04-04-2006)
- Implemented Update Invalid Packet error

Version 0.4.4 (04-03-2006)
- Added support for setting Legacy CIM FW Update mode to either immediately
  or after a successful packet is sent

Version 0.4.3 (03-27-2006)
- Added support for Legacy CIM FW Update

Version 0.4.2 (03-24-2006)
- Added support for Linux kernel 2.6

Version 0.4.1 (03-23-2006)
- Removed code simulating the FPGA CIM Buffer (SIMULATE_FPGA_CIM_BUFFER) 
  but kept fpd_simulate.c for historical purposes
- fpd_simulate.o is not included in compilation anymore

Version 0.4.0 (03-23-2006)
- Removed #ifdef DYNAMIC_ALLOCATION
- Removed #ifdef BG_DYNAMIC_ALLOCATION
- Removed #ifdef HOST_DYNAMIC_ALLOCATION

Version 0.3.3 (03-15-2006)
- Fixed wrong register bit definition for GISR_LINE_STATUS_CHANGE

Version 0.3.2
- Implemented Paragon command Echo Request fix

Version 0.3.1
- Added code for ignoring RX parity

Version 0.3.0
- Turned on LEGACY_CIM_SUPPORT flag
- Created FPD_GET_LINK0_MODE/FPD_SET_LINK0_MODE ioctl

Version 0.2.4
- Implemented latest FPGA register mappings that included a real Line 
  Status Interrupt Registers

Version 0.2.3
- Fixed bug in fpd_run_diagnostics in fpd_driver.c
- Removed FPD_MAX_LINE_IF in fpd_ioctl.h
- Removed #ifdef CHECK_PKT in fpd_pdata.c

Version 0.2.2
- Implemented IOCTLs to set/get TX timeout

Version 0.2.1
- Fixed bug in pdata_check_events wherein it did not distinguish if the data 
  came from the CIM/Priority buffer

Version 0.2.0
- Removed #ifdef HOSTBUFFER_USE_RESERVE_MEM
- Implemented dynamic allocation of structures based on hardware detection 
  of features
- Fixed 64-byte link layer packet issue

Version 0.1.10
- Implemented CIM Buffer code
- Implemented Host Buffer code
- #ifdef HOSTBUFFER_USE_RESERVE_MEM is still in the code (choice between a 
  memory map DMA memory and one single 64K buffer pre-allocated for TX and 
  RX DMA)
- Implemented poll
- Implemented mmap
- Implemented user-apps to test the driver and the FPGA HW
