diff --git a/drivers/soc/qcom/socinfo.c b/drivers/soc/qcom/socinfo.c index 519f0edaeb7f..532111e1463f 100644 --- a/drivers/soc/qcom/socinfo.c +++ b/drivers/soc/qcom/socinfo.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2009-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. */ #define pr_fmt(fmt) "%s: " fmt, __func__ @@ -209,6 +210,14 @@ struct socinfo_v0_15 { uint32_t nmodem_supported; }; +struct socinfo_v0_16 { + struct socinfo_v0_15 v0_15; + __le32 esku; + __le32 nproduct_code; + __le32 npartnamemap_offset; + __le32 nnum_partname_mapping; +}; + static union { struct socinfo_v0_1 v0_1; struct socinfo_v0_2 v0_2; @@ -225,10 +234,11 @@ static union { struct socinfo_v0_13 v0_13; struct socinfo_v0_14 v0_14; struct socinfo_v0_15 v0_15; + struct socinfo_v0_16 v0_16; } *socinfo; /* max socinfo format version supported */ -#define MAX_SOCINFO_FORMAT SOCINFO_VERSION(0, 15) +#define MAX_SOCINFO_FORMAT SOCINFO_VERSION(0, 16) static struct msm_soc_info cpu_of_id[] = { [0] = {MSM_CPU_UNKNOWN, "Unknown CPU"}, @@ -1489,6 +1499,7 @@ static void __init populate_soc_sysfs_files(struct device *msm_soc_device) device_create_file(msm_soc_device, &images); switch (socinfo_format) { + case SOCINFO_VERSION(0, 16): case SOCINFO_VERSION(0, 15): device_create_file(msm_soc_device, &msm_soc_attr_nmodem_supported); @@ -1787,6 +1798,30 @@ static void socinfo_print(void) socinfo->v0_15.nmodem_supported); break; + case SOCINFO_VERSION(0, 16): + pr_info("v%u.%u, id=%u, ver=%u.%u, raw_id=%u, raw_ver=%u, hw_plat=%u, hw_plat_ver=%u\n accessory_chip=%u, hw_plat_subtype=%u, pmic_model=%u, pmic_die_revision=%u foundry_id=%u serial_number=%u num_pmics=%u chip_family=0x%x raw_device_family=0x%x raw_device_number=0x%x nproduct_id=0x%x num_clusters=0x%x ncluster_array_offset=0x%x num_subset_parts=0x%x nsubset_parts_array_offset=0x%x nmodem_supported=0x%x\n", + f_maj, f_min, socinfo->v0_1.id, v_maj, v_min, + socinfo->v0_2.raw_id, socinfo->v0_2.raw_version, + socinfo->v0_3.hw_platform, + socinfo->v0_4.platform_version, + socinfo->v0_5.accessory_chip, + socinfo->v0_6.hw_platform_subtype, + socinfo->v0_7.pmic_model, + socinfo->v0_7.pmic_die_revision, + socinfo->v0_9.foundry_id, + socinfo->v0_10.serial_number, + socinfo->v0_11.num_pmics, + socinfo->v0_12.chip_family, + socinfo->v0_12.raw_device_family, + socinfo->v0_12.raw_device_number, + socinfo->v0_13.nproduct_id, + socinfo->v0_14.num_clusters, + socinfo->v0_14.ncluster_array_offset, + socinfo->v0_14.num_subset_parts, + socinfo->v0_14.nsubset_parts_array_offset, + socinfo->v0_15.nmodem_supported); + break; + default: pr_err("Unknown format found: v%u.%u\n", f_maj, f_min); break;