strip the kernel version suffix from target directories, except for brcm-2.4 (the...
[openwrt/svn-archive/archive.git] / target / linux / amazon / files / include / asm-mips / amazon / amazon_sw.h
1 #ifndef AMAZON_SW_H
2 #define AMAZON_SW_H
3 #define SET_ETH_SPEED_AUTO SIOCDEVPRIVATE
4 #define SET_ETH_SPEED_10 SIOCDEVPRIVATE+1
5 #define SET_ETH_SPEED_100 SIOCDEVPRIVATE+2
6 #define SET_ETH_DUPLEX_AUTO SIOCDEVPRIVATE+3
7 #define SET_ETH_DUPLEX_HALF SIOCDEVPRIVATE+4
8 #define SET_ETH_DUPLEX_FULL SIOCDEVPRIVATE+5
9 #define SET_ETH_REG SIOCDEVPRIVATE+6
10 #define VLAN_TOOLS SIOCDEVPRIVATE+7
11 #define MAC_TABLE_TOOLS SIOCDEVPRIVATE+8
12
13
14 /*===mac table commands==*/
15 #define RESET_MAC_TABLE 0
16 #define READ_MAC_ENTRY 1
17 #define WRITE_MAC_ENTRY 2
18 #define ADD_MAC_ENTRY 3
19
20 /*====vlan commands===*/
21
22 #define CHANGE_VLAN_CTRL 0
23 #define READ_VLAN_ENTRY 1
24 #define UPDATE_VLAN_ENTRY 2
25 #define CLEAR_VLAN_ENTRY 3
26 #define RESET_VLAN_TABLE 4
27 #define ADD_VLAN_ENTRY 5
28
29 /*
30 ** MDIO constants.
31 */
32
33 #define MDIO_BASE_STATUS_REG 0x1
34 #define MDIO_BASE_CONTROL_REG 0x0
35 #define MDIO_PHY_ID_HIGH_REG 0x2
36 #define MDIO_PHY_ID_LOW_REG 0x3
37 #define MDIO_BC_NEGOTIATE 0x0200
38 #define MDIO_BC_FULL_DUPLEX_MASK 0x0100
39 #define MDIO_BC_AUTO_NEG_MASK 0x1000
40 #define MDIO_BC_SPEED_SELECT_MASK 0x2000
41 #define MDIO_STATUS_100_FD 0x4000
42 #define MDIO_STATUS_100_HD 0x2000
43 #define MDIO_STATUS_10_FD 0x1000
44 #define MDIO_STATUS_10_HD 0x0800
45 #define MDIO_STATUS_SPEED_DUPLEX_MASK 0x7800
46 #define MDIO_ADVERTISMENT_REG 0x4
47 #define MDIO_ADVERT_100_FD 0x100
48 #define MDIO_ADVERT_100_HD 0x080
49 #define MDIO_ADVERT_10_FD 0x040
50 #define MDIO_ADVERT_10_HD 0x020
51 #define MDIO_LINK_UP_MASK 0x4
52 #define MDIO_START 0x1
53 #define MDIO_READ 0x2
54 #define MDIO_WRITE 0x1
55 #define MDIO_PREAMBLE 0xfffffffful
56
57 #define PHY_RESET 0x8000
58 #define AUTO_NEGOTIATION_ENABLE 0X1000
59 #define AUTO_NEGOTIATION_COMPLETE 0x20
60 #define RESTART_AUTO_NEGOTIATION 0X200
61
62
63 #define PHY0_ADDR 0
64 #define PHY1_ADDR 1
65 #define P1M 0
66
67 #define AMAZON_SW_REG32(reg_num) *((volatile u32*)(reg_num))
68
69 #define OK 0;
70
71 #ifdef CONFIG_CPU_LITTLE_ENDIAN
72 typedef struct mac_table_entry{
73 u64 mac_address:48;
74 u64 p0:1;
75 u64 p1:1;
76 u64 p2:1;
77 u64 cr:1;
78 u64 ma_st:3;
79 u64 res:9;
80 }_mac_table_entry;
81
82 typedef struct IFX_Switch_VLanTableEntry{
83 u32 vlan_id:12;
84 u32 mp0:1;
85 u32 mp1:1;
86 u32 mp2:1;
87 u32 v:1;
88 u32 res:16;
89 }_IFX_Switch_VLanTableEntry;
90
91 typedef struct mac_table_req{
92 int cmd;
93 int index;
94 u32 data;
95 u64 entry_value;
96 }_mac_table_req;
97
98 #else //not CONFIG_CPU_LITTLE_ENDIAN
99 typedef struct mac_table_entry{
100 u64 mac_address:48;
101 u64 p0:1;
102 u64 p1:1;
103 u64 p2:1;
104 u64 cr:1;
105 u64 ma_st:3;
106 u64 res:9;
107 }_mac_table_entry;
108
109 typedef struct IFX_Switch_VLanTableEntry{
110 u32 vlan_id:12;
111 u32 mp0:1;
112 u32 mp1:1;
113 u32 mp2:1;
114 u32 v:1;
115 u32 res:16;
116 }_IFX_Switch_VLanTableEntry;
117
118
119 typedef struct mac_table_req{
120 int cmd;
121 int index;
122 u32 data;
123 u64 entry_value;
124 }_mac_table_req;
125
126 #endif //CONFIG_CPU_LITTLE_ENDIAN
127
128
129
130 typedef struct vlan_req{
131 int cmd;
132 int index;
133 u32 data;
134 u32 entry_value;
135 }_vlan_req;
136
137 typedef struct data_req{
138 int index;
139 u32 value;
140 }_data_req;
141
142 enum duplex
143 {
144 half,
145 full,
146 autoneg
147 };
148
149 struct switch_priv {
150 struct net_device_stats stats;
151 int rx_packetlen;
152 u8 *rx_packetdata;
153 int rx_status;
154 int tx_packetlen;
155 #ifdef CONFIG_NET_HW_FLOWCONTROL
156 int fc_bit;
157 #endif //CONFIG_NET_HW_FLOWCONTROL
158 u8 *tx_packetdata;
159 int tx_status;
160 struct dma_device_info *dma_device;
161 struct sk_buff *skb;
162 spinlock_t lock;
163 int mdio_phy_addr;
164 int current_speed;
165 int current_speed_selection;
166 int rx_queue_len;
167 int full_duplex;
168 enum duplex current_duplex;
169 };
170
171 #endif //AMAZON_SW_H
172
173
174
175
176