
                    DSDT Release version 2.5b
                   ===========================

Table of Content:
-----------------
1) Release History 
2) Source Code Orgnization
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) HOW TO - Build msDiag and run the test for vxWorks
8) Changes


1) Release History 
------------------
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, privides 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 upcomming 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 dependecy. 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 Orgnization
--------------------------
	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.

	2.5) Diag
	 	Testing program for DSDT Driver Suite	

	* The DSDT Driver Suite Source Code are OS independent, and fully supported by Marvell.
	* The Sample Code and Testing Program 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 plateform 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 are 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 enviroment variable below accordingly.
2. Edit setenv.bat file in c:\DSDT_2.x\tools
3. Modify the folloing 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 folloing 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) HOW TO - Build msDiag and run the test for vxWorks
-----------------------------------------------------

0. qdDrv.o has to be created in c:\DSDT_2.x\Library
1. Change Directory to c:\DSDT_2.x\diag
2. run "make"
3. msDiag.o will be created in the current directory.
4. in vxworks shell, do the following:
   4.1)	To test the driver on hardware
	> ld < msDiag.o
	> qdStart 5 	// where 5 is CPU port
	> testHelp
	>testAll dev

   4.2)	To test the driver on software simulator
	> ld < msDiag.o
	> qdStart 5, 1,deviceID		// where 5 is CPU port
	> testHelp
	>testAll dev

	* deviceID - the device you want to simulate: 
		     6051 - 0x51
		     6052 - 0x52
		     6021 - 0x21
		     6063 - 0x153
		     6083 - 0x83

	* when test the driver on hardware, no deviceId needs to be provided. 
	  the driver will find it out by reading hardware registers


8) Changes from previous release
--------------------------------

	8.1) added gtDelay function after disabling PPU (gtVct.c and gtHwCntl.c)
		Since delay function is system/OS dependent, it is required that DSDT user
		fills up the gtDelay function based on the system that user is using.
		gtDelay function is in the src\msApi\gtUtils.c.

		Notes: Due to the hardware bug in Gigabit SOHO Switch, functioning gtDelay
			has to be provided.


	8.2) gtDelay (in gtUtils.c)

		DESCRIPTION:
			Wait for the given uSec and return.
			Current Switch devices with the support of Gigabit Ethernet require 250 uSec
			of delay time for PPU to be disabled.
			Since this function is System and/or OS dependent, it should be provided
			by each DSDT user.

		INPUTS:
			delayTime - delay in uSec.

		OUTPUTS:
			None

		RETURNS:
			None

		COMMENT:
			gtDelay has empty body that should be filled up by the user.


	8.3) GT_STATUS definitions that is not used are removed (in msApiTypes.h)
