From patchwork Mon Jun 16 22:38:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 32005 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-qa0-f71.google.com (mail-qa0-f71.google.com [209.85.216.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 0D8CD20E7A for ; Mon, 16 Jun 2014 22:38:28 +0000 (UTC) Received: by mail-qa0-f71.google.com with SMTP id m5sf17116908qaj.2 for ; Mon, 16 Jun 2014 15:38:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:sender:precedence:list-id:x-original-sender :x-original-authentication-results:mailing-list:list-post:list-help :list-archive:list-unsubscribe; bh=A6PqZMWQoBkyA5I2pgPvrC0780GMep5AGwiYgagCyRo=; b=Q4jcUm11ZiiayDYE5dBJYSQ1Z6rOrMOJw+oPfXdzZx6wVXo5Tc6mSwluWAd92fX1vL UaCbEZY+UuTJRkx9lcuIyjH7AE+JiuAki2IViCv+pyLZPT3NewzQIAhHPvkMy2Hp2pmC a7Ne2hqdcmu75zpP7VTjYUM3VSQ4UTyTJSV1HHAkbQrTtReBgb8GBa+5Fc7aWvDL3NFj KSdMktjfZweAoV3WYQo5zfOjoFd2IDKzXL7BmVI0feZX8YVTk8J0HLzEjdHhQlu316dp wLy2CTcFWaZmdLjL+in/rYpfBa94I9/gNbtY/dFjSr1XNQ3WZHNLvmUKAovhig+q+xvP g78w== X-Gm-Message-State: ALoCoQlTXCE0s1xnhJarKplGv4A7yPfQOg3KWHeUIKRqTtS0vizaET+gLK3tIOSSFmMrkLPe9658 X-Received: by 10.58.94.166 with SMTP id dd6mr266466veb.12.1402958308611; Mon, 16 Jun 2014 15:38:28 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.109.247 with SMTP id l110ls4387186qgf.90.gmail; Mon, 16 Jun 2014 15:38:28 -0700 (PDT) X-Received: by 10.52.5.129 with SMTP id s1mr6011669vds.31.1402958308525; Mon, 16 Jun 2014 15:38:28 -0700 (PDT) Received: from mail-vc0-f171.google.com (mail-vc0-f171.google.com [209.85.220.171]) by mx.google.com with ESMTPS id b5si4643511vec.50.2014.06.16.15.38.28 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 16 Jun 2014 15:38:28 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.171 as permitted sender) client-ip=209.85.220.171; Received: by mail-vc0-f171.google.com with SMTP id id10so5568209vcb.2 for ; Mon, 16 Jun 2014 15:38:28 -0700 (PDT) X-Received: by 10.221.29.137 with SMTP id ry9mr18480841vcb.6.1402958308416; Mon, 16 Jun 2014 15:38:28 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.221.54.6 with SMTP id vs6csp168278vcb; Mon, 16 Jun 2014 15:38:27 -0700 (PDT) X-Received: by 10.66.150.40 with SMTP id uf8mr27993666pab.89.1402958307145; Mon, 16 Jun 2014 15:38:27 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id fd2si12353780pbd.177.2014.06.16.15.38.26; Mon, 16 Jun 2014 15:38:26 -0700 (PDT) Received-SPF: none (google.com: devicetree-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932066AbaFPWiY (ORCPT + 8 others); Mon, 16 Jun 2014 18:38:24 -0400 Received: from mail-ie0-f180.google.com ([209.85.223.180]:60747 "EHLO mail-ie0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755519AbaFPWiX (ORCPT ); Mon, 16 Jun 2014 18:38:23 -0400 Received: by mail-ie0-f180.google.com with SMTP id rl12so5697891iec.11 for ; Mon, 16 Jun 2014 15:38:22 -0700 (PDT) X-Received: by 10.42.68.18 with SMTP id v18mr23110791ici.1.1402958302295; Mon, 16 Jun 2014 15:38:22 -0700 (PDT) Received: from localhost.localdomain (c-71-195-31-37.hsd1.mn.comcast.net. [71.195.31.37]) by mx.google.com with ESMTPSA id jh7sm24107386igb.22.2014.06.16.15.38.19 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Jun 2014 15:38:20 -0700 (PDT) From: Alex Elder To: devicetree@vger.kernel.org, robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com, ijc+devicetree@hellion.org.uk, galak@codeaurora.org Cc: linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, gregory.clement@free-electrons.com, jason@lakedaemon.net, lorenzo.pieralisi@arm.com, maxime.ripard@free-electrons.com, olof@lixom.net, rdunlap@infradead.org, rvaswani@codeaurora.org, thomas.petazzoni@free-electrons.com Subject: [PATCH v4] devicetree: bindings: separate CPU enable method descriptions Date: Mon, 16 Jun 2014 17:38:39 -0500 Message-Id: <1402958319-366-1-git-send-email-elder@linaro.org> X-Mailer: git-send-email 1.9.1 Sender: devicetree-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: devicetree@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: elder@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.171 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , The bindings for CPU enable methods are defined in ".../arm/cpus.txt". As additional 32-bit ARM CPUS are converted to use the "enable-method" CPU property to imply a particular set of SMP operations to use, the list of these methods is likely to become unwieldy. The current documentation already contains several property descriptions that are meaningful only for certain enable methods. This patch defines a new Documentation subdirectory whose purpose is to give each CPU enable method its own place to define how and when it's used, as well as what other properties (optional or required) are associated with the method. The existing enable method documentation is expanded and moved from ".../arm/cpus.txt" into new files accordingly. Signed-off-by: Alex Elder --- v4 - Rebased on top of v3.16-rc1. - Added description files for recently-added enable methods: "allwinner,sun6i-a31" "marvell,armada-375-smp" "marvell,armada-380-smp" "marvell,armada-xp-smp" "rockchip,rk3066-smp" - Updated "psci.txt" with a 32-bit ARM example. v3 - Got rid of contrived examples. - Identified some compatible CPUs more generically (e.g. using "Any AArch64 CPU") rather than using only specific compatible string values. - Fixed and reworded the "psci" description (without incorporating "arm/psci.txt"). - Now provide a more real example for the "spin-table" method. v2 - Rename "arm,psci.txt" to be "psci.txt" and fix its content. .../bindings/arm/cpu-enable-method/README | 20 +++++++ .../arm/cpu-enable-method/allwinner,sun6i-a31 | 44 +++++++++++++++ .../arm/cpu-enable-method/marvell,armada-xp-smp | 34 +++++++++++ .../arm/cpu-enable-method/marvell,armada375-smp | 31 +++++++++++ .../arm/cpu-enable-method/marvell,armada380-smp | 32 +++++++++++ .../bindings/arm/cpu-enable-method/psci.txt | 65 ++++++++++++++++++++++ .../arm/cpu-enable-method/qcom,gcc-msm8660 | 42 ++++++++++++++ .../arm/cpu-enable-method/qcom,kpss-acc-v1 | 56 +++++++++++++++++++ .../arm/cpu-enable-method/qcom,kpss-acc-v2 | 56 +++++++++++++++++++ .../arm/cpu-enable-method/rockchip,rk3066-smp | 32 +++++++++++ .../bindings/arm/cpu-enable-method/spin-table.txt | 55 ++++++++++++++++++ Documentation/devicetree/bindings/arm/cpus.txt | 29 +--------- 12 files changed, 470 insertions(+), 26 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/README create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/allwinner,sun6i-a31 create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada-xp-smp create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada375-smp create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada380-smp create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/psci.txt create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,gcc-msm8660 create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v1 create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v2 create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/rockchip,rk3066-smp create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/spin-table.txt diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/README b/Documentation/devicetree/bindings/arm/cpu-enable-method/README new file mode 100644 index 0000000..cc9431e --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/README @@ -0,0 +1,20 @@ +========================== +CPU enable-method bindings +========================== + +The device tree describes the layout of CPUs in a machine in a single "cpus" +node, which in turn contains a number of "cpu" sub-nodes defining properties +for each cpu. + +For multiprocessing configurations, CPU cores can be individually enabled +and disabled. The enabling capability is used for SMP startup as well as +CPU hotplug. A CPU enable method--normally specified in the device tree +using an "enable-method" property--defines how cores are enabled. If all +CPUs in a machine use the same enable method and related property values, +these properties should be defined in the "cpus" node, which associates the +property values with all CPUs. Alternatively, every "cpu" node can define +its "enable-method" separately. + +Documents in this directory define how each of the CPU enable methods are to +be used, as well the names and possible values of related properties that +are required by or affect each enable method. diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/allwinner,sun6i-a31 b/Documentation/devicetree/bindings/arm/cpu-enable-method/allwinner,sun6i-a31 new file mode 100644 index 0000000..bbc661e --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/allwinner,sun6i-a31 @@ -0,0 +1,44 @@ +========================================================= +Secondary CPU enable-method "allwinner,sun6i-a31" binding +========================================================= + +This document describes the "allwinner,sun6i-a31" method for enabling +CPUs. This enable method should be used in the "cpus" node, but can +also be defined in individual "cpu" nodes. + +Enable method name: "allwinner,sun6i-a31" +Compatible machine: "sun6i-a31" +Compatible cpu: "arm,cortex-a7" +Related properties: (none) + +Example: + + cpus { + enable-method = "allwinner,sun6i-a31"; + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + reg = <0>; + }; + + cpu@1 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + reg = <1>; + }; + + cpu@2 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + reg = <2>; + }; + + cpu@3 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; + reg = <3>; + }; + }; diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada-xp-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada-xp-smp new file mode 100644 index 0000000..4a21b54 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada-xp-smp @@ -0,0 +1,34 @@ +=========================================================== +Secondary CPU enable-method "marvell,armada-xp-smp" binding +=========================================================== + +This document describes the "marvell,armada-xp-smp" method for enabling +CPUs. This enable method should be used in the "cpus" node, but can +also be defined in individual "cpu" nodes. + +Enable method name: "marvell,armada-xp-smp" +Compatible machines: "marvell,armadaxp-mv78230" + "marvell,armadaxp-mv78260 + "marvell,armadaxp-mv78460" +Compatible cpu: "marvell,sheeva-v7" +Related properties: (none) + +Example: + + cpus { + #address-cells = <1>; + #size-cells = <0>; + enable-method = "marvell,armada-xp-smp"; + + cpu@0 { + device_type = "cpu"; + compatible = "marvell,sheeva-v7"; + reg = <0>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "marvell,sheeva-v7"; + reg = <1>; + }; + }; diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada375-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada375-smp new file mode 100644 index 0000000..a3fa89f --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada375-smp @@ -0,0 +1,31 @@ +============================================================ +Secondary CPU enable-method "marvell,armada-375-smp" binding +============================================================ + +This document describes the "marvell,armada-375-smp" method for enabling +CPUs. This enable method should be used in the "cpus" node, but can +also be defined in individual "cpu" nodes. + +Enable method name: "marvell,armada-375-smp" +Compatible machine: "marvell,armada375" +Compatible cpu: "arm,cortex-a9" +Related properties: (none) + +Example: + + cpus { + #address-cells = <1>; + #size-cells = <0>; + enable-method = "marvell,armada-375-smp"; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0>; + }; + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <1>; + }; + }; diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada380-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada380-smp new file mode 100644 index 0000000..dff225d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,armada380-smp @@ -0,0 +1,32 @@ +=========================================================== +Secondary CPU enable-method "marvell,armada380-smp" binding +=========================================================== + +This document describes the "marvell,armada380-smp" method for enabling +CPUs. This enable method should be used in the "cpus" node, but can +also be defined in individual "cpu" nodes. + +Enable method name: "marvell,armada-380-smp" +Compatible machine: "marvell,armada380" + "marvell,armada385" +Compatible cpu: "arm,cortex-a9" +Related properties: (none) + +Example: + + cpus { + #address-cells = <1>; + #size-cells = <0>; + enable-method = "marvell,armada-380-smp"; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0>; + }; + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <1>; + }; + }; diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/psci.txt b/Documentation/devicetree/bindings/arm/cpu-enable-method/psci.txt new file mode 100644 index 0000000..c85b888 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/psci.txt @@ -0,0 +1,65 @@ +================================ +CPU enable-method "psci" binding +================================ + +This document describes the "psci" method for enabling secondary CPUs. +Unlike most secondary CPU enable methods, this method is not defined +by properties in CPU-related device tree nodes. Instead, a "psci" +node[1] that includes a "cpu_on" property defines how secondary CPUs +are enabled. + +Enable method name: "psci" +Compatible cpus: 32- or 64-bit ARM architectures, including + Cortex-A7, Cortex-A15, Cortex-A53, Cortex-A57 + as well as AEM. +Related properties: (none) + +Example 1: + + psci { + compatible = "arm,psci"; + method = "smc"; + cpu_on = <0x1>; + }; + cpus { + #size-cells = <0>; + #address-cells = <2>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a57"; + reg = <0x0 0x0>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a57"; + reg = <0x0 0x1>; + }; + }; + +Example 2: + psci { + compatible = "arm,psci"; + method = "hvc"; + cpu_on = <2>; + }; + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a15"; + reg = <0>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a15"; + reg = <1>; + }; + }; + +-- +[1] arm/psci.txt diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,gcc-msm8660 b/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,gcc-msm8660 new file mode 100644 index 0000000..fee9782 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,gcc-msm8660 @@ -0,0 +1,42 @@ +====================================================== +Secondary CPU enable-method "qcom,gcc-msm8660" binding +====================================================== + +This document describes the "qcom,gcc-msm8660" method for enabling +secondary CPUs. A "qcom,gcc-msm8660" enable method should only be +used in the "cpus" node--to apply to all CPUs--but it can also be +defined in individual CPU nodes. + +Note that a node compatible with "qcom,gcc-msm8660" must also be +present in the device tree, to define a memory range that contains +registers used to control the secondary core. + +Enable method name: "qcom,gcc-msm8660" +Compatible cpu: "qcom,scorpion" +Related properties: (none) + +Example: + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + compatible = "qcom,scorpion"; + enable-method = "qcom,gcc-msm8660"; + device_type = "cpu"; + reg = <0>; + }; + + cpu@1 { + compatible = "qcom,scorpion"; + enable-method = "qcom,gcc-msm8660"; + device_type = "cpu"; + reg = <1>; + }; + }; + + gcc: clock-controller@900000 { + compatible = "qcom,gcc-msm8660"; + reg = <0x900000 0x4000>; + }; diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v1 b/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v1 new file mode 100644 index 0000000..3f6ce56 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v1 @@ -0,0 +1,56 @@ +====================================================== +Secondary CPU enable-method "qcom,kpss-acc-v1" binding +====================================================== + +This document describes the "qcom,kpss-acc-v1" method for enabling CPUs. +This enable method can be used in either the "cpus" node or in individual +"cpu" nodes. Note that each "cpu" node must have both "qcom,saw" and +"qcom,acc" properties defined (even if the "enable-method" property was +defined only in the "cpus" node). + +Enable method name: "qcom,kpss-acc-v1" +Compatible machine: "qcom,msm8960" +Compatible cpu: "qcom,krait" +Related properties: + - qcom,saw + Usage: required (in each "cpu" node") + Value type: + Definition: + Specifies the SAW[1] node associated with this CPU. + + - qcom,acc + Usage: required (in each "cpu" node") + Value type: + Definition: + Specifies the ACC[2] node associated with this CPU. + +Example: + +/ { + compatible = "qcom,msm8960"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + compatible = "qcom,krait"; + enable-method = "qcom,kpss-acc-v1"; + + cpu@0 { + device_type = "cpu"; + reg = <0>; + qcom,acc = <&acc0>; + qcom,saw = <&saw0>; + }; + + cpu@1 { + device_type = "cpu"; + reg = <1>; + qcom,acc = <&acc1>; + qcom,saw = <&saw1>; + }; + }; +}; + +-- +[1] arm/msm/qcom,saw2.txt +[2] arm/msm/qcom,kpss-acc.txt diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v2 b/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v2 new file mode 100644 index 0000000..4368d904 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/qcom,kpss-acc-v2 @@ -0,0 +1,56 @@ +====================================================== +Secondary CPU enable-method "qcom,kpss-acc-v2" binding +====================================================== + +This document describes the "qcom,kpss-acc-v2" method for enabling CPUs. +This enable method can be used in either the "cpus" node or in individual +"cpu" nodes. Note that each "cpu" node must have both "qcom,saw" and +"qcom,acc" properties defined (even if the "enable-method" property was +defined only in the "cpus" node). + +Enable method name: "qcom,kpss-acc-v2" +Compatible machine: "qcom,msm8974" +Compatible cpu: "qcom,krait" +Related properties: + - qcom,saw + Usage: required (in each "cpu" node") + Value type: + Definition: + Specifies the SAW[1] node associated with this CPU. + + - qcom,acc + Usage: required (in each "cpu" node") + Value type: + Definition: + Specifies the ACC[2] node associated with this CPU. + +Example: + +/ { + compatible = "qcom,msm8974"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + compatible = "qcom,krait"; + enable-method = "qcom,kpss-acc-v2"; + + cpu@0 { + device_type = "cpu"; + reg = <0>; + qcom,acc = <&acc0>; + qcom,saw = <&saw0>; + }; + + cpu@1 { + device_type = "cpu"; + reg = <1>; + qcom,acc = <&acc1>; + qcom,saw = <&saw1>; + }; + }; +}; + +-- +[1] arm/msm/qcom,saw2.txt +[2] arm/msm/qcom,kpss-acc.txt diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/rockchip,rk3066-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/rockchip,rk3066-smp new file mode 100644 index 0000000..617f0c5 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/rockchip,rk3066-smp @@ -0,0 +1,32 @@ +========================================================= +Secondary CPU enable-method "rockchip,rk3066-smp" binding +========================================================= + +This document describes the "rockchip,rk3066-smp" method for enabling +CPUs. This enable method should be used in the "cpus" node, but can +also be defined in individual "cpu" nodes. + +Enable method name: "rockchip,rk3066-smp" +Compatible machine: "rockchip,rk3066a" + "rockchip,rk3188" +Compatible cpu: "arm,cortex-a9" +Related properties: (none) + +Example: + + cpus { + #address-cells = <1>; + #size-cells = <0>; + enable-method = "rockchip,rk3066-smp"; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0>; + }; + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <1>; + }; + }; diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/spin-table.txt b/Documentation/devicetree/bindings/arm/cpu-enable-method/spin-table.txt new file mode 100644 index 0000000..d579829 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/spin-table.txt @@ -0,0 +1,55 @@ +================================================ +Secondary CPU enable-method "spin-table" binding +================================================ + +This document describes the "spin-table" method for enabling secondary +CPUs. A "spin-table" enable method must be specified only in individual +"cpu" nodes in the device tree. + +Enable method name: "spin-table" +Compatible cpus: Any AArch64 CPU +Related properties: + - cpu-release-addr + Usage: required + Value type: <64-bit value> (two cells) + Definition: + A two cell value identifying a 64-bit memory location + used by the boot CPU to inform a secondary CPU it + should begin its kernel bootstrap. Memory at this + location must initially be zeroed. + +Example: + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x0>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x8000fff8>; + }; + cpu@1 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x1>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x8000fff8>; + }; + cpu@2 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x2>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x8000fff8>; + }; + cpu@3 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x3>; + enable-method = "spin-table"; + cpu-release-addr = <0x0 0x8000fff8>; + }; + }; diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index 1fe72a0..06e18fc 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt @@ -191,30 +191,8 @@ nodes to be present and contain the properties described below. "qcom,kpss-acc-v1" "qcom,kpss-acc-v2" "rockchip,rk3066-smp" - - - cpu-release-addr - Usage: required for systems that have an "enable-method" - property value of "spin-table". - Value type: - Definition: - # On ARM v8 64-bit systems must be a two cell - property identifying a 64-bit zero-initialised - memory location. - - - qcom,saw - Usage: required for systems that have an "enable-method" - property value of "qcom,kpss-acc-v1" or - "qcom,kpss-acc-v2" - Value type: - Definition: Specifies the SAW[1] node associated with this CPU. - - - qcom,acc - Usage: required for systems that have an "enable-method" - property value of "qcom,kpss-acc-v1" or - "qcom,kpss-acc-v2" - Value type: - Definition: Specifies the ACC[2] node associated with this CPU. - + Details about use of these CPU enable methods is documented + elsewhere[1]. Example 1 (dual-cluster big.LITTLE system 32-bit): @@ -409,5 +387,4 @@ cpus { }; -- -[1] arm/msm/qcom,saw2.txt -[2] arm/msm/qcom,kpss-acc.txt +[1] arm/cpu-enable-method/