Merge tag 'mailbox-v6.3' of git://git.linaro.org/landing-teams/working/fujitsu/integr...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 25 Feb 2023 23:10:14 +0000 (15:10 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 25 Feb 2023 23:10:14 +0000 (15:10 -0800)
Pull mailbox updates from Jassi Brar:

 - qcom: misc changes to bindings for sa8775p, QDU1000/QRU1000, IPQ5332,
   SDX55, msm8976, glink-rpm-edge

 - sti: convert to DT schema

 - zynq: switch to flexible array to simplify code

* tag 'mailbox-v6.3' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
  dt-bindings: mailbox: qcom-ipcc: Add compatible for QDU1000/QRU1000
  mailbox: qcom-apcs-ipc: add IPQ5332 APSS clock support
  dt-bindings: mailbox: qcom: add compatible for the IPQ5332 SoC
  dt-bindings: remoteproc: qcom,glink-rpm-edge: convert to DT schema
  mailbox: qcom-apcs-ipc: enable APCS clock device for MSM8996
  dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example
  dt-bindings: mailbox: qcom: add missing platforms to conditional clauses
  dt-bindings: mailbox: qcom: correct the list of platforms using clocks
  dt-bindings: mailbox: qcom: enable syscon compatible for msm8976
  dt-bindings: mailbox: qcom: add SDX55 compatible
  dt-bindings: mailbox: qcom-ipcc: document the sa8775p platform
  dt-bindings: mailbox: sti-mailbox: convert to DT schema
  mailbox: zynq: Switch to flexible array to simplify code

Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml
Documentation/devicetree/bindings/mailbox/st,sti-mailbox.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/mailbox/sti-mailbox.txt [deleted file]
Documentation/devicetree/bindings/remoteproc/qcom,glink-rpm-edge.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/soc/qcom/qcom,glink.txt [deleted file]
drivers/mailbox/qcom-apcs-ipc-mailbox.c
drivers/mailbox/zynqmp-ipi-mailbox.c

index 943f947..658d03a 100644 (file)
@@ -18,9 +18,12 @@ properties:
     oneOf:
       - items:
           - enum:
+              - qcom,ipq5332-apcs-apps-global
+          - const: qcom,ipq6018-apcs-apps-global
+      - items:
+          - enum:
               - qcom,ipq6018-apcs-apps-global
               - qcom,ipq8074-apcs-apps-global
-              - qcom,msm8976-apcs-kpss-global
               - qcom,msm8996-apcs-hmss-global
               - qcom,msm8998-apcs-hmss-global
               - qcom,qcm2290-apcs-hmss-global
@@ -37,8 +40,10 @@ properties:
               - qcom,msm8916-apcs-kpss-global
               - qcom,msm8939-apcs-kpss-global
               - qcom,msm8953-apcs-kpss-global
+              - qcom,msm8976-apcs-kpss-global
               - qcom,msm8994-apcs-kpss-global
               - qcom,qcs404-apcs-apps-global
+              - qcom,sdx55-apcs-gcc
           - const: syscon
   reg:
     maxItems: 1
@@ -71,15 +76,8 @@ allOf:
         compatible:
           enum:
             - qcom,msm8916-apcs-kpss-global
-            - qcom,msm8994-apcs-kpss-global
-            - qcom,msm8996-apcs-hmss-global
-            - qcom,msm8998-apcs-hmss-global
+            - qcom,msm8939-apcs-kpss-global
             - qcom,qcs404-apcs-apps-global
-            - qcom,sc7180-apss-shared
-            - qcom,sdm660-apcs-hmss-global
-            - qcom,sdm845-apss-shared
-            - qcom,sm6125-apcs-hmss-global
-            - qcom,sm8150-apss-shared
     then:
       properties:
         clocks:
@@ -110,9 +108,10 @@ allOf:
   - if:
       properties:
         compatible:
-          enum:
-            - qcom,ipq6018-apcs-apps-global
-            - qcom,ipq8074-apcs-apps-global
+          contains:
+            enum:
+              - qcom,ipq6018-apcs-apps-global
+              - qcom,ipq8074-apcs-apps-global
     then:
       properties:
         clocks:
@@ -123,12 +122,37 @@ allOf:
           items:
             - const: pll
             - const: xo
