Re: [RFC PATCH v2 13/13] ARM: DT: kernel: DT cpu node bindings update

2013-05-03 Thread Lorenzo Pieralisi
On Thu, May 02, 2013 at 07:31:05PM +0100, Stephen Warren wrote:
> On 04/22/2013 09:27 AM, Lorenzo Pieralisi wrote:
> > In order to extend the current cpu nodes bindings to newer CPUs
> > inclusive of AArch64 and to update support for older ARM CPUs this
> > patch updates device tree documentation for the cpu nodes bindings.
> 
> Since I'm late reviewing this due to vacation, I imagine this has been
> applied by now. But for the record, the structure of the DT binding
> documentation in this version does look much better to me, and addresses
> any concerns I had with v1.

It is not merged yet, but hopefully it can be as soon as the merge
window closes, I just need to update some bits and bobs after rebasing,
to take into account changes that got merged this cycle.

I will repost a, hopefully, final series as soon as the merge window closes.

Thanks,
Lorenzo

___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [RFC PATCH v2 13/13] ARM: DT: kernel: DT cpu node bindings update

2013-05-02 Thread Stephen Warren
On 04/22/2013 09:27 AM, Lorenzo Pieralisi wrote:
> In order to extend the current cpu nodes bindings to newer CPUs
> inclusive of AArch64 and to update support for older ARM CPUs this
> patch updates device tree documentation for the cpu nodes bindings.

Since I'm late reviewing this due to vacation, I imagine this has been
applied by now. But for the record, the structure of the DT binding
documentation in this version does look much better to me, and addresses
any concerns I had with v1.
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [RFC PATCH v2 13/13] ARM: DT: kernel: DT cpu node bindings update

2013-04-22 Thread Tony Prisk

On 23/04/13 03:27, Lorenzo Pieralisi wrote:

+
+=
+cpus and cpu node bindings definition
+=
+
+The ARM architecture, in accordance with the ePAPR, requires the cpus and cpu
+nodes to be present and contain the properties described below.
+
+- cpus node
+
+   Description: Container of cpu nodes
+
+   The node name must be "cpus".
+
+   A cpus node must define the following properties:
+
+   - #address-cells
+   Usage: required
+   Value type: 
+   Definition: must be set to 1 for 32-bit systems and 2 for
+   64-bit systems
+   - #size-cells
+   Usage: required
+   Value type: 
+   Definition: must be set to 0
+

...

+Example 3 (ARM 1176 uniprocessor 32-bit system):
+
+   cpus {
+   cpu {
+   device_type = "cpu";
+   compatible = "arm,arm1176";
+   };
+   };
+
This example is missing the required #size-cells and #address-cells 
properties.


Regards
Tony P
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


[RFC PATCH v2 13/13] ARM: DT: kernel: DT cpu node bindings update

2013-04-22 Thread Lorenzo Pieralisi
In order to extend the current cpu nodes bindings to newer CPUs
inclusive of AArch64 and to update support for older ARM CPUs this
patch updates device tree documentation for the cpu nodes bindings.

Main changes:

- adds 64-bit bindings (inclusive of cpus node #address-cells updates)
- defines behaviour on pre and post v7 uniprocessor systems
- adds ARM 11MPcore specific reg property definition

DT cpu map parsing code must be made compliant with the latest bindings
updates, hence this patch also updates the arm_dt_init_cpu_maps() function
with checks and additional parsing rules.

Uniprocessor systems predating v7 do not parse the cpus node at all
since the reg property is meaningless on those systems.

Device trees for 64-bit systems can be taken as device tree input also
for 64-bit CPUs running in 32-bit mode. The code checks that the reg entries
are zeroed as required in the respective fields and detects automatically
the cpus node #address-cells value so that device tree written for
64-bit ARM platforms (cpus #address-cells == 2) can still be taken as
input. The correct device tree entries are to be set up by the boot
loader, kernel code just checks that device tree entries in the cpus
node are as expected for a 32-bit CPU (reg[63:24] == 0).

cpu node entries with invalid reg property or containing duplicates are
ignored and the device tree parsing is not stopped anymore when such
entries are encountered, the device tree cpu entry is just skipped.

A device tree with cpu nodes missing the boot CPU MPIDR is considered a
hard error and the kernel flags this up as a bug to force firmware updates.

Signed-off-by: Lorenzo Pieralisi 
---
 Documentation/devicetree/bindings/arm/cpus.txt | 378 ++---
 arch/arm/kernel/devtree.c  |  82 --
 2 files changed, 384 insertions(+), 76 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/cpus.txt 
b/Documentation/devicetree/bindings/arm/cpus.txt
index f32494d..82684ca 100644
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -1,77 +1,361 @@
-* ARM CPUs binding description
+=
+ARM CPUs bindings
+=
 
 The device tree allows to describe the layout of CPUs in a system through
 the "cpus" node, which in turn contains a number of subnodes (ie "cpu")
 defining properties for every cpu.
 
-Bindings for CPU nodes follow the ePAPR standard, available from:
-
-http://devicetree.org
-
-For the ARM architecture every CPU node must contain the following properties:
-
-- device_type: must be "cpu"
-- reg: property matching the CPU MPIDR[23:0] register bits
-   reg[31:24] bits must be set to 0
-- compatible:  should be one of:
-   "arm,arm1020"
-   "arm,arm1020e"
-   "arm,arm1022"
-   "arm,arm1026"
-   "arm,arm720"
-   "arm,arm740"
-   "arm,arm7tdmi"
-   "arm,arm920"
-   "arm,arm922"
-   "arm,arm925"
-   "arm,arm926"
-   "arm,arm940"
-   "arm,arm946"
-   "arm,arm9tdmi"
-   "arm,cortex-a5"
-   "arm,cortex-a7"
-   "arm,cortex-a8"
-   "arm,cortex-a9"
-   "arm,cortex-a15"
-   "arm,arm1136"
-   "arm,arm1156"
-   "arm,arm1176"
-   "arm,arm11mpcore"
-   "faraday,fa526"
-   "intel,sa110"
-   "intel,sa1100"
-   "marvell,feroceon"
-   "marvell,mohawk"
-   "marvell,xsc3"
-   "marvell,xscale"
-
-Example:
+Bindings for CPU nodes follow the ePAPR v1.1 standard, available from:
+
+https://www.power.org/documentation/epapr-version-1-1/
+
+with updates for 32-bit and 64-bit ARM systems provided in this document.
+
+
+Convention used in this document
+
+
+This document follows the conventions described in the ePAPR v1.1, with
+the addition:
+
+- square brackets define bitfields, eg reg[7:0] value of the bitfield in
+  the reg property contained in bits 7 down to 0
+
+=
+cpus and cpu node bindings definition
+=
+
+The ARM architecture, in accordance with the ePAPR, requires the cpus and cpu
+nodes to be present and contain the properties described below.
+
+- cpus node
+
+   Description: Container of cpu nodes
+
+   The node name must be "cpus".
+
+   A cpus node must define the following properties:
+
+   - #address-cells
+   Usage: required
+   Value type: 
+   Definition: must be set to 1 for 32-bit systems and 2 for
+   64-bit systems
+   - #size-cells
+   Usage: required
+   Value type: 
+   Definition: must be set to 0
+
+- cpu node
+