Support for varying BOM/SCPI protocol base addresses in ARM platforms
Current code assumes `SCP_COM_SHARED_MEM_BASE` as the base address for BOM/SCPI protocol between AP<->SCP on all CSS platforms. To cater for future ARM platforms this is made platform specific. Similarly, the bit shifts of `SCP_BOOT_CONFIG_ADDR` are also made platform specific. Change-Id: Ie8866c167abf0229a37b3c72576917f085c142e8
This commit is contained in:
parent
85320724af
commit
8e083ecd66
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -78,25 +78,12 @@
|
||||||
* SCP <=> AP boot configuration
|
* SCP <=> AP boot configuration
|
||||||
*
|
*
|
||||||
* The SCP/AP boot configuration is a 32-bit word located at a known offset from
|
* The SCP/AP boot configuration is a 32-bit word located at a known offset from
|
||||||
* the start of the Trusted SRAM. Part of this configuration is which CPU is the
|
* the start of the Trusted SRAM.
|
||||||
* primary, according to the shift and mask definitions below.
|
|
||||||
*
|
*
|
||||||
* Note that the value stored at this address is only valid at boot time, before
|
* Note that the value stored at this address is only valid at boot time, before
|
||||||
* the SCP_BL2 image is transferred to SCP.
|
* the SCP_BL2 image is transferred to SCP.
|
||||||
*/
|
*/
|
||||||
#define SCP_BOOT_CFG_ADDR (ARM_TRUSTED_SRAM_BASE + 0x80)
|
#define SCP_BOOT_CFG_ADDR PLAT_CSS_SCP_COM_SHARED_MEM_BASE
|
||||||
#define PRIMARY_CPU_SHIFT 8
|
|
||||||
#define PRIMARY_CPU_BIT_WIDTH 4
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Base address of the first memory region used for communication between AP
|
|
||||||
* and SCP. Used by the BOM and SCPI protocols.
|
|
||||||
*
|
|
||||||
* Note that this is located at the same address as SCP_BOOT_CFG_ADDR, which
|
|
||||||
* means the SCP/AP configuration data gets overwritten when the AP initiates
|
|
||||||
* communication with the SCP.
|
|
||||||
*/
|
|
||||||
#define SCP_COM_SHARED_MEM_BASE (ARM_TRUSTED_SRAM_BASE + 0x80)
|
|
||||||
|
|
||||||
#define CSS_MAP_DEVICE MAP_REGION_FLAT( \
|
#define CSS_MAP_DEVICE MAP_REGION_FLAT( \
|
||||||
CSS_DEVICE_BASE, \
|
CSS_DEVICE_BASE, \
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -99,6 +99,20 @@
|
||||||
#define PLAT_ARM_GICH_BASE 0x2c04f000
|
#define PLAT_ARM_GICH_BASE 0x2c04f000
|
||||||
#define PLAT_ARM_GICV_BASE 0x2c06f000
|
#define PLAT_ARM_GICV_BASE 0x2c06f000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Base address of the first memory region used for communication between AP
|
||||||
|
* and SCP. Used by the BOM and SCPI protocols.
|
||||||
|
*
|
||||||
|
* Note that this is located at the same address as SCP_BOOT_CFG_ADDR, which
|
||||||
|
* means the SCP/AP configuration data gets overwritten when the AP initiates
|
||||||
|
* communication with the SCP. The configuration data is expected to be a
|
||||||
|
* 32-bit word on all CSS platforms. On Juno, part of this configuration is
|
||||||
|
* which CPU is the primary, according to the shift and mask definitions below.
|
||||||
|
*/
|
||||||
|
#define PLAT_CSS_SCP_COM_SHARED_MEM_BASE (ARM_TRUSTED_SRAM_BASE + 0x80)
|
||||||
|
#define PLAT_CSS_PRIMARY_CPU_SHIFT 8
|
||||||
|
#define PLAT_CSS_PRIMARY_CPU_BIT_WIDTH 4
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -117,7 +117,8 @@ func plat_is_my_cpu_primary
|
||||||
bl plat_my_core_pos
|
bl plat_my_core_pos
|
||||||
ldr x1, =SCP_BOOT_CFG_ADDR
|
ldr x1, =SCP_BOOT_CFG_ADDR
|
||||||
ldr x1, [x1]
|
ldr x1, [x1]
|
||||||
ubfx x1, x1, #PRIMARY_CPU_SHIFT, #PRIMARY_CPU_BIT_WIDTH
|
ubfx x1, x1, #PLAT_CSS_PRIMARY_CPU_SHIFT, \
|
||||||
|
#PLAT_CSS_PRIMARY_CPU_BIT_WIDTH
|
||||||
cmp x0, x1
|
cmp x0, x1
|
||||||
cset w0, eq
|
cset w0, eq
|
||||||
ret x9
|
ret x9
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -60,7 +60,7 @@ typedef struct {
|
||||||
* Unlike the SCPI protocol, the boot protocol uses the same memory region
|
* Unlike the SCPI protocol, the boot protocol uses the same memory region
|
||||||
* for both AP -> SCP and SCP -> AP transfers; define the address of this...
|
* for both AP -> SCP and SCP -> AP transfers; define the address of this...
|
||||||
*/
|
*/
|
||||||
#define BOM_SHARED_MEM SCP_COM_SHARED_MEM_BASE
|
#define BOM_SHARED_MEM PLAT_CSS_SCP_COM_SHARED_MEM_BASE
|
||||||
#define BOM_CMD_HEADER ((bom_cmd_t *) BOM_SHARED_MEM)
|
#define BOM_CMD_HEADER ((bom_cmd_t *) BOM_SHARED_MEM)
|
||||||
#define BOM_CMD_PAYLOAD ((void *) (BOM_SHARED_MEM + sizeof(bom_cmd_t)))
|
#define BOM_CMD_PAYLOAD ((void *) (BOM_SHARED_MEM + sizeof(bom_cmd_t)))
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@ -37,8 +37,9 @@
|
||||||
#include "css_mhu.h"
|
#include "css_mhu.h"
|
||||||
#include "css_scpi.h"
|
#include "css_scpi.h"
|
||||||
|
|
||||||
#define SCPI_SHARED_MEM_SCP_TO_AP SCP_COM_SHARED_MEM_BASE
|
#define SCPI_SHARED_MEM_SCP_TO_AP PLAT_CSS_SCP_COM_SHARED_MEM_BASE
|
||||||
#define SCPI_SHARED_MEM_AP_TO_SCP (SCP_COM_SHARED_MEM_BASE + 0x100)
|
#define SCPI_SHARED_MEM_AP_TO_SCP (PLAT_CSS_SCP_COM_SHARED_MEM_BASE \
|
||||||
|
+ 0x100)
|
||||||
|
|
||||||
#define SCPI_CMD_HEADER_AP_TO_SCP \
|
#define SCPI_CMD_HEADER_AP_TO_SCP \
|
||||||
((scpi_cmd_t *) SCPI_SHARED_MEM_AP_TO_SCP)
|
((scpi_cmd_t *) SCPI_SHARED_MEM_AP_TO_SCP)
|
||||||
|
|
Loading…
Reference in New Issue