All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep.KarkadaNagesha@arm.com
To: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: cpufreq@vger.kernel.org, arnd@arndb.de, olof@lixom.net,
	lorenzo.pieralisi@arm.com, rob.herring@calxeda.com,
	grant.likely@linaro.org, rjw@sisk.pl, viresh.kumar@linaro.org,
	gregkh@linuxfoundation.org, gregory.clement@free-electrons.com,
	kernel@pengutronix.de, shawn.guo@linaro.org,
	linux@arm.linux.org.uk,
	Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
Subject: [RFC PATCH 02/11] ARM: DT/kernel: define ARM specific arch_of_get_cpu_node
Date: Mon, 15 Jul 2013 11:22:03 +0100	[thread overview]
Message-ID: <1373883732-26303-3-git-send-email-Sudeep.KarkadaNagesha@arm.com> (raw)
In-Reply-To: <1373883732-26303-1-git-send-email-Sudeep.KarkadaNagesha@arm.com>

From: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>

CPU subsystem now provides architecture specific hook to retrieve the
of_node. Most of the cpu DT node parsing and initialisation is contained
in devtree.c. It's better to contain all CPU device node parsing there.

arch_of_get_cpu_node is mainly used to assign cpu->of_node when CPUs get
registered. This patch overrides the defination of the same. It can also
act as the helper function in pre-SMP/early initialisation stages to
retrieve CPU device node pointers in logical ordering.

This mainly helps to avoid replication of the code doing CPU node parsing
and physical(MPIDR) to logical mapping.

Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
---
 arch/arm/include/asm/prom.h |  1 +
 arch/arm/kernel/devtree.c   | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/arch/arm/include/asm/prom.h b/arch/arm/include/asm/prom.h
index a219227..96f1682 100644
--- a/arch/arm/include/asm/prom.h
+++ b/arch/arm/include/asm/prom.h
@@ -18,6 +18,7 @@
 extern struct machine_desc *setup_machine_fdt(unsigned int dt_phys);
 extern void arm_dt_memblock_reserve(void);
 extern void __init arm_dt_init_cpu_maps(void);
+extern struct device_node *arch_of_get_cpu_node(int cpu);
 
 #else /* CONFIG_OF */
 
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 5859c8b..3431aa9 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -169,6 +169,35 @@ void __init arm_dt_init_cpu_maps(void)
 	}
 }
 
+struct device_node * __init arch_of_get_cpu_node(int cpu)
+{
+	struct device_node *cpun, *cpus;
+	const u32 *cell;
+	u64 hwid;
+	int ac;
+
+	cpus = of_find_node_by_path("/cpus");
+	if (WARN(!cpus, "Missing cpus node, bailing out\n"))
+		return NULL;
+
+	if (WARN_ON(of_property_read_u32(cpus, "#address-cells", &ac)))
+		ac = of_n_addr_cells(cpus);
+
+	for_each_child_of_node(cpus, cpun) {
+		if (of_node_cmp(cpun->type, "cpu"))
+			continue;
+		cell = of_get_property(cpun, "reg", NULL);
+		if (WARN(!cell, "%s: missing reg property\n", cpun->full_name))
+			continue;
+
+		hwid = of_read_number(cell, ac);
+		if ((hwid & MPIDR_HWID_BITMASK) == cpu_logical_map(cpu))
+			return cpun;
+	}
+
+	return NULL;
+}
+
 /**
  * setup_machine_fdt - Machine setup when an dtb was passed to the kernel
  * @dt_phys: physical address of dt blob
-- 
1.8.1.2



WARNING: multiple messages have this Message-ID (diff)
From: Sudeep.KarkadaNagesha@arm.com (Sudeep.KarkadaNagesha at arm.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 02/11] ARM: DT/kernel: define ARM specific arch_of_get_cpu_node
Date: Mon, 15 Jul 2013 11:22:03 +0100	[thread overview]
Message-ID: <1373883732-26303-3-git-send-email-Sudeep.KarkadaNagesha@arm.com> (raw)
In-Reply-To: <1373883732-26303-1-git-send-email-Sudeep.KarkadaNagesha@arm.com>

From: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>

CPU subsystem now provides architecture specific hook to retrieve the
of_node. Most of the cpu DT node parsing and initialisation is contained
in devtree.c. It's better to contain all CPU device node parsing there.

arch_of_get_cpu_node is mainly used to assign cpu->of_node when CPUs get
registered. This patch overrides the defination of the same. It can also
act as the helper function in pre-SMP/early initialisation stages to
retrieve CPU device node pointers in logical ordering.

This mainly helps to avoid replication of the code doing CPU node parsing
and physical(MPIDR) to logical mapping.

Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
---
 arch/arm/include/asm/prom.h |  1 +
 arch/arm/kernel/devtree.c   | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/arch/arm/include/asm/prom.h b/arch/arm/include/asm/prom.h
index a219227..96f1682 100644
--- a/arch/arm/include/asm/prom.h
+++ b/arch/arm/include/asm/prom.h
@@ -18,6 +18,7 @@
 extern struct machine_desc *setup_machine_fdt(unsigned int dt_phys);
 extern void arm_dt_memblock_reserve(void);
 extern void __init arm_dt_init_cpu_maps(void);
+extern struct device_node *arch_of_get_cpu_node(int cpu);
 
 #else /* CONFIG_OF */
 
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 5859c8b..3431aa9 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -169,6 +169,35 @@ void __init arm_dt_init_cpu_maps(void)
 	}
 }
 
