diff mbox

[1/6] ARM: highbank: add devicetree source

Message ID 1313526898-19920-2-git-send-email-robherring2@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rob Herring Aug. 16, 2011, 8:34 p.m. UTC
From: Rob Herring <rob.herring@calxeda.com>

This adds the devicetree source and documentation for the Calxeda highbank
platform.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
---
 Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
 arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
 2 files changed, 220 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
 create mode 100644 arch/arm/boot/dts/highbank.dts

Comments

Shawn Guo Aug. 17, 2011, 7:27 a.m. UTC | #1
Hi Rob,

On Tue, Aug 16, 2011 at 03:34:53PM -0500, Rob Herring wrote:
> From: Rob Herring <rob.herring@calxeda.com>
> 
> This adds the devicetree source and documentation for the Calxeda highbank
> platform.
> 
> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> ---
>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>  arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
>  2 files changed, 220 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>  create mode 100644 arch/arm/boot/dts/highbank.dts
> 
> diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
> new file mode 100644
> index 0000000..4755caa
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/calxeda.txt
> @@ -0,0 +1,8 @@
> +Calxeda Highbank Platforms Device Tree Bindings
> +-----------------------------------------------
> +
> +Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
> +properties.
> +
> +Required root node properties:
> +    - compatible = "calxeda,highbank";
> diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
> new file mode 100644
> index 0000000..2dd3b7b
> --- /dev/null
> +++ b/arch/arm/boot/dts/highbank.dts
> @@ -0,0 +1,212 @@
> +/*
> + * Copyright 2011 Calxeda, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms and conditions of the GNU General Public License,
> + * version 2, as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope 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.
> + *
> + * You should have received a copy of the GNU General Public License along with
> + * this program.  If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +/dts-v1/;
> +
> +/* First 4KB has pen for secondary cores. */
> +/memreserve/ 0x00000000 0x0001000;
> +
I failed to find the "pen" handling in the whole patch series.  Am I
missing anything?
Mark Rutland Aug. 17, 2011, 9:27 a.m. UTC | #2
Hi Rob,

> -----Original Message-----
> From: linux-arm-kernel-bounces@lists.infradead.org [mailto:linux-arm-
> kernel-bounces@lists.infradead.org] On Behalf Of Rob Herring
> Sent: 16 August 2011 21:35
> To: linux-arm-kernel@lists.infradead.org
> Cc: Rob Herring
> Subject: [PATCH 1/6] ARM: highbank: add devicetree source
> 
> From: Rob Herring <rob.herring@calxeda.com>
> 
> This adds the devicetree source and documentation for the Calxeda
> highbank
> platform.
> 
> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> ---
>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>  arch/arm/boot/dts/highbank.dts                    |  212
> +++++++++++++++++++++
>  2 files changed, 220 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>  create mode 100644 arch/arm/boot/dts/highbank.dts

...

> +		L2: l2-cache {
> +			compatible = "arm,pl310-cache";
> +			reg = <0xfff12000 0x1000>;
> +			interrupts = <102>;
> +			cache-unified;
> +			cache-level = <2>;
> +		};

Currently, the binding documentation sitting in Russell's for-next branch
doesn't have the interrupts property we discussed previously:
http://lists.ozlabs.org/pipermail/devicetree-discuss/2011-August/007301.html

I posted a patch to add it to the documentation, but no-one responded:
http://lists.ozlabs.org/pipermail/devicetree-discuss/2011-August/007349.html

Can I take your use of the property as an ack?

How do we get this merged?

Thanks,
Mark.
Rob Herring Aug. 17, 2011, 1:49 p.m. UTC | #3
Shawn,

