source: trunk/target/linux/generic-2.6/files/drivers/net/phy/ar8216.h @ 20110

Last change on this file since 20110 was 20110, checked in by nbd, 6 years ago

ar8216: fix the mtu register definition

File size: 4.9 KB
Line 
1/*
2 * ar8216.h: AR8216 switch driver
3 *
4 * Copyright (C) 2009 Felix Fietkau <nbd@openwrt.org>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 * GNU General Public License for more details.
15 */
16
17#ifndef __AR8216_H
18#define __AR8216_H
19
20#define BITS(_s, _n)    (((1UL << (_n)) - 1) << _s)
21
22#define AR8216_PORT_CPU 0
23#define AR8216_NUM_PORTS        6
24#define AR8216_NUM_VLANS        16
25
26#define AR8216_REG_CTRL                 0x0000
27#define   AR8216_CTRL_REVISION          BITS(0, 8)
28#define   AR8216_CTRL_REVISION_S        0
29#define   AR8216_CTRL_VERSION           BITS(8, 8)
30#define   AR8216_CTRL_VERSION_S         8
31#define   AR8216_CTRL_RESET             BIT(31)
32
33#define AR8216_REG_GLOBAL_CTRL          0x0030
34#define   AR8216_GCTRL_MTU              BITS(0, 11)
35
36#define AR8216_REG_VTU                  0x0040
37#define   AR8216_VTU_OP                 BITS(0, 3)
38#define   AR8216_VTU_OP_NOOP            0x0
39#define   AR8216_VTU_OP_FLUSH           0x1
40#define   AR8216_VTU_OP_LOAD            0x2
41#define   AR8216_VTU_OP_PURGE           0x3
42#define   AR8216_VTU_OP_REMOVE_PORT     0x4
43#define   AR8216_VTU_ACTIVE             BIT(3)
44#define   AR8216_VTU_FULL               BIT(4)
45#define   AR8216_VTU_PORT               BITS(8, 4)
46#define   AR8216_VTU_PORT_S             8
47#define   AR8216_VTU_VID                BITS(16, 12)
48#define   AR8216_VTU_VID_S              16
49#define   AR8216_VTU_PRIO               BITS(28, 3)
50#define   AR8216_VTU_PRIO_S             28
51#define   AR8216_VTU_PRIO_EN            BIT(31)
52
53#define AR8216_REG_VTU_DATA             0x0044
54#define   AR8216_VTUDATA_MEMBER         BITS(0, 10)
55#define   AR8216_VTUDATA_VALID          BIT(11)
56
57#define AR8216_REG_ATU                  0x0050
58#define   AR8216_ATU_OP                 BITS(0, 3)
59#define   AR8216_ATU_OP_NOOP            0x0
60#define   AR8216_ATU_OP_FLUSH           0x1
61#define   AR8216_ATU_OP_LOAD            0x2
62#define   AR8216_ATU_OP_PURGE           0x3
63#define   AR8216_ATU_OP_FLUSH_LOCKED    0x4
64#define   AR8216_ATU_OP_FLUSH_UNICAST   0x5
65#define   AR8216_ATU_OP_GET_NEXT        0x6
66#define   AR8216_ATU_ACTIVE             BIT(3)
67#define   AR8216_ATU_PORT_NUM           BITS(8, 4)
68#define   AR8216_ATU_FULL_VIO           BIT(12)
69#define   AR8216_ATU_ADDR4              BITS(16, 8)
70#define   AR8216_ATU_ADDR5              BITS(24, 8)
71
72#define AR8216_REG_ATU_DATA             0x0054
73#define   AR8216_ATU_ADDR3              BITS(0, 8)
74#define   AR8216_ATU_ADDR2              BITS(8, 8)
75#define   AR8216_ATU_ADDR1              BITS(16, 8)
76#define   AR8216_ATU_ADDR0              BITS(24, 8)
77
78#define AR8216_PORT_OFFSET(_i)          (0x0100 * (_i + 1))
79#define AR8216_REG_PORT_STATUS(_i)      (AR8216_PORT_OFFSET(_i) + 0x0000)
80#define   AR8216_PORT_STATUS_SPEED      BITS(0,2)
81#define   AR8216_PORT_STATUS_SPEED_S    0
82#define   AR8216_PORT_STATUS_TXMAC      BIT(2)
83#define   AR8216_PORT_STATUS_RXMAC      BIT(3)
84#define   AR8216_PORT_STATUS_TXFLOW     BIT(4)
85#define   AR8216_PORT_STATUS_RXFLOW     BIT(5)
86#define   AR8216_PORT_STATUS_DUPLEX     BIT(6)
87#define   AR8216_PORT_STATUS_LINK_UP    BIT(8)
88#define   AR8216_PORT_STATUS_LINK_AUTO  BIT(9)
89#define   AR8216_PORT_STATUS_LINK_PAUSE BIT(10)
90
91#define AR8216_REG_PORT_CTRL(_i)        (AR8216_PORT_OFFSET(_i) + 0x0004)
92
93/* port forwarding state */
94#define   AR8216_PORT_CTRL_STATE        BITS(0, 3)
95#define   AR8216_PORT_CTRL_STATE_S      0
96
97#define   AR8216_PORT_CTRL_LEARN_LOCK   BIT(7)
98
99/* egress 802.1q mode */
100#define   AR8216_PORT_CTRL_VLAN_MODE    BITS(8, 2)
101#define   AR8216_PORT_CTRL_VLAN_MODE_S  8
102
103#define   AR8216_PORT_CTRL_IGMP_SNOOP   BIT(10)
104#define   AR8216_PORT_CTRL_HEADER       BIT(11)
105#define   AR8216_PORT_CTRL_MAC_LOOP     BIT(12)
106#define   AR8216_PORT_CTRL_SINGLE_VLAN  BIT(13)
107#define   AR8216_PORT_CTRL_LEARN        BIT(14)
108#define   AR8216_PORT_CTRL_MIRROR_TX    BIT(16)
109#define   AR8216_PORT_CTRL_MIRROR_RX    BIT(17)
110
111#define AR8216_REG_PORT_VLAN(_i)        (AR8216_PORT_OFFSET(_i) + 0x0008)
112
113#define   AR8216_PORT_VLAN_DEFAULT_ID   BITS(0, 12)
114#define   AR8216_PORT_VLAN_DEFAULT_ID_S 0
115
116#define   AR8216_PORT_VLAN_DEST_PORTS   BITS(16, 9)
117#define   AR8216_PORT_VLAN_DEST_PORTS_S 16
118
119/* bit0 added to the priority field of egress frames */
120#define   AR8216_PORT_VLAN_TX_PRIO      BIT(27)
121
122/* port default priority */
123#define   AR8216_PORT_VLAN_PRIORITY     BITS(28, 2)
124#define   AR8216_PORT_VLAN_PRIORITY_S   28
125
126/* ingress 802.1q mode */
127#define   AR8216_PORT_VLAN_MODE         BITS(30, 2)
128#define   AR8216_PORT_VLAN_MODE_S       30
129
130#define AR8216_REG_PORT_RATE(_i)        (AR8216_PORT_OFFSET(_i) + 0x000c)
131#define AR8216_REG_PORT_PRIO(_i)        (AR8216_PORT_OFFSET(_i) + 0x0010)
132
133/* port speed */
134enum {
135        AR8216_PORT_SPEED_10M = 0,
136        AR8216_PORT_SPEED_100M = 1,
137        AR8216_PORT_SPEED_1000M = 2,
138        AR8216_PORT_SPEED_ERR = 3,
139};
140
141/* ingress 802.1q mode */
142enum {
143        AR8216_IN_PORT_ONLY = 0,
144        AR8216_IN_PORT_FALLBACK = 1,
145        AR8216_IN_VLAN_ONLY = 2,
146        AR8216_IN_SECURE = 3
147};
148
149/* egress 802.1q mode */
150enum {
151        AR8216_OUT_KEEP = 0,
152        AR8216_OUT_STRIP_VLAN = 1,
153        AR8216_OUT_ADD_VLAN = 2
154};
155
156/* port forwarding state */
157enum {
158        AR8216_PORT_STATE_DISABLED = 0,
159        AR8216_PORT_STATE_BLOCK = 1,
160        AR8216_PORT_STATE_LISTEN = 2,
161        AR8216_PORT_STATE_LEARN = 3,
162        AR8216_PORT_STATE_FORWARD = 4
163};
164
165#endif
Note: See TracBrowser for help on using the repository browser.