On 8/20/19 21:37, Krzysztof Kozlowski wrote: >>> diff --git a/drivers/soc/samsung/exynos-chipid.c b/drivers/soc/samsung/exynos-chipid.c >>> @@ -51,29 +48,24 @@ static const char * __init product_id_to_soc_id(unsigned int product_id) >>> int __init exynos_chipid_early_init(void) >>> { >>> struct soc_device_attribute *soc_dev_attr; >>> - void __iomem *exynos_chipid_base; >>> struct soc_device *soc_dev; >>> struct device_node *root; >>> - struct device_node *np; >>> + struct regmap *regmap; >>> u32 product_id; >>> u32 revision; >>> + int ret; >>> >>> - /* look up for chipid node */ >>> - np = of_find_compatible_node(NULL, NULL, "samsung,exynos4210-chipid"); >>> - if (!np) >>> - return -ENODEV; >>> - >>> - exynos_chipid_base = of_iomap(np, 0); >>> - of_node_put(np); >>> - >>> - if (!exynos_chipid_base) { >>> - pr_err("Failed to map SoC chipid\n"); >>> - return -ENXIO; >>> + regmap = syscon_regmap_lookup_by_compatible("samsung,exynos4210-chipid"); >>> + if (IS_ERR(regmap)) { >>> + pr_err("Failed to get CHIPID regmap\n"); >>> + return PTR_ERR(regmap); >>> } >> Following this change, I am now seeing the above error on our Tegra >> boards where this driver is enabled. This is triggering a kernel >> warnings test we have to fail. Hence, I don't think that you can remove >> the compatible node test here, unless you have a better way to determine >> if this is a samsung device. > > Right, this is really wrong... I missed that it is not a probe but > early init. And this init will be called on every board... Probably it > should be converted to a regular driver. I'm also inclined to have it converted to a regular driver. We already have "exynos-asv" driver matching on the chipid node (patch 3/9). The ASV patches will not be merged soon anyway, all this needs some more thought. Krzysztof, can we abandon the chipid patches for now? Your pull request doesn't appear to be merged to arm-soc yet. Sorry about that. -- Regards, Sylwester