; $URL: http://subversion:8080/svn/gsc/trunk/drivers/LINUX/24DSI/24DSI_Linux_3.x_and_4.x_GSC_DN/doc/release.txt $
; $Rev: 55097 $
; $Date: 2024-08-21 16:05:30 -0500 (Wed, 21 Aug 2024) $

24DSI: Linux Driver Release Notes

Revision History
================

--------------------------------------------------------------------------------

Version 4.18.111.50.0, Released 8/21/2024

driver: Moved the Rx Debug macros.
driver: Corrected error message text.
driver: Added support for HPDI32-COS model boards.
driver: Added support for the SIO4-FASYNC.
driver: Added support for the Tundra TSI381, which is equivalent to the PLX PXI8111.
driver: Updated the Rx Debug support.

utils: Removed "util_" file name prefix from utility sources.

--------------------------------------------------------------------------------

Version 4.17.107.50.0, Released 11/29/2023

driver: Added a DEBUG IOCTL service - enable/disable via RX_DEBUG macro.
driver: Updated for Fedora 38.
driver: Renamed all Auto_Cal content to Autocal for consistency.
driver: Reorganized the device structure's cache substructure.
driver: Updated the make file for improved operation.
driver: Remove Red Hat 8 compiler warning (2.4 kernel).
driver: Corrected log message when excusive open request fails.
driver: White space cleanup.
driver: Fixed an issue where the register id is zero (for testing purposes).
driver: Corrected a comment.
driver: LINTed the sources for the 2.4 kernel builds.

--------------------------------------------------------------------------------

Version 4.16.103.46.0, Released 3/27/2023

driver: Updated to support the 6.x kernel.
driver: Update the clear buffer IOCTL service.
driver: Updated comments for consistency.
driver: Updated for changes after the 5.17.15 kernel.

--------------------------------------------------------------------------------

Version 4.15.101.44.0, Released 1/9/2023

driver: Corrected a bug in the QUERY IOCTL service.

--------------------------------------------------------------------------------

Version 4.14.101.44.0, Released 11/21/2022

driver: Updated comments for consistency.
driver: Updated function names for consistency.
driver: Updated the Initialize and Autocal IOCTL services for consistency.
driver: Removed unintended debug output statements.
driver: Renamed gsc_irq_reset_pci to gsc_irq_cpi_reset for consistency.
driver: Segregated additional PLX specific code.
driver: Updated system message to begin with the driver module name.
driver: Began implementation for MSI support.
driver: Updated some comments for consistency.
driver: White space cleanup.
driver: Updated for changes to Red Hat Enterprise Linux 8.6.
driver: Added the os_irq_t.created field.
driver: Updated os_irq_create, destroy, open and close services.
driver: Removed unused debugging messages.
driver: Began implementing MSI support.
driver: Added macro DEV_IRQ_SHOW to report assigned IRQ assigned to device.

--------------------------------------------------------------------------------

Version 4.13.98.39.2, Released 4/28/2022

Updated make_all script.

--------------------------------------------------------------------------------

Version 4.13.98.39.1, Released 4/25/2022

Updated user manual.

--------------------------------------------------------------------------------

Version 4.13.98.39.0, Released 4/25/2022

driver: Updated comments for consistency.
driver: Updated to Linux kernel 4.12.
driver: Segregated PLX specific code.
driver: Updated the initialization IOCTL service for consistency.
driver: Segregated all PLX specific code to accommodate alternate device implementations.
driver: Updated debugging display output.
driver: LINTed sources.
driver: Added temporary experimental write code in gsc_write.c for performance testing.
driver: The code is partially retained but is not included for compilation.
driver: Removed unused macros.
driver: Updated for the 5.14 kernel.

--------------------------------------------------------------------------------

Version 4.12.94.37.0, Released 10/1/2021

driver: Standardized various IOCTL system log messages.
driver: Standardized processing of the initialization IOCTL service.
driver: Standardized processing of the autocalibration IOCTL service.
driver: Made spelling corrections in version notes.
driver: Changed all printk instances to printf to support porting activities.
driver: Expanded files removed for a clean operation.
driver: Updated to support the 5.9 kernel.
driver: Modified os_common.h so application code compiles under Cygwin.
driver: Reduced the minimum tick sleep from 1 to 0 ticks.

--------------------------------------------------------------------------------

Version 4.11.94.36.0, Released 8/13/2021

