Commit b33772eb authored by Mark Dykes's avatar Mark Dykes Committed by TrustedFirmware Code Review
Browse files

Merge changes from topic "platform-refactor" into integration

* changes:
  intel: Refactor common platform code [4/5]
  intel: Refactor common platform code [3/5]
  intel: Refactor common platform code [2/5]
  intel: Refactor common platform code [1/5]
parents b3fc6c1c c76d4239
...@@ -15,19 +15,18 @@ ...@@ -15,19 +15,18 @@
#include <drivers/ti/uart/uart_16550.h> #include <drivers/ti/uart/uart_16550.h>
#include <lib/xlat_tables/xlat_tables.h> #include <lib/xlat_tables/xlat_tables.h>
#include <platform_def.h> #include <platform_def.h>
#include <socfpga_private.h>
#include "agilex_clock_manager.h" #include "agilex_clock_manager.h"
#include "agilex_handoff.h"
#include "agilex_mailbox.h"
#include "agilex_memory_controller.h" #include "agilex_memory_controller.h"
#include "agilex_pinmux.h" #include "agilex_pinmux.h"
#include "agilex_private.h"
#include "agilex_reset_manager.h" #include "agilex_reset_manager.h"
#include "agilex_system_manager.h" #include "agilex_system_manager.h"
#include "ccu/ncore_ccu.h" #include "ccu/ncore_ccu.h"
#include "qspi/cadence_qspi.h" #include "qspi/cadence_qspi.h"
#include "socfpga_handoff.h"
#include "socfpga_mailbox.h"
#include "socfpga_private.h"
#include "wdt/watchdog.h" #include "wdt/watchdog.h"
...@@ -59,7 +58,7 @@ void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1, ...@@ -59,7 +58,7 @@ void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1,
generic_delay_timer_init(); generic_delay_timer_init();
if (agilex_get_handoff(&reverse_handoff_ptr)) if (socfpga_get_handoff(&reverse_handoff_ptr))
return; return;
config_pinmux(&reverse_handoff_ptr); config_pinmux(&reverse_handoff_ptr);
boot_source = reverse_handoff_ptr.boot_source; boot_source = reverse_handoff_ptr.boot_source;
......
...@@ -67,15 +67,15 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, ...@@ -67,15 +67,15 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
} }
static const interrupt_prop_t s10_interrupt_props[] = { static const interrupt_prop_t s10_interrupt_props[] = {
PLAT_INTEL_AGX_G1S_IRQ_PROPS(GICV2_INTR_GROUP0), PLAT_INTEL_SOCFPGA_G1S_IRQ_PROPS(GICV2_INTR_GROUP0),
PLAT_INTEL_AGX_G0_IRQ_PROPS(GICV2_INTR_GROUP0) PLAT_INTEL_SOCFPGA_G0_IRQ_PROPS(GICV2_INTR_GROUP0)
}; };
static unsigned int target_mask_array[PLATFORM_CORE_COUNT]; static unsigned int target_mask_array[PLATFORM_CORE_COUNT];
static const gicv2_driver_data_t plat_gicv2_gic_data = { static const gicv2_driver_data_t plat_gicv2_gic_data = {
.gicd_base = PLAT_INTEL_AGX_GICD_BASE, .gicd_base = PLAT_INTEL_SOCFPGA_GICD_BASE,
.gicc_base = PLAT_INTEL_AGX_GICC_BASE, .gicc_base = PLAT_INTEL_SOCFPGA_GICC_BASE,
.interrupt_props = s10_interrupt_props, .interrupt_props = s10_interrupt_props,
.interrupt_props_num = ARRAY_SIZE(s10_interrupt_props), .interrupt_props_num = ARRAY_SIZE(s10_interrupt_props),
.target_masks = target_mask_array, .target_masks = target_mask_array,
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#ifndef CLOCKMANAGER_H #ifndef CLOCKMANAGER_H
#define CLOCKMANAGER_H #define CLOCKMANAGER_H
#include "agilex_handoff.h" #include "socfpga_handoff.h"
/* Clock Manager Registers */ /* Clock Manager Registers */
#define CLKMGR_OFFSET 0xffd10000 #define CLKMGR_OFFSET 0xffd10000
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#define AGX_PINMUX_PINMUX_EMAC0_USEFPGA 0xffd13300 #define AGX_PINMUX_PINMUX_EMAC0_USEFPGA 0xffd13300
#define AGX_PINMUX_IO0_DELAY 0xffd13400 #define AGX_PINMUX_IO0_DELAY 0xffd13400
#include "agilex_handoff.h" #include "socfpga_handoff.h"
void config_pinmux(handoff *handoff); void config_pinmux(handoff *handoff);
......
/*
* Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2019, Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef AGX_PRIVATE_H
#define AGX_PRIVATE_H
#define AGX_MMC_REG_BASE 0xff808000
#define EMMC_DESC_SIZE (1<<20)
#define EMMC_INIT_PARAMS(base, clk) \
{ .bus_width = MMC_BUS_WIDTH_4, \
.clk_rate = (clk), \
.desc_base = (base), \
.desc_size = EMMC_DESC_SIZE, \
.flags = 0, \
.reg_base = AGX_MMC_REG_BASE \
}
typedef enum {
BOOT_SOURCE_FPGA = 0,
BOOT_SOURCE_SDMMC,
BOOT_SOURCE_NAND,
BOOT_SOURCE_RSVD,
BOOT_SOURCE_QSPI
} boot_source_type;
void enable_nonsecure_access(void);
void socfpga_io_setup(int boot_source);
#endif
/*
* Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2019, Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef PLAT_SOCFPGA_DEF_H
#define PLAT_SOCFPGA_DEF_H
#include <platform_def.h>
/* Platform Setting */
#define PLATFORM_MODEL PLAT_SOCFPGA_AGILEX
/* Register Mapping */
#define SOCFPGA_MMC_REG_BASE 0xff808000
#define SOCFPGA_RSTMGR_OFST 0xffd11000
#define SOCFPGA_RSTMGR_MPUMODRST_OFST 0xffd11020
#endif /* PLAT_SOCFPGA_DEF_H */
...@@ -37,17 +37,17 @@ BL2_SOURCES += \ ...@@ -37,17 +37,17 @@ BL2_SOURCES += \
drivers/intel/soc/stratix10/io/s10_memmap_qspi.c \ drivers/intel/soc/stratix10/io/s10_memmap_qspi.c \
lib/cpus/aarch64/cortex_a53.S \ lib/cpus/aarch64/cortex_a53.S \
plat/intel/soc/agilex/bl2_plat_setup.c \ plat/intel/soc/agilex/bl2_plat_setup.c \
plat/intel/soc/agilex/socfpga_storage.c \ plat/intel/soc/common/socfpga_storage.c \
plat/intel/soc/common/bl2_plat_mem_params_desc.c \ plat/intel/soc/common/bl2_plat_mem_params_desc.c \
plat/intel/soc/agilex/soc/agilex_reset_manager.c \ plat/intel/soc/agilex/soc/agilex_reset_manager.c \
plat/intel/soc/agilex/soc/agilex_handoff.c \
plat/intel/soc/agilex/soc/agilex_clock_manager.c \ plat/intel/soc/agilex/soc/agilex_clock_manager.c \
plat/intel/soc/agilex/soc/agilex_pinmux.c \ plat/intel/soc/agilex/soc/agilex_pinmux.c \
plat/intel/soc/agilex/soc/agilex_memory_controller.c \ plat/intel/soc/agilex/soc/agilex_memory_controller.c \
plat/intel/soc/common/soc/socfpga_handoff.c \
plat/intel/soc/common/socfpga_delay_timer.c \ plat/intel/soc/common/socfpga_delay_timer.c \
plat/intel/soc/common/socfpga_image_load.c \ plat/intel/soc/common/socfpga_image_load.c \
plat/intel/soc/agilex/soc/agilex_system_manager.c \ plat/intel/soc/agilex/soc/agilex_system_manager.c \
plat/intel/soc/agilex/soc/agilex_mailbox.c \ plat/intel/soc/common/soc/socfpga_mailbox.c \
plat/intel/soc/common/drivers/qspi/cadence_qspi.c \ plat/intel/soc/common/drivers/qspi/cadence_qspi.c \
plat/intel/soc/common/drivers/wdt/watchdog.c \ plat/intel/soc/common/drivers/wdt/watchdog.c \
plat/intel/soc/common/drivers/ccu/ncore_ccu.c plat/intel/soc/common/drivers/ccu/ncore_ccu.c
...@@ -57,16 +57,15 @@ BL31_SOURCES += \ ...@@ -57,16 +57,15 @@ BL31_SOURCES += \
lib/cpus/aarch64/cortex_a53.S \ lib/cpus/aarch64/cortex_a53.S \
lib/cpus/aarch64/aem_generic.S \ lib/cpus/aarch64/aem_generic.S \
plat/common/plat_psci_common.c \ plat/common/plat_psci_common.c \
plat/intel/soc/agilex/socfpga_sip_svc.c \ plat/intel/soc/common/socfpga_sip_svc.c \
plat/intel/soc/agilex/bl31_plat_setup.c \ plat/intel/soc/agilex/bl31_plat_setup.c \
plat/intel/soc/agilex/socfpga_psci.c \ plat/intel/soc/common/socfpga_psci.c \
plat/intel/soc/common/socfpga_topology.c \ plat/intel/soc/common/socfpga_topology.c \
plat/intel/soc/common/socfpga_delay_timer.c \ plat/intel/soc/common/socfpga_delay_timer.c \
plat/intel/soc/agilex/soc/agilex_reset_manager.c \ plat/intel/soc/agilex/soc/agilex_reset_manager.c \
plat/intel/soc/agilex/soc/agilex_pinmux.c \ plat/intel/soc/agilex/soc/agilex_pinmux.c \
plat/intel/soc/agilex/soc/agilex_clock_manager.c \ plat/intel/soc/agilex/soc/agilex_clock_manager.c \
plat/intel/soc/agilex/soc/agilex_handoff.c \ plat/intel/soc/common/soc/socfpga_mailbox.c
plat/intel/soc/agilex/soc/agilex_mailbox.c
PROGRAMMABLE_RESET_ADDRESS := 0 PROGRAMMABLE_RESET_ADDRESS := 0
BL2_AT_EL3 := 1 BL2_AT_EL3 := 1
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
#include <lib/mmio.h> #include <lib/mmio.h>
#include "agilex_clock_manager.h" #include "agilex_clock_manager.h"
#include "agilex_handoff.h"
#include "agilex_system_manager.h" #include "agilex_system_manager.h"
#include "socfpga_handoff.h"
uint32_t wait_pll_lock(void) uint32_t wait_pll_lock(void)
......
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
#include <arch_helpers.h> #include <arch_helpers.h>
#include <platform_def.h> #include <platform_def.h>
#include <plat/common/platform.h> #include <plat/common/platform.h>
#include <socfpga_private.h>
#include "socfpga_private.h"
unsigned int plat_get_syscnt_freq2(void) unsigned int plat_get_syscnt_freq2(void)
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include <common/tbbr/tbbr_img_def.h> #include <common/tbbr/tbbr_img_def.h>
#include <plat/common/common_def.h> #include <plat/common/common_def.h>
#define PLAT_SOCFPGA_STRATIX10 1
#define PLAT_SOCFPGA_AGILEX 2
#define PLAT_CPUID_RELEASE 0xffe1b000 #define PLAT_CPUID_RELEASE 0xffe1b000
#define PLAT_SEC_ENTRY 0xffe1b008 #define PLAT_SEC_ENTRY 0xffe1b008
...@@ -27,7 +29,7 @@ ...@@ -27,7 +29,7 @@
#define PLATFORM_LINKER_FORMAT "elf64-littleaarch64" #define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
#define PLATFORM_LINKER_ARCH aarch64 #define PLATFORM_LINKER_ARCH aarch64
/* Agilex supports up to 124GB RAM */ /* SoCFPGA supports up to 124GB RAM */
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 39) #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 39)
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 39) #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 39)
...@@ -56,18 +58,18 @@ ...@@ -56,18 +58,18 @@
/* Interrupt related constant */ /* Interrupt related constant */
#define INTEL_AGX_IRQ_SEC_PHY_TIMER 29 #define INTEL_SOCFPGA_IRQ_SEC_PHY_TIMER 29
#define INTEL_AGX_IRQ_SEC_SGI_0 8 #define INTEL_SOCFPGA_IRQ_SEC_SGI_0 8
#define INTEL_AGX_IRQ_SEC_SGI_1 9 #define INTEL_SOCFPGA_IRQ_SEC_SGI_1 9
#define INTEL_AGX_IRQ_SEC_SGI_2 10 #define INTEL_SOCFPGA_IRQ_SEC_SGI_2 10
#define INTEL_AGX_IRQ_SEC_SGI_3 11 #define INTEL_SOCFPGA_IRQ_SEC_SGI_3 11
#define INTEL_AGX_IRQ_SEC_SGI_4 12 #define INTEL_SOCFPGA_IRQ_SEC_SGI_4 12
#define INTEL_AGX_IRQ_SEC_SGI_5 13 #define INTEL_SOCFPGA_IRQ_SEC_SGI_5 13
#define INTEL_AGX_IRQ_SEC_SGI_6 14 #define INTEL_SOCFPGA_IRQ_SEC_SGI_6 14
#define INTEL_AGX_IRQ_SEC_SGI_7 15 #define INTEL_SOCFPGA_IRQ_SEC_SGI_7 15
#define TSP_IRQ_SEC_PHY_TIMER INTEL_AGX_IRQ_SEC_PHY_TIMER #define TSP_IRQ_SEC_PHY_TIMER INTEL_SOCFPGA_IRQ_SEC_PHY_TIMER
#define TSP_SEC_MEM_BASE BL32_BASE #define TSP_SEC_MEM_BASE BL32_BASE
#define TSP_SEC_MEM_SIZE (BL32_LIMIT - BL32_BASE + 1) #define TSP_SEC_MEM_SIZE (BL32_LIMIT - BL32_BASE + 1)
/******************************************************************************* /*******************************************************************************
...@@ -158,35 +160,35 @@ ...@@ -158,35 +160,35 @@
#define PLAT_SYS_COUNTER_FREQ_IN_TICKS (400000000) #define PLAT_SYS_COUNTER_FREQ_IN_TICKS (400000000)
#define PLAT_SYS_COUNTER_FREQ_IN_MHZ (400) #define PLAT_SYS_COUNTER_FREQ_IN_MHZ (400)
#define PLAT_INTEL_AGX_GICD_BASE PLAT_GICD_BASE #define PLAT_INTEL_SOCFPGA_GICD_BASE PLAT_GICD_BASE
#define PLAT_INTEL_AGX_GICC_BASE PLAT_GICC_BASE #define PLAT_INTEL_SOCFPGA_GICC_BASE PLAT_GICC_BASE
/* /*
* Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
* terminology. On a GICv2 system or mode, the lists will be merged and treated * terminology. On a GICv2 system or mode, the lists will be merged and treated
* as Group 0 interrupts. * as Group 0 interrupts.
*/ */
#define PLAT_INTEL_AGX_G1S_IRQ_PROPS(grp) \ #define PLAT_INTEL_SOCFPGA_G1S_IRQ_PROPS(grp) \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_PHY_TIMER, \
grp, GIC_INTR_CFG_LEVEL), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_0, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_0, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_1, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_2, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_3, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_4, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_5, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_6, \
GIC_INTR_CFG_EDGE), \ GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE), \
INTR_PROP_DESC(INTEL_AGX_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, grp, \ INTR_PROP_DESC(INTEL_SOCFPGA_IRQ_SEC_SGI_7, \
GIC_INTR_CFG_EDGE) GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_EDGE)
#define PLAT_INTEL_AGX_G0_IRQ_PROPS(grp) #define PLAT_INTEL_SOCFPGA_G0_IRQ_PROPS(grp)
#define MAX_IO_HANDLES 4 #define MAX_IO_HANDLES 4
#define MAX_IO_DEVICES 4 #define MAX_IO_DEVICES 4
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#define HANDOFF_MAGIC_CLOCK 0x434c4b53 /* CLKS */ #define HANDOFF_MAGIC_CLOCK 0x434c4b53 /* CLKS */
#define HANDOFF_MAGIC_MISC 0x4d495343 /* MISC */ #define HANDOFF_MAGIC_MISC 0x4d495343 /* MISC */
#include <socfpga_plat_def.h>
typedef struct handoff_t { typedef struct handoff_t {
/* header */ /* header */
uint32_t header_magic; uint32_t header_magic;
...@@ -47,6 +49,44 @@ typedef struct handoff_t { ...@@ -47,6 +49,44 @@ typedef struct handoff_t {
uint32_t pinmux_iodelay_array[96]; /* offset, value */ uint32_t pinmux_iodelay_array[96]; /* offset, value */
/* clock configuration */ /* clock configuration */
#if PLATFORM_MODEL == PLAT_SOCFPGA_STRATIX10
uint32_t clock_magic;
uint32_t clock_length;
uint32_t _pad_0x588_0x590[2];
uint32_t main_pll_mpuclk;
uint32_t main_pll_nocclk;
uint32_t main_pll_cntr2clk;
uint32_t main_pll_cntr3clk;
uint32_t main_pll_cntr4clk;
uint32_t main_pll_cntr5clk;
uint32_t main_pll_cntr6clk;
uint32_t main_pll_cntr7clk;
uint32_t main_pll_cntr8clk;
uint32_t main_pll_cntr9clk;
uint32_t main_pll_nocdiv;
uint32_t main_pll_pllglob;
uint32_t main_pll_fdbck;
uint32_t main_pll_pllc0;
uint32_t main_pll_pllc1;
uint32_t _pad_0x5cc_0x5d0[1];
uint32_t per_pll_cntr2clk;
uint32_t per_pll_cntr3clk;
uint32_t per_pll_cntr4clk;
uint32_t per_pll_cntr5clk;
uint32_t per_pll_cntr6clk;
uint32_t per_pll_cntr7clk;
uint32_t per_pll_cntr8clk;
uint32_t per_pll_cntr9clk;
uint32_t per_pll_emacctl;
uint32_t per_pll_gpiodiv;
uint32_t per_pll_pllglob;
uint32_t per_pll_fdbck;
uint32_t per_pll_pllc0;
uint32_t per_pll_pllc1;
uint32_t hps_osc_clk_h;
uint32_t fpga_clk_hz;
#elif PLATFORM_MODEL == PLAT_SOCFPGA_AGILEX
uint32_t clock_magic; uint32_t clock_magic;
uint32_t clock_length; uint32_t clock_length;
uint32_t _pad_0x588_0x590[2]; uint32_t _pad_0x588_0x590[2];
...@@ -80,7 +120,7 @@ typedef struct handoff_t { ...@@ -80,7 +120,7 @@ typedef struct handoff_t {
uint32_t hps_osc_clk_h; uint32_t hps_osc_clk_h;
uint32_t fpga_clk_hz; uint32_t fpga_clk_hz;
uint32_t _pad_0x604_0x610[3]; uint32_t _pad_0x604_0x610[3];
#endif
/* misc configuration */ /* misc configuration */
uint32_t misc_magic; uint32_t misc_magic;
uint32_t misc_length; uint32_t misc_length;
...@@ -89,7 +129,7 @@ typedef struct handoff_t { ...@@ -89,7 +129,7 @@ typedef struct handoff_t {
} handoff; } handoff;
int verify_handoff_image(handoff *hoff_ptr, handoff *reverse_hoff_ptr); int verify_handoff_image(handoff *hoff_ptr, handoff *reverse_hoff_ptr);
int agilex_get_handoff(handoff *hoff_ptr); int socfpga_get_handoff(handoff *hoff_ptr);
#endif #endif
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
#ifndef AGX_MBOX_H #ifndef SOCFPGA_MBOX_H
#define AGX_MBOX_H #define SOCFPGA_MBOX_H
#include <lib/utils_def.h> #include <lib/utils_def.h>
...@@ -124,4 +124,4 @@ int mailbox_read_response(int job_id, uint32_t *response); ...@@ -124,4 +124,4 @@ int mailbox_read_response(int job_id, uint32_t *response);
int mailbox_get_qspi_clock(void); int mailbox_get_qspi_clock(void);
void mailbox_reset_cold(void); void mailbox_reset_cold(void);
#endif #endif /* SOCFPGA_MBOX_H */
...@@ -4,12 +4,38 @@ ...@@ -4,12 +4,38 @@
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
#ifndef PLATFORM_PRIVATE_H #ifndef SOCFPGA_PRIVATE_H
#define PLATFORM_PRIVATE_H #define SOCFPGA_PRIVATE_H
#include "socfpga_plat_def.h"
#define EMMC_DESC_SIZE (1<<20)
#define EMMC_INIT_PARAMS(base, clk) \
{ .bus_width = MMC_BUS_WIDTH_4, \
.clk_rate = (clk), \
.desc_base = (base), \
.desc_size = EMMC_DESC_SIZE, \
.flags = 0, \
.reg_base = SOCFPGA_MMC_REG_BASE \
}
typedef enum {
BOOT_SOURCE_FPGA = 0,
BOOT_SOURCE_SDMMC,
BOOT_SOURCE_NAND,
BOOT_SOURCE_RSVD,
BOOT_SOURCE_QSPI
} boot_source_type;
/******************************************************************************* /*******************************************************************************
* Function and variable prototypes * Function and variable prototypes
******************************************************************************/ ******************************************************************************/
void enable_nonsecure_access(void);
void socfpga_io_setup(int boot_source);
void socfgpa_configure_mmu_el3(unsigned long total_base, void socfgpa_configure_mmu_el3(unsigned long total_base,
unsigned long total_size, unsigned long total_size,
unsigned long ro_start, unsigned long ro_start,
...@@ -36,4 +62,4 @@ uint32_t socfpga_get_spsr_for_bl33_entry(void); ...@@ -36,4 +62,4 @@ uint32_t socfpga_get_spsr_for_bl33_entry(void);
unsigned long socfpga_get_ns_image_entrypoint(void); unsigned long socfpga_get_ns_image_entrypoint(void);
#endif /* PLATFORM_PRIVATE_H */ #endif /* SOCFPGA_PRIVATE_H */
...@@ -4,15 +4,14 @@ ...@@ -4,15 +4,14 @@
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
#include <platform_def.h>
#include <string.h> #include <string.h>
#include "agilex_handoff.h" #include "socfpga_handoff.h"
#define SWAP_UINT32(x) (((x) >> 24) | (((x) & 0x00FF0000) >> 8) | \ #define SWAP_UINT32(x) (((x) >> 24) | (((x) & 0x00FF0000) >> 8) | \
(((x) & 0x0000FF00) << 8) | ((x) << 24)) (((x) & 0x0000FF00) << 8) | ((x) << 24))
int agilex_get_handoff(handoff *reverse_hoff_ptr) int socfpga_get_handoff(handoff *reverse_hoff_ptr)
{ {
int i; int i;
uint32_t *buffer; uint32_t *buffer;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <lib/mmio.h> #include <lib/mmio.h>
#include <common/debug.h> #include <common/debug.h>
#include "agilex_mailbox.h" #include "socfpga_mailbox.h"
static int fill_mailbox_circular_buffer(uint32_t header_cmd, uint32_t *args, static int fill_mailbox_circular_buffer(uint32_t header_cmd, uint32_t *args,
int len) int len)
......
...@@ -11,13 +11,11 @@ ...@@ -11,13 +11,11 @@
#include <lib/psci/psci.h> #include <lib/psci/psci.h>
#include <plat/common/platform.h> #include <plat/common/platform.h>
#include "agilex_reset_manager.h" #include "socfpga_mailbox.h"
#include "agilex_mailbox.h" #include "socfpga_plat_def.h"
#define AGX_RSTMGR_OFST 0xffd11000
#define AGX_RSTMGR_MPUMODRST_OFST 0x20
uintptr_t *agilex_sec_entry = (uintptr_t *) PLAT_SEC_ENTRY; uintptr_t *socfpga_sec_entry = (uintptr_t *) PLAT_SEC_ENTRY;
uintptr_t *cpuid_release = (uintptr_t *) PLAT_CPUID_RELEASE; uintptr_t *cpuid_release = (uintptr_t *) PLAT_CPUID_RELEASE;
/******************************************************************************* /*******************************************************************************
...@@ -50,8 +48,7 @@ int socfpga_pwr_domain_on(u_register_t mpidr) ...@@ -50,8 +48,7 @@ int socfpga_pwr_domain_on(u_register_t mpidr)
*cpuid_release = cpu_id; *cpuid_release = cpu_id;
/* release core reset */ /* release core reset */
mmio_setbits_32(AGX_RSTMGR_OFST + AGX_RSTMGR_MPUMODRST_OFST, mmio_setbits_32(SOCFPGA_RSTMGR_MPUMODRST_OFST, 1 << cpu_id);
1 << cpu_id);
return PSCI_E_SUCCESS; return PSCI_E_SUCCESS;
} }
...@@ -81,8 +78,7 @@ void socfpga_pwr_domain_suspend(const psci_power_state_t *target_state) ...@@ -81,8 +78,7 @@ void socfpga_pwr_domain_suspend(const psci_power_state_t *target_state)
VERBOSE("%s: target_state->pwr_domain_state[%lu]=%x\n", VERBOSE("%s: target_state->pwr_domain_state[%lu]=%x\n",
__func__, i, target_state->pwr_domain_state[i]); __func__, i, target_state->pwr_domain_state[i]);
/* assert core reset */ /* assert core reset */
mmio_setbits_32(AGX_RSTMGR_OFST + AGX_RSTMGR_MPUMODRST_OFST, mmio_setbits_32(SOCFPGA_RSTMGR_MPUMODRST_OFST, 1 << cpu_id);
1 << cpu_id);
} }
...@@ -121,8 +117,7 @@ void socfpga_pwr_domain_suspend_finish(const psci_power_state_t *target_state) ...@@ -121,8 +117,7 @@ void socfpga_pwr_domain_suspend_finish(const psci_power_state_t *target_state)
__func__, i, target_state->pwr_domain_state[i]); __func__, i, target_state->pwr_domain_state[i]);
/* release core reset */ /* release core reset */
mmio_clrbits_32(AGX_RSTMGR_OFST + AGX_RSTMGR_MPUMODRST_OFST, mmio_clrbits_32(SOCFPGA_RSTMGR_MPUMODRST_OFST, 1 << cpu_id);
1 << cpu_id);
} }
/******************************************************************************* /*******************************************************************************
...@@ -137,9 +132,6 @@ static void __dead2 socfpga_system_off(void) ...@@ -137,9 +132,6 @@ static void __dead2 socfpga_system_off(void)
static void __dead2 socfpga_system_reset(void) static void __dead2 socfpga_system_reset(void)
{ {
INFO("assert Peripheral from Reset\r\n");
deassert_peripheral_reset();
mailbox_reset_cold(); mailbox_reset_cold();
while (1) while (1)
...@@ -191,7 +183,7 @@ int plat_setup_psci_ops(uintptr_t sec_entrypoint, ...@@ -191,7 +183,7 @@ int plat_setup_psci_ops(uintptr_t sec_entrypoint,
const struct plat_psci_ops **psci_ops) const struct plat_psci_ops **psci_ops)
{ {
/* Save warm boot entrypoint.*/ /* Save warm boot entrypoint.*/
*agilex_sec_entry = sec_entrypoint; *socfpga_sec_entry = sec_entrypoint;
*psci_ops = &socfpga_psci_pm_ops; *psci_ops = &socfpga_psci_pm_ops;
return 0; return 0;
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include <common/runtime_svc.h> #include <common/runtime_svc.h>
#include <tools_share/uuid.h> #include <tools_share/uuid.h>
#include "agilex_mailbox.h" #include "socfpga_mailbox.h"
/* Number of SiP Calls implemented */ /* Number of SiP Calls implemented */
#define SIP_NUM_CALLS 0x3 #define SIP_NUM_CALLS 0x3
...@@ -360,7 +360,7 @@ uintptr_t sip_smc_handler(uint32_t smc_fid, ...@@ -360,7 +360,7 @@ uintptr_t sip_smc_handler(uint32_t smc_fid,
} }
DECLARE_RT_SVC( DECLARE_RT_SVC(
agilex_sip_svc, socfpga_sip_svc,
OEN_SIP_START, OEN_SIP_START,
OEN_SIP_END, OEN_SIP_END,
SMC_TYPE_FAST, SMC_TYPE_FAST,
...@@ -369,7 +369,7 @@ DECLARE_RT_SVC( ...@@ -369,7 +369,7 @@ DECLARE_RT_SVC(
); );
DECLARE_RT_SVC( DECLARE_RT_SVC(
agilex_sip_svc_std, socfpga_sip_svc_std,
OEN_SIP_START, OEN_SIP_START,
OEN_SIP_END, OEN_SIP_END,
SMC_TYPE_YIELD, SMC_TYPE_YIELD,
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <lib/mmio.h> #include <lib/mmio.h>
#include <tools_share/firmware_image_package.h> #include <tools_share/firmware_image_package.h>
#include "agilex_private.h" #include "socfpga_private.h"
#define PLAT_FIP_BASE (0) #define PLAT_FIP_BASE (0)
#define PLAT_FIP_MAX_SIZE (0x1000000) #define PLAT_FIP_MAX_SIZE (0x1000000)
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <common/image_decompress.h> #include <common/image_decompress.h>
#include <plat/common/platform.h> #include <plat/common/platform.h>
#include <platform_def.h> #include <platform_def.h>
#include <socfpga_private.h>
#include <drivers/synopsys/dw_mmc.h> #include <drivers/synopsys/dw_mmc.h>
#include <lib/mmio.h> #include <lib/mmio.h>
#include <lib/xlat_tables/xlat_tables.h> #include <lib/xlat_tables/xlat_tables.h>
...@@ -27,11 +26,11 @@ ...@@ -27,11 +26,11 @@
#include "s10_memory_controller.h" #include "s10_memory_controller.h"
#include "s10_reset_manager.h" #include "s10_reset_manager.h"
#include "s10_clock_manager.h" #include "s10_clock_manager.h"
#include "s10_handoff.h"
#include "s10_pinmux.h" #include "s10_pinmux.h"
#include "stratix10_private.h"
#include "include/s10_mailbox.h"
#include "qspi/cadence_qspi.h" #include "qspi/cadence_qspi.h"
#include "socfpga_handoff.h"
#include "socfpga_mailbox.h"
#include "socfpga_private.h"
#include "wdt/watchdog.h" #include "wdt/watchdog.h"
...@@ -63,7 +62,7 @@ void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1, ...@@ -63,7 +62,7 @@ void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1,
generic_delay_timer_init(); generic_delay_timer_init();
if (s10_get_handoff(&reverse_handoff_ptr)) if (socfpga_get_handoff(&reverse_handoff_ptr))
return; return;
config_pinmux(&reverse_handoff_ptr); config_pinmux(&reverse_handoff_ptr);
boot_source = reverse_handoff_ptr.boot_source; boot_source = reverse_handoff_ptr.boot_source;
...@@ -115,7 +114,7 @@ void bl2_el3_plat_arch_setup(void) ...@@ -115,7 +114,7 @@ void bl2_el3_plat_arch_setup(void)
switch (boot_source) { switch (boot_source) {
case BOOT_SOURCE_SDMMC: case BOOT_SOURCE_SDMMC:
dw_mmc_init(&params, &info); dw_mmc_init(&params, &info);
stratix10_io_setup(boot_source); socfpga_io_setup(boot_source);
break; break;
case BOOT_SOURCE_QSPI: case BOOT_SOURCE_QSPI:
...@@ -124,7 +123,7 @@ void bl2_el3_plat_arch_setup(void) ...@@ -124,7 +123,7 @@ void bl2_el3_plat_arch_setup(void)
cad_qspi_init(0, QSPI_CONFIG_CPHA, QSPI_CONFIG_CPOL, cad_qspi_init(0, QSPI_CONFIG_CPHA, QSPI_CONFIG_CPOL,
QSPI_CONFIG_CSDA, QSPI_CONFIG_CSDADS, QSPI_CONFIG_CSDA, QSPI_CONFIG_CSDADS,
QSPI_CONFIG_CSEOT, QSPI_CONFIG_CSSOT, 0); QSPI_CONFIG_CSEOT, QSPI_CONFIG_CSSOT, 0);
stratix10_io_setup(boot_source); socfpga_io_setup(boot_source);
break; break;
default: default:
......
...@@ -16,14 +16,12 @@ ...@@ -16,14 +16,12 @@
#include <drivers/ti/uart/uart_16550.h> #include <drivers/ti/uart/uart_16550.h>
#include <drivers/generic_delay_timer.h> #include <drivers/generic_delay_timer.h>
#include <drivers/arm/gicv2.h> #include <drivers/arm/gicv2.h>
#include <s10_mailbox.h>
#include <lib/xlat_tables/xlat_tables.h> #include <lib/xlat_tables/xlat_tables.h>
#include <lib/mmio.h> #include <lib/mmio.h>
#include <plat/common/platform.h> #include <plat/common/platform.h>
#include <platform_def.h> #include <platform_def.h>
#include "stratix10_private.h" #include "socfpga_private.h"
#include "s10_handoff.h"
#include "s10_reset_manager.h" #include "s10_reset_manager.h"
#include "s10_memory_controller.h" #include "s10_memory_controller.h"
#include "s10_pinmux.h" #include "s10_pinmux.h"
...@@ -82,15 +80,15 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, ...@@ -82,15 +80,15 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
} }
static const interrupt_prop_t s10_interrupt_props[] = { static const interrupt_prop_t s10_interrupt_props[] = {
PLAT_INTEL_S10_G1S_IRQ_PROPS(GICV2_INTR_GROUP0), PLAT_INTEL_SOCFPGA_G1S_IRQ_PROPS(GICV2_INTR_GROUP0),
PLAT_INTEL_S10_G0_IRQ_PROPS(GICV2_INTR_GROUP0) PLAT_INTEL_SOCFPGA_G0_IRQ_PROPS(GICV2_INTR_GROUP0)
}; };
static unsigned int target_mask_array[PLATFORM_CORE_COUNT]; static unsigned int target_mask_array[PLATFORM_CORE_COUNT];
static const gicv2_driver_data_t plat_gicv2_gic_data = { static const gicv2_driver_data_t plat_gicv2_gic_data = {
.gicd_base = PLAT_INTEL_S10_GICD_BASE, .gicd_base = PLAT_INTEL_SOCFPGA_GICD_BASE,
.gicc_base = PLAT_INTEL_S10_GICC_BASE, .gicc_base = PLAT_INTEL_SOCFPGA_GICC_BASE,
.interrupt_props = s10_interrupt_props, .interrupt_props = s10_interrupt_props,
.interrupt_props_num = ARRAY_SIZE(s10_interrupt_props), .interrupt_props_num = ARRAY_SIZE(s10_interrupt_props),
.target_masks = target_mask_array, .target_masks = target_mask_array,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment