arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards
authorAndrew F. Davis <afd@ti.com>
Mon, 10 Jul 2017 19:45:52 +0000 (14:45 -0500)
committerTom Rini <trini@konsulko.com>
Sun, 23 Jul 2017 02:22:44 +0000 (22:22 -0400)
Similar to what is done with OMAP5 class boards we need to
perform fixups common to this SoC class, add support for this here
and add HS fixups.

Signed-off-by: Andrew F. Davis <afd@ti.com>
arch/arm/mach-omap2/am33xx/Makefile
arch/arm/mach-omap2/am33xx/fdt.c [new file with mode: 0644]

index b2f8158e7334118150e622c1c29356c771f66bbe..9d4f83cb75acb5a394c95ac076b76f6efc2b5261 100644 (file)
@@ -23,6 +23,7 @@ obj-y += board.o
 obj-y  += mux.o
 obj-y  += prcm-regs.o
 obj-y  += hw_data.o
+obj-y  += fdt.o
 
 obj-$(CONFIG_CLOCK_SYNTHESIZER)        += clk_synthesizer.o
 
diff --git a/arch/arm/mach-omap2/am33xx/fdt.c b/arch/arm/mach-omap2/am33xx/fdt.c
new file mode 100644 (file)
index 0000000..02e8243
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2017 Texas Instruments, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <malloc.h>
+
+#include <asm/omap_common.h>
+#include <asm/arch-am33xx/sys_proto.h>
+
+#ifdef CONFIG_TI_SECURE_DEVICE
+
+static void ft_hs_fixups(void *fdt, bd_t *bd)
+{
+       /* Check we are running on an HS/EMU device type */
+       if (GP_DEVICE != get_device_type()) {
+               if ((ft_hs_disable_rng(fdt, bd) == 0) &&
+                   (ft_hs_fixup_dram(fdt, bd) == 0) &&
+                   (ft_hs_add_tee(fdt, bd) == 0))
+                       return;
+       } else {
+               printf("ERROR: Incorrect device type (GP) detected!");
+       }
+       /* Fixup failed or wrong device type */
+       hang();
+}
+#else
+static void ft_hs_fixups(void *fdt, bd_t *bd) { }
+#endif /* #ifdef CONFIG_TI_SECURE_DEVICE */
+
+/*
+ * Place for general cpu/SoC FDT fixups. Board specific
+ * fixups should remain in the board files which is where
+ * this function should be called from.
+ */
+void ft_cpu_setup(void *fdt, bd_t *bd)
+{
+       ft_hs_fixups(fdt, bd);
+}