summaryrefslogtreecommitdiffstats
path: root/include/mach/layerscape/layerscape.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mach/layerscape/layerscape.h')
-rw-r--r--include/mach/layerscape/layerscape.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/include/mach/layerscape/layerscape.h b/include/mach/layerscape/layerscape.h
new file mode 100644
index 0000000000..bf4a751b92
--- /dev/null
+++ b/include/mach/layerscape/layerscape.h
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __MACH_LAYERSCAPE_H
+#define __MACH_LAYERSCAPE_H
+
+#include <linux/sizes.h>
+
+#define LS1046A_DDR_SDRAM_BASE 0x80000000
+#define LS1046A_DDR_FREQ 2100000000
+
+#define LS1021A_DDR_SDRAM_BASE 0x80000000
+#define LS1021A_DDR_FREQ 1600000000
+
+#define LS1028A_DDR_SDRAM_BASE 0x80000000
+#define LS1028A_DDR_SDRAM_LOWMEM_SIZE 0x80000000
+#define LS1028A_DDR_SDRAM_HIGHMEM_BASE 0x2080000000
+#define LS1028A_SECURE_DRAM_SIZE SZ_64M
+#define LS1028A_SP_SHARED_DRAM_SIZE SZ_2M
+#define LS1028A_TZC400_BASE 0x01100000
+
+#define LS1028A_TFA_SIZE SZ_64M
+#define LS1028A_TFA_SHRD SZ_2M
+#define LS1028A_TFA_RESERVED_SIZE (LS1028A_TFA_SIZE + LS1028A_TFA_SHRD)
+#define LS1028A_TFA_RESERVED_START (0x100000000 - LS1028A_TFA_RESERVED_SIZE)
+#define LS1028A_TFA_START (0x100000000 - LS1028A_TFA_SIZE)
+
+enum bootsource ls1046a_bootsource_get(void);
+enum bootsource ls1021a_bootsource_get(void);
+
+#define LAYERSCAPE_SOC_LS1021A 1021
+#define LAYERSCAPE_SOC_LS1028A 1028
+#define LAYERSCAPE_SOC_LS1046A 1046
+
+#ifdef CONFIG_ARCH_LAYERSCAPE_PPA
+int ls1046a_ppa_init(resource_size_t ppa_start, resource_size_t ppa_size);
+#else
+static inline int ls1046a_ppa_init(resource_size_t ppa_start,
+ resource_size_t ppa_size)
+{
+ return -ENOSYS;
+}
+#endif
+
+struct dram_region_info {
+ uint64_t addr;
+ uint64_t size;
+};
+#define NUM_DRAM_REGIONS 3
+
+struct dram_regions_info {
+ uint64_t num_dram_regions;
+ int64_t total_dram_size;
+ struct dram_region_info region[NUM_DRAM_REGIONS];
+};
+
+void ls1021a_bootsource_init(void);
+void ls1028a_bootsource_init(void);
+void ls1046a_bootsource_init(void);
+void layerscape_register_pbl_image_handler(void);
+void ls102xa_smmu_stream_id_init(void);
+void ls1021a_restart_register_feature(void);
+void ls1028a_setup_icids(void);
+void ls1046a_setup_icids(void);
+
+extern int __layerscape_soc_type;
+
+static inline bool cpu_is_ls1021a(void)
+{
+ return IS_ENABLED(CONFIG_ARCH_LS1021) &&
+ __layerscape_soc_type == LAYERSCAPE_SOC_LS1021A;
+}
+
+static inline bool cpu_is_ls1028a(void)
+{
+ return IS_ENABLED(CONFIG_ARCH_LS1028) &&
+ __layerscape_soc_type == LAYERSCAPE_SOC_LS1028A;
+}
+
+static inline bool cpu_is_ls1046a(void)
+{
+ return IS_ENABLED(CONFIG_ARCH_LS1046) &&
+ __layerscape_soc_type == LAYERSCAPE_SOC_LS1046A;
+}
+
+#endif /* __MACH_LAYERSCAPE_H */