10f2b721cSHolger Brunck /* 20f2b721cSHolger Brunck * (C) Copyright 2012 30f2b721cSHolger Brunck * Holger Brunck, Keymile GmbH Hannover, <holger.brunck@keymile.com> 40f2b721cSHolger Brunck * Christian Herzig, Keymile AG Switzerland, <christian.herzig@keymile.com> 50f2b721cSHolger Brunck * 61a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 70f2b721cSHolger Brunck */ 80f2b721cSHolger Brunck 90f2b721cSHolger Brunck #ifndef __CONFIG_H 100f2b721cSHolger Brunck #define __CONFIG_H 110f2b721cSHolger Brunck 120f2b721cSHolger Brunck /* KMBEC FPGA (PRIO) */ 130f2b721cSHolger Brunck #define CONFIG_SYS_KMBEC_FPGA_BASE 0xE8000000 140f2b721cSHolger Brunck #define CONFIG_SYS_KMBEC_FPGA_SIZE 64 150f2b721cSHolger Brunck 160f2b721cSHolger Brunck #if defined CONFIG_KMETER1 170f2b721cSHolger Brunck #define CONFIG_HOSTNAME kmeter1 180f2b721cSHolger Brunck #define CONFIG_KM_BOARD_NAME "kmeter1" 190f2b721cSHolger Brunck #define CONFIG_KM_DEF_NETDEV "netdev=eth2\0" 200f2b721cSHolger Brunck #elif defined CONFIG_KMCOGE5NE 210f2b721cSHolger Brunck #define CONFIG_HOSTNAME kmcoge5ne 220f2b721cSHolger Brunck #define CONFIG_KM_BOARD_NAME "kmcoge5ne" 230f2b721cSHolger Brunck #define CONFIG_KM_DEF_NETDEV "netdev=eth1\0" 24be7576faSHolger Brunck #define CONFIG_NAND_ECC_BCH 250f2b721cSHolger Brunck #define CONFIG_NAND_KMETER1 260f2b721cSHolger Brunck #define CONFIG_SYS_MAX_NAND_DEVICE 1 270f2b721cSHolger Brunck #define NAND_MAX_CHIPS 1 280f2b721cSHolger Brunck #define CONFIG_SYS_NAND_BASE CONFIG_SYS_KMBEC_FPGA_BASE /* PRIO_BASE_ADDRESS */ 290f2b721cSHolger Brunck 300f2b721cSHolger Brunck #define CONFIG_KM_UBI_PARTITION_NAME_BOOT "ubi0" 310f2b721cSHolger Brunck #define CONFIG_KM_UBI_PARTITION_NAME_APP "ubi1" 320f2b721cSHolger Brunck #define MTDIDS_DEFAULT "nor0=boot,nand0=app" 330f2b721cSHolger Brunck 340f2b721cSHolger Brunck #define MTDPARTS_DEFAULT "mtdparts=" \ 350f2b721cSHolger Brunck "boot:" \ 360f2b721cSHolger Brunck "768k(u-boot)," \ 370f2b721cSHolger Brunck "128k(env)," \ 380f2b721cSHolger Brunck "128k(envred)," \ 390f2b721cSHolger Brunck "-(" CONFIG_KM_UBI_PARTITION_NAME_BOOT ");" \ 400f2b721cSHolger Brunck "app:" \ 410f2b721cSHolger Brunck "-(" CONFIG_KM_UBI_PARTITION_NAME_APP ");" 420f2b721cSHolger Brunck #else 430f2b721cSHolger Brunck #error ("Board not supported") 440f2b721cSHolger Brunck #endif 450f2b721cSHolger Brunck 460f2b721cSHolger Brunck /* 470f2b721cSHolger Brunck * High Level Configuration Options 480f2b721cSHolger Brunck */ 490f2b721cSHolger Brunck #define CONFIG_QE /* Has QE */ 500f2b721cSHolger Brunck #define CONFIG_MPC8360 /* MPC8360 CPU specific */ 510f2b721cSHolger Brunck 520f2b721cSHolger Brunck #define CONFIG_SYS_TEXT_BASE 0xF0000000 530f2b721cSHolger Brunck 540f2b721cSHolger Brunck /* include common defines/options for all 83xx Keymile boards */ 550f2b721cSHolger Brunck #include "km/km83xx-common.h" 560f2b721cSHolger Brunck 570f2b721cSHolger Brunck /* 580f2b721cSHolger Brunck * System IO Setup 590f2b721cSHolger Brunck */ 600f2b721cSHolger Brunck #define CONFIG_SYS_SICRH (SICRH_UC1EOBI | SICRH_UC2E1OBI) 610f2b721cSHolger Brunck 620f2b721cSHolger Brunck /* 630f2b721cSHolger Brunck * Hardware Reset Configuration Word 640f2b721cSHolger Brunck */ 650f2b721cSHolger Brunck #define CONFIG_SYS_HRCW_LOW (\ 660f2b721cSHolger Brunck HRCWL_CSB_TO_CLKIN_4X1 | \ 670f2b721cSHolger Brunck HRCWL_CORE_TO_CSB_2X1 | \ 680f2b721cSHolger Brunck HRCWL_CE_PLL_VCO_DIV_2 | \ 690f2b721cSHolger Brunck HRCWL_CE_TO_PLL_1X6) 700f2b721cSHolger Brunck 710f2b721cSHolger Brunck #define CONFIG_SYS_HRCW_HIGH (\ 720f2b721cSHolger Brunck HRCWH_CORE_ENABLE | \ 730f2b721cSHolger Brunck HRCWH_FROM_0X00000100 | \ 740f2b721cSHolger Brunck HRCWH_BOOTSEQ_DISABLE | \ 750f2b721cSHolger Brunck HRCWH_SW_WATCHDOG_DISABLE | \ 760f2b721cSHolger Brunck HRCWH_ROM_LOC_LOCAL_16BIT | \ 770f2b721cSHolger Brunck HRCWH_BIG_ENDIAN | \ 780f2b721cSHolger Brunck HRCWH_LALE_EARLY | \ 790f2b721cSHolger Brunck HRCWH_LDP_CLEAR) 800f2b721cSHolger Brunck 810f2b721cSHolger Brunck /** 820f2b721cSHolger Brunck * DDR RAM settings 830f2b721cSHolger Brunck */ 840f2b721cSHolger Brunck #define CONFIG_SYS_DDR_SDRAM_CFG (\ 850f2b721cSHolger Brunck SDRAM_CFG_SDRAM_TYPE_DDR2 | \ 860f2b721cSHolger Brunck SDRAM_CFG_SREN | \ 870f2b721cSHolger Brunck SDRAM_CFG_HSE) 880f2b721cSHolger Brunck 890f2b721cSHolger Brunck #define CONFIG_SYS_DDR_SDRAM_CFG2 0x00401000 900f2b721cSHolger Brunck 910f2b721cSHolger Brunck #ifdef CONFIG_KMCOGE5NE 920f2b721cSHolger Brunck /** 930f2b721cSHolger Brunck * KMCOGE5NE has 512 MB RAM 940f2b721cSHolger Brunck */ 950f2b721cSHolger Brunck #define CONFIG_SYS_DDR_CS0_CONFIG (\ 960f2b721cSHolger Brunck CSCONFIG_EN | \ 970f2b721cSHolger Brunck CSCONFIG_AP | \ 98*22554ba1SValentin Longchamp CSCONFIG_ODT_WR_ONLY_CURRENT | \ 990f2b721cSHolger Brunck CSCONFIG_BANK_BIT_3 | \ 1000f2b721cSHolger Brunck CSCONFIG_ROW_BIT_13 | \ 1010f2b721cSHolger Brunck CSCONFIG_COL_BIT_10) 1020f2b721cSHolger Brunck #else 1030f2b721cSHolger Brunck #define CONFIG_SYS_DDR_CS0_CONFIG (CSCONFIG_EN | CSCONFIG_AP | \ 1040f2b721cSHolger Brunck CSCONFIG_ROW_BIT_13 | \ 1050f2b721cSHolger Brunck CSCONFIG_COL_BIT_10 | \ 106*22554ba1SValentin Longchamp CSCONFIG_ODT_WR_ONLY_CURRENT) 1070f2b721cSHolger Brunck #endif 1080f2b721cSHolger Brunck 1090f2b721cSHolger Brunck #define CONFIG_SYS_DDR_CLK_CNTL (\ 1100f2b721cSHolger Brunck DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05) 1110f2b721cSHolger Brunck 1120f2b721cSHolger Brunck #define CONFIG_SYS_DDR_INTERVAL (\ 1130f2b721cSHolger Brunck (0x080 << SDRAM_INTERVAL_BSTOPRE_SHIFT) | \ 1140f2b721cSHolger Brunck (0x203 << SDRAM_INTERVAL_REFINT_SHIFT)) 1150f2b721cSHolger Brunck 1160f2b721cSHolger Brunck #define CONFIG_SYS_DDR_CS0_BNDS 0x0000007f 1170f2b721cSHolger Brunck 1180f2b721cSHolger Brunck #define CONFIG_SYS_DDRCDR (\ 1190f2b721cSHolger Brunck DDRCDR_EN | \ 1200f2b721cSHolger Brunck DDRCDR_Q_DRN) 1210f2b721cSHolger Brunck #define CONFIG_SYS_DDR_MODE 0x47860452 1220f2b721cSHolger Brunck #define CONFIG_SYS_DDR_MODE2 0x8080c000 1230f2b721cSHolger Brunck 1240f2b721cSHolger Brunck #define CONFIG_SYS_DDR_TIMING_0 (\ 1250f2b721cSHolger Brunck (2 << TIMING_CFG0_MRS_CYC_SHIFT) | \ 1260f2b721cSHolger Brunck (8 << TIMING_CFG0_ODT_PD_EXIT_SHIFT) | \ 1270f2b721cSHolger Brunck (6 << TIMING_CFG0_PRE_PD_EXIT_SHIFT) | \ 1280f2b721cSHolger Brunck (2 << TIMING_CFG0_ACT_PD_EXIT_SHIFT) | \ 1290f2b721cSHolger Brunck (0 << TIMING_CFG0_WWT_SHIFT) | \ 1300f2b721cSHolger Brunck (0 << TIMING_CFG0_RRT_SHIFT) | \ 1310f2b721cSHolger Brunck (0 << TIMING_CFG0_WRT_SHIFT) | \ 1320f2b721cSHolger Brunck (0 << TIMING_CFG0_RWT_SHIFT)) 1330f2b721cSHolger Brunck 1340f2b721cSHolger Brunck #define CONFIG_SYS_DDR_TIMING_1 ((TIMING_CFG1_CASLAT_50) | \ 1350f2b721cSHolger Brunck (2 << TIMING_CFG1_WRTORD_SHIFT) | \ 1360f2b721cSHolger Brunck (2 << TIMING_CFG1_ACTTOACT_SHIFT) | \ 1370f2b721cSHolger Brunck (3 << TIMING_CFG1_WRREC_SHIFT) | \ 1380f2b721cSHolger Brunck (7 << TIMING_CFG1_REFREC_SHIFT) | \ 1390f2b721cSHolger Brunck (3 << TIMING_CFG1_ACTTORW_SHIFT) | \ 1400f2b721cSHolger Brunck (8 << TIMING_CFG1_ACTTOPRE_SHIFT) | \ 1410f2b721cSHolger Brunck (3 << TIMING_CFG1_PRETOACT_SHIFT)) 1420f2b721cSHolger Brunck 1430f2b721cSHolger Brunck #define CONFIG_SYS_DDR_TIMING_2 (\ 1440f2b721cSHolger Brunck (0xa << TIMING_CFG2_FOUR_ACT_SHIFT) | \ 1450f2b721cSHolger Brunck (3 << TIMING_CFG2_CKE_PLS_SHIFT) | \ 1460f2b721cSHolger Brunck (2 << TIMING_CFG2_WR_DATA_DELAY_SHIFT) | \ 1470f2b721cSHolger Brunck (2 << TIMING_CFG2_RD_TO_PRE_SHIFT) | \ 1480f2b721cSHolger Brunck (4 << TIMING_CFG2_WR_LAT_DELAY_SHIFT) | \ 1490f2b721cSHolger Brunck (5 << TIMING_CFG2_CPO_SHIFT) | \ 1500f2b721cSHolger Brunck (0 << TIMING_CFG2_ADD_LAT_SHIFT)) 1510f2b721cSHolger Brunck 1520f2b721cSHolger Brunck #define CONFIG_SYS_DDR_TIMING_3 0x00000000 1530f2b721cSHolger Brunck 1540f2b721cSHolger Brunck /* EEprom support */ 1550f2b721cSHolger Brunck #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2 1560f2b721cSHolger Brunck 1570f2b721cSHolger Brunck /* 1580f2b721cSHolger Brunck * Local Bus Configuration & Clock Setup 1590f2b721cSHolger Brunck */ 1600f2b721cSHolger Brunck #define CONFIG_SYS_LCRR_DBYP LCRR_DBYP 1610f2b721cSHolger Brunck #define CONFIG_SYS_LCRR_EADC LCRR_EADC_2 1620f2b721cSHolger Brunck #define CONFIG_SYS_LCRR_CLKDIV LCRR_CLKDIV_4 1630f2b721cSHolger Brunck 1640f2b721cSHolger Brunck /* 1650f2b721cSHolger Brunck * PAXE on the local bus CS3 1660f2b721cSHolger Brunck */ 1670f2b721cSHolger Brunck #define CONFIG_SYS_PAXE_BASE 0xA0000000 1680f2b721cSHolger Brunck #define CONFIG_SYS_PAXE_SIZE 256 1690f2b721cSHolger Brunck 1700f2b721cSHolger Brunck #define CONFIG_SYS_LBLAWBAR3_PRELIM CONFIG_SYS_PAXE_BASE 1710f2b721cSHolger Brunck 1720f2b721cSHolger Brunck #define CONFIG_SYS_LBLAWAR3_PRELIM 0x8000001C /* 512MB window size */ 1730f2b721cSHolger Brunck 1740f2b721cSHolger Brunck #define CONFIG_SYS_BR3_PRELIM (\ 1750f2b721cSHolger Brunck CONFIG_SYS_PAXE_BASE | \ 1760f2b721cSHolger Brunck (1 << BR_PS_SHIFT) | \ 1770f2b721cSHolger Brunck BR_V) 1780f2b721cSHolger Brunck 1790f2b721cSHolger Brunck #define CONFIG_SYS_OR3_PRELIM (\ 1800f2b721cSHolger Brunck MEG_TO_AM(CONFIG_SYS_PAXE_SIZE) | \ 1810f2b721cSHolger Brunck OR_GPCM_CSNT | \ 1820f2b721cSHolger Brunck OR_GPCM_ACS_DIV2 | \ 1830f2b721cSHolger Brunck OR_GPCM_SCY_2 | \ 1840f2b721cSHolger Brunck OR_GPCM_TRLX | \ 1850f2b721cSHolger Brunck OR_GPCM_EAD) 1860f2b721cSHolger Brunck 1870f2b721cSHolger Brunck #ifdef CONFIG_KMCOGE5NE 1880f2b721cSHolger Brunck /* 1890f2b721cSHolger Brunck * BFTIC3 on the local bus CS4 1900f2b721cSHolger Brunck */ 1910f2b721cSHolger Brunck #define CONFIG_SYS_BFTIC3_BASE 0xB0000000 1920f2b721cSHolger Brunck #define CONFIG_SYS_BFTIC3_SIZE 256 1930f2b721cSHolger Brunck 1940f2b721cSHolger Brunck #define CONFIG_SYS_BR4_PRELIM (\ 1950f2b721cSHolger Brunck CONFIG_SYS_BFTIC3_BASE |\ 1960f2b721cSHolger Brunck (1 << BR_PS_SHIFT) | \ 1970f2b721cSHolger Brunck BR_V) 1980f2b721cSHolger Brunck 1990f2b721cSHolger Brunck #define CONFIG_SYS_OR4_PRELIM (\ 2000f2b721cSHolger Brunck MEG_TO_AM(CONFIG_SYS_BFTIC3_SIZE) |\ 2010f2b721cSHolger Brunck OR_GPCM_CSNT | \ 2020f2b721cSHolger Brunck OR_GPCM_ACS_DIV2 |\ 2030f2b721cSHolger Brunck OR_GPCM_SCY_2 |\ 2040f2b721cSHolger Brunck OR_GPCM_TRLX |\ 2050f2b721cSHolger Brunck OR_GPCM_EAD) 2060f2b721cSHolger Brunck #endif 2070f2b721cSHolger Brunck 2080f2b721cSHolger Brunck /* 2090f2b721cSHolger Brunck * MMU Setup 2100f2b721cSHolger Brunck */ 2110f2b721cSHolger Brunck 2120f2b721cSHolger Brunck /* PAXE: icache cacheable, but dcache-inhibit and guarded */ 2130f2b721cSHolger Brunck #define CONFIG_SYS_IBAT5L (\ 2140f2b721cSHolger Brunck CONFIG_SYS_PAXE_BASE | \ 2150f2b721cSHolger Brunck BATL_PP_10 | \ 2160f2b721cSHolger Brunck BATL_MEMCOHERENCE) 2170f2b721cSHolger Brunck 2180f2b721cSHolger Brunck #define CONFIG_SYS_IBAT5U (\ 2190f2b721cSHolger Brunck CONFIG_SYS_PAXE_BASE | \ 2200f2b721cSHolger Brunck BATU_BL_256M | \ 2210f2b721cSHolger Brunck BATU_VS | \ 2220f2b721cSHolger Brunck BATU_VP) 2230f2b721cSHolger Brunck 2240f2b721cSHolger Brunck #define CONFIG_SYS_DBAT5L (\ 2250f2b721cSHolger Brunck CONFIG_SYS_PAXE_BASE | \ 2260f2b721cSHolger Brunck BATL_PP_10 | \ 2270f2b721cSHolger Brunck BATL_CACHEINHIBIT | \ 2280f2b721cSHolger Brunck BATL_GUARDEDSTORAGE) 2290f2b721cSHolger Brunck 2300f2b721cSHolger Brunck #define CONFIG_SYS_DBAT5U CONFIG_SYS_IBAT5U 2310f2b721cSHolger Brunck 2320f2b721cSHolger Brunck #ifdef CONFIG_KMCOGE5NE 2330f2b721cSHolger Brunck /* BFTIC3: icache cacheable, but dcache-inhibit and guarded */ 2340f2b721cSHolger Brunck #define CONFIG_SYS_IBAT6L (\ 2350f2b721cSHolger Brunck CONFIG_SYS_BFTIC3_BASE | \ 2360f2b721cSHolger Brunck BATL_PP_10 | \ 2370f2b721cSHolger Brunck BATL_MEMCOHERENCE) 2380f2b721cSHolger Brunck 2390f2b721cSHolger Brunck #define CONFIG_SYS_IBAT6U (\ 2400f2b721cSHolger Brunck CONFIG_SYS_BFTIC3_BASE | \ 2410f2b721cSHolger Brunck BATU_BL_256M | \ 2420f2b721cSHolger Brunck BATU_VS | \ 2430f2b721cSHolger Brunck BATU_VP) 2440f2b721cSHolger Brunck 2450f2b721cSHolger Brunck #define CONFIG_SYS_DBAT6L (\ 2460f2b721cSHolger Brunck CONFIG_SYS_BFTIC3_BASE | \ 2470f2b721cSHolger Brunck BATL_PP_10 | \ 2480f2b721cSHolger Brunck BATL_CACHEINHIBIT | \ 2490f2b721cSHolger Brunck BATL_GUARDEDSTORAGE) 2500f2b721cSHolger Brunck 2510f2b721cSHolger Brunck #define CONFIG_SYS_DBAT6U CONFIG_SYS_IBAT6U 2520f2b721cSHolger Brunck 2530f2b721cSHolger Brunck /* DDR/LBC SDRAM next 256M: cacheable */ 2540f2b721cSHolger Brunck #define CONFIG_SYS_IBAT7L (\ 2550f2b721cSHolger Brunck CONFIG_SYS_SDRAM_BASE2 |\ 2560f2b721cSHolger Brunck BATL_PP_10 |\ 2570f2b721cSHolger Brunck BATL_CACHEINHIBIT |\ 2580f2b721cSHolger Brunck BATL_GUARDEDSTORAGE) 2590f2b721cSHolger Brunck 2600f2b721cSHolger Brunck #define CONFIG_SYS_IBAT7U (\ 2610f2b721cSHolger Brunck CONFIG_SYS_SDRAM_BASE2 |\ 2620f2b721cSHolger Brunck BATU_BL_256M |\ 2630f2b721cSHolger Brunck BATU_VS |\ 2640f2b721cSHolger Brunck BATU_VP) 26595209b66SThomas Herzmann /* enable POST tests */ 26695209b66SThomas Herzmann #define CONFIG_POST (CONFIG_SYS_POST_MEMORY|CONFIG_SYS_POST_MEM_REGIONS) 26795209b66SThomas Herzmann #define CONFIG_POST_EXTERNAL_WORD_FUNCS /* use own functions, not generic */ 26895209b66SThomas Herzmann #define CPM_POST_WORD_ADDR CONFIG_SYS_MEMTEST_END 26995209b66SThomas Herzmann #define CONFIG_TESTPIN_REG gprt3 /* for kmcoge5ne */ 27095209b66SThomas Herzmann #define CONFIG_TESTPIN_MASK 0x20 /* for kmcoge5ne */ 27195209b66SThomas Herzmann 2720f2b721cSHolger Brunck #else 2730f2b721cSHolger Brunck #define CONFIG_SYS_IBAT6L (0) 2740f2b721cSHolger Brunck #define CONFIG_SYS_IBAT6U (0) 2750f2b721cSHolger Brunck #define CONFIG_SYS_IBAT7L (0) 2760f2b721cSHolger Brunck #define CONFIG_SYS_IBAT7U (0) 2770f2b721cSHolger Brunck #define CONFIG_SYS_DBAT6L CONFIG_SYS_IBAT6L 2780f2b721cSHolger Brunck #define CONFIG_SYS_DBAT6U CONFIG_SYS_IBAT6U 2790f2b721cSHolger Brunck #endif 2800f2b721cSHolger Brunck 2810f2b721cSHolger Brunck #define CONFIG_SYS_DBAT7L CONFIG_SYS_IBAT7L 2820f2b721cSHolger Brunck #define CONFIG_SYS_DBAT7U CONFIG_SYS_IBAT7U 2830f2b721cSHolger Brunck 2840f2b721cSHolger Brunck #endif /* CONFIG */ 285