+
   - if:
       properties:
         compatible:
           enum:
-            - qcom,ipq6018-apcs-apps-global
-            - qcom,ipq8074-apcs-apps-global
+            - qcom,msm8953-apcs-kpss-global
+            - qcom,msm8976-apcs-kpss-global
+            - qcom,msm8994-apcs-kpss-global
+            - qcom,msm8996-apcs-hmss-global
+            - qcom,msm8998-apcs-hmss-global
+            - qcom,qcm2290-apcs-hmss-global
+            - qcom,sc7180-apss-shared
+            - qcom,sc8180x-apss-shared
+            - qcom,sdm660-apcs-hmss-global
+            - qcom,sdm845-apss-shared
+            - qcom,sm4250-apcs-hmss-global
+            - qcom,sm6115-apcs-hmss-global
+            - qcom,sm6125-apcs-hmss-global
+            - qcom,sm8150-apss-shared
+    then:
+      properties:
+        clocks: false
+        clock-names: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq6018-apcs-apps-global
+              - qcom,ipq8074-apcs-apps-global
     then:
       properties:
         '#clock-cells':
@@ -148,6 +172,7 @@ examples:
         reg = <0x9820000 0x1000>;
 
         #mbox-cells = <1>;
+        #clock-cells = <0>;
     };
 
     rpm-glink {
index f5c7343..cc6f66e 100644 (file)
@@ -24,6 +24,8 @@ properties:
   compatible:
     items:
       - enum:
+          - qcom,qdu1000-ipcc
+          - qcom,sa8775p-ipcc
           - qcom,sc7280-ipcc
           - qcom,sc8280xp-ipcc
           - qcom,sm6350-ipcc
diff --git a/Documentation/devicetree/bindings/mailbox/st,sti-mailbox.yaml b/Documentation/devicetree/bindings/mailbox/st,sti-mailbox.yaml
new file mode 100644 (file)
index 0000000..a023c28
--- /dev/null
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mailbox/st,sti-mailbox.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics Mailbox Driver for STi platform
+
+description:
+  Each ST Mailbox IP currently consists of 4 instances of 32 channels.
+  Messages are passed between Application and Remote processors using
+  shared memory.
+
+maintainers:
+  - Patrice Chotard <patrice.chotard@foss.st.com>
+
+properties:
+  compatible:
+    const: st,stih407-mailbox
+
+  reg:
+    maxItems: 1
+
+  mbox-name:
+    $ref: /schemas/types.yaml#/definitions/string
+    description: name of the mailbox IP
+
+  interrupts:
+    description: the irq line for the RX mailbox
+    maxItems: 1
+
+  "#mbox-cells":
+    const: 2
+
+required:
+  - compatible
+  - reg
+  - "#mbox-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    mailbox0: mailbox@8f00000  {
+        compatible = "st,stih407-mailbox";
+        reg = <0x8f00000 0x1000>;
+        interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+        #mbox-cells = <2>;
+        mbox-name = "a9";
+    };
+
+...
diff --git a/Documentation/devicetree/bindings/mailbox/sti-mailbox.txt b/Documentation/devicetree/bindings/mailbox/sti-mailbox.txt
deleted file mode 100644 (file)
index 351f612..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-ST Microelectronics Mailbox Driver
-
-Each ST Mailbox IP currently consists of 4 instances of 32 channels.  Messages
-are passed between Application and Remote processors using shared memory.
-
-Controller
-----------
-
-Required properties:
-- compatible           : Should be "st,stih407-mailbox"
-- reg                  : Offset and length of the device's register set
-- mbox-name            : Name of the mailbox
-- #mbox-cells:         : Must be 2
-                         <&phandle instance channel direction>
-                           phandle   : Label name of controller
-                           instance  : Instance number
-                           channel   : Channel number
-
-Optional properties
-- interrupts           : Contains the IRQ line for a Rx mailbox
-
-Example:
-
-mailbox0: mailbox@0  {
-       compatible      = "st,stih407-mailbox";
-       reg             = <0x08f00000 0x1000>;
-       interrupts      = <GIC_SPI 1 IRQ_TYPE_NONE>;
-       #mbox-cells     = <2>;
-       mbox-name       = "a9";
-};
-
-Client
-------
-
-Required properties:
-- compatible           : Many (See the client docs)
-- reg                  : Shared (between Application and Remote) memory address
-- mboxes               : Standard property to specify a Mailbox (See ./mailbox.txt)
-                         Cells must match 'mbox-cells' (See Controller docs above)
-
-Optional properties
-- mbox-names           : Name given to channels seen in the 'mboxes' property.
-
-Example:
-
-mailbox_test {
-       compatible      = "mailbox-test";
-       reg             = <0x[shared_memory_address], [shared_memory_size]>;
-       mboxes          = <&mailbox2 0 1>, <&mailbox0 2 1>;
-       mbox-names      = "tx", "rx";
-};
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,glink-rpm-edge.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,glink-rpm-edge.yaml
new file mode 100644 (file)
index 0000000..f5a044e
--- /dev/null
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,glink-rpm-edge.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm G-Link RPM edge
+
+description: |
+  Qualcomm G-Link edge, a FIFO based mechanism for communication with Resource
+  Power Manager (RPM) on various Qualcomm platforms.
+
+maintainers:
+  - Bjorn Andersson <andersson@kernel.org>
+
+properties:
+  compatible:
+    const: qcom,glink-rpm
+
+  label:
+    $ref: /schemas/types.yaml#/definitions/string
+    description:
+      Name of the edge, used for debugging and identification purposes. The
+      node name will be used if this is not present.
+
+  interrupts:
+    maxItems: 1
+
+  mboxes:
+    items:
+      - description: rpm_hlos mailbox in APCS
+
+  qcom,remote-pid:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      The identifier for the remote processor as known by the rest of the
+      system.
+
+  qcom,rpm-msg-ram:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: |
+      RPM message memory resource (compatible: qcom,rpm-msg-ram).
+
+  rpm-requests:
+    type: object
+    $ref: /schemas/soc/qcom/qcom,smd-rpm.yaml#
+    unevaluatedProperties: false
+    description:
+      Qualcomm Resource Power Manager (RPM) over G-Link
+
+    properties:
+      qcom,intents:
+        $ref: /schemas/types.yaml#/definitions/uint32-matrix
+        minItems: 1
+        maxItems: 32
+        items:
+          items:
+            - description: size of each intent to preallocate
+            - description: amount of intents to preallocate
+              minimum: 1
+        description:
+          List of (size, amount) pairs describing what intents should be
+          preallocated for this virtual channel. This can be used to tweak the
+          default intents available for the channel to meet expectations of the
+          remote.
+
+    required:
+      - qcom,glink-channels
+
+required:
+  - compatible
+  - interrupts
+  - mboxes
+
+anyOf:
+  - required:
+      - qcom,remote-pid
+  - required:
+      - qcom,rpm-msg-ram
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    rpm-glink {
+        compatible = "qcom,glink-rpm";
+        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+        mboxes = <&apcs_glb 0>;
+        qcom,rpm-msg-ram = <&rpm_msg_ram>;
+
+        rpm-requests {
+            compatible = "qcom,rpm-msm8996";
+            qcom,glink-channels = "rpm_requests";
+
+            /* ... */
+        };
+    };
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,glink.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,glink.txt
deleted file mode 100644 (file)
index 1214192..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-Qualcomm GLINK edge binding
-
-This binding describes a Qualcomm GLINK edge, a fifo based mechanism for
-communication between subsystem-pairs on various Qualcomm platforms. Two types
-of edges can be described by the binding; the GLINK RPM edge and a SMEM based
-edge.
-
-- compatible:
-       Usage: required for glink-rpm
-       Value type: <stringlist>
-       Definition: must be "qcom,glink-rpm"
-
-- label:
-       Usage: optional
-       Value type: <string>
-       Definition: should specify the subsystem name this edge corresponds to.
-
-- interrupts:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: should specify the IRQ used by the remote processor to
-                   signal this processor about communication related events
-
-- qcom,remote-pid:
-       Usage: required for glink-smem
-       Value type: <u32>
-       Definition: specifies the identifier of the remote endpoint of this edge
-
-- qcom,rpm-msg-ram:
-       Usage: required for glink-rpm
-       Value type: <prop-encoded-array>
-       Definition: handle to RPM message memory resource
-
-- mboxes:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: reference to the "rpm_hlos" mailbox in APCS, as described
-                   in mailbox/mailbox.txt
-
-= GLINK DEVICES
-Each subnode of the GLINK node represent function tied to a virtual
-communication channel. The name of the nodes are not important. The properties
-of these nodes are defined by the individual bindings for the specific function
-- but must contain the following property:
-
-- qcom,glink-channels:
-       Usage: required
-       Value type: <stringlist>
-       Definition: a list of channels tied to this function, used for matching
-                   the function to a set of virtual channels
-
-- qcom,intents:
-       Usage: optional
-       Value type: <prop-encoded-array>
-       Definition: a list of size,amount pairs describing what intents should
-                   be preallocated for this virtual channel. This can be used
-                   to tweak the default intents available for the channel to
-                   meet expectations of the remote.
-
-= EXAMPLE
-The following example represents the GLINK RPM node on a MSM8996 device, with
-the function for the "rpm_request" channel defined, which is used for
-regulators and root clocks.
-
-       apcs_glb: mailbox@9820000 {
-               compatible = "qcom,msm8996-apcs-hmss-global";
-               reg = <0x9820000 0x1000>;
-
-               #mbox-cells = <1>;
-       };
-
-       rpm_msg_ram: memory@68000 {
-               compatible = "qcom,rpm-msg-ram";
-               reg = <0x68000 0x6000>;
-       };
-
-       rpm-glink {
-               compatible = "qcom,glink-rpm";
-
-               interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-
-               qcom,rpm-msg-ram = <&rpm_msg_ram>;
-
-               mboxes = <&apcs_glb 0>;
-
-               rpm-requests {
-                       compatible = "qcom,rpm-msm8996";
-                       qcom,glink-channels = "rpm_requests";
-
-                       qcom,intents = <0x400 5
-                                       0x800 1>;
-                       ...
-               };
-       };
index 0e9f9cb..6bbf87c 100644 (file)
@@ -42,7 +42,7 @@ static const struct qcom_apcs_ipc_data msm8994_apcs_data = {
 };
 
 static const struct qcom_apcs_ipc_data msm8996_apcs_data = {
-       .offset = 16, .clk_name = NULL
+       .offset = 16, .clk_name = "qcom-apcs-msm8996-clk"
 };
 
 static const struct qcom_apcs_ipc_data apps_shared_apcs_data = {
@@ -141,6 +141,7 @@ static int qcom_apcs_ipc_remove(struct platform_device *pdev)
 
 /* .data is the offset of the ipc register within the global block */
 static const struct of_device_id qcom_apcs_ipc_of_match[] = {
+       { .compatible = "qcom,ipq5332-apcs-apps-global", .data = &ipq6018_apcs_data },
        { .compatible = "qcom,ipq6018-apcs-apps-global", .data = &ipq6018_apcs_data },
        { .compatible = "qcom,ipq8074-apcs-apps-global", .data = &ipq6018_apcs_data },
        { .compatible = "qcom,msm8916-apcs-kpss-global", .data = &msm8916_apcs_data },
index 12e004f..a4c8d23 100644 (file)
@@ -110,7 +110,7 @@ struct zynqmp_ipi_pdata {
        unsigned int method;
        u32 local_id;
        int num_mboxes;
-       struct zynqmp_ipi_mbox *ipi_mboxes;
+       struct zynqmp_ipi_mbox ipi_mboxes[];
 };
 
 static struct device_driver zynqmp_ipi_mbox_driver = {
@@ -635,7 +635,7 @@ static int zynqmp_ipi_probe(struct platform_device *pdev)
        int num_mboxes, ret = -EINVAL;
 
        num_mboxes = of_get_child_count(np);
-       pdata = devm_kzalloc(dev, sizeof(*pdata) + (num_mboxes * sizeof(*mbox)),
+       pdata = devm_kzalloc(dev, struct_size(pdata, ipi_mboxes, num_mboxes),
                             GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
@@ -649,8 +649,6 @@ static int zynqmp_ipi_probe(struct platform_device *pdev)
        }
 
        pdata->num_mboxes = num_mboxes;
-       pdata->ipi_mboxes = (struct zynqmp_ipi_mbox *)
-                           ((char *)pdata + sizeof(*pdata));
 
        mbox = pdata->ipi_mboxes;
        for_each_available_child_of_node(np, nc) {