soc/qualcomm/common/qclib: Support to load AOP config and meta in CBFS
Add support to load AOP config and AOP config metadata. TEST=Create an image.serial.bin and ensure it boots on X1P42100. Change-Id: Ic6a7eaa771178f20920df7936685cb212467b055 Signed-off-by: Swathi Tamilselvan <tswathi@qualcomm.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/88856 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Subrata Banik <subratabanik@google.com> Reviewed-by: Kapil Porwal <kapilporwal@google.com>
This commit is contained in:
parent
3f4c84513d
commit
ee347d8812
3 changed files with 21 additions and 0 deletions
|
|
@ -26,6 +26,7 @@
|
|||
#define QCLIB_TE_DTB_SETTINGS "dtb"
|
||||
#define QCLIB_TE_SHRM_META_SETTINGS "shrm_metadata"
|
||||
#define QCLIB_TE_AOP_META_SETTINGS "aop_metadata"
|
||||
#define QCLIB_TE_AOP_DEVCFG_META_SETTINGS "aop_cfg_metadata"
|
||||
|
||||
/* BA_BMASK_VALUES (blob_attributes bit mask values) */
|
||||
#define QCLIB_BA_SAVE_TO_STORAGE 0x00000001
|
||||
|
|
@ -38,6 +39,7 @@ enum qclib_cbfs_file {
|
|||
QCLIB_CBFS_DTB,
|
||||
QCLIB_CBFS_SHRM_META,
|
||||
QCLIB_CBFS_AOP_META,
|
||||
QCLIB_CBFS_AOP_DEVCFG_META,
|
||||
QCLIB_CBFS_MAX
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ DECLARE_REGION(dram_soc)
|
|||
DECLARE_REGION(dcb)
|
||||
DECLARE_REGION(dtb)
|
||||
DECLARE_REGION(qc_blob_meta)
|
||||
DECLARE_REGION(aop_blob_meta)
|
||||
DECLARE_OPTIONAL_REGION(pmic)
|
||||
DECLARE_REGION(limits_cfg)
|
||||
DECLARE_REGION(aop)
|
||||
|
|
|
|||
|
|
@ -88,6 +88,8 @@ const char *qclib_file_default(enum qclib_cbfs_file file)
|
|||
return CONFIG_CBFS_PREFIX "/shrm_meta";
|
||||
case QCLIB_CBFS_AOP_META:
|
||||
return CONFIG_CBFS_PREFIX "/aop_meta";
|
||||
case QCLIB_CBFS_AOP_DEVCFG_META:
|
||||
return CONFIG_CBFS_PREFIX "/aop_devcfg_meta";
|
||||
default:
|
||||
die("unknown QcLib file %d", file);
|
||||
}
|
||||
|
|
@ -331,6 +333,12 @@ void qclib_rerun(void)
|
|||
|
||||
init_qclib_cb_if_table(&qclib_cb_if_table);
|
||||
|
||||
struct prog aop_cfg_fw_prog =
|
||||
PROG_INIT(PROG_PAYLOAD, CONFIG_CBFS_PREFIX "/aop_cfg");
|
||||
|
||||
if (!selfload(&aop_cfg_fw_prog))
|
||||
die("SOC image: AOP load failed");
|
||||
|
||||
/* Attempt to load aop_meta Blob (reuse the qc_blob_meta region). */
|
||||
data_size = cbfs_load(qclib_file(QCLIB_CBFS_AOP_META),
|
||||
_qc_blob_meta, REGION_SIZE(qc_blob_meta));
|
||||
|
|
@ -341,6 +349,16 @@ void qclib_rerun(void)
|
|||
|
||||
qclib_add_if_table_entry(QCLIB_TE_AOP_META_SETTINGS, _qc_blob_meta, data_size, 0);
|
||||
|
||||
/* Attempt to load aop_devcfg_meta Blob. */
|
||||
data_size = cbfs_load(qclib_file(QCLIB_CBFS_AOP_DEVCFG_META),
|
||||
_aop_blob_meta, REGION_SIZE(aop_blob_meta));
|
||||
if (!data_size) {
|
||||
printk(BIOS_ERR, "[%s] /aop_devcfg_meta failed\n", __func__);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
qclib_add_if_table_entry(QCLIB_TE_AOP_DEVCFG_META_SETTINGS, _aop_blob_meta, data_size, 0);
|
||||
|
||||
/* Set up the system and jump into QcLib */
|
||||
printk(BIOS_DEBUG, "\n\n\nRe-enter QCLib to bring up AOP\n");
|
||||
qclib_prepare_and_run();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue