• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/char/rtl8365mb/
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, &regData)) != 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, &regData)) != 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, &regData)) != 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, &regData)) != RT_ERR_OK)
139        return retVal;
140
141    *enable = (regData & (0x0001 << 2)) ? ENABLED : DISABLED;
142    return RT_ERR_OK;
143}
144