
                    DSDT Release version 2.8b
                   ==========================

Table of Content:
-----------------
1) Release History 
2) Source Code Organization
3) General Introduction
4) HOW TO - Build qdDrv.o for vxWorks
5) HOW TO - Build qdDrv.lib for WinCE
6) HOW TO - Build qdDrv.o for Linux
7) Changes
8) New APIs


1) Release History 
------------------
DSDT2.8b.zip - Oct. 2009 Added GPL and BSD license options to copyright header.

DSDT2.8a.zip - Mar. 2009. Bug fixes.
         1. Bug fixes for SERDES interface configuration.
         2. VCT fixes for 88E616x, 88E617x, 88E635x internal PHYs.
         3. Auto Scan issues on 88E617x, 88E635x family.
         4. msgIdStartBit in GT_PTP_CONFIG is obsolete.
         5. TRUNK ATU entries for 88E616x, 88E617x, 88E635x are configured properly.
         6. Port mapping macros with GT_USE_SIMPLE_PORT_MAPPING are casted properly.
         7. Deleted to support 6095 family for Ingress Rate Limit with Flow control.
         8. Deleted unused definition in GT_QPRI_TBL_ENTRY.
         9. Device definition for GT_88E6124, GT_88E6325, GT_88E6371 has been corrected to
		     GT_88E6125, GT_88E6321, GT_88E6350, respectively.

DSDT2.8.zip - Nov. 2008. added support for 88E6351 family (88E6351,88E6175,88E6124)
		  1. New APIs are added to support new devices.

DSDT2.7a.zip - March. 2008.
		  1. Fixed known bugs.
		  2. Enhanced some of the APIs.

DSDT2.7.zip - May. 2007. added support for 88E6165 family (88E6123,88E6125,88E6140,88E6161)
		  1. New APIs are added to support new devices.
		  2. Bug fix
			GT_PIRL2_DATA structure includes GT_PIRL_COUNT_MODE enum type, 
			which should be GT_PIRL2_COUNT_MODE.
			88E6083 support Static Management frame.
			gprtSetForwardUnknown deals with wrong bit.
		  3. Removed Diag program that make user confused with missing files.

DSDT2.6b.zip - Jan. 2007.
		  1. Bug Fixes
		  2. PIRL Rate Limiting Parameter update

DSDT2.6a.zip - Nov. 2006. added support for 88E6045.

DSDT2.6.zip - Jul. 2006. added support for 88E6097, 88E6096, 88E6046, 88E6047, and 88E6085.
		  1. New APIs are added to support new devices.
		  2. Bug fixes those were in 2.6 preliminary release.

DSDT2.6pre.zip - Apr. 2006. added preliminary support for 88E6097.
		  1. New features are added.
		  2. Some parameters in the existing APIs are modified to support extended feature.

DSDT2.5b.zip - Jan. 2006.
		  1. added gtDelay function after disabling PPU
		  	Since delay function is system/OS dependent, it is required that DSDT user
		  	fill up the gtDelay function based its platform parameters.
		  	gtDelay function is located in src\msApi\gtUtils.c
		  2. Unused GT_STATUS definitions are removed.

DSDT2.5a.zip - Jan. 2006, added support for 88E6122 and 88E6121 and new feature that bypasses
		  initial device setup, and bug fixes in the previous release.
		  1. Bypass initial configuration when loading driver.
		  2. Bug fixes: 
		  	1) synchronization issues.
		  	2) port vector of 0xFF was treated as an invalid vector.

DSDT2.5.zip - Nov. 2005, added support for 88E6065, 88E6035, 88E6055, 88E6061, and 88E6031,
		  and bug fixes in the previous release.
		  1. New APIs are added to support new devices.
		  2. Bug fixes: 
		  	1) gfdbGetAtuEntryNext API returns GT_NO_SUCH when Entry's MAC is Broadcast address.
		  	2) entryState in GT_ATU_ENTRY follows the definition.
		  	3) gsysSetTrunkMaskTable API does not overwrite HashTrunk value anymore.
		  	4) 10/100 FastEthernet Phy Reset occurs along with Speed, Duplex modification.


DSDT2.4a.zip - Oct. 2005, added support for 88E6131 and a bug fix.
		  1. gprtPortPowerDown(gtPhyCtrl.c) didn't work due to reset - reset is not called after PowerDown bit change.

