November 18, 2008
Overview
The following changes are introduced in this release:
Notes:
Fix for Interrupts on DPT6 Boards
Fix for Transmit on DPT5 and DPT6 Boards
Fixes and Additions for Transmit Clock Select on DPT5 and DPT6 Boards
Fix for Potential Crashes and Other Changes in the Linux Device Driver
A work-around is added for a problem in the Linux device driver that
could sometimes cause channel resources to not be released when a program
is terminated by a signal that is not handled by the program
and channels are closed automatically by the operating system.
This situation typically arises when a program "crashes" due to a segmentation
fault or is otherwise unexpectedly terminated.
This problem seems to be caused by a race condition in the kernel's handling
of signal flags which can cause the down_interruptible kernel function
to return early.
The work-around has the device driver retry getting a necessary mutex
if the down_interruptible function returns with a "interrupt" status.
The number of retries is limited to avoid "stuck" processes.
Modifications to Device Driver and Board Configuration
While this operation is still necessary in the test and production environment,
and some of the configuration routines are necessary when the device driver
is first loaded, it does not need to be repeated every time the device is
opened by an application program.
A new ioctl request, PCI_FIXCONFIG is added to the device drivers
to implement the re-configuration operation only when specifically requested.
A new flag macro, PCI_OPEN_FIX_CONFIG is added for the pciopenex
API function.
When included in the flags argument, the function will invoke the
new ioctl to perform the re-configuration operation.
The use of this flag has been added to many of the DPT support programs,
most importantly, the dpinit and dpflashup programs.
So it is unlikely that customer programs should have to use this new mechanism.
The new ioctl is also added to the Windows device driver so that the FPGA on
DPT5 and DPT6 boards can be reconfigured automatically by the dpflashup
program without requiring the system to be power-cycled or rebooted.
Some of the changes described in this section have been included in
previous releases (1.5.0 and 1.5.1) but were not fully utilized until now.
Updates to the API Function Library
The pci_tdm_clock_cfg is modified to accept a new macro,
TDM_DB_CLK, for the clock source.
This selects the same daughter-board TDM clock for the TDM subsystem clock
as the pci_hw_tdmdb_clk function but does not connect it to the
framer transmit clock.
Modifications to Utility and Diagnostic Programs
The dpinfo program now displays the version for the expansion
FPGA configuration on DPT4 boards, whether or not the expansion option
is enabled.
The version number is shown in parentheses for boards that do not have
the expansion FPGA or the option enabled.
In addition, the program is fixed to report reading comet versions of 0xff
as an error.
The dpchantest program has a work-around for a problem in the
dual-port buffers on DPT4 boards
(see the known problems section for details).
The work-around implemented in dpchantest is
to wait until all receive channels have been opened
and then flush the data from the receive buffers before reading test data.
Also new in the dpchantest program:
The dprec program has two new options.
The dpsend program has a new -T option to specify the
source for transmit clock.
The option takes a parameter with choices of l for local clock,
r for recovered receive clock (using "hardware fast clock select")
or t for TDM DB clock.
The dpdiag program has a new -E option to have the program
stop if and when the first error is detected.
The dpdebug program has new commands to read and write
PCI configuration space as 8 and 16 bit values.
The "dc8" and "dc16" commands read (dump) 8 and 16 bit
configuration space values.
The "wc8" and "wc16" commands write 8 and 16 bit configuration space values.
The original "dc" and "wc" commands are still used to read and write
32 bit configuration space values.
In the dpburn program, references to boards as "DTPCI" and "pci"
are replaced with s "DPT" and "dpt" and the program reports the type
(DPT4, DPT5 or DPT6) of each board.
The dpdumpcfg program has a new -n option to specify the number
of PCI configuration spaces values to read and display for the raw display
option (-r).
Also the default number of raw display values for the parent (bridge) device
has been increased to 256.
The default number of values for the standard configuration space raw display
remains at 128.
Modification to the Windows Installation Script
It also now includes the directory for the demonstration programs.
The DPT5 / DPT6 Hardware Manual is updated to reflect changes in the
Expansion E1/T1 Control and E1/T1 Transmit Control registers.
Resolved problems with 2.6 kernel crashes when the Linux device driver is
loaded and/or unloaded.
The problems were induced by changes in the implementation of the
device driver registration and initialization routines in the Linux kernel.
The primary cause of trouble was leaving partial device driver registrations
in cases when a driver was loaded for a board type that was not installed.
The device driver now handles device driver registration an un-registration
more directly for 2.6 kernel versions.
The Solaris and Linux device drivers no longer check and restore
certain aspects of board configuration in the device driver open routine.
The operation includes restoring PCI configuration space, checking
for the register lock mechanism on the board, and configuring the
clock synthesizer on the board.
This operation was intended to handle the test and production environment
in which boards could be hot-swapped (power cycled and even replaced)
in a running system.
A new API function, pci_hw_tdmdb_clk is added to the API.
This function selects the TDM daughter-board clock as the source
for TDM and framer transmit clocks.
This mode is only supported on DPT5 and DPT6 boards.
Although there are no supported expansion modules that generate a
daughter-board clock,
this mode can potentially be used to slave the framer transmit clock
to a clock from another DPT board.
The dpflashup program is modified to include the configuration
data for the expansion FPGA on all DPT4 boards (rev1 or higher)
regardless of the board's expansion support setting.
This is done to avoid corrupting the flash on boards that have the
expansion FPGA but are serialized to disable the expansion support option.
The Windows installer is modified in how is edits the list of program
search directories in the Path environment variable.
It now appends DPT program directories to the end of the list
rather than pre-pending them to the beginning of the list.
It still only adds directories that are not already listed in the Path
The DPT Programmer Reference Manual is updated to include descriptions
of the pci_open_chanex function,
the new pci_hw_tdmdb_clk function
and the new TDM_DB_CLK option for the pci_tdm_clock_cfg function.