; $URL: http://subversion:8080/svn/gsc/trunk/drivers/LINUX/SIO4%20and%20SIO8/SIO4_Linux_2.x.x_GSC_DN/doc/release.txt $
; $Rev: 56576 $
; $Date: 2025-08-06 09:12:59 -0500 (Wed, 06 Aug 2025) $

SIO4: Linux Driver Release Notes

Revision History

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

Version 3.23.115.51.0, Released 8/6/2025

driver: Receipt of an HDLC Break/Abort no longer initiates an Rx Abort.
driver: Changed the means of pausing and resuming DMA from the external Tx FIFO to the USC TX FIFO.
driver: Converted long delays to sleeps for Real-Time compatibility.
driver: Spelling correction in comments.
driver: Added spin-lock notes for Real-Time users.
driver: Added delay notes for Real-Time users.

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

Version 3.22.114.50.0, Released 4/16/2025

driver: Fixed a read and write bug that showed up with a zero timeout: took ms vs us.

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

Version 3.22.112.50.0, Released 3/24/2025

driver: Fixed a bug in how the user jumper value is composed on some SIO8 boards.
driver: Fixed a bug in how the user jumper value is reported in /proc/sio4.
driver: Expanded the sio4 Vendor ID to include GSC's 1C6E for 9056 SIO4s.
driver: First part of VPD (Vital Product Data) overhauled.
driver: Expanded SIO4 Vendor ID values to include 1C6E for GSC.

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

Version 3.21.111.50.0, Released 5/20/2024

driver: Added model types for the SIO8BX2V and SIO8BX2V-SYNC.
driver: Corrected error message text.

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

Version 3.20.109.50.1, Released 3/22/2024

Added support for creating shared object file versions of the main library files.

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

Version 3.20.109.50.0, Released 3/19/2024

driver: Added support for the Fast Async based SIO4.
driver: Adjust oscillator frequency limits for Fast Async boards (8-80M)
driver: Fixed a bug indetecting the Rx FIFO Full Config bit in the CSR.
driver: Deleted SIO4_FW_TYPE_CONFIG_SYNC and now use SIO4_FW_TYPE_SYNC.
driver: Deleted SIO4_FW_TYPE_CONFIG_Z16C30 and now use SIO4_FW_TYPE_Z16C30.
driver: Added DEV_VERBOSE macro to device.c to enable debug messages when loading the driver.
driver: Deleted the SIO4_XCVR_PROTOCOL_DISABLE transceiver selection as it is unsupported by hardware.
driver: The transceivers are no longer disabled upon open(), close() or startup as this option isn't always supported.
driver: White space cleanup.
driver: Updated some comments.
driver: Added support for the SIO4-FASYNC.
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: 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.

Added the Fast Async Protocol Library.

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

Version 3.19.106.49.0, Released 11/16/2023

driver: Updated for Fedora 38.
driver: Updated to recognized older SIO4BXR boards with unexpected FRR values.
driver: Minor mod to start script.
driver: Updated and expanded error reporting.
driver: LINTed sources.
driver: Updated to address Fedora 38 complaints.

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

Version 3.18.104.47.0, Released 6/15/2023

NOTE: The arguments to the hdlc_open_util() function have been updated. The
	header file was correct. The .c file was wrong. This choice was made so the
	protocol libraries followed the same pattern.

driver: Updated to support the 6.x series kernel.
driver: Updated the FIFO Reset services to clear the overflow and underflow status bits.
driver: Updated some comments 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.

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

Version 3.17.101.44.0, Released 12/13/2022

driver: Added switch statement fall through comments for the compiler.
driver: Updated comments for consistency.
driver: Removed unintended debug output statements.
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.

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

Version 3.16.99.40.0, Released 6/2/2022

driver: Removed compiler warnings under the 5.14 kernel.
driver: Made updated for the 5.9 kernel.
driver: Updated to support segregation of PLX specific sources.
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 macro DEV_IRQ_SHOW to report assigned IRQ assigned to device.
driver: Removed unused macros.
driver:	Updated for the 5.14 kernel.

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

Version 3.15.96.38.0, Released 2/8/2022

