sc7280: Add SHRM firmware support

SHRM is a system hardware resource manager. It is used to manage run time
DDRSS activities. DDRSS stands for DDR subsystem.

BUG=b:182963902
TEST=Validated on qualcomm sc7280 development board
by trying DDR clocks which through SHRM RSI command.

Change-Id: I44484573a829eaefbd34907c6fe78d427506a762
Signed-off-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/49392
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Shelley Chen <shchen@google.com>
This commit is contained in:
Ravi Kumar Bokka 2021-01-04 14:28:14 +05:30 committed by Shelley Chen
parent 4dc9e5b3c7
commit 5afeba30a3
6 changed files with 44 additions and 0 deletions

View File

@ -3,9 +3,11 @@
#include <arch/stages.h>
#include <soc/qclib_common.h>
#include "board.h"
#include <soc/shrm.h>
void platform_romstage_main(void)
{
shrm_fw_load_reset();
/* QCLib: DDR init & train */
qclib_load_and_run();

View File

@ -23,5 +23,6 @@ DECLARE_REGION(dram_modem_wifi_only)
DECLARE_REGION(dram_modem_extra)
DECLARE_REGION(dram_wlan)
DECLARE_REGION(dram_wpss)
DECLARE_REGION(shrm)
#endif // _SOC_QUALCOMM_SYMBOLS_COMMON_H_

View File

@ -26,6 +26,7 @@ verstage-$(CONFIG_DRIVERS_UART) += ../common/qupv3_uart.c
################################################################################
romstage-y += cbmem.c
romstage-y += shrm_load_reset.c
romstage-y += ../common/qclib.c
romstage-y += ../common/mmu.c
romstage-y += mmu.c
@ -101,4 +102,12 @@ $(I2C_FW_CBFS)-type := raw
$(I2C_FW_CBFS)-compression := $(CBFS_PRERAM_COMPRESS_FLAG)
cbfs-files-y += $(I2C_FW_CBFS)
################################################################################
SHRM_FILE := $(SC7280_BLOB)/shrm/shrm.elf
SHRM_CBFS := $(CONFIG_CBFS_PREFIX)/shrm
$(SHRM_CBFS)-file := $(SHRM_FILE)
$(SHRM_CBFS)-type := payload
$(SHRM_CBFS)-compression := none
cbfs-files-y += $(SHRM_CBFS)
endif

View File

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _SOC_QUALCOMM_SC7280_SHRM_H__
#define _SOC_QUALCOMM_SC7280_SHRM_H__
void shrm_fw_load_reset(void);
#endif // _SOC_QUALCOMM_SC7280_SHRM_H__

View File

@ -17,6 +17,8 @@
SECTIONS
{
REGION(shrm, 0x09060000, 64K , 4K)
AOPSRAM_START(0x0B000000)
REGION(aop, 0x0B000000, 0x100000, 4096)
AOPSRAM_END(0x0B100000)

View File

@ -0,0 +1,22 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <cbfs.h>
#include <console/console.h>
#include <soc/mmu.h>
#include <soc/shrm.h>
#include <soc/clock.h>
void shrm_fw_load_reset(void)
{
bool shrm_fw_entry;
struct prog shrm_fw_prog =
PROG_INIT(PROG_PAYLOAD, CONFIG_CBFS_PREFIX "/shrm");
shrm_fw_entry = selfload(&shrm_fw_prog);
if (!shrm_fw_entry)
die("SOC image: SHRM load failed");
clock_reset_shrm();
printk(BIOS_DEBUG, "\nSOC:SHRM brought out of reset.\n");
}