On 08/17/2011 02:27 AM, Shawn Guo wrote:
> Hi Rob,
> 
> On Tue, Aug 16, 2011 at 03:34:53PM -0500, Rob Herring wrote:
>> From: Rob Herring <rob.herring@calxeda.com>
>>
>> This adds the devicetree source and documentation for the Calxeda highbank
>> platform.
>>
>> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
>> ---
>>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>>  arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
>>  2 files changed, 220 insertions(+), 0 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>>  create mode 100644 arch/arm/boot/dts/highbank.dts
>>
>> diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
>> new file mode 100644
>> index 0000000..4755caa
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/arm/calxeda.txt
>> @@ -0,0 +1,8 @@
>> +Calxeda Highbank Platforms Device Tree Bindings
>> +-----------------------------------------------
>> +
>> +Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
>> +properties.
>> +
>> +Required root node properties:
>> +    - compatible = "calxeda,highbank";
>> diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
>> new file mode 100644
>> index 0000000..2dd3b7b
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/highbank.dts
>> @@ -0,0 +1,212 @@
>> +/*
>> + * Copyright 2011 Calxeda, Inc.
>> + *
>> + * This program is free software; you can redistribute it and/or modify it
>> + * under the terms and conditions of the GNU General Public License,
>> + * version 2, as published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope 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.
>> + *
>> + * You should have received a copy of the GNU General Public License along with
>> + * this program.  If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +/dts-v1/;
>> +
>> +/* First 4KB has pen for secondary cores. */
>> +/memreserve/ 0x00000000 0x0001000;
>> +
> I failed to find the "pen" handling in the whole patch series.  Am I
> missing anything?
> 

In highbank.c:

+#define HB_JUMP_TABLE_PHYS(cpu)		(0x40 + (0x10 * (cpu)))
+#define HB_JUMP_TABLE_VIRT(cpu)		phys_to_virt(HB_JUMP_TABLE_PHYS(cpu))
+
+void highbank_set_cpu_jump(int cpu, void *jump_addr)
+{
+	writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
+	__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
+	outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
+			  HB_JUMP_TABLE_PHYS(cpu) + 15);
+}

Rob
Rob Herring Aug. 17, 2011, 2:08 p.m. UTC | #4
Mark,

On 08/17/2011 04:27 AM, Mark Rutland wrote:
> Hi Rob,
> 
>> -----Original Message-----
>> From: linux-arm-kernel-bounces@lists.infradead.org [mailto:linux-arm-
>> kernel-bounces@lists.infradead.org] On Behalf Of Rob Herring
>> Sent: 16 August 2011 21:35
>> To: linux-arm-kernel@lists.infradead.org
>> Cc: Rob Herring
>> Subject: [PATCH 1/6] ARM: highbank: add devicetree source
>>
>> From: Rob Herring <rob.herring@calxeda.com>
>>
>> This adds the devicetree source and documentation for the Calxeda
>> highbank
>> platform.
>>
>> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
>> ---
>>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>>  arch/arm/boot/dts/highbank.dts                    |  212
>> +++++++++++++++++++++
>>  2 files changed, 220 insertions(+), 0 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>>  create mode 100644 arch/arm/boot/dts/highbank.dts
> 
> ...
> 
>> +		L2: l2-cache {
>> +			compatible = "arm,pl310-cache";
>> +			reg = <0xfff12000 0x1000>;
>> +			interrupts = <102>;
>> +			cache-unified;
>> +			cache-level = <2>;
>> +		};
> 
> Currently, the binding documentation sitting in Russell's for-next branch
> doesn't have the interrupts property we discussed previously:
> http://lists.ozlabs.org/pipermail/devicetree-discuss/2011-August/007301.html
> 
> I posted a patch to add it to the documentation, but no-one responded:
> http://lists.ozlabs.org/pipermail/devicetree-discuss/2011-August/007349.html
> 
> Can I take your use of the property as an ack?
> 
Yes, sorry forgot about it.

Acked-by: Rob Herring <rob.herring@calxeda.com>


> How do we get this merged?

Add to Russell's patch system or perhaps in Will's tree.

Rob
Will Deacon Aug. 17, 2011, 2:34 p.m. UTC | #5
Hi Mark,

