1/* 2 * Copyright (C) 2013 Realtek Semiconductor Corp. 3 * All Rights Reserved. 4 * 5 * This program is the proprietary software of Realtek Semiconductor 6 * Corporation and/or its licensors, and only be used, duplicated, 7 * modified or distributed under the authorized license from Realtek. 8 * 9 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER 10 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. 11 * 12 * $Revision: 48989 $ 13 * $Date: 2014-07-01 15:45:24 +0800 (������, 01 ������ 2014) $ 14 * 15 * Purpose : RTL8370 switch high-level API for RTL8367C 16 * Feature : 17 * 18 */ 19 20#include <rtl8367c_asicdrv_eee.h> 21#include <rtl8367c_asicdrv_phy.h> 22 23/* 24@func ret_t | rtl8367c_setAsicEee100M | Set eee force mode function enable/disable. 25@parm rtk_uint32 | port | The port number. 26@parm rtk_uint32 | enabled | 1: enabled, 0: disabled. 27@rvalue RT_ERR_OK | Success. 28@rvalue RT_ERR_SMI | SMI access error. 29@rvalue RT_ERR_INPUT | Invalid input parameter. 30@comm 31 This API set the 100M EEE enable function. 32 33*/ 34ret_t rtl8367c_setAsicEee100M(rtk_uint32 port, rtk_uint32 enable) 35{ 36 rtk_api_ret_t retVal; 37 rtk_uint32 regData; 38 39 if(port >= RTL8367C_PORTNO) 40 return RT_ERR_PORT_ID; 41 42 if (enable > 1) 43 return RT_ERR_INPUT; 44 45 if((retVal = rtl8367c_getAsicPHYOCPReg(port, EEE_OCP_PHY_ADDR, ®Data)) != RT_ERR_OK) 46 return retVal; 47 48 if(enable) 49 regData |= (0x0001 << 1); 50 else 51 regData &= ~(0x0001 << 1); 52 53 if((retVal = rtl8367c_setAsicPHYOCPReg(port, EEE_OCP_PHY_ADDR, regData)) != RT_ERR_OK) 54 return retVal; 55 56 return RT_ERR_OK; 57} 58 59/* 60@func ret_t | rtl8367c_getAsicEee100M | Get 100M eee enable/disable. 61@parm rtk_uint32 | port | The port number. 62@parm rtk_uint32* | enabled | 1: enabled, 0: disabled. 63@rvalue RT_ERR_OK | Success. 64@rvalue RT_ERR_SMI | SMI access error. 65@rvalue RT_ERR_INPUT | Invalid input parameter. 66@comm 67 This API get the 100M EEE function. 68*/ 69ret_t rtl8367c_getAsicEee100M(rtk_uint32 port, rtk_uint32 *enable) 70{ 71 rtk_api_ret_t retVal; 72 rtk_uint32 regData; 73 74 if(port >= RTL8367C_PORTNO) 75 return RT_ERR_PORT_ID; 76 77 if((retVal = rtl8367c_getAsicPHYOCPReg(port, EEE_OCP_PHY_ADDR, ®Data)) != RT_ERR_OK) 78 return retVal; 79 80 *enable = (regData & (0x0001 << 1)) ? ENABLED : DISABLED; 81 return RT_ERR_OK; 82} 83 84/* 85@func ret_t | rtl8367c_setAsicEeeGiga | Set eee force mode function enable/disable. 86@parm rtk_uint32 | port | The port number. 87@parm rtk_uint32 | enabled | 1: enabled, 0: disabled. 88@rvalue RT_ERR_OK | Success. 89@rvalue RT_ERR_SMI | SMI access error. 90@rvalue RT_ERR_INPUT | Invalid input parameter. 91@comm 92 This API set the 100M EEE enable function. 93 94*/ 95ret_t rtl8367c_setAsicEeeGiga(rtk_uint32 port, rtk_uint32 enable) 96{ 97 rtk_api_ret_t retVal; 98 rtk_uint32 regData; 99 100 if(port >= RTL8367C_PORTNO) 101 return RT_ERR_PORT_ID; 102 103 if (enable > 1) 104 return RT_ERR_INPUT; 105 106 if((retVal = rtl8367c_getAsicPHYOCPReg(port, EEE_OCP_PHY_ADDR, ®Data)) != RT_ERR_OK) 107 return retVal; 108 109 if(enable) 110 regData |= (0x0001 << 2); 111 else 112 regData &= ~(0x0001 << 2); 113 114 if((retVal = rtl8367c_setAsicPHYOCPReg(port, EEE_OCP_PHY_ADDR, regData)) != RT_ERR_OK) 115 return retVal; 116 117 return RT_ERR_OK; 118} 119 120/* 121@func ret_t | rtl8367c_getAsicEeeGiga | Get 100M eee enable/disable. 122@parm rtk_uint32 | port | The port number. 123@parm rtk_uint32* | enabled | 1: enabled, 0: disabled. 124@rvalue RT_ERR_OK | Success. 125@rvalue RT_ERR_SMI | SMI access error. 126@rvalue RT_ERR_INPUT | Invalid input parameter. 127@comm 128 This API get the 100M EEE function. 129*/ 130ret_t rtl8367c_getAsicEeeGiga(rtk_uint32 port, rtk_uint32 *enable) 131{ 132 rtk_api_ret_t retVal; 133 rtk_uint32 regData; 134 135 if(port >= RTL8367C_PORTNO) 136 return RT_ERR_PORT_ID; 137 138 if((retVal = rtl8367c_getAsicPHYOCPReg(port, EEE_OCP_PHY_ADDR, ®Data)) != RT_ERR_OK) 139 return retVal; 140 141 *enable = (regData & (0x0001 << 2)) ? ENABLED : DISABLED; 142 return RT_ERR_OK; 143} 144