Patchwork [v2] powerpc/fsl: add device tree binding for QE firmware

login
register
mail settings
Submitter Timur Tabi
Date March 26, 2010, 7:35 p.m.
Message ID <1269632145-28462-1-git-send-email-timur@freescale.com>
Download mbox | patch
Permalink /patch/48709/
State Superseded
Headers show

Comments

Timur Tabi - March 26, 2010, 7:35 p.m.
Define a binding for embedding a QE firmware blob into the device tree.  Also
define a new property for the QE node that links to a firmware node.

Signed-off-by: Timur Tabi <timur@freescale.com>
---
 .../powerpc/dts-bindings/fsl/cpm_qe/qe.txt         |   54 ++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)
Grant Likely - March 26, 2010, 7:45 p.m.
On Fri, Mar 26, 2010 at 1:35 PM, Timur Tabi <timur@freescale.com> wrote:
> Define a binding for embedding a QE firmware blob into the device tree.  Also
> define a new property for the QE node that links to a firmware node.
>
> Signed-off-by: Timur Tabi <timur@freescale.com>
> ---
>  .../powerpc/dts-bindings/fsl/cpm_qe/qe.txt         |   54 ++++++++++++++++++++
>  1 files changed, 54 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
> index 6e37be1..865a2ef 100644
> --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
> +++ b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
> @@ -21,6 +21,15 @@ Required properties:
>  - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the
>   threads.
>
> +Optional properties:
> +- fsl,firmware-phandle:
> +    Usage: required only if there is no fsl,qe-firmware child node
> +    Value type: <phandle>
> +    Definition: Points to a firmware node (see "QE Firmware Node" below)
> +        that contains the firmware that should be uploaded for this QE.
> +        The compatible property for the firmware node should say,
> +        "fsl,qe-firmware".
> +
>  Recommended properties
>  - brg-frequency : the internal clock source frequency for baud-rate
>   generators in Hz.
> @@ -59,3 +68,48 @@ Example:
>                reg = <0 c000>;
>        };
>      };
> +
> +* QE Firmware Node
> +
> +This node defines a firmware binary that is embedded in the device tree, for
> +the purpose of passing the firmware from bootloader to the kernel, or from
> +the hypervisor to the guest.
> +
> +The firmware node itself contains the firmware binary contents, a compatible
> +property, and any firmware-specific properties.  The node itself can be located
> +anywhere, but should probably be placed inside a QE node.

The node must be a child of a QE node.  A QE node can reference the
firmware from another QE node by using the fsl,firmware-phandle
property.

With that change; Acked-by: Grant Likely <grant.likely@secretlab.ca>

g.
Timur Tabi - March 26, 2010, 7:50 p.m.
Grant Likely wrote:
> The node must be a child of a QE node.  A QE node can reference the
> firmware from another QE node by using the fsl,firmware-phandle
> property.

Ok.

I'll post a V3 once everyone else has a chance to comment.
Grant Likely - March 26, 2010, 7:53 p.m.
On Fri, Mar 26, 2010 at 1:50 PM, Timur Tabi <timur@freescale.com> wrote:
> Grant Likely wrote:
>> The node must be a child of a QE node.  A QE node can reference the
>> firmware from another QE node by using the fsl,firmware-phandle
>> property.
>
> Ok.
>
> I'll post a V3 once everyone else has a chance to comment.

Also, since it is a documentation only change, I'll pick it up into
the branch that I'm about to ask Linus to merge in the next day or so.

g.

Patch

diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
index 6e37be1..865a2ef 100644
--- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
+++ b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
@@ -21,6 +21,15 @@  Required properties:
 - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the
   threads.
 
+Optional properties:
+- fsl,firmware-phandle:
+    Usage: required only if there is no fsl,qe-firmware child node
+    Value type: <phandle>
+    Definition: Points to a firmware node (see "QE Firmware Node" below)
+        that contains the firmware that should be uploaded for this QE.
+        The compatible property for the firmware node should say,
+        "fsl,qe-firmware".
+
 Recommended properties
 - brg-frequency : the internal clock source frequency for baud-rate
   generators in Hz.
@@ -59,3 +68,48 @@  Example:
 		reg = <0 c000>;
 	};
      };
+
+* QE Firmware Node
+
+This node defines a firmware binary that is embedded in the device tree, for
+the purpose of passing the firmware from bootloader to the kernel, or from
+the hypervisor to the guest.
+
+The firmware node itself contains the firmware binary contents, a compatible
+property, and any firmware-specific properties.  The node itself can be located
+anywhere, but should probably be placed inside a QE node.  Doing so eliminates
+the need for a fsl,firmware-phandle property.  Other QE nodes that need the
+firmware should define a fsl,firmware-phandle property that points to the
+firmware node in the first QE node.
+
+The fsl,firmware property can be specified in the DTS (possibly using incbin)
+or can be inserted by the boot loader at boot time.
+
+Required properties:
+  - compatible
+      Usage: required
+      Value type: <string>
+      Definition: A standard property.  Specify a string that indicates what
+          kind of firmware it is.  For QE, this should be "fsl,qe-firmware".
+
+   - fsl,firmware
+      Usage: required
+      Value type: <prop-encoded-array>, encoded as an array of bytes
+      Definition: A standard property.  This property contains the firmware
+          binary "blob".
+
+Example:
+	qe1@e0080000 {
+		compatible = "fsl,qe";
+		qe_firmware:qe-firmware {
+			compatible = "fsl,qe-firmware";
+			fsl,firmware = <0x70 0xcd 0x00 0x00 0x01 0x46 0x45 ...>
+		}
+		...
+	}
+
+	qe2@e0090000 {
+		compatible = "fsl,qe";
+		fsl,firmware-phandle = <&qe_firmware>;
+		...
+	}