DSDT2.4.zip - Aug. 2005, bug fixes and modifications
		  1. gprtSetPktGenEnable(gtPhyCtrl.c) didn't work with Serdes Device - resolved.
		  2. gprtSetPortAutoMode(gtPhyCtrl.c) dropped 1000Mbps Half duplex mode - resolved.
		  3. gprtGetPhyLinkStatus(gtPhyCtrl.c) returned LinkOn when there is no phy connected - resolved.
		  4. gprtSetPortDuplexMode(gtPhyCtrl.c) reset 1000M Speed - resolved.
		  5. gfdbSetAtuSize(gtBrgFdb.c), now, returns GT_NOT_SUPPORT if ATU size of the device 
		     is not configurable.
		  6. gprtSetPortLoopback(gtPhyCtrl.c) treats Fast Ethernet Phy and Gigabit Ethernet Phy
		  	 differently.
		  7. GT_GET_SERDES_PORT, now, does the error checking.
		  8. IS_CONFIGURABLE_PHY reads PHY ID and returns the ID

DSDT2.4pre.zip - July. 2005, added support for 88E6108
		  1. New features are added.
		  2. Arguments in gprtSetPause and gprtSetPortSpeed are modified to support
			 1000M Phys.
		  3. Driver functions are added to support Marvell Alask Phys and to be
		     expanded easily for the future Phys.

DSDT2.3c.zip - May. 2005,
		  1. New features in Rev1 or Rev2 of 88E6095 are added
		  2. gfdbGetAgingTimeout, and gfdbGetLearnEnable are added
		  3. Bug fixes in grcSetEgressRate and grcSetPri0Rate
		  4. Resetting TrunkID, when gprtSetTrunkPort is called to disable Trunk, is applied
		     only to Rev0 of 88E6095 and 88E6185

DSDT2.3b.zip - Mar. 2005, 
		  1. gstpSetMode function does not modify Port State any more, since STP module
		     sets the port state. gstpSetMode sets the switch so that it can receive 
			  BPDU packets.
		  2. gtLoadDriver clears Rsvd2Cpu and Rsvd2CpuEn bits.
		  3. TrunkID will be reset when gprtSetTrunkPort is called to disable Trunk.
		  4. "Check PPU Status in order to verify PPU disabled" is applied to gtVct.c

DSDT2.3a.zip - Jan. 2005, added support for 88E6152, 88E6155, 88E6182, and 88E6092 
		  devices, removed non-existing devices, and bug fix in 2.3 release.
		  Fix :
		  Check PPU Status in order to verify PPU disabled.

DSDT2.3.zip - Nov. 2004, support for 88E6185 and bug fixes in 2.3 preliminary release.
		  Fixes :
		  1) Provide some delay after disabling PPU.
		  2) VCT runs after disabling PPU.

DSDT2.3pre.zip - Nov. 2004, added preliminary support for 88E6185.

DSDT2.2a.zip - Nov. 2004, added semaphore support for MII Access with multi address mode.

DSDT2.2.zip - Oct. 2004, support for 88E6095 and bug fixes in 2.2 preliminary release.

DSDT2.2pre.zip - Sep. 2004, added preliminary support for 88E6095 and work-around for VCT
		  based on VCT Application Note.

DSDT2.1a.zip - Apr. 2004, support 88E6093 and bug fixes.
		  Device Driver Package name has been changed from QDDriver to DSDT(Datacom
		  Same Driver Technology).
		  Bug Fixes : 
		  1) DBNum was not correctly handled while getting entry from VTU Table.
		  2) Member Tag in VTU entry was not defined correctly for 88E6183 family.
		  3) Correction of 88E6183 RMON Counter Structure and Enum.
		  4) ATU Interrupt Handling routine

qdDriver2.1-pre.zip - Apr. 2004, added preliminary support for 88E6093 and bug fixes.
		  Bug Fixes : 
		  1) DBNum was not incorrectly handled while getting entry from 
		  VTU Table.
		  2) Member Tag in VTU entry was not defined correctly for 88E6183 family.
		
qdDriver2.0a.zip - Dec. 2003, provides functions, which can read/write  
		  Switch Port Registers and Switch Global Registers:
		  gprtGetSwitchReg,
		  gprtSetSwitchReg,
		  gprtGetGlobalReg, and
		  gprtSetGlobalReg

qdDriver2.0.zip - July. 2003, supports Multi Address Mode for upcoming device.
		  AUTO_SCAN_MODE, MANUAL_MODE, and MULTI_ADDR_MODE are added
		  to find a QD Family device.
		  Supports Sapphire (10 port Gigabit switch).

qdDriver1.4a.zip - Apr. 2003, bug fixes.
		  Bug fixes on portVec in GT_ATU_ENTRY structure, which supported only 
		  total of 8 ports (defined as GT_U8). It's now defined as GT_U32.
		  utils.c and testApi.c in Diag directory also modified to support 
		  the switch with more than 8 ports.

qdDriver1.4.zip - Apr. 2003, added support for Ocatne (6083).
		  Removed NO-OPs, which created when DBG_PRINT is undefined. 
		  Bug fixes on gprtSetIGMPSnoop and gprtGetIGMPSnoop functions,
		  and GT_PRI0_RATE enum type.

qdDriver1.3h.zip - Feb. 2003, added support for Extended Cable Status, 
		  such as Impediance mismatch, Pair Skew, Pair Swap and Pair Polarity.
		  Bug fixes on FFox-EG and FFox-XP device ID.

qdDriver1.3g.zip - Dec. 2002, added preliminary support for Octane (6083)

qdDriver1.3.zip - Oct. 2002, added support for ClipperShip (6063)
		  This driver works with all released devices, including
		  6051, 6052, 6021, and 6063

qdDriver1.2.zip - Aug. 2002, added support for FullSail (6021)
				
qdDriver1.1.zip - June, 2002 OS independent QuarterDeck Driver Release 
		  Based on 1.0 release, but removed OS dependency. The driver
		  is designed to work with any OS without code changes.

qdDriver1.0.zip - Feb. 2002, Initial QuaterDeck Driver Release
		  Based on vxWorks OS, support 6051/6052


2) Source Code Organization
--------------------------
	2.1) src
		DSDT Driver Suite Source Code.

	2.2) Include directory
		DSDT Driver Suite Header files and Prototype files

	2.3) Library
		Object files for DSDT driver Suite

	2.4) Sample
		Sample Code that shows how to use MSAPIs, e.g., init DSDT, setup VLAN for Home Gateway, etc.

	* The DSDT Driver Suite Source Code is OS independent, and fully supported by Marvell.
	* The Sample Codes are tested under vxworks, and is provided for reference only.


3) General Introduction
-----------------------

The DSDT driver suite is standalone program, which is independent of both OS and Platform. 
As such, applications of MSAPIs need to register platform specific functions. 
This is done by calling qdLoadDriver function. This function returns a pointer (*dev), 
which contains the device and platform information. It will then be used for each MSAPI call. 

msApiInit.c file in Diag directory and Sample\Initialization directory demonstrate 
how you can register those functions.

msApiInit.c
	qdStart is the main function to initialize DSDT Driver and does the 
	followings:
	a) register the platform specific functions. 
	   1.1 and 1.2 below are required. 1.3 to 1.6 is optional.
		1.1) readMii - BSP specific MII read function 
		1.2) writeMii - BSP specific MII write function 
		1.3) semCreate - OS specific semaphore create function.
		1.4) semDelete - OS specific semaphore delete function.
		1.5) semTake - OS specific semaphore take function.
		1.6) semGive - OS specific semaphore give function.

		Notes) The given example will use DB-88E6218 BSP as an example.

	b) Initialize BSP provided routine (if required).

	c) Calls qdLoadDriver routine.
		1.1) Input (GT_SYS_CONFIG) - CPU Port Number (Board Specific) and Port Mode 
		(either 1 for Forwarding mode or 0 for Hardware default mode)
		1.2) Output (GT_QD_DEV) - Contains all device (QD) and platform specific info.
		     It will be used for all API calls.

	d) Calls sysEnable (for future use.)


4) HOW TO - Build qdDrv.o for vxWorks
-------------------------------------

1. Extract the given ZIP file into c:\DSDT_2.x directory
   You may change the directory name to your choice, and change the environment variable below accordingly.
2. Edit setenv.bat file in c:\DSDT_2.x\tools
3. Modify the following variables according to your setup.
set USER_BASE=C:\DSDT_2.x
set PROJ_NAME=qdDrv
set WIND_BASE=C:\Tornado
set TARGETCPU=MIPS		;ARM for ARM Cpu
set WIND_HOST_TYPE=x86-win32
4. run "setenv"
5. Change directory to c:\DSDT_2.x\src
6. run "make"
7. qdDrv.o and qdDrv.map will be created in c:\DSDT_2.x\Library.