driver: Removed SIO4_IOCTL_HDLC_TX_FRAME_INIT from the interface. It has been
driver: replaced by a service for the EXCLUSIVE use of the HDLC Protocol Library.
driver: Improved HDLC Tx Frame code to eliminate ms sleep after the TCB.
driver: Corrected the implementation of the Main LED IOCTL service.
driver: Corrected the implementation of the Channel LED IOCTL service.
driver: Added comments for RCC Software FIFO services.
driver: Updated initialization IOCTL service to reset more features.
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: 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 3.14.94.36.0, Released 8/9/2021

driver: Reorganized read.c and write.c for consistency and clarity.
driver: Updated PIO Threshold logic for clarity.
driver: Renamed an HDLC function for clarity.
driver: Updated DMDMA read and write logic to better handle non-continuous I/O.
driver: Fixed a DMA bug relating to the use of a timeout setting of zero.

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

Version 3.13.93.36.1, Released 7/8/2021

Added support for environment specific compile and link flags via environment variables.
Added async/samples/rxasync and async/samples/txasync.

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

Version 3.13.93.36.0, Released 5/5/2021

driver: Inserted additional error checking in the HDLC code.
driver: Renamed the global function dev_dmdma_xfer to dev_dmdma_tx_xfer.
driver: DMDMA and BMDMA use PIO only if size is < 8 and both thresholds are > 0.
driver: Fixed an HDLC bug: Tx FIFO status was incorrectly reported as empty.
driver: Fixed a bug: DMDMA available count is exact when using frames.
driver: Fixed a bug: Corrected when Single Cycle Disable is used.

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

Version 3.12.93.36.1, Released 3/25/2021

Made modifications outside the driver.

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

Version 3.12.93.36.0, Released 2/26/2021

driver: Rewrote the USC IRQ Enable service to fix a bug when the argument is -1.
driver: Modified debug specific register access code to enhance usage.

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

Version 3.11.93.35.0, Released 2/18/2021

driver: Rewrote and simplified the SIO4_IOCTL_REG_READ_RAW IOCTL service.
driver: Added the SIO4_IOCTL_REG_WRITE_RAW IOCTL service.
driver: Corrected the Pin Source Register bitmap for a couple boards.
driver: Modified read and write code so DMDMA can be used with a timeout of zero.
driver: Corrected endian error message.
driver: Fixed a timeout bug in gsc_write_pio_work_32_bit().
driver: Improved Red Hat Enterprise Linux 8.x detection logic.

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

Version 3.11.93.35.0, Released 2/1/2021

This is an email snapshot release containing C sources only.
The snapshot is timestamped 20210201.1747.

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

Version 3.10.91.34.0, Released 10/12/2020

driver: Removed compiler warnings for Fedora 31.
driver: Updated the WAIT code.
driver: Updated for porting to Windows.
driver: Cleaned up some comments.
driver: Fixed bugs in Tx/Rx FIFO overrun/underrun code.
driver: Continued implementation of support for the HDLC Protocol Library.
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: 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 3.9.87.28.0, Released 7/30/2019

driver: Added support for the 5.x kernel series.
driver: Added Endianness support.
driver: Added support for Big Endian hosts.
driver: Updated per OS specific DMA memory allocation interface.
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: Added support for the 5.x kernel series.
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 3.8.83.27.0, Released 3/24/2019

driver: Corrected and moved #define for GSC_REG_ENCODE_MASK.
driver: Corrected legacy checks for four legacy USC/FPGA specific IOCTL services.
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: Updated BAR creation logic.

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

Version 3.7.82.26.0, Released 3/15/2019

driver: Fixed bug in IOCTL table content.
driver: Fixed bugs in legacy IOCTL services.
driver: Modified to support sending of HDLC frames.
driver: The default DMA Threshold is now one more than the default PIO Threshold.
driver: Fixed bug in DMA completion code.
driver: Updated initialization for the write service.
driver: Implemented support for a stream selection field in the I/O bytes argument.
driver: Implemented register access debug code.

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

Version 3.6.81.25.0, Released 10/18/2018

driver: Increased I/O buffers to 64K bytes.
driver: Moved typedef here from generic code.
driver: Updated IOCTL services that touched the USC TCSR & RCSR so the status bits are not cleared.
driver: Modified code so open succeeds even if initialization fails.
driver: Updated the default PIO threshold values based on throughput testing results.
driver: Updated per changes to common I/O releated code.
driver: Updated IOCTL service: SIO4_IOCTL_USC_RX_CMD
driver: Updated IOCTL service: SIO4_IOCTL_USC_TX_CMD
driver: Updated IOCTL service: SIO4_IOCTL_USC_TX_IDLE_COND
driver: Updated IOCTL service: SIO4_IOCTL_USC_TX_WAIT_UNDERRUN
driver: Updated IOCTL service: SIO4_IOCTL_RCC_SW_FIFO_FLUSH
driver: Updated IOCTL service: SIO4_IOCTL_LOOP_BACK
driver: Updated various IOCTL serves for SIO4A/AR-SYNC support.
driver: Forced DMDMA operations to multiples of 8 bytes.
driver: Fixed bug in IOCTL service: SIO4_IOCTL_RX_FIFO_UNDERRUN
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 3.5.73.20.0, Released 10/31/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 #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 3.4.69.18.0, Released 12/7/2016

driver: Added an infinite I/O timeout option.
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: Added special case handling for reads of register id value 0.
driver: Added support for reporting metrics information during driver installation.

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

Version 3.3.67.17.0, Released 10/6/2016

driver: Correct access to BAR0 and BAR1 (is RO, was RW).
driver: Corrected supported PSTSR bits for the SIO4B-SYNC board.
driver: Fixed a bug dealing with the Firmware Type Register.
driver: Removed use of function check_mem_region() in 4.x kernels.

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

Version 3.2.67.16.0, Released 9/16/2016

driver: Added support for the 4.x kernel series.
driver: Added a "share" argument to the open service.

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

Version 3.1.65.13.0, Released 4/13/2016

driver: Removed the "built" entry from the /proc file.
driver: Updated per changes to API prototypes and return values.
driver: Additional LINTing.
driver: Replaced some time code with calls to OS utility code.
driver: Used API services were possible.
driver: Corrected device index numbering to begin at zero.
driver: Changes the wait event user argument to a void* type.
driver: Added os_data_t to the device and channel structures.
driver: Changes the I/O routines to pass around an os_mem_t structure rather than a buffer pointer.
driver: Updated some tick usage code to account for extremely high tick rates.
driver: Simplified some error messages.
driver: Updated per changes to access PCI registers.
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.

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

Version 3.0.59.7.1, Released 3/11/2016

Fixed bugs in the Protocol Libraries.

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

Version 3.0.59.7.0, Released 9/7/2015