On Wed, Aug 17, 2011 at 03:08:38PM +0100, Rob Herring wrote:
> On 08/17/2011 04:27 AM, Mark Rutland wrote:
> > How do we get this merged?
> 
> Add to Russell's patch system or perhaps in Will's tree.

Stick it in Russell's patch system with my Ack (since I don't have any other
fixes currently queued).

Thanks,

Will
Shawn Guo Aug. 17, 2011, 2:51 p.m. UTC | #6
On Wed, Aug 17, 2011 at 08:49:41AM -0500, Rob Herring wrote:
> Shawn,
> 
> On 08/17/2011 02:27 AM, Shawn Guo wrote:
> > Hi Rob,
> > 
> > On Tue, Aug 16, 2011 at 03:34:53PM -0500, Rob Herring wrote:
> >> From: Rob Herring <rob.herring@calxeda.com>
> >>
> >> This adds the devicetree source and documentation for the Calxeda highbank
> >> platform.
> >>
> >> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> >> ---
> >>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
> >>  arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
> >>  2 files changed, 220 insertions(+), 0 deletions(-)
> >>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
> >>  create mode 100644 arch/arm/boot/dts/highbank.dts
> >>
> >> diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
> >> new file mode 100644
> >> index 0000000..4755caa
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/arm/calxeda.txt
> >> @@ -0,0 +1,8 @@
> >> +Calxeda Highbank Platforms Device Tree Bindings
> >> +-----------------------------------------------
> >> +
> >> +Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
> >> +properties.
> >> +
> >> +Required root node properties:
> >> +    - compatible = "calxeda,highbank";
> >> diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
> >> new file mode 100644
> >> index 0000000..2dd3b7b
> >> --- /dev/null
> >> +++ b/arch/arm/boot/dts/highbank.dts
> >> @@ -0,0 +1,212 @@
> >> +/*
> >> + * Copyright 2011 Calxeda, Inc.
> >> + *
> >> + * This program is free software; you can redistribute it and/or modify it
> >> + * under the terms and conditions of the GNU General Public License,
> >> + * version 2, as published by the Free Software Foundation.
> >> + *
> >> + * This program is distributed in the hope 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.
> >> + *
> >> + * You should have received a copy of the GNU General Public License along with
> >> + * this program.  If not, see <http://www.gnu.org/licenses/>.
> >> + */
> >> +
> >> +/dts-v1/;
> >> +
> >> +/* First 4KB has pen for secondary cores. */
> >> +/memreserve/ 0x00000000 0x0001000;
> >> +
> > I failed to find the "pen" handling in the whole patch series.  Am I
> > missing anything?
> > 
> 
> In highbank.c:
> 
> +#define HB_JUMP_TABLE_PHYS(cpu)		(0x40 + (0x10 * (cpu)))
> +#define HB_JUMP_TABLE_VIRT(cpu)		phys_to_virt(HB_JUMP_TABLE_PHYS(cpu))
> +
> +void highbank_set_cpu_jump(int cpu, void *jump_addr)
> +{
> +	writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
> +	__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
> +	outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
> +			  HB_JUMP_TABLE_PHYS(cpu) + 15);
> +}
> 
Ah, ok, the 'pen' you meant is the entry address of secondary cores.
I thought of something like 'pen_release' in plat-versatile/platsmp.c.
So you do not need 'boot_lock' and 'pen_release' stuff to sync secondary
cores with the primary one (like all other smp platforms do)?
Will Deacon Aug. 17, 2011, 5:52 p.m. UTC | #7
Hi Rob,

On Wed, Aug 17, 2011 at 02:49:41PM +0100, Rob Herring wrote:
> In highbank.c:
> 
> +#define HB_JUMP_TABLE_PHYS(cpu)		(0x40 + (0x10 * (cpu)))
> +#define HB_JUMP_TABLE_VIRT(cpu)		phys_to_virt(HB_JUMP_TABLE_PHYS(cpu))
> +
> +void highbank_set_cpu_jump(int cpu, void *jump_addr)
> +{
> +	writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
> +	__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
> +	outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
> +			  HB_JUMP_TABLE_PHYS(cpu) + 15);
> +}

