From: Sylwester Nawrocki Date: Wed, 30 Jan 2019 15:24:13 +0000 (+0100) Subject: soc: samsung: chipid: Add ABB register region read helper X-Git-Tag: submit/tizen/20190329.020226~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F45%2F200145%2F4;p=platform%2Fkernel%2Flinux-exynos.git soc: samsung: chipid: Add ABB register region read helper This patch adds helper functions for accessing the ABB block registers needed by the ASV driver. Change-Id: Ida2ea622136c1abea2caffaee00b5400a8efba7d Signed-off-by: Sylwester Nawrocki --- diff --git a/drivers/soc/samsung/exynos-chipid.c b/drivers/soc/samsung/exynos-chipid.c index 17d06d21bc6f..ce919cf0124f 100644 --- a/drivers/soc/samsung/exynos-chipid.c +++ b/drivers/soc/samsung/exynos-chipid.c @@ -37,6 +37,7 @@ static const struct exynos_soc_id { { "EXYNOS5433", 0xE5433000 }, }; +static void __iomem *exynos_abb_base; static void __iomem *exynos_chipid_base; unsigned int exynos_chipid_read(unsigned int offset) @@ -50,6 +51,14 @@ unsigned int exynos_chipid_read_bits(unsigned int offset, unsigned int shift, return (readl_relaxed(exynos_chipid_base + offset) >> shift) & mask; } +unsigned int exynos_chipid_abb_read(unsigned int offset) +{ + if (WARN_ON(exynos_abb_base == NULL)) + return 0; + + return readl_relaxed(exynos_abb_base + offset); +} + static const char * __init product_id_to_soc_id(unsigned int product_id) { int i; @@ -75,13 +84,22 @@ int __init exynos_chipid_early_init(void) 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"); + of_node_put(np); + pr_err("Failed to map SoC CHIPID\n"); return -ENXIO; } + if (of_device_is_compatible(np, "samsung,exynos5433-chipid")) { + exynos_abb_base = of_iomap(np, 1); + if (!exynos_abb_base) { + of_node_put(np); + pr_err("Failed to map SoC CHIPID/ABB\n"); + return -ENXIO; + } + } + of_node_put(np); + product_id = exynos_chipid_read(EXYNOS_CHIPID_REG_PRO_ID); revision = product_id & EXYNOS_REV_MASK; diff --git a/drivers/soc/samsung/exynos-chipid.h b/drivers/soc/samsung/exynos-chipid.h index 754528120522..92e854ed894f 100644 --- a/drivers/soc/samsung/exynos-chipid.h +++ b/drivers/soc/samsung/exynos-chipid.h @@ -48,3 +48,4 @@ unsigned int exynos_chipid_read(unsigned int offset); unsigned int exynos_chipid_read_bits(unsigned int offset, unsigned int shift, unsigned int mask); +unsigned int exynos_chipid_abb_read(unsigned int offset);