blob: 0a9b036526b1dbfb6bc963c964c279341280e714 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
/*
* Definitions for Artesyn Katana750i/3750 board.
*
* Author: Tim Montgomery <timm@artesyncp.com>
* Maintained by: Mark A. Greer <mgreer@mvista.com>
*
* Based on code done by Rabeeh Khoury - rabeeh@galileo.co.il
* Based on code done by Mark A. Greer <mgreer@mvista.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
/*
* The MV64360 has 2 PCI buses each with 1 window from the CPU bus to
* PCI I/O space and 4 windows from the CPU bus to PCI MEM space.
* We'll only use one PCI MEM window on each PCI bus.
*
* This is the CPU physical memory map (windows must be at least 64 KB and start
* on a boundary that is a multiple of the window size):
*
* 0xff800000-0xffffffff - Boot window
* 0xf8400000-0xf843ffff - Internal SRAM
* 0xf8200000-0xf83fffff - CPLD
* 0xf8100000-0xf810ffff - MV64360 Registers (CONFIG_MV64X60_NEW_BASE)
* 0xf8000000-0xf80fffff - Socketed FLASH
* 0xe0000000-0xefffffff - Soldered FLASH
* 0xc0000000-0xc3ffffff - PCI I/O (second hose)
* 0x80000000-0xbfffffff - PCI MEM (second hose)
*/
#ifndef __PPC_PLATFORMS_KATANA_H
#define __PPC_PLATFORMS_KATANA_H
/* CPU Physical Memory Map setup. */
#define KATANA_BOOT_WINDOW_BASE 0xff800000
#define KATANA_BOOT_WINDOW_SIZE 0x00800000 /* 8 MB */
#define KATANA_INTERNAL_SRAM_BASE 0xf8400000
#define KATANA_CPLD_BASE 0xf8200000
#define KATANA_CPLD_SIZE 0x00200000 /* 2 MB */
#define KATANA_SOCKET_BASE 0xf8000000
#define KATANA_SOCKETED_FLASH_SIZE 0x00100000 /* 1 MB */
#define KATANA_SOLDERED_FLASH_BASE 0xe0000000
#define KATANA_SOLDERED_FLASH_SIZE 0x10000000 /* 256 MB */
#define KATANA_PCI1_MEM_START_PROC_ADDR 0x80000000
#define KATANA_PCI1_MEM_START_PCI_HI_ADDR 0x00000000
#define KATANA_PCI1_MEM_START_PCI_LO_ADDR 0x80000000
#define KATANA_PCI1_MEM_SIZE 0x40000000 /* 1 GB */
#define KATANA_PCI1_IO_START_PROC_ADDR 0xc0000000
#define KATANA_PCI1_IO_START_PCI_ADDR 0x00000000
#define KATANA_PCI1_IO_SIZE 0x04000000 /* 64 MB */
/* Board-specific IRQ info */
#define KATANA_PCI_INTA_IRQ_3750 (64+8)
#define KATANA_PCI_INTB_IRQ_3750 (64+9)
#define KATANA_PCI_INTC_IRQ_3750 (64+10)
#define KATANA_PCI_INTA_IRQ_750i (64+8)
#define KATANA_PCI_INTB_IRQ_750i (64+9)
#define KATANA_PCI_INTC_IRQ_750i (64+10)
#define KATANA_PCI_INTD_IRQ_750i (64+14)
#define KATANA_CPLD_RST_EVENT 0x00000000
#define KATANA_CPLD_RST_CMD 0x00001000
#define KATANA_CPLD_PCI_ERR_INT_EN 0x00002000
#define KATANA_CPLD_PCI_ERR_INT_PEND 0x00003000
#define KATANA_CPLD_PRODUCT_ID 0x00004000
#define KATANA_CPLD_EREADY 0x00005000
#define KATANA_CPLD_HARDWARE_VER 0x00007000
#define KATANA_CPLD_PLD_VER 0x00008000
#define KATANA_CPLD_BD_CFG_0 0x00009000
#define KATANA_CPLD_BD_CFG_1 0x0000a000
#define KATANA_CPLD_BD_CFG_3 0x0000c000
#define KATANA_CPLD_LED 0x0000d000
#define KATANA_CPLD_RESET_OUT 0x0000e000
#define KATANA_CPLD_RST_EVENT_INITACT 0x80
#define KATANA_CPLD_RST_EVENT_SW 0x40
#define KATANA_CPLD_RST_EVENT_WD 0x20
#define KATANA_CPLD_RST_EVENT_COPS 0x10
#define KATANA_CPLD_RST_EVENT_COPH 0x08
#define KATANA_CPLD_RST_EVENT_CPCI 0x02
#define KATANA_CPLD_RST_EVENT_FP 0x01
#define KATANA_CPLD_RST_CMD_SCL 0x80
#define KATANA_CPLD_RST_CMD_SDA 0x40
#define KATANA_CPLD_RST_CMD_I2C 0x10
#define KATANA_CPLD_RST_CMD_FR 0x08
#define KATANA_CPLD_RST_CMD_SR 0x04
#define KATANA_CPLD_RST_CMD_HR 0x01
#define KATANA_CPLD_BD_CFG_0_SYSCLK_MASK 0xc0
#define KATANA_CPLD_BD_CFG_0_SYSCLK_200 0x00
#define KATANA_CPLD_BD_CFG_0_SYSCLK_166 0x80
#define KATANA_CPLD_BD_CFG_0_SYSCLK_133 0xc0
#define KATANA_CPLD_BD_CFG_0_SYSCLK_100 0x40
#define KATANA_CPLD_BD_CFG_1_FL_BANK_MASK 0x03
#define KATANA_CPLD_BD_CFG_1_FL_BANK_16MB 0x00
#define KATANA_CPLD_BD_CFG_1_FL_BANK_32MB 0x01
#define KATANA_CPLD_BD_CFG_1_FL_BANK_64MB 0x02
#define KATANA_CPLD_BD_CFG_1_FL_BANK_128MB 0x03
#define KATANA_CPLD_BD_CFG_1_FL_NUM_BANKS_MASK 0x04
#define KATANA_CPLD_BD_CFG_1_FL_NUM_BANKS_ONE 0x00
#define KATANA_CPLD_BD_CFG_1_FL_NUM_BANKS_TWO 0x04
#define KATANA_CPLD_BD_CFG_3_MONARCH 0x04
#define KATANA_CPLD_RESET_OUT_PORTSEL 0x80
#define KATANA_CPLD_RESET_OUT_WD 0x20
#define KATANA_CPLD_RESET_OUT_COPH 0x08
#define KATANA_CPLD_RESET_OUT_PCI_RST_PCI 0x02
#define KATANA_CPLD_RESET_OUT_PCI_RST_FP 0x01
#define KATANA_MBOX_RESET_REQUEST 0xC83A
#define KATANA_MBOX_RESET_ACK 0xE430
#define KATANA_MBOX_RESET_DONE 0x32E5
#define HSL_PLD_BASE 0x00010000
#define HSL_PLD_J4SGA_REG_OFF 0
#define HSL_PLD_J4GA_REG_OFF 1
#define HSL_PLD_J2GA_REG_OFF 2
#define HSL_PLD_HOT_SWAP_OFF 6
#define HSL_PLD_HOT_SWAP_LED_BIT 0x1
#define GA_MASK 0x1f
#define HSL_PLD_SIZE 0x1000
#define K3750_GPP_GEO_ADDR_PINS 0xf8000000
#define K3750_GPP_GEO_ADDR_SHIFT 27
#define K3750_GPP_EVENT_PROC_0 (1 << 21)
#define K3750_GPP_EVENT_PROC_1_2 (1 << 2)
#define PCI_VENDOR_ID_ARTESYN 0x1223
#define PCI_DEVICE_ID_KATANA_3750_PROC0 0x0041
#define PCI_DEVICE_ID_KATANA_3750_PROC1 0x0042
#define PCI_DEVICE_ID_KATANA_3750_PROC2 0x0043
#define COPROC_MEM_FUNCTION 0
#define COPROC_MEM_BAR 0
#define COPROC_REGS_FUNCTION 0
#define COPROC_REGS_BAR 4
#define COPROC_FLASH_FUNCTION 2
#define COPROC_FLASH_BAR 4
#define KATANA_IPMB_LOCAL_I2C_ADDR 0x08
#define KATANA_DEFAULT_BAUD 9600
#define KATANA_MPSC_CLK_SRC 8 /* TCLK */
#define KATANA_MTD_MONITOR_SIZE (1 << 20) /* 1 MB */
#define KATANA_ETH0_PHY_ADDR 12
#define KATANA_ETH1_PHY_ADDR 11
#define KATANA_ETH2_PHY_ADDR 4
#define KATANA_PRODUCT_ID_3750 0x01
#define KATANA_PRODUCT_ID_750i 0x02
#define KATANA_PRODUCT_ID_752i 0x04
#define KATANA_ETH_TX_QUEUE_SIZE 800
#define KATANA_ETH_RX_QUEUE_SIZE 400
#define KATANA_ETH_PORT_CONFIG_VALUE \
ETH_UNICAST_NORMAL_MODE | \
ETH_DEFAULT_RX_QUEUE_0 | \
ETH_DEFAULT_RX_ARP_QUEUE_0 | \
ETH_RECEIVE_BC_IF_NOT_IP_OR_ARP | \
ETH_RECEIVE_BC_IF_IP | \
ETH_RECEIVE_BC_IF_ARP | \
ETH_CAPTURE_TCP_FRAMES_DIS | \
ETH_CAPTURE_UDP_FRAMES_DIS | \
ETH_DEFAULT_RX_TCP_QUEUE_0 | \
ETH_DEFAULT_RX_UDP_QUEUE_0 | \
ETH_DEFAULT_RX_BPDU_QUEUE_0
#define KATANA_ETH_PORT_CONFIG_EXTEND_VALUE \
ETH_SPAN_BPDU_PACKETS_AS_NORMAL | \
ETH_PARTITION_DISABLE
#define GT_ETH_IPG_INT_RX(value) \
((value & 0x3fff) << 8)
#define KATANA_ETH_PORT_SDMA_CONFIG_VALUE \
ETH_RX_BURST_SIZE_4_64BIT | \
GT_ETH_IPG_INT_RX(0) | \
ETH_TX_BURST_SIZE_4_64BIT
#define KATANA_ETH_PORT_SERIAL_CONTROL_VALUE \
ETH_FORCE_LINK_PASS | \
ETH_ENABLE_AUTO_NEG_FOR_DUPLX | \
ETH_DISABLE_AUTO_NEG_FOR_FLOW_CTRL | \
ETH_ADV_SYMMETRIC_FLOW_CTRL | \
ETH_FORCE_FC_MODE_NO_PAUSE_DIS_TX | \
ETH_FORCE_BP_MODE_NO_JAM | \
BIT9 | \
ETH_DO_NOT_FORCE_LINK_FAIL | \
ETH_RETRANSMIT_16_ATTEMPTS | \
ETH_ENABLE_AUTO_NEG_SPEED_GMII | \
ETH_DTE_ADV_0 | \
ETH_DISABLE_AUTO_NEG_BYPASS | \
ETH_AUTO_NEG_NO_CHANGE | \
ETH_MAX_RX_PACKET_9700BYTE | \
ETH_CLR_EXT_LOOPBACK | \
ETH_SET_FULL_DUPLEX_MODE | \
ETH_ENABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX
#ifndef __ASSEMBLY__
typedef enum {
KATANA_ID_3750,
KATANA_ID_750I,
KATANA_ID_752I,
KATANA_ID_MAX
} katana_id_t;
#endif
static inline u32
katana_bus_freq(void __iomem *cpld_base)
{
u8 bd_cfg_0;
bd_cfg_0 = in_8(cpld_base + KATANA_CPLD_BD_CFG_0);
switch (bd_cfg_0 & KATANA_CPLD_BD_CFG_0_SYSCLK_MASK) {
case KATANA_CPLD_BD_CFG_0_SYSCLK_200:
return 200000000;
break;
case KATANA_CPLD_BD_CFG_0_SYSCLK_166:
return 166666666;
break;
case KATANA_CPLD_BD_CFG_0_SYSCLK_133:
return 133333333;
break;
case KATANA_CPLD_BD_CFG_0_SYSCLK_100:
return 100000000;
break;
default:
return 133333333;
break;
}
}
#endif /* __PPC_PLATFORMS_KATANA_H */
|