I don't suppose you guys can boot on a CPU other than 0 can you? That would be
really handy for testing my cpu-mapping patch series :)

Will
Shawn Guo Aug. 20, 2011, 9:51 a.m. UTC | #8
On Tue, Aug 16, 2011 at 03:34:53PM -0500, Rob Herring wrote:
> From: Rob Herring <rob.herring@calxeda.com>
> 
> This adds the devicetree source and documentation for the Calxeda highbank
> platform.
> 
> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> ---
>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>  arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
>  2 files changed, 220 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>  create mode 100644 arch/arm/boot/dts/highbank.dts
> 
> diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
> new file mode 100644
> index 0000000..4755caa
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/calxeda.txt
> @@ -0,0 +1,8 @@
> +Calxeda Highbank Platforms Device Tree Bindings
> +-----------------------------------------------
> +
> +Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
> +properties.
> +
> +Required root node properties:
> +    - compatible = "calxeda,highbank";
> diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
> new file mode 100644
> index 0000000..2dd3b7b
> --- /dev/null
> +++ b/arch/arm/boot/dts/highbank.dts
> @@ -0,0 +1,212 @@
> +/*
> + * Copyright 2011 Calxeda, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms and conditions of the GNU General Public License,
> + * version 2, as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope 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.
> + *
> + * You should have received a copy of the GNU General Public License along with
> + * this program.  If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +/dts-v1/;
> +
> +/* First 4KB has pen for secondary cores. */
> +/memreserve/ 0x00000000 0x0001000;
> +
> +/ {
> +	model = "Calxeda Highbank";
> +	compatible = "calxeda,highbank";
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		cpu@0 {
> +			compatible = "arm,cortex-a9";
> +			reg = <0>;
> +			next-level-cache = <&L2>;
> +		};
> +
> +		cpu@1 {
> +			compatible = "arm,cortex-a9";
> +			reg = <1>;
> +			next-level-cache = <&L2>;
> +		};
> +
> +		cpu@2 {
> +			compatible = "arm,cortex-a9";
> +			reg = <2>;
> +			next-level-cache = <&L2>;
> +		};
> +
> +		cpu@3 {
> +			compatible = "arm,cortex-a9";
> +			reg = <3>;
> +			next-level-cache = <&L2>;
> +		};
> +	};
> +
I'm not sure if this whole "cpus" stuff is needed, I do not see any
code playing with it.
Rob Herring Aug. 20, 2011, 6:19 p.m. UTC | #9
On 08/20/2011 04:51 AM, Shawn Guo wrote:
> On Tue, Aug 16, 2011 at 03:34:53PM -0500, Rob Herring wrote:
>> From: Rob Herring <rob.herring@calxeda.com>
>>
>> This adds the devicetree source and documentation for the Calxeda highbank
>> platform.
>>
>> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
>> ---
>>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>>  arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
>>  2 files changed, 220 insertions(+), 0 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>>  create mode 100644 arch/arm/boot/dts/highbank.dts
>>
>> diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
>> new file mode 100644
>> index 0000000..4755caa
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/arm/calxeda.txt
>> @@ -0,0 +1,8 @@
>> +Calxeda Highbank Platforms Device Tree Bindings
>> +-----------------------------------------------
>> +
>> +Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
>> +properties.
>> +
>> +Required root node properties:
>> +    - compatible = "calxeda,highbank";
>> diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
>> new file mode 100644
>> index 0000000..2dd3b7b
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/highbank.dts
>> @@ -0,0 +1,212 @@
>> +/*
>> + * Copyright 2011 Calxeda, Inc.
>> + *
>> + * This program is free software; you can redistribute it and/or modify it
>> + * under the terms and conditions of the GNU General Public License,
>> + * version 2, as published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope 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.
>> + *
>> + * You should have received a copy of the GNU General Public License along with
>> + * this program.  If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +/dts-v1/;
>> +
>> +/* First 4KB has pen for secondary cores. */
>> +/memreserve/ 0x00000000 0x0001000;
>> +
>> +/ {
>> +	model = "Calxeda Highbank";
>> +	compatible = "calxeda,highbank";
>> +	#address-cells = <1>;
>> +	#size-cells = <1>;
>> +
>> +	cpus {
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		cpu@0 {
>> +			compatible = "arm,cortex-a9";
>> +			reg = <0>;
>> +			next-level-cache = <&L2>;
>> +		};
>> +
>> +		cpu@1 {
>> +			compatible = "arm,cortex-a9";
>> +			reg = <1>;
>> +			next-level-cache = <&L2>;
>> +		};
>> +
>> +		cpu@2 {
>> +			compatible = "arm,cortex-a9";
>> +			reg = <2>;
>> +			next-level-cache = <&L2>;
>> +		};
>> +
>> +		cpu@3 {
>> +			compatible = "arm,cortex-a9";
>> +			reg = <3>;
>> +			next-level-cache = <&L2>;
>> +		};
>> +	};
>> +
> I'm not sure if this whole "cpus" stuff is needed, I do not see any
> code playing with it.
> 
Prior reviews of dts's by Grant and others suggested putting this in.

Rob
Rob Herring Aug. 20, 2011, 6:29 p.m. UTC | #10
On 08/17/2011 12:52 PM, Will Deacon wrote:
> Hi Rob,
> 
> On Wed, Aug 17, 2011 at 02:49:41PM +0100, Rob Herring wrote:
>> In highbank.c:
>>
>> +#define HB_JUMP_TABLE_PHYS(cpu)		(0x40 + (0x10 * (cpu)))
>> +#define HB_JUMP_TABLE_VIRT(cpu)		phys_to_virt(HB_JUMP_TABLE_PHYS(cpu))
>> +
>> +void highbank_set_cpu_jump(int cpu, void *jump_addr)
>> +{
>> +	writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
>> +	__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
>> +	outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
>> +			  HB_JUMP_TABLE_PHYS(cpu) + 15);
>> +}
> 
> I don't suppose you guys can boot on a CPU other than 0 can you? That would be
> really handy for testing my cpu-mapping patch series :)
> 

