aboutsummaryrefslogtreecommitdiff
path: root/src/soc/qualcomm/sdm845/qclib.c
diff options
context:
space:
mode:
authorT Michael Turney <mturney@codeaurora.org>2019-03-21 14:20:52 -0700
committerJulius Werner <jwerner@chromium.org>2019-05-03 21:59:16 +0000
commitbd0b51c0be1ec2c9a5f02de3c13108c13941e2c2 (patch)
tree38ebe5c50efb4d68ed65791670a61481c6cd9fee /src/soc/qualcomm/sdm845/qclib.c
parent101098c41a047184e3eceabca2c1baa11141f36e (diff)
sdm845: Add QCLib to RomStage to perform IP init
CB acts as I/O handler for QCLib (e.g. DDR training data) This interface allows bi-directional data flow between CB and QCLib Tested and working interfaces: DDR Training data QCLib serial console output DDR Information (base & size) limits cfg data TEST=build & run Change-Id: I073186674a1a593547d1ee1d15c7cd4fd8ad5bc1 Signed-off-by: T Michael Turney <mturney@codeaurora.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/25208 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src/soc/qualcomm/sdm845/qclib.c')
-rw-r--r--src/soc/qualcomm/sdm845/qclib.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/soc/qualcomm/sdm845/qclib.c b/src/soc/qualcomm/sdm845/qclib.c
new file mode 100644
index 0000000000..9c05452c9e
--- /dev/null
+++ b/src/soc/qualcomm/sdm845/qclib.c
@@ -0,0 +1,50 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <cbfs.h>
+#include <fmap.h>
+#include <console/console.h>
+#include <soc/symbols.h>
+#include <soc/qclib_common.h>
+
+int qclib_soc_blob_load(void)
+{
+ size_t size;
+ ssize_t ssize;
+
+ /* Attempt to load PMICCFG Blob */
+ size = cbfs_boot_load_file(CONFIG_CBFS_PREFIX "/pmiccfg",
+ _pmic, REGION_SIZE(pmic), CBFS_TYPE_RAW);
+ if (!size)
+ return -1;
+ qclib_add_if_table_entry(QCLIB_TE_PMIC_SETTINGS, _pmic, size, 0);
+
+ /* Attempt to load DCB Blob */
+ size = cbfs_boot_load_file(CONFIG_CBFS_PREFIX "/dcb",
+ _dcb, REGION_SIZE(dcb), CBFS_TYPE_RAW);
+ if (!size)
+ return -1;
+ qclib_add_if_table_entry(QCLIB_TE_DCB_SETTINGS, _dcb, size, 0);
+
+ /* Attempt to load Limits Config Blob */
+ ssize = fmap_read_area(QCLIB_FR_LIMITS_CFG_DATA, _limits_cfg,
+ REGION_SIZE(limits_cfg));
+ if (ssize < 0)
+ return -1;
+ qclib_add_if_table_entry(QCLIB_TE_LIMITS_CFG_DATA,
+ _limits_cfg, ssize, 0);
+
+ return 0;
+}