Lines Matching +full:qcom +full:- +full:pm8008

1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2009-2017, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2017-2019, Linaro Ltd.
13 #include <linux/soc/qcom/smem.h>
14 #include <linux/soc/qcom/socinfo.h>
22 #include <dt-bindings/arm/qcom,ids.h>
166 [44] = "PM8008",
298 { qcom_board_id_named(MSM8974PRO_AC, "MSM8974PRO-AC") },
309 { qcom_board_id_named(APQ8074PRO_AA, "APQ8074PRO-AA") },
310 { qcom_board_id_named(APQ8074PRO_AB, "APQ8074PRO-AB") },
311 { qcom_board_id_named(APQ8074PRO_AC, "APQ8074PRO-AC") },
312 { qcom_board_id_named(MSM8274PRO_AA, "MSM8274PRO-AA") },
313 { qcom_board_id_named(MSM8274PRO_AB, "MSM8274PRO-AB") },
314 { qcom_board_id_named(MSM8274PRO_AC, "MSM8274PRO-AC") },
315 { qcom_board_id_named(MSM8674PRO_AA, "MSM8674PRO-AA") },
316 { qcom_board_id_named(MSM8674PRO_AB, "MSM8674PRO-AB") },
317 { qcom_board_id_named(MSM8674PRO_AC, "MSM8674PRO-AC") },
318 { qcom_board_id_named(MSM8974PRO_AA, "MSM8974PRO-AA") },
319 { qcom_board_id_named(MSM8974PRO_AB, "MSM8974PRO-AB") },
544 return single_open(file, _func, inode->i_private); \
556 qcom_socinfo->dbg_root, \
562 struct socinfo *socinfo = seq->private; in qcom_show_build_id()
564 seq_printf(seq, "%s\n", socinfo->build_id); in qcom_show_build_id()
571 struct socinfo *socinfo = seq->private; in qcom_show_pmic_model()
572 int model = SOCINFO_MINOR(le32_to_cpu(socinfo->pmic_model)); in qcom_show_pmic_model()
575 return -EINVAL; in qcom_show_pmic_model()
587 struct socinfo *socinfo = seq->private; in qcom_show_pmic_model_array()
588 unsigned int num_pmics = le32_to_cpu(socinfo->num_pmics); in qcom_show_pmic_model_array()
589 unsigned int pmic_array_offset = le32_to_cpu(socinfo->pmic_array_offset); in qcom_show_pmic_model_array()
613 struct socinfo *socinfo = seq->private; in qcom_show_pmic_die_revision()
616 SOCINFO_MAJOR(le32_to_cpu(socinfo->pmic_die_rev)), in qcom_show_pmic_die_revision()
617 SOCINFO_MINOR(le32_to_cpu(socinfo->pmic_die_rev))); in qcom_show_pmic_die_revision()
624 struct socinfo *socinfo = seq->private; in qcom_show_chip_id()
626 seq_printf(seq, "%s\n", socinfo->chip_id); in qcom_show_chip_id()
640 struct smem_image_version *image_version = seq->private; \
641 if (image_version->type[0] != '\0') \
642 seq_printf(seq, "%s\n", image_version->type); \
647 return single_open(file, show_image_##type, inode->i_private); \
671 qcom_socinfo->dbg_root = debugfs_create_dir("qcom_socinfo", NULL); in socinfo_debugfs_init()
673 qcom_socinfo->info.fmt = __le32_to_cpu(info->fmt); in socinfo_debugfs_init()
675 debugfs_create_x32("info_fmt", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
676 &qcom_socinfo->info.fmt); in socinfo_debugfs_init()
678 switch (qcom_socinfo->info.fmt) { in socinfo_debugfs_init()
683 qcom_socinfo->info.raw_package_type = __le32_to_cpu(info->raw_package_type); in socinfo_debugfs_init()
684 debugfs_create_u32("raw_package_type", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
685 &qcom_socinfo->info.raw_package_type); in socinfo_debugfs_init()
688 qcom_socinfo->info.num_func_clusters = __le32_to_cpu(info->num_func_clusters); in socinfo_debugfs_init()
689 qcom_socinfo->info.boot_cluster = __le32_to_cpu(info->boot_cluster); in socinfo_debugfs_init()
690 qcom_socinfo->info.boot_core = __le32_to_cpu(info->boot_core); in socinfo_debugfs_init()
692 debugfs_create_u32("num_func_clusters", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
693 &qcom_socinfo->info.num_func_clusters); in socinfo_debugfs_init()
694 debugfs_create_u32("boot_cluster", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
695 &qcom_socinfo->info.boot_cluster); in socinfo_debugfs_init()
696 debugfs_create_u32("boot_core", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
697 &qcom_socinfo->info.boot_core); in socinfo_debugfs_init()
701 qcom_socinfo->info.oem_variant = __le32_to_cpu(info->oem_variant); in socinfo_debugfs_init()
702 debugfs_create_u32("oem_variant", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
703 &qcom_socinfo->info.oem_variant); in socinfo_debugfs_init()
706 qcom_socinfo->info.feature_code = __le32_to_cpu(info->feature_code); in socinfo_debugfs_init()
707 qcom_socinfo->info.pcode = __le32_to_cpu(info->pcode); in socinfo_debugfs_init()
709 debugfs_create_u32("feature_code", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
710 &qcom_socinfo->info.feature_code); in socinfo_debugfs_init()
711 debugfs_create_u32("pcode", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
712 &qcom_socinfo->info.pcode); in socinfo_debugfs_init()
715 qcom_socinfo->info.nmodem_supported = __le32_to_cpu(info->nmodem_supported); in socinfo_debugfs_init()
717 debugfs_create_u32("nmodem_supported", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
718 &qcom_socinfo->info.nmodem_supported); in socinfo_debugfs_init()
721 qcom_socinfo->info.num_clusters = __le32_to_cpu(info->num_clusters); in socinfo_debugfs_init()
722 qcom_socinfo->info.ncluster_array_offset = __le32_to_cpu(info->ncluster_array_offset); in socinfo_debugfs_init()
723 qcom_socinfo->info.num_subset_parts = __le32_to_cpu(info->num_subset_parts); in socinfo_debugfs_init()
724 qcom_socinfo->info.nsubset_parts_array_offset = in socinfo_debugfs_init()
725 __le32_to_cpu(info->nsubset_parts_array_offset); in socinfo_debugfs_init()
727 debugfs_create_u32("num_clusters", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
728 &qcom_socinfo->info.num_clusters); in socinfo_debugfs_init()
729 debugfs_create_u32("ncluster_array_offset", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
730 &qcom_socinfo->info.ncluster_array_offset); in socinfo_debugfs_init()
731 debugfs_create_u32("num_subset_parts", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
732 &qcom_socinfo->info.num_subset_parts); in socinfo_debugfs_init()
733 debugfs_create_u32("nsubset_parts_array_offset", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
734 &qcom_socinfo->info.nsubset_parts_array_offset); in socinfo_debugfs_init()
737 qcom_socinfo->info.nproduct_id = __le32_to_cpu(info->nproduct_id); in socinfo_debugfs_init()
739 debugfs_create_u32("nproduct_id", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
740 &qcom_socinfo->info.nproduct_id); in socinfo_debugfs_init()
744 qcom_socinfo->info.chip_family = in socinfo_debugfs_init()
745 __le32_to_cpu(info->chip_family); in socinfo_debugfs_init()
746 qcom_socinfo->info.raw_device_family = in socinfo_debugfs_init()
747 __le32_to_cpu(info->raw_device_family); in socinfo_debugfs_init()
748 qcom_socinfo->info.raw_device_num = in socinfo_debugfs_init()
749 __le32_to_cpu(info->raw_device_num); in socinfo_debugfs_init()
751 debugfs_create_x32("chip_family", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
752 &qcom_socinfo->info.chip_family); in socinfo_debugfs_init()
754 qcom_socinfo->dbg_root, in socinfo_debugfs_init()
755 &qcom_socinfo->info.raw_device_family); in socinfo_debugfs_init()
757 qcom_socinfo->dbg_root, in socinfo_debugfs_init()
758 &qcom_socinfo->info.raw_device_num); in socinfo_debugfs_init()
761 num_pmics = le32_to_cpu(info->num_pmics); in socinfo_debugfs_init()
762 pmic_array_offset = le32_to_cpu(info->pmic_array_offset); in socinfo_debugfs_init()
768 qcom_socinfo->info.foundry_id = __le32_to_cpu(info->foundry_id); in socinfo_debugfs_init()
770 debugfs_create_u32("foundry_id", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
771 &qcom_socinfo->info.foundry_id); in socinfo_debugfs_init()
779 qcom_socinfo->info.hw_plat_subtype = in socinfo_debugfs_init()
780 __le32_to_cpu(info->hw_plat_subtype); in socinfo_debugfs_init()
783 qcom_socinfo->dbg_root, in socinfo_debugfs_init()
784 &qcom_socinfo->info.hw_plat_subtype); in socinfo_debugfs_init()
787 qcom_socinfo->info.accessory_chip = in socinfo_debugfs_init()
788 __le32_to_cpu(info->accessory_chip); in socinfo_debugfs_init()
791 qcom_socinfo->dbg_root, in socinfo_debugfs_init()
792 &qcom_socinfo->info.accessory_chip); in socinfo_debugfs_init()
795 qcom_socinfo->info.plat_ver = __le32_to_cpu(info->plat_ver); in socinfo_debugfs_init()
798 qcom_socinfo->dbg_root, in socinfo_debugfs_init()
799 &qcom_socinfo->info.plat_ver); in socinfo_debugfs_init()
802 qcom_socinfo->info.hw_plat = __le32_to_cpu(info->hw_plat); in socinfo_debugfs_init()
805 qcom_socinfo->dbg_root, in socinfo_debugfs_init()
806 &qcom_socinfo->info.hw_plat); in socinfo_debugfs_init()
809 qcom_socinfo->info.raw_ver = __le32_to_cpu(info->raw_ver); in socinfo_debugfs_init()
811 debugfs_create_u32("raw_version", 0444, qcom_socinfo->dbg_root, in socinfo_debugfs_init()
812 &qcom_socinfo->info.raw_ver); in socinfo_debugfs_init()
838 qcom_socinfo->dbg_root); in socinfo_debugfs_init()
850 debugfs_remove_recursive(qcom_socinfo->dbg_root); in socinfo_debugfs_exit()
869 dev_err(&pdev->dev, "Couldn't find socinfo\n"); in qcom_socinfo_probe()
873 qs = devm_kzalloc(&pdev->dev, sizeof(*qs), GFP_KERNEL); in qcom_socinfo_probe()
875 return -ENOMEM; in qcom_socinfo_probe()
877 qs->attr.family = "Snapdragon"; in qcom_socinfo_probe()
878 qs->attr.machine = socinfo_machine(&pdev->dev, in qcom_socinfo_probe()
879 le32_to_cpu(info->id)); in qcom_socinfo_probe()
880 qs->attr.soc_id = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%u", in qcom_socinfo_probe()
881 le32_to_cpu(info->id)); in qcom_socinfo_probe()
882 qs->attr.revision = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%u.%u", in qcom_socinfo_probe()
883 SOCINFO_MAJOR(le32_to_cpu(info->ver)), in qcom_socinfo_probe()
884 SOCINFO_MINOR(le32_to_cpu(info->ver))); in qcom_socinfo_probe()
885 if (!qs->attr.soc_id || !qs->attr.revision) in qcom_socinfo_probe()
886 return -ENOMEM; in qcom_socinfo_probe()
889 qs->attr.serial_number = devm_kasprintf(&pdev->dev, GFP_KERNEL, in qcom_socinfo_probe()
891 le32_to_cpu(info->serial_num)); in qcom_socinfo_probe()
892 if (!qs->attr.serial_number) in qcom_socinfo_probe()
893 return -ENOMEM; in qcom_socinfo_probe()
896 qs->soc_dev = soc_device_register(&qs->attr); in qcom_socinfo_probe()
897 if (IS_ERR(qs->soc_dev)) in qcom_socinfo_probe()
898 return PTR_ERR(qs->soc_dev); in qcom_socinfo_probe()
914 soc_device_unregister(qs->soc_dev); in qcom_socinfo_remove()
923 .name = "qcom-socinfo",
931 MODULE_ALIAS("platform:qcom-socinfo");