123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved.
- */
- #ifndef __SOC_QCOM_SOCINFO_H__
- #define __SOC_QCOM_SOCINFO_H__
- #include <linux/types.h>
- enum feature_code {
- /* External feature code */
- 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,
- SOCINFO_FC_EXT_RESERVE,
- /* SubPart feature code */
- SOCINFO_FC_W0 = 0xd1,
- SOCINFO_FC_W1,
- SOCINFO_FC_W2,
- SOCINFO_FC_W3,
- SOCINFO_FC_W4,
- SOCINFO_FC_W5,
- SOCINFO_FC_W6,
- SOCINFO_FC_W7,
- SOCINFO_FC_W8,
- SOCINFO_FC_W9,
- SOCINFO_FC_WA,
- SOCINFO_FC_WB,
- SOCINFO_FC_WC,
- SOCINFO_FC_WD,
- SOCINFO_FC_WE,
- SOCINFO_FC_WF,
- SOCINFO_FC_SUBPART_RESERVE,
- /* Internal feature code */
- SOCINFO_FC_Y0 = 0xf1,
- SOCINFO_FC_Y1,
- SOCINFO_FC_Y2,
- SOCINFO_FC_Y3,
- SOCINFO_FC_Y4,
- SOCINFO_FC_Y5,
- SOCINFO_FC_Y6,
- SOCINFO_FC_Y7,
- SOCINFO_FC_Y8,
- SOCINFO_FC_Y9,
- SOCINFO_FC_YA,
- SOCINFO_FC_YB,
- SOCINFO_FC_YC,
- SOCINFO_FC_YD,
- SOCINFO_FC_YE,
- SOCINFO_FC_YF,
- SOCINFO_FC_INT_RESERVE
- };
- enum pcode {
- SOCINFO_PCODE_UNKNOWN = 0,
- SOCINFO_PCODE_0,
- SOCINFO_PCODE_1,
- SOCINFO_PCODE_2,
- SOCINFO_PCODE_3,
- SOCINFO_PCODE_4,
- SOCINFO_PCODE_5,
- SOCINFO_PCODE_6,
- SOCINFO_PCODE_7,
- SOCINFO_PCODE_8,
- SOCINFO_PCODE_RESERVE = 0x7fffffff
- };
- enum socinfo_parttype {
- SOCINFO_PART_GPU = 1,
- SOCINFO_PART_VIDEO,
- SOCINFO_PART_CAMERA,
- SOCINFO_PART_DISPLAY,
- SOCINFO_PART_AUDIO,
- SOCINFO_PART_MODEM,
- SOCINFO_PART_WLAN,
- SOCINFO_PART_COMP,
- SOCINFO_PART_SENSORS,
- SOCINFO_PART_NPU,
- SOCINFO_PART_SPSS,
- SOCINFO_PART_NAV,
- SOCINFO_PART_COMPUTE_1,
- SOCINFO_PART_DISPLAY_1,
- SOCINFO_PART_NSP,
- SOCINFO_PART_EVA,
- SOCINFO_PART_MAX_PARTTYPE
- };
- enum subset_part_type {
- PART_UNKNOWN,
- PART_GPU,
- PART_VIDEO,
- PART_CAMERA,
- PART_DISPLAY,
- PART_AUDIO,
- PART_MODEM,
- PART_WLAN,
- PART_COMP,
- PART_SENSORS,
- PART_NPU,
- PART_SPSS,
- PART_NAV,
- PART_COMP1,
- PART_DISPLAY1,
- PART_NSP,
- PART_EVA,
- NUM_PARTS_MAX,
- };
- enum subset_cluster_type {
- CLUSTER_CPUSS,
- NUM_CLUSTERS_MAX,
- };
- #if IS_ENABLED(CONFIG_QCOM_SOCINFO)
- uint32_t socinfo_get_id(void);
- uint32_t socinfo_get_serial_number(void);
- const char *socinfo_get_id_string(void);
- int socinfo_get_feature_code(void);
- int socinfo_get_pcode(void);
- char *socinfo_get_partinfo_part_name(unsigned int part_id);
- uint32_t socinfo_get_partinfo_chip_id(unsigned int part_id);
- uint32_t socinfo_get_partinfo_vulkan_id(unsigned int part_id);
- uint32_t socinfo_get_cluster_info(enum subset_cluster_type cluster);
- bool socinfo_get_part_info(enum subset_part_type part);
- int socinfo_get_part_count(enum subset_part_type part);
- int socinfo_get_subpart_info(enum subset_part_type part,
- u32 *part_info,
- u32 num_parts);
- #else
- static inline uint32_t socinfo_get_id(void)
- {
- return 0;
- }
- static inline uint32_t socinfo_get_serial_number(void)
- {
- return 0;
- }
- static inline const char *socinfo_get_id_string(void)
- {
- return "N/A";
- }
- int socinfo_get_feature_code(void)
- {
- return -EINVAL;
- }
- int socinfo_get_pcode(void)
- {
- return -EINVAL;
- }
- const char *socinfo_get_partinfo_part_name(unsigned int part_id)
- {
- return NULL;
- }
- uint32_t socinfo_get_partinfo_chip_id(unsigned int part_id)
- {
- return 0;
- }
- uint32_t socinfo_get_partinfo_vulkan_id(unsigned int part_id)
- {
- return 0;
- }
- uint32_t socinfo_get_cluster_info(enum subset_cluster_type cluster)
- {
- return 0;
- }
- bool socinfo_get_part_info(enum subset_part_type part)
- {
- return false;
- }
- int socinfo_get_part_count(enum subset_part_type part)
- {
- return -EINVAL;
- }
- int socinfo_get_subpart_info(enum subset_part_type part,
- u32 *part_info,
- u32 num_parts)
- {
- return -EINVAL;
- }
- #endif /* CONFIG_QCOM_SOCINFO */
- #endif /* __SOC_QCOM_SOCINFO_H__ */
|