Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifndef __QCOM_SOCINFO_H__
4#define __QCOM_SOCINFO_H__
5
6#include <linux/types.h>
7
8/*
9 * SMEM item id, used to acquire handles to respective
10 * SMEM region.
11 */
12#define SMEM_HW_SW_BUILD_ID 137
13
14#define SMEM_SOCINFO_BUILD_ID_LENGTH 32
15#define SMEM_SOCINFO_CHIP_ID_LENGTH 32
16
17/*
18 * SoC version type with major number in the upper 16 bits and minor
19 * number in the lower 16 bits.
20 */
21#define SOCINFO_MAJOR(ver) (((ver) >> 16) & 0xffff)
22#define SOCINFO_MINOR(ver) ((ver) & 0xffff)
23#define SOCINFO_VERSION(maj, min) ((((maj) & 0xffff) << 16)|((min) & 0xffff))
24
25/* Socinfo SMEM item structure */
26struct socinfo {
27 __le32 fmt;
28 __le32 id;
29 __le32 ver;
30 char build_id[SMEM_SOCINFO_BUILD_ID_LENGTH];
31 /* Version 2 */
32 __le32 raw_id;
33 __le32 raw_ver;
34 /* Version 3 */
35 __le32 hw_plat;
36 /* Version 4 */
37 __le32 plat_ver;
38 /* Version 5 */
39 __le32 accessory_chip;
40 /* Version 6 */
41 __le32 hw_plat_subtype;
42 /* Version 7 */
43 __le32 pmic_model;
44 __le32 pmic_die_rev;
45 /* Version 8 */
46 __le32 pmic_model_1;
47 __le32 pmic_die_rev_1;
48 __le32 pmic_model_2;
49 __le32 pmic_die_rev_2;
50 /* Version 9 */
51 __le32 foundry_id;
52 /* Version 10 */
53 __le32 serial_num;
54 /* Version 11 */
55 __le32 num_pmics;
56 __le32 pmic_array_offset;
57 /* Version 12 */
58 __le32 chip_family;
59 __le32 raw_device_family;
60 __le32 raw_device_num;
61 /* Version 13 */
62 __le32 nproduct_id;
63 char chip_id[SMEM_SOCINFO_CHIP_ID_LENGTH];
64 /* Version 14 */
65 __le32 num_clusters;
66 __le32 ncluster_array_offset;
67 __le32 num_subset_parts;
68 __le32 nsubset_parts_array_offset;
69 /* Version 15 */
70 __le32 nmodem_supported;
71 /* Version 16 */
72 __le32 feature_code;
73 __le32 pcode;
74 __le32 npartnamemap_offset;
75 __le32 nnum_partname_mapping;
76 /* Version 17 */
77 __le32 oem_variant;
78 /* Version 18 */
79 __le32 num_kvps;
80 __le32 kvps_offset;
81 /* Version 19 */
82 __le32 num_func_clusters;
83 __le32 boot_cluster;
84 __le32 boot_core;
85 /* Version 20 */
86 __le32 raw_package_type;
87 /* Version 21, 22, 23 */
88 __le32 reserve1[4];
89};
90
91/* Internal feature codes */
92enum qcom_socinfo_feature_code {
93 /* External feature codes */
94 SOCINFO_FC_UNKNOWN = 0x0,
95 SOCINFO_FC_AA,
96 SOCINFO_FC_AB,
97 SOCINFO_FC_AC,
98 SOCINFO_FC_AD,
99 SOCINFO_FC_AE,
100 SOCINFO_FC_AF,
101 SOCINFO_FC_AG,
102 SOCINFO_FC_AH,
103};
104
105/* Internal feature codes */
106/* Valid values: 0 <= n <= 0xf */
107#define SOCINFO_FC_Yn(n) (0xf1 + (n))
108#define SOCINFO_FC_INT_MAX SOCINFO_FC_Yn(0xf)
109
110/* Product codes */
111#define SOCINFO_PC_UNKNOWN 0
112#define SOCINFO_PCn(n) ((n) + 1)
113#define SOCINFO_PC_RESERVE (BIT(31) - 1)
114
115#endif