mediatek: add support for rtl8367c
[openwrt/staging/rmilecki.git] / target / linux / mediatek / files-5.4 / drivers / net / phy / rtk / rtl8367c / include / rtl8367c_asicdrv_svlan.h
1 /*
2 * Copyright (C) 2013 Realtek Semiconductor Corp.
3 * All Rights Reserved.
4 *
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
9 *
10 * $Revision: 76306 $
11 * $Date: 2017-03-08 15:13:58 +0800 (¶g¤T, 08 ¤T¤ë 2017) $
12 *
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : SVLAN related functions
15 *
16 */
17
18 #ifndef _RTL8367C_ASICDRV_SVLAN_H_
19 #define _RTL8367C_ASICDRV_SVLAN_H_
20
21 #include <rtl8367c_asicdrv.h>
22
23 #define RTL8367C_C2SIDXNO 128
24 #define RTL8367C_C2SIDXMAX (RTL8367C_C2SIDXNO-1)
25 #define RTL8367C_MC2SIDXNO 32
26 #define RTL8367C_MC2SIDXMAX (RTL8367C_MC2SIDXNO-1)
27 #define RTL8367C_SP2CIDXNO 128
28 #define RTL8367C_SP2CMAX (RTL8367C_SP2CIDXNO-1)
29
30 #define RTL8367C_SVLAN_MEMCONF_LEN 4
31 #define RTL8367C_SVLAN_MC2S_LEN 5
32 #define RTL8367C_SVLAN_SP2C_LEN 2
33
34 enum RTL8367C_SPRISEL
35 {
36 SPRISEL_INTERNALPRI = 0,
37 SPRISEL_CTAGPRI,
38 SPRISEL_VSPRI,
39 SPRISEL_PBPRI,
40 SPRISEL_END
41 };
42
43 enum RTL8367C_SUNACCEPT
44 {
45 SUNACCEPT_DROP = 0,
46 SUNACCEPT_TRAP,
47 SUNACCEPT_SVLAN,
48 SUNACCEPT_END
49 };
50
51 enum RTL8367C_SVLAN_MC2S_MODE
52 {
53 SVLAN_MC2S_MODE_MAC = 0,
54 SVLAN_MC2S_MODE_IP,
55 SVLAN_MC2S_MODE_END
56 };
57
58
59 typedef struct rtl8367c_svlan_memconf_s{
60
61 rtk_uint16 vs_member:11;
62 rtk_uint16 vs_untag:11;
63
64 rtk_uint16 vs_fid_msti:4;
65 rtk_uint16 vs_priority:3;
66 rtk_uint16 vs_force_fid:1;
67 rtk_uint16 reserved:8;
68
69 rtk_uint16 vs_svid:12;
70 rtk_uint16 vs_efiden:1;
71 rtk_uint16 vs_efid:3;
72
73
74 }rtl8367c_svlan_memconf_t;
75
76
77 typedef struct rtl8367c_svlan_mc2s_s{
78
79 rtk_uint16 valid:1;
80 rtk_uint16 format:1;
81 rtk_uint16 svidx:6;
82 rtk_uint32 sdata;
83 rtk_uint32 smask;
84 }rtl8367c_svlan_mc2s_t;
85
86
87 typedef struct rtl8367c_svlan_s2c_s{
88
89 rtk_uint16 valid:1;
90 rtk_uint16 svidx:6;
91 rtk_uint16 dstport:4;
92 rtk_uint32 vid:12;
93 }rtl8367c_svlan_s2c_t;
94
95 extern ret_t rtl8367c_setAsicSvlanIngressUntag(rtk_uint32 mode);
96 extern ret_t rtl8367c_getAsicSvlanIngressUntag(rtk_uint32* pMode);
97 extern ret_t rtl8367c_setAsicSvlanIngressUnmatch(rtk_uint32 mode);
98 extern ret_t rtl8367c_getAsicSvlanIngressUnmatch(rtk_uint32* pMode);
99 extern ret_t rtl8367c_setAsicSvlanTrapPriority(rtk_uint32 priority);
100 extern ret_t rtl8367c_getAsicSvlanTrapPriority(rtk_uint32* pPriority);
101 extern ret_t rtl8367c_setAsicSvlanDefaultVlan(rtk_uint32 port, rtk_uint32 index);
102 extern ret_t rtl8367c_getAsicSvlanDefaultVlan(rtk_uint32 port, rtk_uint32* pIndex);
103
104 extern ret_t rtl8367c_setAsicSvlanMemberConfiguration(rtk_uint32 index,rtl8367c_svlan_memconf_t* pSvlanMemCfg);
105 extern ret_t rtl8367c_getAsicSvlanMemberConfiguration(rtk_uint32 index,rtl8367c_svlan_memconf_t* pSvlanMemCfg);
106
107 extern ret_t rtl8367c_setAsicSvlanPrioritySel(rtk_uint32 priSel);
108 extern ret_t rtl8367c_getAsicSvlanPrioritySel(rtk_uint32* pPriSel);
109 extern ret_t rtl8367c_setAsicSvlanTpid(rtk_uint32 protocolType);
110 extern ret_t rtl8367c_getAsicSvlanTpid(rtk_uint32* pProtocolType);
111 extern ret_t rtl8367c_setAsicSvlanUplinkPortMask(rtk_uint32 portMask);
112 extern ret_t rtl8367c_getAsicSvlanUplinkPortMask(rtk_uint32* pPortmask);
113 extern ret_t rtl8367c_setAsicSvlanEgressUnassign(rtk_uint32 enabled);
114 extern ret_t rtl8367c_getAsicSvlanEgressUnassign(rtk_uint32* pEnabled);
115 extern ret_t rtl8367c_setAsicSvlanC2SConf(rtk_uint32 index, rtk_uint32 evid, rtk_uint32 portmask, rtk_uint32 svidx);
116 extern ret_t rtl8367c_getAsicSvlanC2SConf(rtk_uint32 index, rtk_uint32* pEvid, rtk_uint32* pPortmask, rtk_uint32* pSvidx);
117 extern ret_t rtl8367c_setAsicSvlanMC2SConf(rtk_uint32 index,rtl8367c_svlan_mc2s_t* pSvlanMc2sCfg);
118 extern ret_t rtl8367c_getAsicSvlanMC2SConf(rtk_uint32 index,rtl8367c_svlan_mc2s_t* pSvlanMc2sCfg);
119 extern ret_t rtl8367c_setAsicSvlanSP2CConf(rtk_uint32 index,rtl8367c_svlan_s2c_t* pSvlanSp2cCfg);
120 extern ret_t rtl8367c_getAsicSvlanSP2CConf(rtk_uint32 index,rtl8367c_svlan_s2c_t* pSvlanSp2cCfg);
121 extern ret_t rtl8367c_setAsicSvlanDmacCvidSel(rtk_uint32 port, rtk_uint32 enabled);
122 extern ret_t rtl8367c_getAsicSvlanDmacCvidSel(rtk_uint32 port, rtk_uint32* pEnabled);
123 extern ret_t rtl8367c_setAsicSvlanUntagVlan(rtk_uint32 index);
124 extern ret_t rtl8367c_getAsicSvlanUntagVlan(rtk_uint32* pIndex);
125 extern ret_t rtl8367c_setAsicSvlanUnmatchVlan(rtk_uint32 index);
126 extern ret_t rtl8367c_getAsicSvlanUnmatchVlan(rtk_uint32* pIndex);
127 extern ret_t rtl8367c_setAsicSvlanLookupType(rtk_uint32 type);
128 extern ret_t rtl8367c_getAsicSvlanLookupType(rtk_uint32* pType);
129
130
131 #endif /*#ifndef _RTL8367C_ASICDRV_SVLAN_H_*/
132