driver: Updated for changes to the newer common driver sources.
driver: Updated the dev_read_startup() service.
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: Updated sources for use by all drivers.
driver: Updated the VPD structure's head field to be an index rather than a pointer.
driver: Updated gsc_irq_open() and gsc_irq_close().
driver: Updated gsc_dma_open() and gsc_dma_close().
driver: Fixed a bug in the DMA usage tracking code.
driver: Updated ABORT interrupt implementation..
driver: Added persistent debug debug statements; commented out though.
driver: Added Local Bus Parity Error interrupt handling.
driver: Migrated from using gsc_common/linux/driver/*.[ch] to using
		gsc_common/driver/*.[ch] and gsc_common/driver/linux/*.[ch].
		The migration involved primarily .c and .h sources, but also a few others.
driver: All previos version data for the older gsc_main.h remains with that file.
driver: Version numbers 47 through 57 in this file have been skipped for
		version number consistency.
driver: Migrated dev_irq_open()/close() to gsc_irq_open()/close().
driver: Made correction to some legacy cable macros.

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

Version 2.8.47.6.1, Released 12.9/2014

Added an Asynchronous Protocol Library.

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

Version 2.8.47.6.0, Released 12/4/2014

driver: Made minor improvement in ISR code.
driver: Updated the make file.
driver: Removed dead code (i.e. excluded by #if 0).
Added an Isochronous Protocol Library.

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

Version 2.7.44.5.0, Released 7/31/2014

driver: Additional LINTing.
driver: More cross-OS porting.
driver: All interrupts are processed before awaiting threads are resumed.

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

Version 2.6.44.5.0, Released 5/17/2014

driver: Additional changes for cross-OS porting.
driver: The _wait_resume criteria is now passed in as field values rather than as a structure or a pointer.
driver: All interrupts are processed before awaiting threads are resumed.

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

Version 2.5.43.4.0, Released 4/16/2014

driver: Updated some feature detection code.
driver: Corrected a FIFO size initialization bug.
driver: Added the SIO4_QUERY_FW_TYPE_CONFIG query option.
driver: Made some feature options channel specific vs board specific.
driver: Fixed a bug in the Initialize IOCTL code.
driver: Additional LINTing.
driver: Cleanup of #includes.
driver: Updated the /proc start code.
driver: Added support for calling external code for a DMA reset.

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

Version 2.4.42.3.1, Released 10/22/2013

Update to non-driver sources.

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

Version 2.4.42.3.0, Released 10/22/2013

Fixed bugs in Protocol Libraries.

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

Version 2.3.42.3.0, Released 10/15/2013

driver: Corrected the user jumper sense for the CPIe4-SIO8BX2.
driver: Cleaned up white space and comments.
driver: Updated the bus width support calculations.
driver: Updated the transceiver support calculations.
driver: Updated the FIFO Size Register and FIFO Count Register support calculation.
driver: Made a correction in the CY22393 oscillator resource reuse code.
driver: The ISR disables Non-USC IRQs if their status bit stays set when cleared.
driver: Unused bits are cleared when writing to the ICR.
driver: The IELR and the IHLR are written to only if they exist.

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

Version 2.2.42.2.0, Released 8/27/2013

driver: Added query options SIO4_QUERY_LED_CHANNEL and SIO4_QUERY_LED_MAIN.
driver: Changed the encoding of the SIO4_IOCTL_USC_ASYNC_TX_STOP_BIT opions.
driver: Corrected the option values for the SIO4_IOCTL_SYNC_TXC_SRC service.
driver: Corrected the option values for the SIO4_IOCTL_SYNC_TXD_CFG service.
driver: Fixed a bug in the PSRCR Bits determination.
driver: Fixed a bug in the SIO4_IOCTL_LOOP_BACK service.
driver: Fixed a bug in the SIO4_IOCTL_USC_CTS_CFG service.
driver: Fixed a bug in the SIO4_IOCTL_USC_DCD_CFG service.
driver: Fixed a bug in the SIO4_IOCTL_USC_HDLC_RX_ADRS_CTRL service.
driver: Updated the service code for SIO4_IOCTL_LED_CHANNEL.
driver: Updated the service code for SIO4_IOCTL_SYNC_TXC_IDLE_CFG.
driver: Updated the service code for SIO4_IOCTL_USC_CTR1_CLK_SRC.
driver: Updated the service code for SIO4_IOCTL_USC_CTS_CFG.
driver: Updated the service code for SIO4_IOCTL_USC_CTS_LEG.
driver: Updated the service code for SIO4_IOCTL_USC_DCD_CFG.
driver: Updated the service code for SIO4_IOCTL_USC_HDLC_RX_ADRS_CTRL.
driver: Updated the service code for SIO4_IOCTL_USC_TXC_CFG.
driver: Updated the service code for SIO4_IOCTL_Z16_CBL_TXD_CFG.
driver: Updated the service code for SIO4_IOCTL_Z16_LEG_RXC.
driver: Updated the service code for SIO4_IOCTL_Z16_LEG_RXD_DCD_CFG.
driver: SIO4_IOCTL_RX_FIFO_FULL_CFG now refers to the channel specific feature.
driver: SIO4_QUERY_RX_FIFO_FULL_CFG now refers to the channel specific feature.
driver: Added SIO4_IOCTL_RX_FIFO_FULL_CFG_GLB for the global feature.
driver: Added SIO4_QUERY_RX_FIFO_FULL_CFG_GLB for the global feature.

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

Version 2.1.41.1.0, Released 10/11/2012

driver: Fixed various ISR bugs.

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

Version 2.0.40.0.0, Released 9/9/2012

driver: The driver and the interface were overhauled.
driver: The driver now uses the common code source tree.
driver: This is a total replacement of the 1.x series driver.

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