]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
a3eec24a LM |
2 | /* |
3 | * Copyright (C) 2017 | |
4 | * Lukasz Majewski, DENX Software Engineering, [email protected] | |
a3eec24a LM |
5 | */ |
6 | ||
7 | #ifndef __CONFIG_H | |
8 | #define __CONFIG_H | |
9 | ||
10 | #include "mx6_common.h" | |
11 | ||
12 | /* Falcon Mode */ | |
13 | #define CONFIG_CMD_SPL | |
14 | #define CONFIG_SYS_SPL_ARGS_ADDR 0x18000000 | |
15 | #define CONFIG_CMD_SPL_WRITE_SIZE (44 * SZ_1K) | |
16 | ||
17 | /* Falcon Mode - MMC support */ | |
18 | #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x3F00 | |
19 | #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS \ | |
20 | (CONFIG_CMD_SPL_WRITE_SIZE / 512) | |
21 | #define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x100 /* 128KiB */ | |
22 | ||
23 | /* | |
24 | * display5 SPI-NOR memory layout | |
25 | * | |
26 | * The definition can be found in Kconfig's | |
27 | * CONFIG_MTDIDS_DEFAULT and CONFIG_MTDPARTS_DEFAULT | |
28 | * | |
29 | * 0x000000 - 0x020000 : SPI.SPL (128KiB) | |
30 | * 0x020000 - 0x120000 : SPI.u-boot (1MiB) | |
31 | * 0x120000 - 0x130000 : SPI.u-boot-env1 (64KiB) | |
32 | * 0x130000 - 0x140000 : SPI.u-boot-env2 (64KiB) | |
1fa328f7 LM |
33 | * 0x140000 - 0x540000 : SPI.swupdate-kernel-FIT (4MiB) |
34 | * 0x540000 - 0x1540000 : SPI.swupdate-initramfs (16MiB) | |
86d759ea | 35 | * 0x1540000 - 0x1640000 : SPI.factory (1MiB) |
a3eec24a LM |
36 | */ |
37 | ||
38 | #ifndef CONFIG_SPL_BUILD | |
a3eec24a | 39 | #define CONFIG_SPI_FLASH_MTD |
a3eec24a LM |
40 | #endif |
41 | ||
42 | /* Below values are "dummy" - only to avoid build break */ | |
43 | #define CONFIG_SYS_SPI_KERNEL_OFFS 0x150000 | |
44 | #define CONFIG_SYS_SPI_ARGS_OFFS 0x140000 | |
45 | #define CONFIG_SYS_SPI_ARGS_SIZE 0x10000 | |
46 | ||
47 | #include "imx6_spl.h" | |
48 | #define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000 | |
a3eec24a LM |
49 | |
50 | #define CONFIG_CMDLINE_TAG | |
51 | #define CONFIG_SETUP_MEMORY_TAGS | |
52 | #define CONFIG_INITRD_TAG | |
53 | #define CONFIG_REVISION_TAG | |
54 | ||
55 | /* Size of malloc() pool */ | |
56 | #define CONFIG_SYS_MALLOC_LEN (16 * 1024 * 1024) | |
a3eec24a LM |
57 | |
58 | /*#define CONFIG_MXC_UART*/ | |
59 | #define CONFIG_MXC_UART_BASE UART5_BASE | |
60 | ||
61 | /* SPI NOR Flash */ | |
62 | #ifdef CONFIG_CMD_SF | |
a3eec24a LM |
63 | #define CONFIG_SF_DEFAULT_BUS 1 |
64 | #define CONFIG_SF_DEFAULT_CS (0 | (IMX_GPIO_NR(5, 29) << 8)) | |
65 | #define CONFIG_SF_DEFAULT_SPEED 50000000 | |
66 | #define CONFIG_SF_DEFAULT_MODE SPI_MODE_0 | |
67 | #endif | |
68 | ||
69 | /* I2C Configs */ | |
70 | #define CONFIG_SYS_I2C | |
71 | #define CONFIG_SYS_I2C_MXC | |
72 | #define CONFIG_SYS_I2C_MXC_I2C1 | |
73 | #define CONFIG_SYS_I2C_MXC_I2C2 | |
74 | #define CONFIG_SYS_I2C_MXC_I2C3 | |
75 | #define CONFIG_I2C_MULTI_BUS | |
76 | #define CONFIG_SYS_I2C_SPEED 100000 | |
77 | #define CONFIG_I2C_EDID | |
78 | #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2 | |
79 | ||
80 | /* Ethernet */ | |
81 | #ifdef CONFIG_FEC_MXC | |
82 | #define IMX_FEC_BASE ENET_BASE_ADDR | |
83 | #define CONFIG_FEC_XCV_TYPE RGMII | |
84 | #define CONFIG_ETHPRIME "FEC" | |
85 | #define CONFIG_FEC_MXC_PHYADDR 0 | |
a3eec24a LM |
86 | #endif |
87 | ||
88 | /* MMC Configs */ | |
a3eec24a LM |
89 | #define CONFIG_FSL_USDHC |
90 | #define CONFIG_SYS_FSL_ESDHC_ADDR 0 | |
91 | #define CONFIG_SYS_FSL_USDHC_NUM 2 | |
92 | #define CONFIG_SUPPORT_EMMC_BOOT | |
93 | ||
94 | /* allow to overwrite serial and ethaddr */ | |
95 | #define CONFIG_ENV_OVERWRITE | |
96 | #define CONFIG_BAUDRATE 115200 | |
97 | ||
98 | #ifndef CONFIG_BOOTCOMMAND | |
27aede24 LM |
99 | #define CONFIG_BOOTCOMMAND "if run check_em_pad; then " \ |
100 | "run recovery;" \ | |
101 | "else if test ${BOOT_FROM} = FACTORY; then " \ | |
13e012f7 LM |
102 | "run factory_nfs;" \ |
103 | "else " \ | |
104 | "run boot_mmc;" \ | |
27aede24 | 105 | "fi;fi" |
a3eec24a LM |
106 | #endif |
107 | ||
108 | #define PARTS_DEFAULT \ | |
109 | /* Linux partitions */ \ | |
110 | "partitions=" \ | |
111 | "uuid_disk=${uuid_gpt_disk};" \ | |
112 | "name=kernel_raw1,start=128K,size=8M,uuid=${uuid_gpt_kernel_raw1};" \ | |
113 | "name=rootfs1,size=1528M,uuid=${uuid_gpt_rootfs1};" \ | |
114 | "name=kernel_raw2,size=8M,uuid=${uuid_gpt_kernel_raw2};" \ | |
9fea1ca0 | 115 | "name=rootfs2,size=512M,uuid=${uuid_gpt_rootfs2};" \ |
a3eec24a LM |
116 | "name=data,size=-,uuid=${uuid_gpt_data}\0" |
117 | ||
a3eec24a LM |
118 | #define SWUPDATE_RECOVERY_PROCEDURE \ |
119 | "echo '#######################';" \ | |
120 | "echo '# RECOVERY SWUupdate #';" \ | |
121 | "echo '#######################';" \ | |
0f05512d LM |
122 | "echo '#######################';" \ |
123 | "echo '# GPT verify #';" \ | |
124 | "if gpt verify mmc ${mmcdev} ${partitions}; then " \ | |
125 | "echo '# OK ! #';" \ | |
126 | "else " \ | |
127 | "echo '# FAILED ! #';" \ | |
128 | "echo '# GPT RESTORATION #';" \ | |
129 | "gpt write mmc ${mmcdev} ${partitions};" \ | |
130 | "fi;" \ | |
131 | "echo '#######################';" \ | |
a3eec24a LM |
132 | "setenv loadaddr_swu_initramfs 0x14000000;" \ |
133 | "setenv bootargs console=${console} " \ | |
134 | "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}" \ | |
135 | ":${hostname}::off root=/dev/ram rw;" \ | |
136 | "sf probe;" \ | |
137 | "sf read ${loadaddr} swu-kernel;" \ | |
138 | "sf read ${loadaddr_swu_initramfs} swu-initramfs;" \ | |
1bcbf48f | 139 | "bootm ${loadaddr} ${loadaddr_swu_initramfs};reset;" |
a3eec24a | 140 | |
a3eec24a LM |
141 | #define SETUP_BOOTARGS \ |
142 | "run set_rootfs_part;" \ | |
143 | "setenv bootargs ${bootargs} console=${console} " \ | |
144 | "root=/dev/mmcblk${mmcdev}p${rootfs_part} " \ | |
145 | "rootwait rootfstype=ext4 rw; " \ | |
146 | "run set_kernel_part;" \ | |
147 | "part start mmc ${mmcdev} ${kernel_part} lba_start; " \ | |
f008e260 | 148 | "mmc read ${loadaddr} ${lba_start} ${fitImg_fw_sz}; " \ |
a3eec24a LM |
149 | "setenv fdt_conf imx6q-${board}-${display}.dtb; " |
150 | ||
151 | /* All the numbers are in LBAs */ | |
152 | #define __TFTP_UPDATE_KERNEL \ | |
153 | "tftp_mmc_fitImg=" \ | |
154 | "if test ! -n ${kernel_part}; then " \ | |
155 | "setenv kernel_part ${kernel_part_active};" \ | |
156 | "fi;" \ | |
157 | "if tftp ${loadaddr} ${kernel_file}; then " \ | |
158 | "setexpr fw_sz ${filesize} / 0x200; " \ | |
159 | "setexpr fw_sz ${fw_sz} + 1; " \ | |
160 | "part start mmc ${mmcdev} ${kernel_part} lba_start; " \ | |
161 | "mmc write ${loadaddr} ${lba_start} ${fw_sz}; " \ | |
162 | "; fi\0" \ | |
163 | ||
164 | #define TFTP_UPDATE_KERNEL \ | |
165 | "setenv kernel_part ${kernel_part_active};" \ | |
166 | "run tftp_mmc_fitImg;" \ | |
167 | "setenv kernel_part ${kernel_part_backup};" \ | |
168 | "run tftp_mmc_fitImg;" \ | |
169 | ||
170 | #define __TFTP_UPDATE_ROOTFS \ | |
171 | "tftp_mmc_rootfs=" \ | |
172 | "if test ! -n ${rootfs_part}; then " \ | |
173 | "setenv rootfs_part ${rootfs_part_active};" \ | |
174 | "fi;" \ | |
175 | "if tftp ${loadaddr} ${rootfs_file}; then " \ | |
176 | "setexpr fw_sz ${filesize} / 0x200; " \ | |
177 | "setexpr fw_sz ${fw_sz} + 1; " \ | |
178 | "part start mmc ${mmcdev} ${rootfs_part} lba_start; " \ | |
179 | "mmc write ${loadaddr} ${lba_start} ${fw_sz}; " \ | |
180 | "; fi\0" \ | |
181 | ||
a3eec24a LM |
182 | #define TFTP_UPDATE_ROOTFS \ |
183 | "setenv rootfs_part ${rootfs_part_active};" \ | |
184 | "run tftp_mmc_rootfs;" \ | |
18ccca59 LM |
185 | "run tftp_mmc_rootfs_bkp;" \ |
186 | ||
a3eec24a LM |
187 | |
188 | #define TFTP_UPDATE_RECOVERY_SWU_KERNEL \ | |
189 | "tftp_sf_fitImg_SWU=" \ | |
190 | "if tftp ${loadaddr} ${kernel_file}; then " \ | |
191 | "sf probe;" \ | |
192 | "sf erase swu-kernel +${filesize};" \ | |
193 | "sf write ${loadaddr} swu-kernel ${filesize};" \ | |
194 | "; fi\0" \ | |
195 | ||
196 | #define TFTP_UPDATE_RECOVERY_SWU_INITRAMFS \ | |
b5f4543c | 197 | "swu_initramfs_file=swupdate-image-display5.ext4.gz.u-boot\0" \ |
a3eec24a LM |
198 | "tftp_sf_initramfs_SWU=" \ |
199 | "if tftp ${loadaddr} ${swu_initramfs_file}; then " \ | |
200 | "sf probe;" \ | |
201 | "sf erase swu-initramfs +${filesize};" \ | |
202 | "sf write ${loadaddr} swu-initramfs ${filesize};" \ | |
203 | "; fi\0" \ | |
204 | ||
a3eec24a LM |
205 | #define TFTP_UPDATE_BOOTLOADER \ |
206 | "ubootfile=u-boot.img\0" \ | |
207 | "ubootfileSPL=SPL\0" \ | |
208 | "tftp_sf_uboot=" \ | |
209 | "if tftp ${loadaddr} ${ubootfile}; then " \ | |
210 | "sf probe;" \ | |
211 | "sf erase u-boot +${filesize};" \ | |
212 | "sf write ${loadaddr} u-boot ${filesize}" \ | |
213 | "; fi\0" \ | |
214 | "tftp_sf_SPL=" \ | |
215 | "if tftp ${loadaddr} ${ubootfileSPL}; then " \ | |
216 | "sf probe;" \ | |
217 | "setexpr uboot_SPL_size ${filesize} + 0x400;" \ | |
218 | "sf erase 0x0 +${uboot_SPL_size};" \ | |
219 | "sf write ${loadaddr} 0x400 ${filesize};" \ | |
220 | "fi\0" \ | |
221 | ||
2f4372a1 LM |
222 | #define TFTP_UPDATE_SPINOR \ |
223 | "spinorfile=core-image-lwn-display5.spinor\0" \ | |
224 | "spinorsize=0x2000000\0" \ | |
225 | "tftp_sf_img=" \ | |
226 | "if tftp ${loadaddr} ${spinorfile}; then " \ | |
227 | "sf probe;" \ | |
228 | "sf erase 0x0 ${spinorsize};" \ | |
229 | "sf write ${loadaddr} 0x0 ${filesize};" \ | |
230 | "fi\0" \ | |
231 | ||
a3eec24a LM |
232 | #define CONFIG_EXTRA_ENV_SETTINGS \ |
233 | PARTS_DEFAULT \ | |
27aede24 LM |
234 | "gpio_recovery=93\0" \ |
235 | "check_em_pad=gpio input ${gpio_recovery};test $? -eq 0;\0" \ | |
a3eec24a LM |
236 | "display=tianma-tm070-800x480\0" \ |
237 | "board=display5\0" \ | |
238 | "mmcdev=0\0" \ | |
239 | "altbootcmd=run recovery\0" \ | |
240 | "bootdelay=1\0" \ | |
241 | "baudrate=115200\0" \ | |
242 | "bootcmd=" CONFIG_BOOTCOMMAND "\0" \ | |
a3eec24a LM |
243 | "ethact=FEC\0" \ |
244 | "netdev=eth0\0" \ | |
245 | "boot_os=y\0" \ | |
246 | "hostname=display5\0" \ | |
247 | "loadaddr=0x12000000\0" \ | |
248 | "fdtaddr=0x12800000\0" \ | |
5d925409 | 249 | "console=ttymxc4,115200 quiet cma=256M\0" \ |
a3eec24a LM |
250 | "fdtfile=imx6q-display5.dtb\0" \ |
251 | "fdt_high=0xffffffff\0" \ | |
252 | "initrd_high=0xffffffff\0" \ | |
253 | "kernel_file=fitImage\0" \ | |
f008e260 | 254 | "fitImg_fw_sz=0x2200\0" \ |
a3eec24a LM |
255 | "up=run tftp_sf_SPL; run tftp_sf_uboot\0" \ |
256 | "download_kernel=" \ | |
257 | "tftpboot ${loadaddr} ${kernel_file};\0" \ | |
13e012f7 | 258 | "factory_nfs=" \ |
4864ba7f LM |
259 | "setenv ipaddr 192.168.1.102;" \ |
260 | "setenv gatewayip 192.168.1.1;" \ | |
261 | "setenv netmask 255.255.255.0;" \ | |
262 | "setenv serverip 192.168.1.2;" \ | |
13e012f7 LM |
263 | "echo BOOT: FACTORY (LEG);" \ |
264 | "run boot_nfs\0" \ | |
a3eec24a LM |
265 | "boot_swu_recovery=" SWUPDATE_RECOVERY_PROCEDURE "\0" \ |
266 | "recovery=" \ | |
a3eec24a | 267 | "echo BOOT: RECOVERY: SWU;" \ |
b78e9c4f | 268 | "run boot_swu_recovery\0" \ |
a3eec24a LM |
269 | "boot_tftp=" \ |
270 | "if run download_kernel; then " \ | |
271 | "setenv bootargs console=${console} " \ | |
272 | "root=/dev/mmcblk0p2 rootwait;" \ | |
1bcbf48f | 273 | "bootm ${loadaddr} - ${fdtaddr};reset;" \ |
a3eec24a LM |
274 | "fi\0" \ |
275 | "addip=setenv bootargs ${bootargs} " \ | |
276 | "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ | |
277 | "${hostname}:eth0:on" \ | |
278 | "\0" \ | |
279 | "nfsargs=setenv bootargs " \ | |
280 | "root=/dev/nfs rw " \ | |
281 | "nfsroot=${serverip}:${rootpath},nolock,nfsvers=3" \ | |
282 | "\0" \ | |
283 | "rootpath=/srv/tftp/DISP5/rootfs\0" \ | |
284 | "boot_nfs=" \ | |
285 | "if run download_kernel; then " \ | |
286 | "run nfsargs;" \ | |
287 | "run addip;" \ | |
288 | "setenv bootargs ${bootargs} console=${console};" \ | |
289 | "setenv fdt_conf imx6q-${board}-${display}.dtb; " \ | |
1bcbf48f | 290 | "bootm ${loadaddr}#conf@${fdt_conf};reset;" \ |
a3eec24a LM |
291 | "fi\0" \ |
292 | "falcon_setup=" \ | |
293 | "if mmc dev ${mmcdev}; then " \ | |
294 | SETUP_BOOTARGS \ | |
295 | "spl export fdt ${loadaddr}#conf@${fdt_conf};" \ | |
296 | "setexpr fw_sz ${fdtargslen} / 0x200; " \ | |
297 | "setexpr fw_sz ${fw_sz} + 1; " \ | |
298 | "mmc write ${fdtargsaddr} " \ | |
299 | __stringify(CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR)" ${fw_sz}; " \ | |
300 | "fi\0" \ | |
301 | "boot_mmc=" \ | |
302 | "if mmc dev ${mmcdev}; then " \ | |
303 | SETUP_BOOTARGS \ | |
1bcbf48f | 304 | "bootm ${loadaddr}#conf@${fdt_conf};reset;" \ |
a3eec24a LM |
305 | "fi\0" \ |
306 | "set_kernel_part=" \ | |
307 | "if test ${BOOT_FROM} = ACTIVE; then " \ | |
308 | "setenv kernel_part ${kernel_part_active};" \ | |
309 | "echo BOOT: ACTIVE;" \ | |
310 | "else if test ${BOOT_FROM} = BACKUP; then " \ | |
311 | "setenv kernel_part ${kernel_part_backup};" \ | |
312 | "echo BOOT: BACKUP;" \ | |
313 | "else " \ | |
314 | "run recovery;" \ | |
315 | "fi;fi\0" \ | |
316 | "set_rootfs_part=" \ | |
317 | "if test ${BOOT_FROM} = ACTIVE; then " \ | |
318 | "setenv rootfs_part ${rootfs_part_active};" \ | |
319 | "else if test ${BOOT_FROM} = BACKUP; then " \ | |
320 | "setenv rootfs_part ${rootfs_part_backup};" \ | |
321 | "else " \ | |
322 | "run recovery;" \ | |
323 | "fi;fi\0" \ | |
324 | "BOOT_FROM=ACTIVE\0" \ | |
a3eec24a | 325 | TFTP_UPDATE_BOOTLOADER \ |
2f4372a1 | 326 | TFTP_UPDATE_SPINOR \ |
a3eec24a LM |
327 | "kernel_part_active=1\0" \ |
328 | "kernel_part_backup=3\0" \ | |
329 | __TFTP_UPDATE_KERNEL \ | |
330 | "rootfs_part_active=2\0" \ | |
331 | "rootfs_part_backup=4\0" \ | |
332 | "rootfs_file=core-image-lwn-display5.ext4\0" \ | |
dd4ed88b | 333 | "rootfs_file_backup=core-image-lwn-backup-display5.ext4\0" \ |
a3eec24a | 334 | __TFTP_UPDATE_ROOTFS \ |
dd4ed88b LM |
335 | "tftp_mmc_rootfs_bkp=" \ |
336 | "setenv rootfs_part ${rootfs_part_backup};" \ | |
337 | "setenv rootfs_file ${rootfs_file_backup};" \ | |
338 | "run tftp_mmc_rootfs\0" \ | |
a3eec24a LM |
339 | TFTP_UPDATE_RECOVERY_SWU_KERNEL \ |
340 | TFTP_UPDATE_RECOVERY_SWU_INITRAMFS \ | |
341 | "\0" \ | |
342 | ||
343 | /* Miscellaneous configurable options */ | |
344 | #undef CONFIG_SYS_CBSIZE | |
345 | #define CONFIG_SYS_CBSIZE 2048 | |
346 | ||
347 | /* Print Buffer Size */ | |
348 | #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ | |
349 | sizeof(CONFIG_SYS_PROMPT) + 16) | |
350 | #define CONFIG_SYS_MAXARGS 32 | |
351 | #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE | |
352 | ||
353 | #define CONFIG_STANDALONE_LOAD_ADDR 0x10001000 | |
354 | #define CONFIG_SYS_HZ 1000 | |
355 | ||
356 | /* Physical Memory Map */ | |
a3eec24a LM |
357 | #define PHYS_SDRAM MMDC0_ARB_BASE_ADDR |
358 | #define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM | |
359 | ||
360 | #define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR | |
361 | #define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE | |
362 | ||
363 | #define CONFIG_SYS_INIT_SP_OFFSET \ | |
364 | (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) | |
365 | #define CONFIG_SYS_INIT_SP_ADDR \ | |
366 | (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET) | |
367 | ||
368 | /* Commands */ | |
a3eec24a | 369 | |
76d1d169 LM |
370 | /* Watchdog */ |
371 | #define CONFIG_HW_WATCHDOG | |
372 | #define CONFIG_IMX_WATCHDOG | |
373 | #define CONFIG_WATCHDOG_TIMEOUT_MSECS 15000 | |
374 | ||
a3eec24a LM |
375 | /* ENV config */ |
376 | #ifdef CONFIG_ENV_IS_IN_SPI_FLASH | |
377 | #define CONFIG_ENV_SIZE (SZ_64K) | |
378 | /* The 0x120000 value corresponds to above SPI-NOR memory MAP */ | |
379 | #define CONFIG_ENV_OFFSET (0x120000) | |
380 | #define CONFIG_ENV_SECT_SIZE (SZ_64K) | |
381 | #define CONFIG_SYS_REDUNDAND_ENVIRONMENT | |
382 | #define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + \ | |
383 | CONFIG_ENV_SECT_SIZE) | |
384 | #define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE | |
385 | ||
386 | #define CONFIG_ENV_SPI_BUS CONFIG_SF_DEFAULT_BUS | |
387 | #define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS | |
388 | #define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE | |
389 | #define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED | |
390 | #endif | |
391 | ||
392 | #define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) | |
393 | #endif /* __CONFIG_H */ |