1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#ifndef _CONFIG_KM_ARM_H
20#define _CONFIG_KM_ARM_H
21
22
23
24
25#define CONFIG_FEROCEON_88FR131
26#define CONFIG_KW88F6281
27
28#define CONFIG_MACH_TYPE MACH_TYPE_KM_KIRKWOOD
29
30#define CONFIG_NAND_ECC_BCH
31
32
33#include "keymile-common.h"
34
35
36#define CONFIG_SYS_MALLOC_LEN (4 * 1024 * 1024)
37
38
39#define CONFIG_SYS_BOOTM_LEN (32 << 20)
40
41#include "asm/arch/config.h"
42
43#define CONFIG_SYS_LOAD_ADDR 0x00800000
44
45
46#define CONFIG_KM_DEF_BOOT_ARGS_CPU \
47 "bootcountaddr=${bootcountaddr} ${mtdparts}" \
48 " boardid=0x${IVM_BoardId} hwkey=0x${IVM_HWKey}"
49
50#define CONFIG_KM_DEF_ENV_CPU \
51 "u-boot="CONFIG_HOSTNAME "/u-boot.kwb\0" \
52 CONFIG_KM_UPDATE_UBOOT \
53 "set_fdthigh=setenv fdt_high ${kernelmem}\0" \
54 "checkfdt=" \
55 "if cramfsls fdt_0x${IVM_BoardId}_0x${IVM_HWKey}.dtb; " \
56 "then true; else setenv cramfsloadfdt true; " \
57 "setenv boot bootm ${load_addr_r}; " \
58 "echo No FDT found, booting with the kernel " \
59 "appended one; fi\0" \
60 ""
61
62#define CONFIG_SKIP_LOWLEVEL_INIT
63
64
65
66
67
68
69#define CONFIG_CMDLINE_TAG
70#define CONFIG_INITRD_TAG
71#define CONFIG_SETUP_MEMORY_TAGS
72
73
74
75
76#define CONFIG_SYS_MAX_NAND_DEVICE 1
77
78
79
80
81
82
83
84
85#define PHY_ANEG_TIMEOUT 8000
86#define CONFIG_MVGBE_PORTS {1, 0}
87#define CONFIG_PHY_BASE_ADR 0
88
89
90
91
92#undef CONFIG_I2C_MVTWSI
93#define CONFIG_SYS_I2C
94#define CONFIG_SYS_I2C_SOFT
95#define CONFIG_SYS_I2C_INIT_BOARD
96
97#define CONFIG_KIRKWOOD_GPIO
98#define CONFIG_SYS_NUM_I2C_BUSES 6
99#define CONFIG_SYS_I2C_MAX_HOPS 1
100#define CONFIG_SYS_I2C_BUSES { {0, {I2C_NULL_HOP} }, \
101 {0, {{I2C_MUX_PCA9547, 0x70, 1} } }, \
102 {0, {{I2C_MUX_PCA9547, 0x70, 2} } }, \
103 {0, {{I2C_MUX_PCA9547, 0x70, 3} } }, \
104 {0, {{I2C_MUX_PCA9547, 0x70, 4} } }, \
105 {0, {{I2C_MUX_PCA9547, 0x70, 5} } }, \
106 }
107
108#ifndef __ASSEMBLY__
109#include <asm/arch/gpio.h>
110#include <linux/delay.h>
111#include <linux/stringify.h>
112extern void __set_direction(unsigned pin, int high);
113void set_sda(int state);
114void set_scl(int state);
115int get_sda(void);
116int get_scl(void);
117#define KM_KIRKWOOD_SDA_PIN 8
118#define KM_KIRKWOOD_SCL_PIN 9
119#define KM_KIRKWOOD_SOFT_I2C_GPIOS 0x0300
120#define KM_KIRKWOOD_ENV_WP 38
121
122#define I2C_ACTIVE __set_direction(KM_KIRKWOOD_SDA_PIN, 0)
123#define I2C_TRISTATE __set_direction(KM_KIRKWOOD_SDA_PIN, 1)
124#define I2C_READ (kw_gpio_get_value(KM_KIRKWOOD_SDA_PIN) ? 1 : 0)
125#define I2C_SDA(bit) kw_gpio_set_value(KM_KIRKWOOD_SDA_PIN, bit)
126#define I2C_SCL(bit) kw_gpio_set_value(KM_KIRKWOOD_SCL_PIN, bit)
127#endif
128
129#define I2C_DELAY udelay(1)
130#define I2C_SOFT_DECLARATIONS
131
132#define CONFIG_SYS_I2C_SOFT_SLAVE 0x0
133#define CONFIG_SYS_I2C_SOFT_SPEED 100000
134
135
136#define CONFIG_SYS_EEPROM_PAGE_WRITE_ENABLE
137#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 6
138#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
139
140#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
141#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
142
143
144
145
146#if defined CONFIG_KM_ENV_IS_IN_SPI_NOR
147#define CONFIG_ENV_TOTAL_SIZE 0x20000
148#else
149#define CONFIG_SYS_DEF_EEPROM_ADDR 0x50
150#define CONFIG_ENV_EEPROM_IS_ON_I2C
151#define CONFIG_SYS_EEPROM_WREN
152#define CONFIG_I2C_ENV_EEPROM_BUS 5
153#endif
154
155#define KM_FLASH_GPIO_PIN 16
156
157#define CONFIG_KM_UPDATE_UBOOT \
158 "update=" \
159 "sf probe 0;sf erase 0 +${filesize};" \
160 "sf write ${load_addr_r} 0 ${filesize};\0"
161
162#if defined CONFIG_KM_ENV_IS_IN_SPI_NOR
163#define CONFIG_KM_NEW_ENV \
164 "newenv=sf probe 0;" \
165 "sf erase " __stringify(CONFIG_ENV_OFFSET) " " \
166 __stringify(CONFIG_ENV_TOTAL_SIZE)"\0"
167#else
168#define CONFIG_KM_NEW_ENV \
169 "newenv=setenv addr 0x100000 && " \
170 "i2c dev " __stringify(CONFIG_I2C_ENV_EEPROM_BUS) "; " \
171 "mw.b ${addr} 0 4 && " \
172 "eeprom write " __stringify(CONFIG_SYS_DEF_EEPROM_ADDR) \
173 " ${addr} " __stringify(CONFIG_ENV_OFFSET) " 4 && " \
174 "eeprom write " __stringify(CONFIG_SYS_DEF_EEPROM_ADDR) \
175 " ${addr} " __stringify(CONFIG_ENV_OFFSET_REDUND) " 4\0"
176#endif
177
178#ifndef CONFIG_KM_BOARD_EXTRA_ENV
179#define CONFIG_KM_BOARD_EXTRA_ENV ""
180#endif
181
182
183
184
185#define CONFIG_EXTRA_ENV_SETTINGS \
186 CONFIG_KM_BOARD_EXTRA_ENV \
187 CONFIG_KM_DEF_ENV \
188 CONFIG_KM_NEW_ENV \
189 "arch=arm\0" \
190 ""
191
192
193#define CONFIG_SYS_SDRAM_BASE 0x00000000
194
195
196#define BOOTCOUNT_ADDR (CONFIG_KM_RESERVED_PRAM)
197
198
199#define CONFIG_POST (CONFIG_SYS_POST_MEM_REGIONS)
200#define CONFIG_POST_SKIP_ENV_FLAGS
201#define CONFIG_POST_EXTERNAL_WORD_FUNCS
202
203#endif
204