+struct device_node * __init arch_of_get_cpu_node(int cpu)
+{
+	struct device_node *cpun, *cpus;
+	const u32 *cell;
+	u64 hwid;
+	int ac;
+
+	cpus = of_find_node_by_path("/cpus");
+	if (WARN(!cpus, "Missing cpus node, bailing out\n"))
+		return NULL;
+
+	if (WARN_ON(of_property_read_u32(cpus, "#address-cells", &ac)))
+		ac = of_n_addr_cells(cpus);
+
+	for_each_child_of_node(cpus, cpun) {
+		if (of_node_cmp(cpun->type, "cpu"))
+			continue;
+		cell = of_get_property(cpun, "reg", NULL);
+		if (WARN(!cell, "%s: missing reg property\n", cpun->full_name))
+			continue;
+
+		hwid = of_read_number(cell, ac);
+		if ((hwid & MPIDR_HWID_BITMASK) == cpu_logical_map(cpu))
+			return cpun;
+	}
+
+	return NULL;
+}
+
 /**
  * setup_machine_fdt - Machine setup when an dtb was passed to the kernel
  * @dt_phys: physical address of dt blob
-- 
1.8.1.2

  parent reply	other threads:[~2013-07-15 10:24 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-15 10:22 [RFC PATCH 00/11] ARM: DT: update cpu device of_node Sudeep.KarkadaNagesha
2013-07-15 10:22 ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22 ` [RFC PATCH 01/11] driver/core: cpu: initialize of_node in cpu's device struture Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-16  6:27   ` Viresh Kumar
2013-07-16  6:27     ` Viresh Kumar
2013-07-15 10:22 ` Sudeep.KarkadaNagesha [this message]
2013-07-15 10:22   ` [RFC PATCH 02/11] ARM: DT/kernel: define ARM specific arch_of_get_cpu_node Sudeep.KarkadaNagesha at arm.com
2013-07-15 19:10   ` Rob Herring
2013-07-15 19:10     ` Rob Herring
2013-07-16  6:29     ` Viresh Kumar
2013-07-16  6:29       ` Viresh Kumar
2013-07-16  9:03     ` Sudeep KarkadaNagesha
2013-07-16  9:03       ` Sudeep KarkadaNagesha
2013-07-16  9:03       ` Sudeep KarkadaNagesha
2013-07-16  9:03       ` Sudeep KarkadaNagesha
2013-07-17 14:16       ` Sudeep KarkadaNagesha
2013-07-17 14:16         ` Sudeep KarkadaNagesha
2013-07-17 14:16         ` Sudeep KarkadaNagesha
2013-07-17 14:16         ` Sudeep KarkadaNagesha
2013-07-15 10:22 ` [RFC PATCH 03/11] ARM: topology: remove hwid/MPIDR dependency from cpu_capacity Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22 ` [RFC PATCH 04/11] ARM: mvebu: remove device tree parsing for cpu nodes Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22   ` Sudeep.KarkadaNagesha
2013-07-15 10:22 ` [RFC PATCH 05/11] drivers/bus: arm-cci: avoid parsing DT for cpu device nodes Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22   ` Sudeep.KarkadaNagesha
2013-07-15 10:22 ` [RFC PATCH 06/11] cpufreq: imx6q-cpufreq: remove device tree parsing for cpu nodes Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-16  1:22   ` Shawn Guo
2013-07-16  1:22     ` Shawn Guo
2013-07-16  1:22     ` Shawn Guo
2013-07-15 10:22 ` [RFC PATCH 07/11] cpufreq: cpufreq-cpu0: " Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-16  1:26   ` Shawn Guo
2013-07-16  1:26     ` Shawn Guo
2013-07-16  1:26     ` Shawn Guo
2013-07-15 10:22 ` [RFC PATCH 08/11] cpufreq: highbank-cpufreq: " Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22 ` [RFC PATCH 09/11] cpufreq: spear-cpufreq: " Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22 ` [RFC PATCH 10/11] cpufreq: kirkwood-cpufreq: " Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-15 10:22 ` [RFC PATCH 11/11] cpufreq: arm_big_little: " Sudeep.KarkadaNagesha
2013-07-15 10:22   ` Sudeep.KarkadaNagesha at arm.com
2013-07-16  6:31 ` [RFC PATCH 00/11] ARM: DT: update cpu device of_node Viresh Kumar
2013-07-16  6:31   ` Viresh Kumar

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=1373883732-26303-3-git-send-email-Sudeep.KarkadaNagesha@arm.com \
    --to=sudeep.karkadanagesha@arm.com \
    --cc=arnd@arndb.de \
    --cc=cpufreq@vger.kernel.org \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.clement@free-electrons.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=olof@lixom.net \
    --cc=rjw@sisk.pl \
    --cc=rob.herring@calxeda.com \
    --cc=shawn.guo@linaro.org \
    --cc=viresh.kumar@linaro.org \
    /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.