; $URL: http://subversion:8080/svn/gsc/trunk/drivers/LINUX/16AIO/16AIO_Linux_4.x.x.x_DN/doc/release.txt $
; $Rev: 56805 $
; $Date: 2026-03-17 10:37:05 -0500 (Tue, 17 Mar 2026) $

16AIO: Linux Driver Release Notes

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

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

Version 6.0.117.52.0, Released 3/17/2026

driver: Major update due to changing all "aio_" prefixes to "gs_16aio_", both lowercase and uppercase instances.
driver: Rearranged some initialization sequence for consistency.
driver: Updated the autocal status IOCTL service for consistency.
driver: Updated some scripts for consistency.
driver: Whitespace cleanup for consistency.
driver: Updated for port to Windows.
driver: Update PLX register comments.
driver: Added comments to gsc_common.h
driver: Spelling correction in comments.
driver: Fixed a read and write bug that showed up with a zero timeout: took ms vs us.
driver: Overhauled VPD implementation.
driver: First part of VPD (Vital Product Data) overhauled.
driver: Expanded SIO4 Vendor ID values to include 1C6E for GSC.
driver: Made /proc/ support code more modular.
driver: LINTed sources.
driver: Added spin-lock notes for Real-Time users.
driver: Added delay notes for Real-Time users.

For the entire released content:

1. The backwards compatibility content has been removed.

2. All "aio_" prefixes have been changed to "gs_16aio_", both lower case and
	upper case. This was done due to conflicts with the POSIX Asynchronous
	I/O calls.

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

Version 5.8.111.50.0, Released 8/12/2024

driver: Updated for Fedora 38.
driver: Updated build scripts for consistency.
driver: LINTed source.
driver: Corrected error message text.
driver: Updated the Rx Debug support.
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: Updated and expanded error reporting.
driver: Corrected a comment.
driver: LINTed the sources for the 2.4 kernel builds.
driver: LINTed sources.
driver: Updated to address Fedora 38 complaints.

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

Version 5.7.104.47.0, Released 6/22/2023

driver: Updated to support the 6.x series kernel.
driver: Updated per changes in spelling of autocalibration related macros and such.
driver: Updated the Initialize IOCTL service for consistency.
driver: Updated the Autocal IOCTL service for consistency.
driver: Updated the Buffer Clear IOCTL services for consistency.
driver: Added RX DEBUG capabilities.
driver: Updated comments for consistency.
driver: Added global driver unloading flag.
driver: Added "unloading" message when unload service is called.
driver: Updated for changes after the 5.17.15 kernel.
driver: Updated to support the 6.x kernel.
driver: Updated some comments for consistency.
driver: White space cleanup.

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

Version 5.6.101.43.0, Released 10/7/2022

driver: Updated for changes to Red Hat Enterprise Linux 8.6.

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

Version 5.6.100.42.0, Released 7/8/2022

driver: Updated comments for consistency.
driver: Updated to support segregation of PLX specific sources.
driver: LINTed sources.
driver: Updated the query options list 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: Segregated all PLX specific code to accommodate alternate device implementations.
driver: Updated debugging display output.
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.
driver: Removed unused macros.
driver: Updated for the 5.14 kernel.

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

Version 5.5.96.38.0, Released 2/15/2022

driver: Updated for porting to Windows.
driver: Standardized various IOCTL system log messages.
driver: Standardized processing of the initialization IOCTL service.
driver: Standardized processing of the autocalibration IOCTL service.
driver: Fixed the digital I/O operation by caching writes.
driver: Updated some comments for consistency.
driver: LINTed source files.
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: Fixed a DMA bug relating to the use of a timeout setting of zero.
driver: Corrected endian error message.
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.
driver: Modified debug specific register access code to enhance usage.

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

Version 5.4.92.35.0, Released 1/8/2021

driver: Fixed a timeout bug in gsc_write_pio_work_32_bit().
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: Removed compiler warnings under Windows.
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: 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().
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-board devices.
driver: Made mods to accommodatedate porting to another OS.

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

Version 5.4.86.28.0, Released 7/16/2019

driver: Added support for the 5.x kernel series.
driver: Added Endianness support.
driver: Updated error status for DMDMA I/O requests.
driver: Added support for Big Endian hosts.
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 error reporting when IRQ cound not be acquired during open requests.
driver: Some minor code reorganization.

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

Version 5.3.85.27.0, Released 5/7/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 5.3.81.26.0, Released 11/6/2018

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: Implemented support for a stream selection field in the I/O bytes argument.
driver: Implemented register access debug code.

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

Version 5.3.79.25.1, Released 7/8/2018

driver: Corrected the driver version number.

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

Version 5.2.77.25.0, Released 7/8/2018

driver: Added OS IRQ calls: os_irq_create() and os_irq_destroy()

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

Version 5.2.76.21.0, Released 4/11/2018

driver: Bug fix: was ignoring BAR setup return value.
driver: Updated per changes to the OS specific PCI services.
driver: Added metrics support.
driver: Device open now succeeds even if initialization fails.
driver: Removed redundant device I/O open code.
driver: Moved a typedef to device specific code.
driver: Updated to accomodate Fedora 27.

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

Version 5.1.68.18.0, Released 11/29/2016

driver: The BAR code has been updated to include the data under a single structure.
driver: The register definitions have been updated.
driver: I/O services now pass around an os_mem_t structure instead of a buffer pointer.
driver: White space cleanup.
driver: Changed the arbitrary wait event callback argument to a void* type.
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: Added special case for register I/O where register id value is 0.
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: 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: Added the utility service ul2hex().
driver: Changed register offsets to u16 from unsigned long.
driver: Changed printk's to printf's.
driver: Made ISR access more OS agnostic.
driver: Made PCI registers accessible from inside an ISR.
driver: Added special case handling for reads of register id value 0.
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().
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: Removed the use of __DATE__ and __TIME__.

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