driver: Fixed a DMA bug relating to the use of a timeout setting of zero.

--------------------------------------------------------------------------------

Version 4.11.93.36.0, Released 5/19/2021

driver: Corrected endian error message.
driver: Fixed a timeout bug in gsc_write_pio_work_32_bit().
driver: Modified debug specific register access code to enhance usage.
driver: Improved Red Hat Enterprise Linux 8.x detection logic.
driver: Added support under the 4.x kernel for Red Hat Enterprise Linux 8.x.
driver: Added validation checking of the interrupt number in os_irq_open().

--------------------------------------------------------------------------------

Version 4.11.91.32.0, Released 6/8/2020

driver: Removed compiler warnings for Fedora 31.
driver: Updated for porting to Windows.
driver: Corrected some comments.
driver: Updated IRQ code for improved clarity and modularity.
driver: Updated DMA code to support multiple DMA implementations.
driver: Removed I/O debug code.
driver: Fixed a IOCTL bug in which alt->sem wasn't being unlocked.
driver: Increased modularization for porting effort to another OS.
driver: Made DMA code more modular.
driver: Updated the /proc/ code for changes in the 5.6.6 kernel.
driver: Updated memory code for improved clarity and modularity.
driver: Code cleanup in open service.
driver: Fixed open bug applicable to multi-device products.
driver: Made mods to accommodatedate porting to another OS.

--------------------------------------------------------------------------------

Version 4.10.86.28.0, Released 7/15/2019

driver: Added support for the 5.x kernel series.
driver: Added Endianness support.
driver: Updated per OS specific DMA memory allocation interface.
driver: Added DMA support for an IOMMU.
driver: Added error reporting when DMA memory cound not be allocated.
driver: Reduced code included when read and writ are both unsupported.
driver: Added support for Big Endian hosts.
driver: Added error reporting when IRQ cound not be acquired during open requests.
driver: Some minor code reorganization.

--------------------------------------------------------------------------------

Version 4.9.85.27.0, Released 4/25/2019

driver: Xcvr IOCTl service no longer waits for channel ready bit.
driver: Corrected version number.

--------------------------------------------------------------------------------

Version 4.8.82.27.0, Released 4/22/2019

driver: Fixed bug in gsc_dma_perform(): timeouts were being ignored.
driver: Fixed bug in gsc_dma_perform(): the timeout detection logic was incorrect.
driver: Improved register validation.
driver: Subsystem Vendor ID and Subsystem ID can each be ignored if -1 in device table.
driver: #define for GSC_REG_ENCODE_MASK is moved here from gsc_reg.c.
driver: Enhanced error reporting for the process of validating register definitions.
driver: Fixed bug in DMA completion code.
driver: Updated initialization for the write service.
driver: Updated BAR creation logic.

--------------------------------------------------------------------------------

Version 4.8.81.26.1, Released 12/14/2018

driver: Added support for the 24DSI8R, which was done by updating the documentaton.

--------------------------------------------------------------------------------

Version 4.8.81.26.0, Released 11/21/2018

driver: Corrrected the firmware version number at which the ADC RATE OUT feature is available.

--------------------------------------------------------------------------------

Version 4.7.81.26.0, Released 11/5/2018

driver: Modified code so open succeeds even if initialization fails.
driver: Updated per changes to common code.
driver: Updated muti-channel ISR code for new I/O streams structure.
driver: DEV_WAIT_IO_ALL is now required if WAIT is supported along with READ or WRITE
driver: I/O WAIT macros are now defined by the device API and are passed to GSC code in dev_io_t.
driver: Updated Block Mode DMA macro name (_DMA to _BMDMA).
driver: Added I/O, DMA and register access debug code.
driver: Added stream selection field in the "size" argument for the read and writecalls.
driver: Added OS IRQ calls: os_irq_create() and os_irq_destroy()
driver: Renamed field in gsc_irq_t for clarity.
driver: Fixed a bug in which wait list node removal didn't always have the list locked.
driver: Added support for some DMA metrics.
driver: Improved IOCTL argument validation.
driver: Moved a typedef to device specific code.
driver: Udated some utility services: applying a setting, end by reading it back
driver: Updated for support of some drivers under older kernels.
driver: Implemented support for a stream selection field in the I/O bytes argument.
driver: Implemented register access debug code.
driver: Implemented calls: os_irq_create() and os_irq_destroy()
driver: Field in gsc_irq_t renamed for clarity.
driver: Changed macro name for clarity.
driver: Updated to accomodate Fedora 27.

--------------------------------------------------------------------------------

Version 4.6.73.20.1, Released 12/26/2017

Minor documentation mods.

--------------------------------------------------------------------------------

Version 4.6.73.20.0, Released 12/15/2017

driver: Fixed a GPS feature availability bug.

--------------------------------------------------------------------------------

Version 4.5.73.20.1, Released 12/5/2017

--------------------------------------------------------------------------------

Version 4.5.73.20.0, Released 9/28/2017

driver: Bug fix: was ignoring BAR setup return value.
driver: Updated per changes to the OS specific PCI services.
driver: Updated per changes to the low level register interface.
driver: Updated to use the newer common driver sources.
driver: Made updates for DEV_SUPPORTS_XXX macro changes.
driver: Updated GPS detection logic for the PCIe-24DSI6LN.
driver: LINTed the sources.
driver: Updated #include file for consistancy.
driver: Fixed a DMA timeout calculation bug.
driver: Updated to accommodate porting to Windows KMDF.
driver: Updated the driver initialization logic.
driver: Updated IOCTL init and reset code.
driver: Added support to exclude the WAIT feature.
driver: Updated macros to include/exclude IRQ support.
driver: Fixed bug in init code where last PCI device is one of ours.
driver: Updated the low level register interface.

--------------------------------------------------------------------------------

Version 4.4.68.18.0, Released 12/5/2016

driver: The BAR code has been updated to include the data under a single structure.
driver: The register definitions have been updated.
driver: White space cleanup.
driver: Modified to allow multiple apps to simultaneously access a single device.
driver: Correct access to BAR0 and BAR1 (is RO, was RW).
driver: Added an infinite I/O timeout option.
driver: Corrected the IOCTL code for the register write and mod services.
driver: Improved support for being signaled (i.e. being told to quit).
driver: Added special case for register I/O where register id value is 0.
driver: Added support for inifinite I/O timeout.
driver: Improved response to being signalled (i.e. being told to abort).
driver: An event wait timeout value of zero now means do not timeout.
driver: Fixed an I/O bug.
driver: Updated the version number macros.
driver: Updated the format and encoding of register macros.
driver: Added special case handling for reads of register id value 0.
driver: Added support for reporting metrics information during driver installation.
driver: Removed use of function check_mem_region() in 4.x kernels.
driver: Implemented support for the 4.x kernels.
driver: Added checks on some pointers before using them.
driver: Added safety check in EVENT_RESUME_IRQ().

--------------------------------------------------------------------------------

Version 4.3.65.13.0, Released 3/18/2016

driver: Fixed a bug associated with very small DMA transfers.

--------------------------------------------------------------------------------

Version 4.2.65.13.0, Released 3/18/2016

driver: More updates per changes to common code.
driver: Fixed DMA bug.
driver: Moved some BAR functionality to the OS specific code.
driver: I/O now passes around an os_mem_t structure instead of a buffer pointer.
driver: Copying to and from user space is now done with more use specific routines.
driver: Made more ISR functionality subject to the GSC_IRQ_ISR_FLAG_DETECT_ONLY flag.
driver: Dropped I/O register access services.
driver: Performed some LINTing.
driver: Simplified error messages.
driver: Fixed ul2hex().
driver: The macro S32_MAX is defined only if not already done so.
driver: Removed unused macro (OS_CAST_VOIDP_TO_U32).
driver: Moved some BAR functionality here from more common code.
driver: Renamed os_event_cleanup() to os_event_destroy().
driver: Simplified use of os_mem_t structures and content.
driver: Dropped I/O register access services.
driver: Simplified error messages.
driver: Removed the use of __DATE__ and __TIME__.
savedata: added -pio, -dma and -dmdma command line arguments.

--------------------------------------------------------------------------------

Version 4.1.61.9.0, Released 9/25/2015

driver: Added support for the PCIe-24DSI32.
driver: Added the utility service ul2hex().
driver: Changed register offsets to u16 from unsigned long.
driver: Changed printk's to printf's.
driver: Removed an RTX compiler warning in gsc_poll_u32.
driver: Made PCI registers accessible from inside an ISR.
id: Added support for the PCIe-24DSI32.

--------------------------------------------------------------------------------

Version 4.0.60.8.0, Released 9/15/2015

driver: Internal improvements.
rxrate: Renamed one or more variables.
rxrate: Added an I/O Mode command line argument.

--------------------------------------------------------------------------------

Version 4.0.59.7.0, Released 7/31/2015

driver: Updated to use the newer common driver sources.
driver: Removed GNU notice from non-Linux specific files.
driver: Removed Linux specific content from non-Linux specific source files.
driver: Now using a spinlock rather than enabling and disabling interrupts.
driver: Updated gsc_irq_open() and gsc_irq_close().
driver: Updated gsc_dma_open() and gsc_dma_close().
docsrc: Updated per changes to the device node name, which is now /dev/<device>.X.
LINTed all source files.
White space cleanup.

--------------------------------------------------------------------------------

Version 3.18.57.0, Released 11/26/2014

Driver: Added support for the PCIE-24DSI6LN.
Driver: Now using the globally common file gsc_common.h.
Driver: Removed dead code (i.e. excluded by #if 0).
Driver: Removed additional compiler warnings.
Driver: Additional LINTing.

--------------------------------------------------------------------------------

Version 3.17.52.0, Released 2/26/2014

Driver: Updated the set of #includes in the driver interface file.
Additional LINTing.

--------------------------------------------------------------------------------

Version 3.16.51.0, Released 1/8/2014

Driver: Modified the conditional definition of flags used by kmalloc().
Driver: Updated /proc file support for the 3.10 kernel changes.
Driver: Additional porting for the 2.2 kernel.

--------------------------------------------------------------------------------

Version 3.16.49.0, Released 11/13/2013

Driver: Fixed the feature detection logic for the External Trigger feature.
Driver: Added support for Abort Interrupt processing on 9080 based devices.
Driver: Enhanced DMA error handling for Abort Interrupts.

--------------------------------------------------------------------------------

Version 3.15.48.0, Released 11/5/2013

driver: The IOCTL command code is now treated as an integer.
id: Corrected the voltage range determination logic.
LINTed all source code.

--------------------------------------------------------------------------------

Version 3.14.45.0, Released 7/16/2013

Driver: Fixed a bug in the write() routine.
Driver: Freeing the device interrupt is now conditioned upon it being acquired.
Driver: Corrected definition of register GSC_PLX_9056_PABTADR.
Driver: Added support for the Bus Abort interrupt.
Driver: Updated DMA reads to improve performance.
Driver: Changed how I/O buffers are allocated.
Driver: Changed how s8 ... u32 are included.
Driver: Enhanced the IOCTL service code to accommodate unsupported services.
Driver: Updated the BAR mapping failure messages.
Driver: Added s8 ... u32 definitions for application use.
Driver: Updated gsc_dma_destroy() - now zero fills memory when done.
Driver: Updated gsc_irq_destroy() - does cleanup when done.
sw_sync: Corrected the text of an output message.

--------------------------------------------------------------------------------

Version 3.14.39.0, Released 8/21/2012

Driver: Correct IOCTL services that access BCTRL - they disable interrupt
Driver: Modified the Init service; wait for irq, then waits for bit to clear
Driver: Added the IOCTL service DSI_IOCTL_CHANNELS_READY.
Driver: Updated the IOCTL service DSI_IOCTL_EXT_CLK_SRC.
Driver: Updated the IOCTL service DSI_IOCTL_CHANNEL_ORDER.
2bsync: Removed from release.
mbsync: Added to release.
Added a "verbose" argument to the utility services.

--------------------------------------------------------------------------------

Version 3.13.39.0, Released 7/20/2012

Driver: Corrected timeout error with jiffies rollover.

--------------------------------------------------------------------------------

Version 3.12.39.0, Released 7/13/2012

Driver: Updated for the 3.x kernel.
Driver: Added support for devices that need additional setup after a DMA channel has been selected.
Driver: Made the IOCTL buffer larger - 512 bytes.
Updated the parameter list to gsc_id_driver().

--------------------------------------------------------------------------------

Version 3.11.36.0, Released 3/20/2012

driver: Corrected the value option for the Threshold Flag Cable service.
driver: Corrected problems with feature support calculations.
sbtest: Updated the register read test.

--------------------------------------------------------------------------------

Version 3.10.36.0, Released 2/16/2012

driver: Additional porting for support of other devices.
driver: Removed compile warnings from the copy_from_user_ret macro.
id: White space cleanup.
id: Updated the register output data.
Updated makefiles for consistency.
Updated the utils interface for consistency.
Added support for the PCIE104-24DSI12.

--------------------------------------------------------------------------------

Version 3.9.34.0, Released 12/22/2011

Driver: BAR0 and BAR2 are now the only BAR regions used.
Driver: Include all common source, though not all are used.
Driver: Fixed bugs in the Nrate services.
sbtest: Updated and fixed a few tests.
Split the utility code into two libraries: common and device specific.

--------------------------------------------------------------------------------

Version 3.8.32.0, Released 11/14/2011

Driver: Added GSC_IRQ_NOT_USED macro to hide interrupt servicing.
id: Corrected output spelling.
sw_sync: Corrected output spelling.

--------------------------------------------------------------------------------

Version 3.8.29.0, Released 10/13/2011

Driver: Modified driver start script to correct messages under Ubuntu.
Driver: Updated the set of IOCTL services.
Driver: Updated sources per changes in the set of supported IOCTL services.
Driver: Updated various Autocal related strings and macros for consistency.
Driver: Implemented support for the common PIO I/O routines.
Driver: Fixed a bug in the GSC_INTCSR_MAILBOX_INT_ACTIVE macro.
Driver: Removed a compiler warning under Fedora 15.
Driver: Overhauled IOCTL based local interrupt implementation.
Driver: Implemented support for the common PIO I/O routines.
Driver: Corrected I/O timeout handling.
Driver: Improved non-blocking I/O handling.
Driver: IOCTL services which timeout now return ETIMEOUT rather than EIO.
Driver: Changed use of DEV_SUPPORTS_READ macro.
Driver: Changed use of DEV_SUPPORTS_WRITE macro.
Driver: Changed use of DEV_IO_AUTO_START macro.
Driver: Eliminated the global dev_check_id() routine.
sbtest: Removed compile warnings under Fedora 15.
id: Updated the regiter data output code.

--------------------------------------------------------------------------------

Version 3.7.16.0, Released 7/4/2010

Driver: IOCTL services which timeout now return ETIMEDOUT rather than EIO.
Driver: Numerous updates per changes to the common code base. See main.h.
Driver: added explicit local interrupt support.
Driver: updated set of interrupt related IOCTL services.
Driver: added WAIT services.
sbtest: made significant source file layour changes.
sbtest: updated various tests to improve testing.
sbtest: made sources more modular.

--------------------------------------------------------------------------------

Version 3.6.13.0, Released 12/28/2009

Driver: Removed the color code from the driver start script.
Driver: Made various read support services use the same argument data types.
Driver: Updated to use the current GSC common files.

--------------------------------------------------------------------------------

Version 3.5.8.0, Released 6/23/2009

Driver mod: Any FW interrupt is now cleared during startup.

--------------------------------------------------------------------------------

Version 3.4.7.0, Released 5/28/2009

Driver mod: Allotted more time for the autocal and init IOCTL services.
Driver mod: Added dev_check_id().
sbtest bug fix: Ain Buf Overflow disables input before doing clear test.

--------------------------------------------------------------------------------

Version 3.3.5.0, Released 4/22/2009

Driver bug fix: Fixed the DSI_IOCTL_CH_GRP_1/2/3_SRC ioctl services.
Driver mod: init and autocal ioctl's more robust, emit messages if fail
fsamp bug fix: Fixed a bug in parsing the "index" command line argument.
sbtest bug fix: Fixed some tests for the 24DSI32 devices.
utils mods: various bug fixes, register list output mod

--------------------------------------------------------------------------------

Version 3.2.5.0, Released 4/17/2009

Corrected the driver and release version numbers.

--------------------------------------------------------------------------------

Version 3.2.4.0, Released 4/16/2009

Added support for some new device types (gsc_main.h).
Modified some PLX register names for consistency.
Fixed a DMA bug: the first DMA returned incorrect data
Added more modules to the utils directory and updated dsi_config_board().

--------------------------------------------------------------------------------

Version 3.1.2.0, Released 2/27/2009

Added support for the 24DSI6LN (new device code, IOCTL services, new query options).

--------------------------------------------------------------------------------

Version 3.0.1.0, Released 12/11/2008

This driver replaces all previous drivers for the various individual 24DSI model
	devices.

--------------------------------------------------------------------------------
