All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pankaj Dubey <pankaj.dubey@samsung.com>
To: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org
Cc: kgene.kim@samsung.com, linux@arm.linux.org.uk,
	chow.kim@samsung.com, Young-Gun Jang <yg1004.jang@samsung.com>,
	Pankaj Dubey <pankaj.dubey@samsung.com>
Subject: [PATCH 06/10] ARM: EXYNOS: Add support for mapping PMU base address via DT
Date: Wed, 02 Apr 2014 16:50:57 +0900	[thread overview]
Message-ID: <1396425058-4012-7-git-send-email-pankaj.dubey@samsung.com> (raw)
In-Reply-To: <1396425058-4012-1-git-send-email-pankaj.dubey@samsung.com>

From: Young-Gun Jang <yg1004.jang@samsung.com>

Add support for mapping Exynos Power Management Unit (PMU) base address
from device tree. Code will use existing samsung pmu binding information.
This patch also adds "get_exynos_pmubase" a helper function to return mapped base
address to various other files under "mach-exynos".

Signed-off-by: Young-Gun Jang <yg1004.jang@samsung.com>
Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
---
 arch/arm/mach-exynos/common.h |    2 ++
 arch/arm/mach-exynos/exynos.c |   44 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index ff28334..9a55cf6 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -61,4 +61,6 @@ struct exynos_pmu_conf {
 
 extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
 
+extern void __iomem *get_exynos_pmubase(void);
+
 #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index a5e1349..a5127fb 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -35,6 +35,8 @@
 #define L2_AUX_VAL 0x7C470001
 #define L2_AUX_MASK 0xC200ffff
 
+static void __iomem *exynos_pmu_base __initdata;
+
 static struct map_desc exynos4_iodesc[] __initdata = {
 	{
 		.virtual	= (unsigned long)S3C_VA_SYS,
@@ -245,6 +247,47 @@ void __init exynos_init_late(void)
 	exynos_pm_init();
 }
 
+static char const *exynos_dt_pmu_match[] __initconst = {
+	"samsung,exynos4210-pmu",
+	"samsung,exynos4212-pmu",
+	"samsung,exynos4412-pmu",
+	"samsung,exynos5250-pmu",
+	NULL
+};
+
+static int __init exynos_fdt_map_pmu(unsigned long node,
+		const char *uname, int depth, void *data)
+{
+	struct map_desc iodesc;
+	__be32 *reg;
+	unsigned long len;
+
+	if (of_flat_dt_match(node, exynos_dt_pmu_match)) {
+		phys_addr_t phys_addr;
+		reg = of_get_flat_dt_prop(node, "reg", &len);
+		if (reg == NULL || len != (sizeof(unsigned long) * 2))
+			return 0;
+
+		phys_addr = be32_to_cpu(reg[0]);
+		iodesc.pfn = __phys_to_pfn(phys_addr);
+		iodesc.length = be32_to_cpu(reg[1]) - 1;
+		iodesc.virtual = (unsigned long)S5P_VA_PMU;
+		iodesc.type = MT_DEVICE;
+		iotable_init(&iodesc, 1);
+
+		exynos_pmu_base = ioremap(phys_addr, be32_to_cpu(reg[1]));
+		if (WARN_ON(!exynos_pmu_base))
+			return -EFAULT;
+	}
+
+	return 0;
+}
+
+inline void __iomem *get_exynos_pmubase()
+{
+	return exynos_pmu_base;
+}
+
 static int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,
 					int depth, void *data)
 {
@@ -301,6 +344,7 @@ void __init exynos_init_io(void)
 	debug_ll_io_init();
 
 	of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
+	of_scan_flat_dt(exynos_fdt_map_pmu, NULL);
 
 	/* detect cpu id and rev. */
 	s5p_init_cpu(S5P_VA_CHIPID);
-- 
1.7.10.4


WARNING: multiple messages have this Message-ID (diff)
From: pankaj.dubey@samsung.com (Pankaj Dubey)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 06/10] ARM: EXYNOS: Add support for mapping PMU base address via DT
Date: Wed, 02 Apr 2014 16:50:57 +0900	[thread overview]
Message-ID: <1396425058-4012-7-git-send-email-pankaj.dubey@samsung.com> (raw)
In-Reply-To: <1396425058-4012-1-git-send-email-pankaj.dubey@samsung.com>

From: Young-Gun Jang <yg1004.jang@samsung.com>

Add support for mapping Exynos Power Management Unit (PMU) base address
from device tree. Code will use existing samsung pmu binding information.
This patch also adds "get_exynos_pmubase" a helper function to return mapped base
address to various other files under "mach-exynos".

Signed-off-by: Young-Gun Jang <yg1004.jang@samsung.com>
Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
---
 arch/arm/mach-exynos/common.h |    2 ++
 arch/arm/mach-exynos/exynos.c |   44 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index ff28334..9a55cf6 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -61,4 +61,6 @@ struct exynos_pmu_conf {
 
 extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
 
+extern void __iomem *get_exynos_pmubase(void);
+
 #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index a5e1349..a5127fb 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -35,6 +35,8 @@
 #define L2_AUX_VAL 0x7C470001
 #define L2_AUX_MASK 0xC200ffff
 
+static void __iomem *exynos_pmu_base __initdata;
+
 static struct map_desc exynos4_iodesc[] __initdata = {
 	{
 		.virtual	= (unsigned long)S3C_VA_SYS,
@@ -245,6 +247,47 @@ void __init exynos_init_late(void)
 	exynos_pm_init();
 }
 
+static char const *exynos_dt_pmu_match[] __initconst = {
+	"samsung,exynos4210-pmu",
+	"samsung,exynos4212-pmu",
+	"samsung,exynos4412-pmu",
+	"samsung,exynos5250-pmu",
+	NULL
+};
+
+static int __init exynos_fdt_map_pmu(unsigned long node,
+		const char *uname, int depth, void *data)
+{
+	struct map_desc iodesc;
+	__be32 *reg;
+	unsigned long len;
+
+	if (of_flat_dt_match(node, exynos_dt_pmu_match)) {
+		phys_addr_t phys_addr;
+		reg = of_get_flat_dt_prop(node, "reg", &len);
+		if (reg == NULL || len != (sizeof(unsigned long) * 2))
+			return 0;
+
+		phys_addr = be32_to_cpu(reg[0]);
+		iodesc.pfn = __phys_to_pfn(phys_addr);
+		iodesc.length = be32_to_cpu(reg[1]) - 1;
+		iodesc.virtual = (unsigned long)S5P_VA_PMU;
+		iodesc.type = MT_DEVICE;
+		iotable_init(&iodesc, 1);
+
+		exynos_pmu_base = ioremap(phys_addr, be32_to_cpu(reg[1]));
+		if (WARN_ON(!exynos_pmu_base))
+			return -EFAULT;
+	}
+
+	return 0;
+}
+
+inline void __iomem *get_exynos_pmubase()
+{
+	return exynos_pmu_base;
+}
+
 static int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,
 					int depth, void *data)
 {
@@ -301,6 +344,7 @@ void __init exynos_init_io(void)
 	debug_ll_io_init();
 
 	of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
+	of_scan_flat_dt(exynos_fdt_map_pmu, NULL);
 
 	/* detect cpu id and rev. */
 	s5p_init_cpu(S5P_VA_CHIPID);
-- 
1.7.10.4

  parent reply	other threads:[~2014-04-02  7:34 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-02  7:50 [PATCH 0/7] ARM: Exynos: PMU cleanup and refactoring for using DT Pankaj Dubey
2014-04-02  7:50 ` Pankaj Dubey
2014-04-02  7:50 ` [PATCH 01/10] ARM: EXYNOS: Cleanup "mach-exynos/common.h" file Pankaj Dubey
2014-04-02  7:50   ` Pankaj Dubey
2014-04-08 15:59   ` Tomasz Figa
2014-04-08 15:59     ` Tomasz Figa
2014-04-10  4:35     ` Pankaj Dubey
2014-04-10  4:35       ` Pankaj Dubey
2014-04-02  7:50 ` [PATCH 02/10] ARM: EXYNOS: Correct file path in comment message Pankaj Dubey
2014-04-02  7:50   ` Pankaj Dubey
2014-04-02 12:01   ` Michal Simek
2014-04-02 12:01     ` Michal Simek
2014-04-03  1:40     ` Pankaj Dubey
2014-04-03  1:40       ` Pankaj Dubey
2014-04-03  2:12       ` Kukjin Kim
2014-04-03  2:12         ` Kukjin Kim
2014-04-02  7:50 ` [PATCH 03/10] ARM: EXYNOS: Move SYSREG definition into sys-reg specific file Pankaj Dubey
2014-04-02  7:50   ` Pankaj Dubey
2014-04-02 11:27   ` Sylwester Nawrocki
2014-04-02 11:27     ` Sylwester Nawrocki
2014-04-11  6:07     ` Pankaj Dubey
2014-04-11  6:07       ` Pankaj Dubey
2014-04-02  7:50 ` [PATCH 04/10] ARM: EXYNOS: Remove regs-pmu.h file dependency from pm_domain Pankaj Dubey
2014-04-02  7:50   ` Pankaj Dubey
2014-04-02  7:50 ` [PATCH 05/10] ARM: EXYNOS: Move "regs-pmu" header inclusion in common.h Pankaj Dubey
2014-04-02  7:50   ` Pankaj Dubey
2014-04-08 16:09   ` Tomasz Figa
2014-04-08 16:09     ` Tomasz Figa
2014-04-10  4:58     ` Pankaj Dubey
2014-04-10  4:58       ` Pankaj Dubey
2014-04-02  7:50 ` Pankaj Dubey [this message]
2014-04-02  7:50   ` [PATCH 06/10] ARM: EXYNOS: Add support for mapping PMU base address via DT Pankaj Dubey
2014-04-02 11:48   ` Sylwester Nawrocki
2014-04-02 11:48     ` Sylwester Nawrocki
2014-04-02 12:15     ` Michal Simek
2014-04-02 12:15       ` Michal Simek
2014-04-03  9:07       ` Sylwester Nawrocki
2014-04-03  9:07         ` Sylwester Nawrocki
2014-04-05 10:58         ` Pankaj Dubey
2014-04-05 10:58           ` Pankaj Dubey
2014-04-07  6:02           ` Michal Simek
2014-04-07  6:02             ` Michal Simek
2014-04-05 10:53     ` Pankaj Dubey
2014-04-05 10:53       ` Pankaj Dubey
2014-04-05 10:53       ` Pankaj Dubey
2014-04-23 13:02   ` Vikas Sajjan
2014-04-23 13:02     ` Vikas Sajjan
2014-04-23 13:02     ` Vikas Sajjan
2014-04-24  2:45     ` Pankaj Dubey
2014-04-24  2:45       ` Pankaj Dubey
2014-04-24  2:45       ` Pankaj Dubey
2014-04-02  7:50 ` [PATCH 07/10] ARM: EXYNOS: Refactored code for PMU register mapping " Pankaj Dubey
2014-04-02  7:50   ` Pankaj Dubey
2014-04-25 12:32 ` [PATCH v2 00/10] ARM: Exynos: PMU cleanup and refactoring for using DT Pankaj Dubey
2014-04-25 12:32   ` Pankaj Dubey
2014-04-25 12:32   ` [PATCH v2 01/10] ARM: EXYNOS: Make exynos machine_ops as static Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:05     ` Tomasz Figa
2014-04-25 21:05       ` Tomasz Figa
2014-04-26  4:42       ` Pankaj Dubey
2014-04-26  4:42         ` Pankaj Dubey
2014-04-26  4:42         ` Pankaj Dubey
2014-04-25 12:32   ` [PATCH v2 02/10] ARM: EXYNOS: Cleanup "mach-exynos/common.h" file Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:06     ` Tomasz Figa
2014-04-25 21:06       ` Tomasz Figa
2014-04-25 12:32   ` [PATCH v2 03/10] ARM: EXYNOS: Move SYSREG definition into sys-reg specific file Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:08     ` Tomasz Figa
2014-04-25 21:08       ` Tomasz Figa
2014-04-25 12:32   ` [PATCH v2 04/10] ARM: EXYNOS: Remove file path from comment section Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:14     ` Tomasz Figa
2014-04-25 21:14       ` Tomasz Figa
2014-04-25 12:32   ` [PATCH v2 05/10] ARM: EXYNOS: Remove regs-pmu.h header dependency from pm_domain Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:19     ` Tomasz Figa
2014-04-25 21:19       ` Tomasz Figa
2014-04-26  3:39       ` Pankaj Dubey
2014-04-26  3:39         ` Pankaj Dubey
2014-04-26  3:39         ` Pankaj Dubey
2014-04-25 12:32   ` [PATCH v2 06/10] ARM: EXYNOS: Add support for mapping PMU base address via DT Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:43     ` Tomasz Figa
2014-04-25 21:43       ` Tomasz Figa
2014-04-27  7:29       ` Pankaj Dubey
2014-04-27  7:29         ` Pankaj Dubey
2014-04-25 12:32   ` [PATCH v2 07/10] ARM: EXYNOS: Remove "linux/bug.h" from pmu.c Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 21:44     ` Tomasz Figa
2014-04-25 21:44       ` Tomasz Figa
2014-04-25 12:32   ` [PATCH v2 08/10] ARM: EXYNOS: Refactored code for using PMU address via DT Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 22:19     ` Tomasz Figa
2014-04-25 22:19       ` Tomasz Figa
2014-04-26  3:32       ` Pankaj Dubey
2014-04-26  3:32         ` Pankaj Dubey
2014-04-25 12:32   ` [PATCH v2 09/10] ARM: EXYNOS: Move "mach/map.h" inclusion from regs-pmu.h to platsmp.c Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 12:32   ` [PATCH v2 10/10] ARM: EXYNOS: Add device tree based initialization support for PMU Pankaj Dubey
2014-04-25 12:32     ` Pankaj Dubey
2014-04-25 22:40     ` Tomasz Figa
2014-04-25 22:40       ` Tomasz Figa
2014-04-26  4:36       ` Pankaj Dubey
2014-04-26  4:36         ` Pankaj Dubey
2014-04-26  4:36         ` Pankaj Dubey
2014-04-25 22:43   ` [PATCH v2 00/10] ARM: Exynos: PMU cleanup and refactoring for using DT Tomasz Figa
2014-04-25 22:43     ` Tomasz Figa
2014-04-26  2:07     ` Pankaj Dubey
2014-04-26  2:07       ` Pankaj Dubey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1396425058-4012-7-git-send-email-pankaj.dubey@samsung.com \
    --to=pankaj.dubey@samsung.com \
    --cc=chow.kim@samsung.com \
    --cc=kgene.kim@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=yg1004.jang@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.