SCP - RSS Communication
Introduction
This document gives an overview of the SCP to RSS communication stack.
+----------------+ +-----------+ +-----------+ | | | | | | | SCP PLATFORM |<------>| TRANSPORT |<------>| MHUv3 | | | | | | | +----------------+ +-----------+ +-----------+
Overview
The RD-Fremont platform SCP communicates with the RSS via MHU doorbell during the boot sequence.
In SCP firmware, the scp_platform module binds to the transport module. The transport HAL module is bound to the MHUv3 driver.
The SCP transport module configuration info can be found in the following file
in the software stack:
<workspace>/scp/product/neoverse-rd/rdfremont/scp_ramfw/config_transport.c
The transport channel
SCP_PLATFORM_TRANSPORT
is used by the scp platform module during the initial boot to perform handshake with the RSS firmware via MHU doorbell events.
The SCP MHUv3 driver configuration info can found in the following file in the
software stack:
<workspace>/scp/product/neoverse-rd/rdfremont/scp_ramfw/config_mhu3.c
In this config data, the element
SCP2RSS_S_MHU_DBCH
is used to communicate with the RSS.The SCP Platform transport channel uses the doorbell channel 1, flag 0 to perform handshake with the RSS firmware.
SCP-RSS handshake
The RSS firmware BL2 stage loads the MCP, SCP and LCP firmware images. The LCP
firmware must be loaded to the LCP ITCM (Instruction - Tightly Coupled Memory)
which is accessed via the cluster utility region in the AP memory space through
the RSS ATU. But, in order to access the LCP ITCM, the RSS must wait for the
SYSTOP
power domain to be in ON state. So, the RSS firmware loads the SCP
firmware image, releases the SCP and waits for the SCP to turn on the SYSTOP
power domain.
After the SYSTOP is turned on and the platform is initialized, the SCP platform system module triggers the SCP to RSS MHUv3 doorbell and waits for a doorbell back from RSS which would indicate that the RSS has successfully loaded the LCP firmware images to the LCPs.
The RSS firmware on receiving the doorbell from SCP, loads the LCP firmware to the LCP ITCMs and triggers RSS to SCP MHUv3 doorbell. The SCP platform system module receives the doorbell event, configures the LCP UART and releases all the LCPs from reset.
The LCP initialization code in the SCP platform module can be found in the
function platform_setup_lcp()
in the following file in the software
stack:
<workspace>/scp/product/neoverse-rd/rdfremont/module/scp_platform/src/platform_lcp.c
Copyright (c) 2023-2024, Arm Limited. All rights reserved.