blob: 976255f57893c2c07c061093668cf98c668169be [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Holger Brunck3bf8b982012-03-21 13:42:46 +01002/*
3 * (C) Copyright 2012
4 * Holger Brunck, Keymile GmbH Hannover, <holger.brunck@keymile.com>
5 * Christian Herzig, Keymile AG Switzerland, <christian.herzig@keymile.com>
Holger Brunck3bf8b982012-03-21 13:42:46 +01006 */
7
8#ifndef __CONFIG_H
9#define __CONFIG_H
10
11/* KMBEC FPGA (PRIO) */
12#define CONFIG_SYS_KMBEC_FPGA_BASE 0xE8000000
13#define CONFIG_SYS_KMBEC_FPGA_SIZE 64
14
Mario Six790d8442018-03-28 14:38:20 +020015#define CONFIG_HOSTNAME "kmeter1"
Holger Brunck3bf8b982012-03-21 13:42:46 +010016#define CONFIG_KM_BOARD_NAME "kmeter1"
17#define CONFIG_KM_DEF_NETDEV "netdev=eth2\0"
Holger Brunck3bf8b982012-03-21 13:42:46 +010018
19/*
20 * High Level Configuration Options
21 */
22#define CONFIG_QE /* Has QE */
Holger Brunck3bf8b982012-03-21 13:42:46 +010023
Mario Sixcb791a82019-01-21 09:17:34 +010024/* include common defines/options for all Keymile boards */
25#include "km/keymile-common.h"
26#include "km/km-powerpc.h"
27
28/*
29 * System Clock Setup
30 */
31#define CONFIG_83XX_CLKIN 66000000
32#define CONFIG_SYS_CLK_FREQ 66000000
33#define CONFIG_83XX_PCICLK 66000000
34
35/*
36 * IMMR new address
37 */
38#define CONFIG_SYS_IMMR 0xE0000000
39
40/*
41 * Bus Arbitration Configuration Register (ACR)
42 */
43#define CONFIG_SYS_ACR_PIPE_DEP 3 /* pipeline depth 4 transactions */
44#define CONFIG_SYS_ACR_RPTCNT 3 /* 4 consecutive transactions */
45#define CONFIG_SYS_ACR_APARK 0 /* park bus to master (below) */
46#define CONFIG_SYS_ACR_PARKM 3 /* parking master = QuiccEngine */
47
48/*
49 * DDR Setup
50 */
51#define CONFIG_SYS_DDR_BASE 0x00000000 /* DDR is system memory */
52#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_BASE
53#define CONFIG_SYS_SDRAM_BASE2 (CONFIG_SYS_SDRAM_BASE + 0x10000000) /* +256M */
54
55#define CONFIG_SYS_DDR_SDRAM_BASE CONFIG_SYS_DDR_BASE
56#define CONFIG_SYS_DDR_SDRAM_CLK_CNTL (DDR_SDRAM_CLK_CNTL_SS_EN | \
57 DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05)
58
59#define CFG_83XX_DDR_USES_CS0
60
61/*
62 * Manually set up DDR parameters
63 */
64#define CONFIG_DDR_II
65#define CONFIG_SYS_DDR_SIZE 2048 /* MB */
66
67/*
68 * The reserved memory
69 */
70#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE /* start of monitor */
71#define CONFIG_SYS_FLASH_BASE 0xF0000000
72
73#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
74#define CONFIG_SYS_RAMBOOT
75#endif
76
77/* Reserve 768 kB for Mon */
78#define CONFIG_SYS_MONITOR_LEN (768 * 1024)
79
80/*
81 * Initial RAM Base Address Setup
82 */
83#define CONFIG_SYS_INIT_RAM_LOCK
84#define CONFIG_SYS_INIT_RAM_ADDR 0xE6000000 /* Initial RAM address */
85#define CONFIG_SYS_INIT_RAM_SIZE 0x1000 /* End of used area in RAM */
86#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_SIZE - \
87 GENERATED_GBL_DATA_SIZE)
88
89/*
90 * Init Local Bus Memory Controller:
91 *
92 * Bank Bus Machine PortSz Size Device
93 * ---- --- ------- ------ ----- ------
94 * 0 Local GPCM 16 bit 256MB FLASH
95 * 1 Local GPCM 8 bit 128MB GPIO/PIGGY
96 *
97 */
98/*
99 * FLASH on the Local Bus
100 */
101#define CONFIG_SYS_FLASH_SIZE 256 /* max FLASH size is 256M */
102
103#define CONFIG_SYS_LBLAWBAR0_PRELIM CONFIG_SYS_FLASH_BASE
104#define CONFIG_SYS_LBLAWAR0_PRELIM (LBLAWAR_EN | LBLAWAR_256MB)
105
106#define CONFIG_SYS_BR0_PRELIM (CONFIG_SYS_FLASH_BASE | \
107 BR_PS_16 | /* 16 bit port size */ \
108 BR_MS_GPCM | /* MSEL = GPCM */ \
109 BR_V)
110
111#define CONFIG_SYS_OR0_PRELIM (MEG_TO_AM(CONFIG_SYS_FLASH_SIZE) | \
112 OR_GPCM_CSNT | OR_GPCM_ACS_DIV2 | \
113 OR_GPCM_SCY_5 | \
114 OR_GPCM_TRLX_SET | OR_GPCM_EAD)
115
116#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max num of flash banks */
117#define CONFIG_SYS_MAX_FLASH_SECT 512 /* max num of sects on one chip */
118#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
119
120/*
121 * PRIO1/PIGGY on the local bus CS1
122 */
123/* Window base at flash base */
124#define CONFIG_SYS_LBLAWBAR1_PRELIM CONFIG_SYS_KMBEC_FPGA_BASE
125#define CONFIG_SYS_LBLAWAR1_PRELIM (LBLAWAR_EN | LBLAWAR_128MB)
126
127#define CONFIG_SYS_BR1_PRELIM (CONFIG_SYS_KMBEC_FPGA_BASE | \
128 BR_PS_8 | /* 8 bit port size */ \
129 BR_MS_GPCM | /* MSEL = GPCM */ \
130 BR_V)
131#define CONFIG_SYS_OR1_PRELIM (MEG_TO_AM(CONFIG_SYS_KMBEC_FPGA_SIZE) | \
132 OR_GPCM_CSNT | OR_GPCM_ACS_DIV2 | \
133 OR_GPCM_SCY_2 | \
134 OR_GPCM_TRLX_SET | OR_GPCM_EAD)
135
136/*
137 * Serial Port
138 */
Mario Six92e20d92019-01-21 09:17:35 +0100139#define CONFIG_CONS_INDEX 1
Mario Sixcb791a82019-01-21 09:17:34 +0100140#define CONFIG_SYS_NS16550_SERIAL
141#define CONFIG_SYS_NS16550_REG_SIZE 1
142#define CONFIG_SYS_NS16550_CLK get_bus_freq(0)
143
144#define CONFIG_SYS_NS16550_COM1 (CONFIG_SYS_IMMR+0x4500)
145#define CONFIG_SYS_NS16550_COM2 (CONFIG_SYS_IMMR+0x4600)
146
147/*
148 * QE UEC ethernet configuration
149 */
150#define CONFIG_UEC_ETH
151#define CONFIG_ETHPRIME "UEC0"
152
Mario Sixcb791a82019-01-21 09:17:34 +0100153#define CONFIG_UEC_ETH1 /* GETH1 */
154#define UEC_VERBOSE_DEBUG 1
Mario Sixcb791a82019-01-21 09:17:34 +0100155
156#ifdef CONFIG_UEC_ETH1
157#define CONFIG_SYS_UEC1_UCC_NUM 3 /* UCC4 */
158#define CONFIG_SYS_UEC1_RX_CLK QE_CLK_NONE /* not used in RMII Mode */
159#define CONFIG_SYS_UEC1_TX_CLK QE_CLK17
160#define CONFIG_SYS_UEC1_ETH_TYPE FAST_ETH
161#define CONFIG_SYS_UEC1_PHY_ADDR 0
162#define CONFIG_SYS_UEC1_INTERFACE_TYPE PHY_INTERFACE_MODE_RMII
163#define CONFIG_SYS_UEC1_INTERFACE_SPEED 100
164#endif
165
166/*
167 * Environment
168 */
169
170#ifndef CONFIG_SYS_RAMBOOT
171#ifndef CONFIG_ENV_ADDR
172#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE + \
173 CONFIG_SYS_MONITOR_LEN)
174#endif
175#define CONFIG_ENV_SECT_SIZE 0x20000 /* 128K(one sector) for env */
176#ifndef CONFIG_ENV_OFFSET
177#define CONFIG_ENV_OFFSET (CONFIG_SYS_MONITOR_LEN)
178#endif
179
180/* Address and size of Redundant Environment Sector */
181#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + \
182 CONFIG_ENV_SECT_SIZE)
183#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
184
185#else /* CFG_SYS_RAMBOOT */
186#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - 0x1000)
187#define CONFIG_ENV_SIZE 0x2000
188#endif /* CFG_SYS_RAMBOOT */
189
190/* I2C */
191#define CONFIG_SYS_I2C
192#define CONFIG_SYS_NUM_I2C_BUSES 4
193#define CONFIG_SYS_I2C_MAX_HOPS 1
194#define CONFIG_SYS_I2C_FSL
195#define CONFIG_SYS_FSL_I2C_SPEED 200000
196#define CONFIG_SYS_FSL_I2C_SLAVE 0x7F
197#define CONFIG_SYS_FSL_I2C_OFFSET 0x3000
198#define CONFIG_SYS_I2C_OFFSET 0x3000
199#define CONFIG_SYS_FSL_I2C2_SPEED 200000
200#define CONFIG_SYS_FSL_I2C2_SLAVE 0x7F
201#define CONFIG_SYS_FSL_I2C2_OFFSET 0x3100
202#define CONFIG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP} }, \
203 {0, {{I2C_MUX_PCA9547, 0x70, 2} } }, \
204 {0, {{I2C_MUX_PCA9547, 0x70, 1} } }, \
205 {1, {I2C_NULL_HOP} } }
206
207#define CONFIG_KM_IVM_BUS 2 /* I2C2 (Mux-Port 1)*/
208
209#if defined(CONFIG_CMD_NAND)
210#define CONFIG_NAND_KMETER1
211#define CONFIG_SYS_MAX_NAND_DEVICE 1
212#define CONFIG_SYS_NAND_BASE CONFIG_SYS_KMBEC_FPGA_BASE
213#endif
214
215/*
216 * For booting Linux, the board info and command line data
217 * have to be in the first 8 MB of memory, since this is
218 * the maximum mapped by the Linux kernel during initialization.
219 */
220#define CONFIG_SYS_BOOTMAPSZ (8 << 20)
221
222/*
223 * Core HID Setup
224 */
225#define CONFIG_SYS_HID0_INIT 0x000000000
226#define CONFIG_SYS_HID0_FINAL (HID0_ENABLE_MACHINE_CHECK | \
227 HID0_ENABLE_INSTRUCTION_CACHE)
228#define CONFIG_SYS_HID2 HID2_HBE
229
230/*
231 * MMU Setup
232 */
233
234#define CONFIG_HIGH_BATS 1 /* High BATs supported */
235
236/* DDR: cache cacheable */
237#define CONFIG_SYS_IBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | \
238 BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
239#define CONFIG_SYS_IBAT0U (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | \
240 BATU_VS | BATU_VP)
241#define CONFIG_SYS_DBAT0L CONFIG_SYS_IBAT0L
242#define CONFIG_SYS_DBAT0U CONFIG_SYS_IBAT0U
243
244/* IMMRBAR & PCI IO: cache-inhibit and guarded */
245#define CONFIG_SYS_IBAT1L (CONFIG_SYS_IMMR | BATL_PP_RW | \
246 BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
247#define CONFIG_SYS_IBAT1U (CONFIG_SYS_IMMR | BATU_BL_4M | BATU_VS \
248 | BATU_VP)
249#define CONFIG_SYS_DBAT1L CONFIG_SYS_IBAT1L
250#define CONFIG_SYS_DBAT1U CONFIG_SYS_IBAT1U
251
252/* PRIO1, PIGGY: icache cacheable, but dcache-inhibit and guarded */
253#define CONFIG_SYS_IBAT2L (CONFIG_SYS_KMBEC_FPGA_BASE | BATL_PP_RW | \
254 BATL_MEMCOHERENCE)
255#define CONFIG_SYS_IBAT2U (CONFIG_SYS_KMBEC_FPGA_BASE | BATU_BL_128M | \
256 BATU_VS | BATU_VP)
257#define CONFIG_SYS_DBAT2L (CONFIG_SYS_KMBEC_FPGA_BASE | BATL_PP_RW | \
258 BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
259#define CONFIG_SYS_DBAT2U CONFIG_SYS_IBAT2U
260
261/* FLASH: icache cacheable, but dcache-inhibit and guarded */
262#define CONFIG_SYS_IBAT3L (CONFIG_SYS_FLASH_BASE | BATL_PP_RW | \
263 BATL_MEMCOHERENCE)
264#define CONFIG_SYS_IBAT3U (CONFIG_SYS_FLASH_BASE | BATU_BL_256M | \
265 BATU_VS | BATU_VP)
266#define CONFIG_SYS_DBAT3L (CONFIG_SYS_FLASH_BASE | BATL_PP_RW | \
267 BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
268#define CONFIG_SYS_DBAT3U CONFIG_SYS_IBAT3U
269
270/* Stack in dcache: cacheable, no memory coherence */
271#define CONFIG_SYS_IBAT4L (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_RW)
272#define CONFIG_SYS_IBAT4U (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | \
273 BATU_VS | BATU_VP)
274#define CONFIG_SYS_DBAT4L CONFIG_SYS_IBAT4L
275#define CONFIG_SYS_DBAT4U CONFIG_SYS_IBAT4U
276
277/*
278 * Internal Definitions
279 */
280#define BOOTFLASH_START 0xF0000000
281
282#define CONFIG_KM_CONSOLE_TTY "ttyS0"
283
284/*
285 * Environment Configuration
286 */
287#define CONFIG_ENV_OVERWRITE
288#ifndef CONFIG_KM_DEF_ENV /* if not set by keymile-common.h */
289#define CONFIG_KM_DEF_ENV "km-common=empty\0"
290#endif
291
292#ifndef CONFIG_KM_DEF_ARCH
293#define CONFIG_KM_DEF_ARCH "arch=ppc_82xx\0"
294#endif
295
296#define CONFIG_EXTRA_ENV_SETTINGS \
297 CONFIG_KM_DEF_ENV \
298 CONFIG_KM_DEF_ARCH \
299 "newenv=" \
300 "prot off "__stringify(CONFIG_ENV_ADDR)" +0x40000 && " \
301 "era "__stringify(CONFIG_ENV_ADDR)" +0x40000\0" \
302 "unlock=yes\0" \
303 ""
304
305#if defined(CONFIG_UEC_ETH)
306#define CONFIG_HAS_ETH0
307#endif
Holger Brunck3bf8b982012-03-21 13:42:46 +0100308
309/*
310 * System IO Setup
311 */
312#define CONFIG_SYS_SICRH (SICRH_UC1EOBI | SICRH_UC2E1OBI)
313
314/*
315 * Hardware Reset Configuration Word
316 */
317#define CONFIG_SYS_HRCW_LOW (\
318 HRCWL_CSB_TO_CLKIN_4X1 | \
319 HRCWL_CORE_TO_CSB_2X1 | \
320 HRCWL_CE_PLL_VCO_DIV_2 | \
321 HRCWL_CE_TO_PLL_1X6)
322
323#define CONFIG_SYS_HRCW_HIGH (\
324 HRCWH_CORE_ENABLE | \
325 HRCWH_FROM_0X00000100 | \
326 HRCWH_BOOTSEQ_DISABLE | \
327 HRCWH_SW_WATCHDOG_DISABLE | \
328 HRCWH_ROM_LOC_LOCAL_16BIT | \
329 HRCWH_BIG_ENDIAN | \
330 HRCWH_LALE_EARLY | \
331 HRCWH_LDP_CLEAR)
332
333/**
334 * DDR RAM settings
335 */
336#define CONFIG_SYS_DDR_SDRAM_CFG (\
337 SDRAM_CFG_SDRAM_TYPE_DDR2 | \
338 SDRAM_CFG_SREN | \
339 SDRAM_CFG_HSE)
340
341#define CONFIG_SYS_DDR_SDRAM_CFG2 0x00401000
342
Holger Brunck3bf8b982012-03-21 13:42:46 +0100343#define CONFIG_SYS_DDR_CS0_CONFIG (CSCONFIG_EN | CSCONFIG_AP | \
344 CSCONFIG_ROW_BIT_13 | \
345 CSCONFIG_COL_BIT_10 | \
Valentin Longchamp9c36b472015-11-17 10:53:33 +0100346 CSCONFIG_ODT_WR_ONLY_CURRENT)
Holger Brunck3bf8b982012-03-21 13:42:46 +0100347
348#define CONFIG_SYS_DDR_CLK_CNTL (\
349 DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05)
350
351#define CONFIG_SYS_DDR_INTERVAL (\
352 (0x080 << SDRAM_INTERVAL_BSTOPRE_SHIFT) | \
353 (0x203 << SDRAM_INTERVAL_REFINT_SHIFT))
354
355#define CONFIG_SYS_DDR_CS0_BNDS 0x0000007f
356
357#define CONFIG_SYS_DDRCDR (\
358 DDRCDR_EN | \
359 DDRCDR_Q_DRN)
360#define CONFIG_SYS_DDR_MODE 0x47860452
361#define CONFIG_SYS_DDR_MODE2 0x8080c000
362
363#define CONFIG_SYS_DDR_TIMING_0 (\
364 (2 << TIMING_CFG0_MRS_CYC_SHIFT) | \
365 (8 << TIMING_CFG0_ODT_PD_EXIT_SHIFT) | \
366 (6 << TIMING_CFG0_PRE_PD_EXIT_SHIFT) | \
367 (2 << TIMING_CFG0_ACT_PD_EXIT_SHIFT) | \
368 (0 << TIMING_CFG0_WWT_SHIFT) | \
369 (0 << TIMING_CFG0_RRT_SHIFT) | \
370 (0 << TIMING_CFG0_WRT_SHIFT) | \
371 (0 << TIMING_CFG0_RWT_SHIFT))
372
373#define CONFIG_SYS_DDR_TIMING_1 ((TIMING_CFG1_CASLAT_50) | \
374 (2 << TIMING_CFG1_WRTORD_SHIFT) | \
375 (2 << TIMING_CFG1_ACTTOACT_SHIFT) | \
376 (3 << TIMING_CFG1_WRREC_SHIFT) | \
377 (7 << TIMING_CFG1_REFREC_SHIFT) | \
378 (3 << TIMING_CFG1_ACTTORW_SHIFT) | \
379 (8 << TIMING_CFG1_ACTTOPRE_SHIFT) | \
380 (3 << TIMING_CFG1_PRETOACT_SHIFT))
381
382#define CONFIG_SYS_DDR_TIMING_2 (\
383 (0xa << TIMING_CFG2_FOUR_ACT_SHIFT) | \
384 (3 << TIMING_CFG2_CKE_PLS_SHIFT) | \
385 (2 << TIMING_CFG2_WR_DATA_DELAY_SHIFT) | \
386 (2 << TIMING_CFG2_RD_TO_PRE_SHIFT) | \
387 (4 << TIMING_CFG2_WR_LAT_DELAY_SHIFT) | \
388 (5 << TIMING_CFG2_CPO_SHIFT) | \
389 (0 << TIMING_CFG2_ADD_LAT_SHIFT))
390
391#define CONFIG_SYS_DDR_TIMING_3 0x00000000
392
393/* EEprom support */
394#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
395
396/*
397 * Local Bus Configuration & Clock Setup
398 */
399#define CONFIG_SYS_LCRR_DBYP LCRR_DBYP
400#define CONFIG_SYS_LCRR_EADC LCRR_EADC_2
401#define CONFIG_SYS_LCRR_CLKDIV LCRR_CLKDIV_4
402
403/*
404 * PAXE on the local bus CS3
405 */
406#define CONFIG_SYS_PAXE_BASE 0xA0000000
407#define CONFIG_SYS_PAXE_SIZE 256
408
409#define CONFIG_SYS_LBLAWBAR3_PRELIM CONFIG_SYS_PAXE_BASE
410
411#define CONFIG_SYS_LBLAWAR3_PRELIM 0x8000001C /* 512MB window size */
412
413#define CONFIG_SYS_BR3_PRELIM (\
414 CONFIG_SYS_PAXE_BASE | \
415 (1 << BR_PS_SHIFT) | \
416 BR_V)
417
418#define CONFIG_SYS_OR3_PRELIM (\
419 MEG_TO_AM(CONFIG_SYS_PAXE_SIZE) | \
420 OR_GPCM_CSNT | \
421 OR_GPCM_ACS_DIV2 | \
422 OR_GPCM_SCY_2 | \
423 OR_GPCM_TRLX | \
424 OR_GPCM_EAD)
425
Holger Brunck3bf8b982012-03-21 13:42:46 +0100426/*
427 * MMU Setup
428 */
429
430/* PAXE: icache cacheable, but dcache-inhibit and guarded */
431#define CONFIG_SYS_IBAT5L (\
432 CONFIG_SYS_PAXE_BASE | \
433 BATL_PP_10 | \
434 BATL_MEMCOHERENCE)
435
436#define CONFIG_SYS_IBAT5U (\
437 CONFIG_SYS_PAXE_BASE | \
438 BATU_BL_256M | \
439 BATU_VS | \
440 BATU_VP)
441
442#define CONFIG_SYS_DBAT5L (\
443 CONFIG_SYS_PAXE_BASE | \
444 BATL_PP_10 | \
445 BATL_CACHEINHIBIT | \
446 BATL_GUARDEDSTORAGE)
447
448#define CONFIG_SYS_DBAT5U CONFIG_SYS_IBAT5U
Holger Brunck3bf8b982012-03-21 13:42:46 +0100449#define CONFIG_SYS_IBAT6L (0)
450#define CONFIG_SYS_IBAT6U (0)
451#define CONFIG_SYS_IBAT7L (0)
452#define CONFIG_SYS_IBAT7U (0)
453#define CONFIG_SYS_DBAT6L CONFIG_SYS_IBAT6L
454#define CONFIG_SYS_DBAT6U CONFIG_SYS_IBAT6U
Holger Brunck3bf8b982012-03-21 13:42:46 +0100455#define CONFIG_SYS_DBAT7L CONFIG_SYS_IBAT7L
456#define CONFIG_SYS_DBAT7U CONFIG_SYS_IBAT7U
457
458#endif /* CONFIG */