We probably can with a little work to the boot code.

Rob
Rob Herring Aug. 20, 2011, 6:32 p.m. UTC | #11
On 08/17/2011 09:51 AM, Shawn Guo wrote:
> On Wed, Aug 17, 2011 at 08:49:41AM -0500, Rob Herring wrote:
>> Shawn,
>>
>> On 08/17/2011 02:27 AM, Shawn Guo wrote:
>>> Hi Rob,
>>>
>>> On Tue, Aug 16, 2011 at 03:34:53PM -0500, Rob Herring wrote:
>>>> From: Rob Herring <rob.herring@calxeda.com>
>>>>
>>>> This adds the devicetree source and documentation for the Calxeda highbank
>>>> platform.
>>>>
>>>> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
>>>> ---
>>>>  Documentation/devicetree/bindings/arm/calxeda.txt |    8 +
>>>>  arch/arm/boot/dts/highbank.dts                    |  212 +++++++++++++++++++++
>>>>  2 files changed, 220 insertions(+), 0 deletions(-)
>>>>  create mode 100644 Documentation/devicetree/bindings/arm/calxeda.txt
>>>>  create mode 100644 arch/arm/boot/dts/highbank.dts
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
>>>> new file mode 100644
>>>> index 0000000..4755caa
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/arm/calxeda.txt
>>>> @@ -0,0 +1,8 @@
>>>> +Calxeda Highbank Platforms Device Tree Bindings
>>>> +-----------------------------------------------
>>>> +
>>>> +Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
>>>> +properties.
>>>> +
>>>> +Required root node properties:
>>>> +    - compatible = "calxeda,highbank";
>>>> diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
>>>> new file mode 100644
>>>> index 0000000..2dd3b7b
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/highbank.dts
>>>> @@ -0,0 +1,212 @@
>>>> +/*
>>>> + * Copyright 2011 Calxeda, Inc.
>>>> + *
>>>> + * This program is free software; you can redistribute it and/or modify it
>>>> + * under the terms and conditions of the GNU General Public License,
>>>> + * version 2, as published by the Free Software Foundation.
>>>> + *
>>>> + * This program is distributed in the hope 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.
>>>> + *
>>>> + * You should have received a copy of the GNU General Public License along with
>>>> + * this program.  If not, see <http://www.gnu.org/licenses/>.
>>>> + */
>>>> +
>>>> +/dts-v1/;
>>>> +
>>>> +/* First 4KB has pen for secondary cores. */
>>>> +/memreserve/ 0x00000000 0x0001000;
>>>> +
>>> I failed to find the "pen" handling in the whole patch series.  Am I
>>> missing anything?
>>>
>>
>> In highbank.c:
>>
>> +#define HB_JUMP_TABLE_PHYS(cpu)		(0x40 + (0x10 * (cpu)))
>> +#define HB_JUMP_TABLE_VIRT(cpu)		phys_to_virt(HB_JUMP_TABLE_PHYS(cpu))
>> +
>> +void highbank_set_cpu_jump(int cpu, void *jump_addr)
>> +{
>> +	writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
>> +	__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
>> +	outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
>> +			  HB_JUMP_TABLE_PHYS(cpu) + 15);
>> +}
>>
> Ah, ok, the 'pen' you meant is the entry address of secondary cores.
> I thought of something like 'pen_release' in plat-versatile/platsmp.c.
> So you do not need 'boot_lock' and 'pen_release' stuff to sync secondary
> cores with the primary one (like all other smp platforms do)?
> 

