/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __QCOM_SOCINFO_H__ #define __QCOM_SOCINFO_H__ #include /* * SMEM item id, used to acquire handles to respective * SMEM region. */ #define SMEM_HW_SW_BUILD_ID 137 #define SMEM_SOCINFO_BUILD_ID_LENGTH 32 #define SMEM_SOCINFO_CHIP_ID_LENGTH 32 /* * SoC version type with major number in the upper 16 bits and minor * number in the lower 16 bits. */ #define SOCINFO_MAJOR(ver) (((ver) >> 16) & 0xffff) #define SOCINFO_MINOR(ver) ((ver) & 0xffff) #define SOCINFO_VERSION(maj, min) ((((maj) & 0xffff) << 16)|((min) & 0xffff)) /* Socinfo SMEM item structure */ struct socinfo { __le32 fmt; __le32 id; __le32 ver; char build_id[SMEM_SOCINFO_BUILD_ID_LENGTH]; /* Version 2 */ __le32 raw_id; __le32 raw_ver; /* Version 3 */ __le32 hw_plat; /* Version 4 */ __le32 plat_ver; /* Version 5 */ __le32 accessory_chip; /* Version 6 */ __le32 hw_plat_subtype; /* Version 7 */ __le32 pmic_model; __le32 pmic_die_rev; /* Version 8 */ __le32 pmic_model_1; __le32 pmic_die_rev_1; __le32 pmic_model_2; __le32 pmic_die_rev_2; /* Version 9 */ __le32 foundry_id; /* Version 10 */ __le32 serial_num; /* Version 11 */ __le32 num_pmics; __le32 pmic_array_offset; /* Version 12 */ __le32 chip_family; __le32 raw_device_family; __le32 raw_device_num; /* Version 13 */ __le32 nproduct_id; char chip_id[SMEM_SOCINFO_CHIP_ID_LENGTH]; /* Version 14 */ __le32 num_clusters; __le32 ncluster_array_offset; __le32 num_subset_parts; __le32 nsubset_parts_array_offset; /* Version 15 */ __le32 nmodem_supported; /* Version 16 */ __le32 feature_code; __le32 pcode; __le32 npartnamemap_offset; __le32 nnum_partname_mapping; /* Version 17 */ __le32 oem_variant; /* Version 18 */ __le32 num_kvps; __le32 kvps_offset; /* Version 19 */ __le32 num_func_clusters; __le32 boot_cluster; __le32 boot_core; }; /* Internal feature codes */ enum qcom_socinfo_feature_code { /* External feature codes */ SOCINFO_FC_UNKNOWN = 0x0, SOCINFO_FC_AA, SOCINFO_FC_AB, SOCINFO_FC_AC, SOCINFO_FC_AD, SOCINFO_FC_AE, SOCINFO_FC_AF, SOCINFO_FC_AG, SOCINFO_FC_AH, }; /* Internal feature codes */ /* Valid values: 0 <= n <= 0xf */ #define SOCINFO_FC_Yn(n) (0xf1 + (n)) #define SOCINFO_FC_INT_MAX SOCINFO_FC_Yn(0xf) /* Product codes */ #define SOCINFO_PC_UNKNOWN 0 #define SOCINFO_PCn(n) ((n) + 1) #define SOCINFO_PC_RESERVE (BIT(31) - 1) #endif