Version 5.0.60.8.0, Released 9/17/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().
driver: Added an initialize post-delay.
docsrc: Updated per changes to the device node name, which is now /dev/<device>.X.
rxrate: Changed the default device index.
rxrate: Updated the displayed output.
LINTed all source files.
White space cleanup.

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

Version 4.6.57.0, Released 10/10/2014

driver: Adjusted the minimum Nrate values to 2 to accommodate cascading.
driver: Adjusted the minimum Nrate values to 2 to accommodate cascading.
driver: Updated for better use of the common make file.
Cleaned up white space.
Updated display output.
Updated per changes to the utility sources.
Added aoburst sample application.

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

Version 4.5.52.0, Released 2/27/2014

Driver: Reduced #include list in driver interface header.
savedata: Fixed a bug in the channel count reporting code.
Additional LINTing.
White space cleanup.

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

Version 4.4.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 4.4.50.0, Released 11/15/2013

Driver: Added one more #include for Abort Interrupt processing.
Driver: Added support for Abort Interrupt processing on 9080 based boards.
Driver: Enhanced DMA error handling for Abort Interrupts.
Driver: The IOCTL command code is now treated as an integer.
Driver: Additional LINTing of the sources.
Driver: Numerous minor changes for LINTing of the code.

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

Version 4.4.45.0, Released 7/3/2013

Driver: Fixed a bug in the write() routine.
Driver: Freeing the board interrupt is now conditioned upon it being acquired.
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.

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

Version 4.4.39.0, Released 12/21/2011

Driver: Updated for the 3.x kernel.
Driver: Corrected a jiffies roll over bug in ioctl.c.
Driver: Added support for boards that need additional setup after a DMA channel has been selected.
Driver: Made the IOCTL buffer larger - 512 bytes.
Driver: Removed compile warnings from the copy_from_user_ret macro.
sbtest: Updated the AI Mode and Scan Size tests.
Updated the utils interface for consistency.
Updated the parameter list to gsc_id_driver().

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

Version 4.3.34.0, Released 12/21/2011

driver: BAR0 and BAR2 are now the only BAR regions used.
driver: Include all common source, though not all are used.
driver: Implemented work around where write 1 to ICR status bits cause an IRQ.
id: Updated the register output.
Split the utility code into two libraries: common and device specific.

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

Version 4.2.30.0, Released 10/30/2011

Driver: Modified driver start script to correct messages under Ubuntu.
Driver: Eliminated global dev_check_id() routine.
Driver: Fixed a bug in the GSC_INTCSR_MAILBOX_INT_ACTIVE macro.
Driver: Removed a compiler warning under Fedora 15.
Driver: Added #defines for D0 through D31.
Driver: Modified gsc_sem_t to prevent hanging on an uninitialized structure.
Driver: Moved dev_check_id() functionality to dev_device_create().
Driver: Added support for deprication of file_ops.ioctl.
Driver: Started PLX EEPROM access support.
Driver: Modified so BAR2 can now be memory or I/O mapped.
Driver: Corrected the _1M macro.
id: Corrected output spelling.
signals: Corrected output spelling.
sbtest: Removed compiler warnings for Fedora 15.
sbtest: Corrected the AI_SCAN_CLK_SRC test.
Modified makefiles to correct messages under Ubuntu.

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

Version 4.1.22.0, Released 3/8/2011

Added the laout sample application.

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

Version 4.1.21.0, Released 1/7/2011

Driver: Removed compiler warning in Fedora 12: reduced module_init stack usage.
Driver: Removed remove_proc_entry() call from proc_start - fix for Fedora 14.
Driver: Fixed a bug in gsc_ioctl_init().
Driver: Numerous updates per changes to the common code base. See main.h.
Driver: Updated the set of IOCTL services.
Driver: Implemented support for the common PIO I/O routines.
Driver: Made initialize more robust.
sbtest: Removed a few compiler warnings and updated numerous tests.
Updated numerous sources per changes in the set of supported IOCTL services.
Updated various Auto Cal related strings and macros for consistency.

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

Version 4.0.13.0, Released 1/18/2009

Driver: Overhauled driver.
Added several sample applications.

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

Version 3.01.1, Released 6/24/2008

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

Version 3.01.0, Released 4/23/2008

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

Version 3.00.1, Released 2/20/2008

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

Version 2.08.0, Released 2/11/2008

Expanded 64-bit support.

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

Version 2.07.0, Released 9/5/2006

Added 64-bit kernel support.

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

Version 2.06.0, Released 1/26/2006

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

Version 2.05.1, Released 12/29/2005

Documentation update.
Added the irq and rxaii sample applications.

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

Version 2.05.0, Released 7/20/2005

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

Version 2.04.0, Released 1/25/2005

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

Version 2.03.0, Released 1/12/2005

Driver: Ported the driver to the 2.6 kernel.
Reorganized the directory structure

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

Version 2.02.1, Released 12/2/2003

Updated the code samples. Added a second sample application.

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

Version 2.02.0, Released 2/10/2003

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

Version 2.01.0, Released 12/17/2002

Driver: DMA support now implemented, plus various minor updates.

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

Version 2.00.0, Released 12/9/2002

Driver: Major rework for driver version 2.

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

Version 1.00.0, Released 1/29/2002

Initial release.

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