xref: /aosp_15_r20/external/coreboot/src/soc/qualcomm/common/include/soc/qclib_common.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef _SOC_QUALCOMM_QCLIB_COMMON_H__
4 #define _SOC_QUALCOMM_QCLIB_COMMON_H__
5 
6 /* coreboot & QCLib I/F definitions */
7 
8 /* string field lengths */
9 #define QCLIB_MAGIC_NUMBER_LENGTH 8
10 #define QCLIB_FMAP_NAME_LENGTH 24
11 #define QCLIB_TE_NAME_LENGTH 24
12 
13 /* FMAP_REGION names */
14 #define QCLIB_FR_LIMITS_CFG_DATA   "RO_LIMITS_CFG"
15 
16 /* TE_NAME (table entry name) */
17 #define QCLIB_TE_DDR_INFORMATION   "ddr_information"
18 #define QCLIB_TE_QCLIB_LOG_BUFFER  "qclib_log_buffer"
19 #define QCLIB_TE_DCB_SETTINGS      "dcb_settings"
20 #define QCLIB_TE_CDT_SETTINGS      "cdt_settings"
21 #define QCLIB_TE_PMIC_SETTINGS     "pmic_settings"
22 #define QCLIB_TE_DDR_TRAINING_DATA "ddr_training_data"
23 #define QCLIB_TE_LIMITS_CFG_DATA   "limits_cfg_data"
24 #define QCLIB_TE_QCSDI             "qcsdi"
25 #define QCLIB_TE_MEM_CHIP_INFO     "mem_chip_info"
26 
27 /* BA_BMASK_VALUES (blob_attributes bit mask values) */
28 #define QCLIB_BA_SAVE_TO_STORAGE 0x00000001
29 
30 enum qclib_cbfs_file {
31 	QCLIB_CBFS_PMICCFG,
32 	QCLIB_CBFS_QCSDI,
33 	QCLIB_CBFS_QCLIB,
34 	QCLIB_CBFS_DCB,
35 	QCLIB_CBFS_MAX
36 };
37 
38 struct qclib_cb_if_table_entry {
39 	char       name[QCLIB_TE_NAME_LENGTH];  /* 0x00 TE_NAME */
40 	uint64_t   blob_address;		/* 0x18 blob addr in SRAM */
41 	uint32_t   size;                        /* 0x20 blob size in SRAM */
42 	uint32_t   blob_attributes;		/* 0x24 BA_BMASK_VALUES */
43 };
44 
45 /* GA_BMASK_VALUES (global_attributes bit mask values) */
46 #define QCLIB_GA_ENABLE_UART_LOGGING   0x00000001
47 #define QCLIB_GA_FORCE_COLD_REBOOT BIT(3)
48 #define QCLIB_GA_DDR_FMAX_LIMIT_HYNIX8GB BIT(5)
49 
50 #define QCLIB_INTERFACE_VERSION 0x00000001
51 #define QCLIB_MAX_NUMBER_OF_ENTRIES 16
52 
53 #define QCLIB_MAGIC_NUMBER "QCLIB_CB"
54 
55 struct qclib_cb_if_table {
56 	char          magic[8];				/* 0x00 */
57 	uint32_t      version;				/* 0x08 */
58 	uint32_t      num_entries;			/* 0x0C */
59 	uint32_t      max_entries;			/* 0x10 */
60 	uint32_t      global_attributes;		/* 0x14 */
61 	uint64_t      reserved;				/* 0x18 */
62 	struct qclib_cb_if_table_entry
63 		te[QCLIB_MAX_NUMBER_OF_ENTRIES];	/* 0x20 */
64 };
65 
66 extern struct qclib_cb_if_table qclib_cb_if_table;
67 
68 void qclib_add_if_table_entry(const char *name, void *base,
69 			      uint32_t size, uint32_t attrs);
70 void qclib_load_and_run(void);
71 int  qclib_soc_override(struct qclib_cb_if_table *table);
72 
73 const char *qclib_file_default(enum qclib_cbfs_file file);
74 const char *qclib_file(enum qclib_cbfs_file file);
75 
76 #endif  // _SOC_QUALCOMM_QCLIB_COMMON_H_
77