The kernel pen code is only needed for cores that don't reset on hot
unplug and just go to wfi. All other smp platforms just cut and paste
the same code.

Rob
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
new file mode 100644
index 0000000..4755caa
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/calxeda.txt
@@ -0,0 +1,8 @@ 
+Calxeda Highbank Platforms Device Tree Bindings
+-----------------------------------------------
+
+Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following
+properties.
+
+Required root node properties:
+    - compatible = "calxeda,highbank";
diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts
new file mode 100644
index 0000000..2dd3b7b
--- /dev/null
+++ b/arch/arm/boot/dts/highbank.dts
@@ -0,0 +1,212 @@ 
+/*
+ * Copyright 2011 Calxeda, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/dts-v1/;
+
+/* First 4KB has pen for secondary cores. */
+/memreserve/ 0x00000000 0x0001000;
+
+/ {
+	model = "Calxeda Highbank";
+	compatible = "calxeda,highbank";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "arm,cortex-a9";
+			reg = <0>;
+			next-level-cache = <&L2>;
+		};
+
+		cpu@1 {
+			compatible = "arm,cortex-a9";
+			reg = <1>;
+			next-level-cache = <&L2>;
+		};
+
+		cpu@2 {
+			compatible = "arm,cortex-a9";
+			reg = <2>;
+			next-level-cache = <&L2>;
+		};
+
+		cpu@3 {
+			compatible = "arm,cortex-a9";
+			reg = <3>;
+			next-level-cache = <&L2>;
+		};
+	};
+
+	memory {
+		name = "memory";
+		device_type = "memory";
+		reg = <0x00000000 0xff900000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyAMA0";
+	};
+
+	intc: interrupt-controller@fff11000 {
+		compatible = "arm,cortex-a9-gic";
+		#interrupt-cells = <1>;
+		#size-cells = <0>;
+		#address-cells = <1>;
+		interrupt-controller;
+		reg = <0xfff11000 0x1000>,
+		      <0xfff10100 0x100>;
+		      
+		gicppi0: gic-ppi@0 {
+			compatible = "arm,cortex-a9-gic-ppi";
+			#interrupt-cells = <1>;
+			interrupt-controller;
+			reg = <0>;
+		};
+		gicppi1: gic-ppi@1 {
+			compatible = "arm,cortex-a9-gic-ppi";
+			#interrupt-cells = <1>;
+			interrupt-controller;
+			reg = <1>;
+		};
+	};
+
+	soc {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "simple-bus";
+		interrupt-parent = <&intc>;
+		ranges;
+
+		timer@fff10600 {
+			compatible = "arm,smp-twd";
+			reg = <0xfff10600 0x20>;
+			interrupt-parent = <&gicppi0>;
+			interrupts = <29>;
+		};
+
+		watchdog@fff10620 {
+			compatible = "arm,cortex-a9-wdt";
+			reg = <0xfff10620 0x20>;
+			interrupt-parent = <&gicppi0>;
+			interrupts = <30>;
+		};
+
+		L2: l2-cache {
+			compatible = "arm,pl310-cache";
+			reg = <0xfff12000 0x1000>;
+			interrupts = <102>;
+			cache-unified;
+			cache-level = <2>;
+		};
+
+		pmu {
+			compatible = "arm,cortex-a9-pmu";
+			interrupts = <108 107 106 105>;
+		};
+
+		sata@ffe08000 {
+			compatible = "calxeda,hb-ahci";
+			reg = <0xffe08000 0x10000>;
+			interrupts = <115>;
+		};
+
+		sdhci@ffe0e000 {
+			compatible = "calxeda,hb-sdhci";
+			reg = <0xffe0e000 0x1000>;
+			interrupts = <122>;
+		};
+
+		ipc@fff20000 {
+			compatible = "arm,pl320", "arm,primecell";
+			reg = <0xfff20000 0x1000>;
+			interrupts = <39>;
+		};
+
+		gpioe: gpio@fff30000 {
+			#gpio-cells = <2>;
+			compatible = "arm,pl061", "arm,primecell";
+			gpio-controller;
+			reg = <0xfff30000 0x1000>;
+			interrupts = <46>;
+		};
+
+		gpiof: gpio@fff31000 {
+			#gpio-cells = <2>;
+			compatible = "arm,pl061", "arm,primecell";
+			gpio-controller;
+			reg = <0xfff31000 0x1000>;
+			interrupts = <47>;
+		};
+
+		gpiog: gpio@fff32000 {
+			#gpio-cells = <2>;
+			compatible = "arm,pl061", "arm,primecell";
+			gpio-controller;
+			reg = <0xfff32000 0x1000>;
+			interrupts = <48>;
+		};
+
+		gpioh: gpio@fff33000 {
+			#gpio-cells = <2>;
+			compatible = "arm,pl061", "arm,primecell";
+			gpio-controller;
+			reg = <0xfff33000 0x1000>;
+			interrupts = <49>;
+		};
+
+		timer {
+			compatible = "arm,sp804", "arm,primecell";
+			reg = <0xfff34000 0x1000>;
+			interrupts = <50>;
+		};
+
+		rtc@fff35000 {
+			compatible = "arm,pl031", "arm,primecell";
+			reg = <0xfff35000 0x1000>;
+			interrupts = <51>;
+		};
+
+		serial@fff36000 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0xfff36000 0x1000>;
+			interrupts = <52>;
+		};
+
+		smic@fff3a000 {
+			compatible = "ipmi-smic";
+			device_type = "ipmi";
+			reg = <0xfff3a000 0x1000>;
+			interrupts = <56>;
+			reg-size = <4>;
+			reg-spacing = <4>;
+		};
+
+		sregs@fff3c000 {
+			compatible = "calxeda,hb-sregs";
+			reg = <0xfff3c000 0x1000>;
+		};
+
+		dma@fff3d000 {
+			compatible = "arm,pl330", "arm,primecell";
+			reg = <0xfff3d000 0x1000>;
+			interrupts = <124>;
+		};
+	};
+};