5) HOW TO - Build qdDrv.lib for WinCE
-------------------------------------

1. Extract the given ZIP file into c:\DSDT_2.x directory(directory can be changed)
2. Edit setenv.bat file in c:\DSDT_2.x\tools
3. Modify the following variables according to your setup.
set USER_BASE=C:\DSDT_2.x
set PROJ_NAME=qdDrv
set TARGETCPU=x86		;MIPSIV for MIPS IV
set WCEROOT=C:\WINCE400

4. run "setenv WINCE"
5. Change directory to c:\DSDT_2.x\src
6. run "make"
7. qdDrv.lib will be created in c:\DSDT_2.x\Library.


6) HOW TO - Build qdDrv.o for Linux
-----------------------------------

1. Extract the given ZIP file into $HOME/DSDT_2.x directory(directory can be changed)
	in Linux system (verified with RedHat 7.3)
2. Edit setenv file in $HOME/DSDT_2.x/tools
3. Modify the following variables according to your setup.
	declare -x USER_BASE=$HOME/DSDT_2.x
	declare -x PROJ_NAME=qdDrv
4. run "source setenv"
5. Change directory to $HOME/DSDT_2.x/src
6. run "make"
7. qdDrv.o and qdDrv.map will be created in $HOME/DSDT_2.x/Library.


7) Changes
-----------
1. SERDES interface configuration
	1) APIs in gtPhyCtrl.c can be used for SERDES interface.
	2) When SERDES interface is accessed, physical SMI address should be used
	   instead of logical number. This is due to the logical address confliction 
	   between external phys and SERDES.
	e.g.) To change the Speed for the first SERDES port (SMI address 0xC)
		the following API can be used:
		gprtSetPortSpeed(sw_dev, 0xC, PHY_SPEED_1000_MBPS);

2. VCT for 88E616x, 88E617x, 88E635x
	1) New APIs added as defined the following section

3. Supports Auto Scan mode for 88E617x, 88E635x devices
4. msgIdStartBit in GT_PTP_CONFIG is obsolete.
5. TRUNK ATU entries for 88E616x, 88E617x, 88E635x are configured properly.
6. Port mapping macros with GT_USE_SIMPLE_PORT_MAPPING are casted properly.
7. Deleted to support 6095 family for Ingress Rate Limit with Flow control.
8. Deleted unused definition in GT_QPRI_TBL_ENTRY.
9. Device definition for GT_88E6124, GT_88E6325, GT_88E6371 has been corrected to
	GT_88E6125, GT_88E6321, GT_88E6350, respectively.


8) New APIs
-----------

1. gtAdvVct.c

	1.1) gvctGetAdvCableDiag

	DESCRIPTION
		This routine perform the advanced virtual cable test (TDR) for the requested
		port and returns the the status per MDI pair.
		DSP based cable length is not provided. Please refer to the API, 
		gvctGetAdvExtendedStatus, for DSP.

	SYNOPSIS
		GT_STATUS gvctGetAdvCableDiag
		(
		    IN  GT_QD_DEV *dev,
		    IN  GT_LPORT        port,
		    IN  GT_ADV_VCT_MODE mode,
		    OUT GT_ADV_CABLE_STATUS *cableStatus
		)

	ARGUMENTS
		INPUTS:
			port - logical port number.
			mode - advance VCT mode (either First Peak or Maximum Peak)

		OUTPUTS:
			cableStatus - the copper cable status.
	
	RETURNS
		GT_OK   - on success
		GT_FAIL - on error
		GT_NOT_SUPPORTED - if current device does not support this feature.


	1.2) gvctGetAdvExtendedStatus

	DESCRIPTION
		This routine retrieves extended cable status, such as Pair Poloarity,
		Pair Swap, and Pair Skew. Note that this routine will be success only
		if 1000Base-T Link is up.
		DSP based cable length is also provided.

	SYNOPSIS
		GT_STATUS gvctGetAdvExtendedStatus
		(
		    IN  GT_QD_DEV     *dev,
		    IN  GT_LPORT   port,
		    OUT GT_ADV_EXTENDED_STATUS *extendedStatus
		)


	ARGUMENTS
		INPUTS:
			port - logical port number.

		OUTPUTS:
			extendedStatus - the extended cable status.
	
	RETURNS
		GT_OK   - on success
		GT_FAIL - on error
		GT_NOT_SUPPORTED - if current device does not support this feature.
	
