blob: 2ec30b1f9c38459ccac7ce9298ade3d5d5902b8b [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Andrew F. Davisddf01342017-07-10 14:45:52 -05002/*
3 * Copyright 2017 Texas Instruments, Inc.
Andrew F. Davisddf01342017-07-10 14:45:52 -05004 */
5
6#include <common.h>
Simon Glassdb41d652019-12-28 10:45:07 -07007#include <hang.h>
Masahiro Yamadab08c8c42018-03-05 01:20:11 +09008#include <linux/libfdt.h>
Andrew F. Davisddf01342017-07-10 14:45:52 -05009#include <fdt_support.h>
10#include <malloc.h>
11
12#include <asm/omap_common.h>
13#include <asm/arch-am33xx/sys_proto.h>
14
15#ifdef CONFIG_TI_SECURE_DEVICE
16
Masahiro Yamadab75d8dc2020-06-26 15:13:33 +090017static void ft_hs_fixups(void *fdt, struct bd_info *bd)
Andrew F. Davisddf01342017-07-10 14:45:52 -050018{
19 /* Check we are running on an HS/EMU device type */
20 if (GP_DEVICE != get_device_type()) {
21 if ((ft_hs_disable_rng(fdt, bd) == 0) &&
22 (ft_hs_fixup_dram(fdt, bd) == 0) &&
23 (ft_hs_add_tee(fdt, bd) == 0))
24 return;
25 } else {
26 printf("ERROR: Incorrect device type (GP) detected!");
27 }
28 /* Fixup failed or wrong device type */
29 hang();
30}
31#else
Masahiro Yamadab75d8dc2020-06-26 15:13:33 +090032static void ft_hs_fixups(void *fdt, struct bd_info *bd) { }
Andrew F. Davisddf01342017-07-10 14:45:52 -050033#endif /* #ifdef CONFIG_TI_SECURE_DEVICE */
34
35/*
36 * Place for general cpu/SoC FDT fixups. Board specific
37 * fixups should remain in the board files which is where
38 * this function should be called from.
39 */
Masahiro Yamadab75d8dc2020-06-26 15:13:33 +090040void ft_cpu_setup(void *fdt, struct bd_info *bd)
Andrew F. Davisddf01342017-07-10 14:45:52 -050041{
42 ft_hs_fixups(fdt, bd);
43}