Hi, On 8/20/19 11:38 PM, Sylwester Nawrocki wrote: > 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. Early initialization is needed for SoC driver to be used from within arch/arm/mach-exynos/ and _initcall() usage is the usual way for SoC drivers to be initialized: drivers/soc/amlogic/meson-gx-socinfo.c drivers/soc/amlogic/meson-mx-socinfo.c drivers/soc/atmel/soc.c drivers/soc/bcm/brcmstb/common.c drivers/soc/imx/soc-imx-scu.c drivers/soc/imx/soc-imx8.c drivers/soc/renesas/renesas-soc.c drivers/soc/tegra/fuse/fuse-tegra.c drivers/soc/ux500/ux500-soc-id.c drivers/soc/versatile/soc-integrator.c drivers/soc/versatile/soc-integrator.c The only SoC drivers that are regular drivers are: drivers/soc/fsl/guts.c drivers/soc/versatile/soc-realview.c > 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 chipid driver is good and useful on its own. The preferred solution IMHO would be to just revert "soc: samsung: Convert exynos-chipid driver to use the regmap API" commit. > pull request doesn't appear to be merged to arm-soc yet. Sorry about > that. Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics