* [v3 1/9] ARM: tegra: fuse: Add chipid TEGRA114 0x35
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
@ 2013-01-15 8:13 ` Hiroshi Doyu
2013-01-31 16:39 ` Hiroshi Doyu
2013-01-15 8:14 ` [v3 2/9] HACK: ARM: tegra: Use CLK_IGNORE_UNUSED for Tegra 114 SoC Hiroshi Doyu
` (8 subsequent siblings)
9 siblings, 1 reply; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:13 UTC (permalink / raw)
To: linux-arm-kernel
Add tegra_chip_id TEGRA114 0x35
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/mach-tegra/fuse.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/mach-tegra/fuse.h b/arch/arm/mach-tegra/fuse.h
index ff1383d..da78434 100644
--- a/arch/arm/mach-tegra/fuse.h
+++ b/arch/arm/mach-tegra/fuse.h
@@ -37,6 +37,7 @@ enum tegra_revision {
#define TEGRA20 0x20
#define TEGRA30 0x30
+#define TEGRA114 0x35
extern int tegra_sku_id;
extern int tegra_cpu_process_id;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 2/9] HACK: ARM: tegra: Use CLK_IGNORE_UNUSED for Tegra 114 SoC
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
2013-01-15 8:13 ` [v3 1/9] ARM: tegra: fuse: Add chipid TEGRA114 0x35 Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-15 8:14 ` [v3 3/9] ARM: tegra: Use DT /cpu node to detect number of CPU core Hiroshi Doyu
` (7 subsequent siblings)
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Use CLK_IGNORE_UNUSED for the Tegra 114 SoC to ensure
clk_disable_unused() is not called. Otherwise the system will die,
because the usecount of the clocks is incorrect. This patch will be
reverted once the Tegra 114 clocks are implemented.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
NOTE: Will be updated once the latest ccf is merged.
---
arch/arm/mach-tegra/tegra30_clocks_data.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/mach-tegra/tegra30_clocks_data.c b/arch/arm/mach-tegra/tegra30_clocks_data.c
index 741d264..dba507c 100644
--- a/arch/arm/mach-tegra/tegra30_clocks_data.c
+++ b/arch/arm/mach-tegra/tegra30_clocks_data.c
@@ -1384,6 +1384,8 @@ static void tegra30_init_one_clock(struct clk *c)
if (!clk->lookup.dev_id && !clk->lookup.con_id)
clk->lookup.con_id = c->name;
clk->lookup.clk = c;
+ if (tegra_chip_id == TEGRA114) /* FIXME: Implement T114 clocks */
+ c->flags |= CLK_IGNORE_UNUSED;
clkdev_add(&clk->lookup);
tegra_clk_add(c);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 3/9] ARM: tegra: Use DT /cpu node to detect number of CPU core
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
2013-01-15 8:13 ` [v3 1/9] ARM: tegra: fuse: Add chipid TEGRA114 0x35 Hiroshi Doyu
2013-01-15 8:14 ` [v3 2/9] HACK: ARM: tegra: Use CLK_IGNORE_UNUSED for Tegra 114 SoC Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-21 12:35 ` Lorenzo Pieralisi
2013-01-15 8:14 ` [v3 4/9] ARM: Add API to detect SCU base address from CP15 Hiroshi Doyu
` (6 subsequent siblings)
9 siblings, 1 reply; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
SCU based detection only works with Cortex-A9 MP and it doesn't
support ones with multiple clusters. The only way to detect number of
CPU core correctly is with DT /cpu node.
Tegra SoCs decided to use DT detection as the only way and to not use
SCU based detection at all. Even if DT /cpu node based detection
fails, it continues with a single core
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
Based on the discussion:
http://lists.infradead.org/pipermail/linux-arm-kernel/2013-January/140608.html
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/mach-tegra/platsmp.c | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index 6867030..689ee4b 100644
--- a/arch/arm/mach-tegra/platsmp.c
+++ b/arch/arm/mach-tegra/platsmp.c
@@ -177,23 +177,8 @@ done:
return status;
}
-/*
- * Initialise the CPU possible map early - this describes the CPUs
- * which may be present or become present in the system.
- */
static void __init tegra_smp_init_cpus(void)
{
- unsigned int i, ncores = scu_get_core_count(scu_base);
-
- if (ncores > nr_cpu_ids) {
- pr_warn("SMP: %u cores greater than maximum (%u), clipping\n",
- ncores, nr_cpu_ids);
- ncores = nr_cpu_ids;
- }
-
- for (i = 0; i < ncores; i++)
- set_cpu_possible(i, true);
-
set_smp_cross_call(gic_raise_softirq);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 3/9] ARM: tegra: Use DT /cpu node to detect number of CPU core
2013-01-15 8:14 ` [v3 3/9] ARM: tegra: Use DT /cpu node to detect number of CPU core Hiroshi Doyu
@ 2013-01-21 12:35 ` Lorenzo Pieralisi
0 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Pieralisi @ 2013-01-21 12:35 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Jan 15, 2013 at 08:13:12AM +0000, Hiroshi Doyu wrote:
> SCU based detection only works with Cortex-A9 MP and it doesn't
> support ones with multiple clusters. The only way to detect number of
> CPU core correctly is with DT /cpu node.
>
> Tegra SoCs decided to use DT detection as the only way and to not use
> SCU based detection at all. Even if DT /cpu node based detection
> fails, it continues with a single core
Please add missing punctuation, reword the commit log to make it clearer.
>
> Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
> ---
> Based on the discussion:
> http://lists.infradead.org/pipermail/linux-arm-kernel/2013-January/140608.html
>
> Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
> ---
> arch/arm/mach-tegra/platsmp.c | 15 ---------------
> 1 file changed, 15 deletions(-)
>
> diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
> index 6867030..689ee4b 100644
> --- a/arch/arm/mach-tegra/platsmp.c
> +++ b/arch/arm/mach-tegra/platsmp.c
> @@ -177,23 +177,8 @@ done:
> return status;
> }
>
> -/*
> - * Initialise the CPU possible map early - this describes the CPUs
> - * which may be present or become present in the system.
> - */
> static void __init tegra_smp_init_cpus(void)
> {
> - unsigned int i, ncores = scu_get_core_count(scu_base);
> -
> - if (ncores > nr_cpu_ids) {
> - pr_warn("SMP: %u cores greater than maximum (%u), clipping\n",
> - ncores, nr_cpu_ids);
> - ncores = nr_cpu_ids;
> - }
> -
> - for (i = 0; i < ncores; i++)
> - set_cpu_possible(i, true);
> -
> set_smp_cross_call(gic_raise_softirq);
> }
>
As discussed,
Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [v3 4/9] ARM: Add API to detect SCU base address from CP15
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (2 preceding siblings ...)
2013-01-15 8:14 ` [v3 3/9] ARM: tegra: Use DT /cpu node to detect number of CPU core Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-15 8:14 ` [v3 5/9] ARM: tegra: Skip scu_enable(scu_base) if not Cortex A9 Hiroshi Doyu
` (5 subsequent siblings)
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Add API to detect SCU base address from CP15.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/include/asm/smp_scu.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h
index 4eb6d00..f619eef 100644
--- a/arch/arm/include/asm/smp_scu.h
+++ b/arch/arm/include/asm/smp_scu.h
@@ -6,6 +6,23 @@
#define SCU_PM_POWEROFF 3
#ifndef __ASSEMBLER__
+
+#include <asm/cputype.h>
+
+static inline phys_addr_t scu_get_base(void)
+{
+ phys_addr_t pa;
+ unsigned long part_number = read_cpuid_part_number();
+
+ switch (part_number) {
+ case ARM_CPU_PART_CORTEX_A9:
+ /* Get SCU physical base */
+ asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (pa));
+ return pa;
+ default:
+ return 0;
+ }
+}
unsigned int scu_get_core_count(void __iomem *);
void scu_enable(void __iomem *);
int scu_power_mode(void __iomem *, unsigned int);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 5/9] ARM: tegra: Skip scu_enable(scu_base) if not Cortex A9
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (3 preceding siblings ...)
2013-01-15 8:14 ` [v3 4/9] ARM: Add API to detect SCU base address from CP15 Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-15 8:14 ` [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC Hiroshi Doyu
` (4 subsequent siblings)
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Skip scu_enable(scu_base) if CPU is not Cortex A9.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/mach-tegra/platsmp.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index 689ee4b..e329e93 100644
--- a/arch/arm/mach-tegra/platsmp.c
+++ b/arch/arm/mach-tegra/platsmp.c
@@ -38,7 +38,6 @@
extern void tegra_secondary_startup(void);
static cpumask_t tegra_cpu_init_mask;
-static void __iomem *scu_base = IO_ADDRESS(TEGRA_ARM_PERIF_BASE);
#define EVP_CPU_RESET_VECTOR \
(IO_ADDRESS(TEGRA_EXCEPTION_VECTORS_BASE) + 0x100)
@@ -184,10 +183,14 @@ static void __init tegra_smp_init_cpus(void)
static void __init tegra_smp_prepare_cpus(unsigned int max_cpus)
{
+ phys_addr_t base;
+
/* Always mark the boot CPU (CPU0) as initialized. */
cpumask_set_cpu(0, &tegra_cpu_init_mask);
- scu_enable(scu_base);
+ base = scu_get_base();
+ if (base)
+ scu_enable(IO_ADDRESS(base));
}
struct smp_operations tegra_smp_ops __initdata = {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (4 preceding siblings ...)
2013-01-15 8:14 ` [v3 5/9] ARM: tegra: Skip scu_enable(scu_base) if not Cortex A9 Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-15 16:55 ` Stephen Warren
2013-01-15 8:14 ` [v3 7/9] ARM: dt: tegra114: Add new board, Dalmore Hiroshi Doyu
` (3 subsequent siblings)
9 siblings, 1 reply; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Initial support for Tegra 114 SoC. This is expected to be included in
the board DTS files, Tegra 114 SoC based evaluation board family.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/boot/dts/tegra114.dtsi | 116 +++++++++++++++++++++++++++++++++++++++
1 file changed, 116 insertions(+)
create mode 100644 arch/arm/boot/dts/tegra114.dtsi
diff --git a/arch/arm/boot/dts/tegra114.dtsi b/arch/arm/boot/dts/tegra114.dtsi
new file mode 100644
index 0000000..175cbc3
--- /dev/null
+++ b/arch/arm/boot/dts/tegra114.dtsi
@@ -0,0 +1,116 @@
+/include/ "skeleton.dtsi"
+
+/ {
+ compatible = "nvidia,tegra114";
+ interrupt-parent = <&gic>;
+
+ gic: interrupt-controller {
+ compatible = "arm,cortex-a15-gic";
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ reg = <0x50041000 0x1000>,
+ <0x50042000 0x1000>,
+ <0x50044000 0x2000>,
+ <0x50046000 0x2000>;
+ interrupts = <1 9 0xf04>;
+ };
+
+ timer at 60005000 {
+ compatible = "nvidia,tegra114-timer", "nvidia,tegra20-timer";
+ reg = <0x60005000 0x400>;
+ interrupts = <0 0 0x04
+ 0 1 0x04
+ 0 41 0x04
+ 0 42 0x04
+ 0 121 0x04
+ 0 122 0x04>;
+ };
+
+ serial at 70006000 {
+ compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
+ reg = <0x70006000 0x40>;
+ reg-shift = <2>;
+ interrupts = <0 36 0x04>;
+ status = "disabled";
+ };
+
+ serial at 70006040 {
+ compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
+ reg = <0x70006040 0x40>;
+ reg-shift = <2>;
+ interrupts = <0 37 0x04>;
+ status = "disabled";
+ };
+
+ serial at 70006200 {
+ compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
+ reg = <0x70006200 0x100>;
+ reg-shift = <2>;
+ interrupts = <0 46 0x04>;
+ status = "disabled";
+ };
+
+ serial at 70006300 {
+ compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
+ reg = <0x70006300 0x100>;
+ reg-shift = <2>;
+ interrupts = <0 90 0x04>;
+ status = "disabled";
+ };
+
+ serial at 70006400 {
+ compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
+ reg = <0x70006400 0x100>;
+ reg-shift = <2>;
+ interrupts = <0 91 0x04>;
+ status = "disabled";
+ };
+
+ rtc {
+ compatible = "nvidia,tegra114-rtc", "nvidia,tegra20-rtc";
+ reg = <0x7000e000 0x100>;
+ interrupts = <0 2 0x04>;
+ };
+
+ pmc {
+ compatible = "nvidia,tegra114-pmc", "nvidia,tegra20-pmc";
+ reg = <0x7000e400 0x400>;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu at 0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ reg = <0>;
+ };
+
+ cpu at 1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ reg = <1>;
+ };
+
+ cpu at 2 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ reg = <2>;
+ };
+
+ cpu at 3 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a15";
+ reg = <3>;
+ };
+ };
+
+ timer {
+ compatible = "arm,armv7-timer";
+ interrupts = <1 13 0xf08>,
+ <1 14 0xf08>,
+ <1 11 0xf08>,
+ <1 10 0xf08>;
+ };
+};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC
2013-01-15 8:14 ` [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC Hiroshi Doyu
@ 2013-01-15 16:55 ` Stephen Warren
2013-01-15 17:27 ` Peter De Schrijver
0 siblings, 1 reply; 16+ messages in thread
From: Stephen Warren @ 2013-01-15 16:55 UTC (permalink / raw)
To: linux-arm-kernel
On 01/15/2013 01:13 AM, Hiroshi Doyu wrote:
> Initial support for Tegra 114 SoC. This is expected to be included in
> the board DTS files, Tegra 114 SoC based evaluation board family.
This series looks fine to me. Assuming no other comments, I'll apply
once CCF is applied and you've done the rebase you mentioned for patch 2.
Note that I'll apply most patches to Tegra's for-3.9/soc branch (the
code) but the 3 device tree patches to Tegra's for-3.9/dt branch, since
it's fine for the DT files to appear later than the code supporting the
SoC, since this is all new features.
One question: The .dts files don't include any clocks properties. I
assume Peter will add these when he posts the Tegra114 CCF code?
^ permalink raw reply [flat|nested] 16+ messages in thread
* [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC
2013-01-15 16:55 ` Stephen Warren
@ 2013-01-15 17:27 ` Peter De Schrijver
2013-01-16 5:06 ` Hiroshi Doyu
0 siblings, 1 reply; 16+ messages in thread
From: Peter De Schrijver @ 2013-01-15 17:27 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Jan 15, 2013 at 05:55:47PM +0100, Stephen Warren wrote:
> On 01/15/2013 01:13 AM, Hiroshi Doyu wrote:
> > Initial support for Tegra 114 SoC. This is expected to be included in
> > the board DTS files, Tegra 114 SoC based evaluation board family.
>
> This series looks fine to me. Assuming no other comments, I'll apply
> once CCF is applied and you've done the rebase you mentioned for patch 2.
>
> Note that I'll apply most patches to Tegra's for-3.9/soc branch (the
> code) but the 3 device tree patches to Tegra's for-3.9/dt branch, since
> it's fine for the DT files to appear later than the code supporting the
> SoC, since this is all new features.
>
> One question: The .dts files don't include any clocks properties. I
> assume Peter will add these when he posts the Tegra114 CCF code?
Yes. I will add those as part of the Tegra114 CCF series.
Cheers,
Peter.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC
2013-01-15 17:27 ` Peter De Schrijver
@ 2013-01-16 5:06 ` Hiroshi Doyu
0 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-16 5:06 UTC (permalink / raw)
To: linux-arm-kernel
Peter De Schrijver <pdeschrijver@nvidia.com> wrote @ Tue, 15 Jan 2013 18:27:33 +0100:
> On Tue, Jan 15, 2013 at 05:55:47PM +0100, Stephen Warren wrote:
> > On 01/15/2013 01:13 AM, Hiroshi Doyu wrote:
> > > Initial support for Tegra 114 SoC. This is expected to be included in
> > > the board DTS files, Tegra 114 SoC based evaluation board family.
> >
> > This series looks fine to me. Assuming no other comments, I'll apply
> > once CCF is applied and you've done the rebase you mentioned for patch 2.
> >
> > Note that I'll apply most patches to Tegra's for-3.9/soc branch (the
> > code) but the 3 device tree patches to Tegra's for-3.9/dt branch, since
> > it's fine for the DT files to appear later than the code supporting the
> > SoC, since this is all new features.
> >
> > One question: The .dts files don't include any clocks properties. I
> > assume Peter will add these when he posts the Tegra114 CCF code?
>
> Yes. I will add those as part of the Tegra114 CCF series.
Once Tegra114 CCF comes, the 2nd one can be dropped.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [v3 7/9] ARM: dt: tegra114: Add new board, Dalmore
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (5 preceding siblings ...)
2013-01-15 8:14 ` [v3 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-15 8:14 ` [v3 8/9] ARM: dt: tegra114: Add new board, Pluto Hiroshi Doyu
` (2 subsequent siblings)
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Add a new evaluation board, Dalmore for Tegra 114 family.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/boot/dts/Makefile | 3 ++-
arch/arm/boot/dts/tegra114-dalmore.dts | 21 +++++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boot/dts/tegra114-dalmore.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b511bc1..04e43d2 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -147,7 +147,8 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
tegra20-whistler.dtb \
tegra30-cardhu-a02.dtb \
tegra30-cardhu-a04.dtb \
- tegra30-beaver.dtb
+ tegra30-beaver.dtb \
+ tegra114-dalmore.dtb
dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \
vexpress-v2p-ca9.dtb \
vexpress-v2p-ca15-tc1.dtb \
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
new file mode 100644
index 0000000..a30aca6
--- /dev/null
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
@@ -0,0 +1,21 @@
+/dts-v1/;
+
+/include/ "tegra114.dtsi"
+
+/ {
+ model = "NVIDIA Tegra114 Dalmore evaluation board";
+ compatible = "nvidia,dalmore", "nvidia,tegra114";
+
+ memory {
+ reg = <0x80000000 0x40000000>;
+ };
+
+ serial at 70006300 {
+ status = "okay";
+ clock-frequency = <408000000>;
+ };
+
+ pmc {
+ nvidia,invert-interrupt;
+ };
+};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 8/9] ARM: dt: tegra114: Add new board, Pluto
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (6 preceding siblings ...)
2013-01-15 8:14 ` [v3 7/9] ARM: dt: tegra114: Add new board, Dalmore Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-15 8:14 ` [v3 9/9] ARM: tegra: Add initial support for Tegra 114 SoC Hiroshi Doyu
2013-01-18 10:54 ` [RESEND][v3 4/9] ARM: Add API to detect SCU base address from CP15 Hiroshi Doyu
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Add a new evaluation board, Pluto for Tegra 114 family.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/boot/dts/Makefile | 3 ++-
arch/arm/boot/dts/tegra114-pluto.dts | 21 +++++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boot/dts/tegra114-pluto.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 04e43d2..32f47ce 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -148,7 +148,8 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
tegra30-cardhu-a02.dtb \
tegra30-cardhu-a04.dtb \
tegra30-beaver.dtb \
- tegra114-dalmore.dtb
+ tegra114-dalmore.dtb \
+ tegra114-pluto.dtb
dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \
vexpress-v2p-ca9.dtb \
vexpress-v2p-ca15-tc1.dtb \
diff --git a/arch/arm/boot/dts/tegra114-pluto.dts b/arch/arm/boot/dts/tegra114-pluto.dts
new file mode 100644
index 0000000..9bea8f5
--- /dev/null
+++ b/arch/arm/boot/dts/tegra114-pluto.dts
@@ -0,0 +1,21 @@
+/dts-v1/;
+
+/include/ "tegra114.dtsi"
+
+/ {
+ model = "NVIDIA Tegra114 Pluto evaluation board";
+ compatible = "nvidia,pluto", "nvidia,tegra114";
+
+ memory {
+ reg = <0x80000000 0x40000000>;
+ };
+
+ serial at 70006300 {
+ status = "okay";
+ clock-frequency = <408000000>;
+ };
+
+ pmc {
+ nvidia,invert-interrupt;
+ };
+};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [v3 9/9] ARM: tegra: Add initial support for Tegra 114 SoC.
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (7 preceding siblings ...)
2013-01-15 8:14 ` [v3 8/9] ARM: dt: tegra114: Add new board, Pluto Hiroshi Doyu
@ 2013-01-15 8:14 ` Hiroshi Doyu
2013-01-18 10:54 ` [RESEND][v3 4/9] ARM: Add API to detect SCU base address from CP15 Hiroshi Doyu
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-15 8:14 UTC (permalink / raw)
To: linux-arm-kernel
Add new Tegra 114 SoC support.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
arch/arm/mach-tegra/Kconfig | 10 +++++++
arch/arm/mach-tegra/Makefile | 1 +
arch/arm/mach-tegra/board-dt-tegra114.c | 48 +++++++++++++++++++++++++++++++
arch/arm/mach-tegra/common.c | 1 +
4 files changed, 60 insertions(+)
create mode 100644 arch/arm/mach-tegra/board-dt-tegra114.c
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 1ec7f80..d976ef2 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -44,6 +44,16 @@ config ARCH_TEGRA_3x_SOC
Support for NVIDIA Tegra T30 processor family, based on the
ARM CortexA9MP CPU and the ARM PL310 L2 cache controller
+config ARCH_TEGRA_114_SOC
+ bool "Enable support for Tegra114 family"
+ select ARM_GIC
+ select CPU_V7
+ select ARM_L1_CACHE_SHIFT_6
+ select ARM_ARCH_TIMER
+ help
+ Support for NVIDIA Tegra T114 processor family, based on the
+ ARM CortexA15MP CPU
+
config TEGRA_PCI
bool "PCI Express support"
depends on ARCH_TEGRA_2x_SOC
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
index 660ee03..219c2ed 100644
--- a/arch/arm/mach-tegra/Makefile
+++ b/arch/arm/mach-tegra/Makefile
@@ -33,6 +33,7 @@ obj-$(CONFIG_TEGRA_PCI) += pcie.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-dt-tegra20.o
obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += board-dt-tegra30.o
+obj-$(CONFIG_ARCH_TEGRA_114_SOC) += board-dt-tegra114.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-harmony-pcie.o
diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c
new file mode 100644
index 0000000..4c36dd0
--- /dev/null
+++ b/arch/arm/mach-tegra/board-dt-tegra114.c
@@ -0,0 +1,48 @@
+/*
+ * NVIDIA Tegra114 device tree board support
+ *
+ * Copyright (C) 2012 NVIDIA Corporation
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/clocksource.h>
+
+#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
+
+#include "board.h"
+#include "common.h"
+
+static void __init tegra114_dt_init(void)
+{
+ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+
+static const char * const tegra114_dt_board_compat[] = {
+ "nvidia,tegra114",
+ NULL,
+};
+
+DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)")
+ .smp = smp_ops(tegra_smp_ops),
+ .map_io = tegra_map_common_io,
+ .init_early = tegra30_init_early,
+ .init_irq = tegra_dt_init_irq,
+ .handle_irq = gic_handle_irq,
+ .init_time = clocksource_of_init,
+ .init_machine = tegra114_dt_init,
+ .init_late = tegra_init_late,
+ .restart = tegra_assert_system_reset,
+ .dt_compat = tegra114_dt_board_compat,
+MACHINE_END
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c
index 3efe80b..b6bfc0c 100644
--- a/arch/arm/mach-tegra/common.c
+++ b/arch/arm/mach-tegra/common.c
@@ -59,6 +59,7 @@ u32 tegra_uart_config[4] = {
#ifdef CONFIG_OF
static const struct of_device_id tegra_dt_irq_match[] __initconst = {
+ { .compatible = "arm,cortex-a15-gic", .data = gic_of_init },
{ .compatible = "arm,cortex-a9-gic", .data = gic_of_init },
{ }
};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread* [RESEND][v3 4/9] ARM: Add API to detect SCU base address from CP15
2013-01-15 8:13 [v3 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
` (8 preceding siblings ...)
2013-01-15 8:14 ` [v3 9/9] ARM: tegra: Add initial support for Tegra 114 SoC Hiroshi Doyu
@ 2013-01-18 10:54 ` Hiroshi Doyu
9 siblings, 0 replies; 16+ messages in thread
From: Hiroshi Doyu @ 2013-01-18 10:54 UTC (permalink / raw)
To: linux-arm-kernel
Add API to detect SCU base address from CP15.
Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
---
NOTE:
This wasn't delivered to linux-arm-kernel at lists.infradead.org, resending....
For usage: http://patchwork.ozlabs.org/patch/212013/
---
arch/arm/include/asm/smp_scu.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h
index 4eb6d00..f619eef 100644
--- a/arch/arm/include/asm/smp_scu.h
+++ b/arch/arm/include/asm/smp_scu.h
@@ -6,6 +6,23 @@
#define SCU_PM_POWEROFF 3
#ifndef __ASSEMBLER__
+
+#include <asm/cputype.h>
+
+static inline phys_addr_t scu_get_base(void)
+{
+ phys_addr_t pa;
+ unsigned long part_number = read_cpuid_part_number();
+
+ switch (part_number) {
+ case ARM_CPU_PART_CORTEX_A9:
+ /* Get SCU physical base */
+ asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (pa));
+ return pa;
+ default:
+ return 0;
+ }
+}
unsigned int scu_get_core_count(void __iomem *);
void scu_enable(void __iomem *);
int scu_power_mode(void __iomem *, unsigned int);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 16+ messages in thread