Lines Matching +full:revision +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0
7 * Exynos - CHIP ID support
12 * Samsung Exynos SoC Adaptive Supply Voltage and Chip ID support
24 #include <linux/soc/samsung/exynos-chipid.h>
27 #include "exynos-asv.h"
30 unsigned int rev_reg; /* revision register offset */
31 unsigned int main_rev_shift; /* main revision offset in rev_reg */
32 unsigned int sub_rev_shift; /* sub revision offset in rev_reg */
37 u32 revision; member
42 unsigned int id; member
45 /* Compatible with: samsung,exynos4210-chipid */
47 { "EXYNOS4210", 0x43200000 }, /* EVT0 revision */
60 /* Compatible with: samsung,exynos850-chipid */
76 if (product_id == soc_ids[i].id) in product_id_to_soc_id()
91 soc_info->product_id = val & EXYNOS_MASK; in exynos_chipid_get_chipid_info()
93 if (data->rev_reg != EXYNOS_CHIPID_REG_PRO_ID) { in exynos_chipid_get_chipid_info()
94 ret = regmap_read(regmap, data->rev_reg, &val); in exynos_chipid_get_chipid_info()
98 main_rev = (val >> data->main_rev_shift) & EXYNOS_REV_PART_MASK; in exynos_chipid_get_chipid_info()
99 sub_rev = (val >> data->sub_rev_shift) & EXYNOS_REV_PART_MASK; in exynos_chipid_get_chipid_info()
100 soc_info->revision = (main_rev << EXYNOS_REV_PART_SHIFT) | sub_rev; in exynos_chipid_get_chipid_info()
115 drv_data = of_device_get_match_data(&pdev->dev); in exynos_chipid_probe()
117 return -EINVAL; in exynos_chipid_probe()
119 regmap = device_node_to_regmap(pdev->dev.of_node); in exynos_chipid_probe()
127 soc_dev_attr = devm_kzalloc(&pdev->dev, sizeof(*soc_dev_attr), in exynos_chipid_probe()
130 return -ENOMEM; in exynos_chipid_probe()
132 soc_dev_attr->family = "Samsung Exynos"; in exynos_chipid_probe()
135 of_property_read_string(root, "model", &soc_dev_attr->machine); in exynos_chipid_probe()
138 soc_dev_attr->revision = devm_kasprintf(&pdev->dev, GFP_KERNEL, in exynos_chipid_probe()
139 "%x", soc_info.revision); in exynos_chipid_probe()
140 if (!soc_dev_attr->revision) in exynos_chipid_probe()
141 return -ENOMEM; in exynos_chipid_probe()
142 soc_dev_attr->soc_id = product_id_to_soc_id(soc_info.product_id); in exynos_chipid_probe()
143 if (!soc_dev_attr->soc_id) { in exynos_chipid_probe()
145 return -ENODEV; in exynos_chipid_probe()
153 ret = exynos_asv_init(&pdev->dev, regmap); in exynos_chipid_probe()
159 dev_info(&pdev->dev, "Exynos: CPU[%s] PRO_ID[0x%x] REV[0x%x] Detected\n", in exynos_chipid_probe()
160 soc_dev_attr->soc_id, soc_info.product_id, soc_info.revision); in exynos_chipid_probe()
191 .compatible = "samsung,exynos4210-chipid",
194 .compatible = "samsung,exynos850-chipid",
203 .name = "exynos-chipid",