| |
| 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. |
| |