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