
                    Switch driver in DSDT Release version 3.0D
                   ============================================

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) HOW TO - Use phy driver (madDrv) in qdDrv.o 
8) HOW TO - select features in msApiSelect.h  
9) HOW TO - Build kinds of driver  
10) Changes - DSDT 3.0B change list


1) Release History 
------------------
DSDT_3.0D/switch - Jan 10. 2011. 
          0. update phy.
DSDT_3.0c/switch - Dec 10. 2010. 
          0. Added new PTP and TAI feature  of 88E6352.
          1. Added msApiSelect.h to allow Customer to select DSDT functions.
          3. Moved port mapping functions into Dev structure, which is selected by Customer. 
DSDT_3.0B/switch - Nov 16. 2010. 
          0. Added 88E6352 family.
          1. Added semaphore for Remote management access.
          2. Fixed bugs for 88ECxxx.
          3. Added port mapping functions into system config.
DSDT_3.0A/switch - Aug 18. 2010. 
          0. Fixed 6152/6155 port vector.
          1. Fixed warning problems for long to short.
          2. Fixed API gatuGetViolation DB Number error.
DSDT_3.0/switch - May 26. 2010. 
          0. based on DSDT2.8a.
          1. Support Marvell F2R (Remote management) function.
          2. Added device group 1 to extend device number.
          3. Added to support 88EC0xx.
          4. Added to use Marvell Phy driver (madDrv).
          5. Changed name form DSDT* to DSDT*/switch. The name QD is kept to indicate DSDT switch driver. 
          6. Added to support 88EC0XX and 88E6250 group.
DSDT2.8a.zip - Jan. 2009. Fixed problem.
              1. Deleted to support 6095 family for Ingress Rate Limit withFlow control.
              2. Deleted unused definition in GT_QPRI_TBL_ENTRY.
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
        Switch Driver Suite Source Code.

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

    2.3) Library
        Object files for Switch driver Suite

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

    2.5) Tools
	Building related files

    2.6) mad 
        Marvell Phy Driver (madDrv). See mad/README.txt for more detail.	


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


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

The Switch 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 Switch Driver and does the 
    followings:
    a) register the platform specific functions. 
       1.1 and 1.2 below are required.
       1.3 to 1.4 are for F2R(Remote management), it is selected 
          by flag GT_RMGMT_ACCESS in IncludemsApiDefs.h.
       1.5 to 1.8 are optional.
        1.1) readMii - BSP specific MII read function 
        1.2) writeMii - BSP specific MII write function 
        1.3) hwAccessMod - BSP supported function mode 
        1.4) hwAccess - BSP specific hardware access function 
        1.5) semCreate - OS specific semaphore create function.
        1.6) semDelete - OS specific semaphore delete function.
        1.7) semTake - OS specific semaphore take function.
        1.8) 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 (Switch) 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_3.x\switch 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_3.x\switch\tools
3. Modify the following variables according to your setup.
set DSDT_USER_BASE=C:\DSDT_3.x\switch
set DSDT_PROJ_NAME=qdDrv
set DSDT_USE_MAD=FALSE or TRUE
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_3.x\switch\src
6. run "make"
7. qdDrv.o and qdDrv.map will be created in c:\DSDT_3.x\switch\Library.


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

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

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


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

1. Extract the given ZIP file into $HOME/DSDT_3.x/switch directory(directory can be changed)
 `   in Linux system (verified with Fedore 8.x)
2. Edit setenv file in $HOME/DSDT_3.x/switch/tools
3. Modify the following variables according to your setup.
    declare -x DSDT_USER_BASE=$HOME/DSDT_3.x/switch
    declare -x DSDT_PROJ_NAME=qdDrv
    declare -x DSDT_USE_MAD=FALSE or TRUE
4. run "source setenv"
5. Change directory to $HOME/DSDT_3.x/switch/src
6. run "make"
7. qdDrv.o and qdDrv.map will be created in $HOME/DSDT_3.x/switch/Library.

7) HOW TO - Use Phy driver in qdDrv.o
-------------------------------------

 The Phy driver(MAD) supports Marvell Phy products. It includes the phys in switch chips. 
 From DSDT 3.0A, the Switch driver added function to merge MAD driver 
 to replace original Phy regarded functions. This is an option.
 There is no any difference from original phy APIs of Switch, when it uses MAD APIs.
 For old chips, it is selectible to use ether original Phy API function or call MAD functions. The selection is setting global variable <DSDT_USE_MAD> as TRUE or FALSE.
 Run <make DSDT_USE_MAD=TRUE> to build switch driver with MAD APIs.

8) HOW TO - select features in msApiSelect.h  
-----------------------------------

 Customer can ignore the selections. The default selections are <undef> for all.

 From DSDT_3.0D, DSDT addes file <msApiSelect.h> in DSDT*.*/Include.
 The file allows customer to select self features.
 Now selections are:
    GT_PORT_MAP_IN_DEV: To use port mapping functions in Dev configuration.
    GT_RMGMT_ACCESS: DSDT uses RMGMT to replace SMI.
    GT_USE_MAD: the phy APIs of switch use Mad driver(DSDT/phy).

 If customer wants to use the selection,
   1. Addes a Micro definition <CHECK_API_SELECT> in customers build enviroment.
     For example, in <makefile>, addes <CFLAGS += -DCHECK_API_SELECT>.
   2. In file <Include/msApiSelect>, set correct selections.
   3. Re-build DSDT/switch.
  

9) HOW TO - build driver  
-----------------------------------

 Change directory to $HOME/DSDT_3.x/
 <make switch>: to build switch driver image only.
 <make phy>: to build phy driver image only.
 <make>: to build switch and phy driver images, and switch driver does not use MAD APIs.
 <make DSDT_USE_MAD=TRUE>: to build switch and phy driver images, and switch driver uses MAD APIs.
 
10) CHANGES
-----------
1. Supports Marvell F2R (RMGMT) function.
   Added one BSP provided function and one BSP function configuration selection 
   in Device configuration. The new BSP function is HwAccess. It is a read/write integration function, 
   like Marvell's F2R(RMGMT) access function.
   The variable HwAccessMode is configuration selection parameter. It indicates 
   to use SMI or F2R function in BSP.
   The F2R support can be selected by flag <GT_RMGMT_ACCESS> in Include/msApiDefs.h. 
   Thw flag GT_RMGMT_ACCESS is useful to compatible backwards.
   Customer, who do not provider <HwAccess function>, still can set to use GT_RMGMT_ACCESS.
   The DSDT switch driver include function to allow customer use Read/Write functions only.
2. Added device group 1 to meet extended requirement of Marvell SOHO switch products.
3. Added to support new chips 88EC0xx and 6250.
4. Merged Marvell Phy Driver (MAD). 
   The qdDriver can use Phy driver to replace the Phy part of the qdDriver.
   It is selected by flag GT_USE_MAD in Include/msApiDefs.inc. Or it can be set in Makefile.
5. Added 88E6352 family. Added to support Tcam,WoL/WoF.
6. Added a new semaphore for Remote management access.
7. Added port mapping functions into system config.
8. Sdded <msApiSelect.h> to allow customer to select self features.
   Customer can set: USE_MAD, PORT_MAP_IN_DEV, USE_RMGMT...

