Commit 75afd029 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull mailbox updates from Jassi Brar:

 - add CMDQ support for mediatek mt8188

 - mhuv2: fix channel window status

 - qcom: document X1E80100 IPC controller and misc cleanup

 - add Versal bindings to xlnx

 - Convert to platform remove callback returning void

* tag 'mailbox-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox: (23 commits)
  mailbox: mtk-cmdq: Add CMDQ driver support for mt8188
  mailbox: mtk-cmdq: Sort cmdq platform data by compatible name
  mailbox: mtk-cmdq: Rename gce_plat variable with SoC name postfix
  dt-bindings: mailbox: qcom-ipcc: document the X1E80100 Inter-Processor Communication Controller
  mailbox: zynqmp-ipi: Convert to platform remove callback returning void
  mailbox: tegra-hsp: Convert to platform remove callback returning void
  mailbox: sun6i-msgbox: Convert to platform remove callback returning void
  mailbox: stm32-ipcc: Convert to platform remove callback returning void
  mailbox: qcom-ipcc: Convert to platform remove callback returning void
  mailbox: qcom-apcs-ipc: Convert to platform remove callback returning void
  mailbox: omap: Convert to platform remove callback returning void
  mailbox: mtk-cmdq: Convert to platform remove callback returning void
  mailbox: mailbox-test: Convert to platform remove callback returning void
  mailbox: imx: Convert to platform remove callback returning void
  mailbox: bcm-pdc: Convert to platform remove callback returning void
  mailbox: bcm-flexrm: Convert to platform remove callback returning void
  mailbox: zynqmp-ipi: fix an Excess struct member kernel-doc warning
  dt-bindings: mailbox: add Versal IPI bindings
  dt-bindings: mailbox: zynqmp: extend required list
  mailbox: arm_mhuv2: Fix a bug for mhuv2_sender_interrupt
  ...
parents 08df80a3 cd795fb0
Loading
Loading
Loading
Loading
+43 −19
Original line number Diff line number Diff line
@@ -23,6 +23,24 @@ properties:
              - qcom,ipq8074-apcs-apps-global
              - qcom,ipq9574-apcs-apps-global
          - const: qcom,ipq6018-apcs-apps-global
      - items:
          - enum:
              - qcom,qcs404-apcs-apps-global
          - const: qcom,msm8916-apcs-kpss-global
          - const: syscon
      - items:
          - enum:
              - qcom,msm8976-apcs-kpss-global
          - const: qcom,msm8994-apcs-kpss-global
          - const: syscon
      - items:
          - enum:
              - qcom,msm8998-apcs-hmss-global
              - qcom,sdm660-apcs-hmss-global
              - qcom,sm4250-apcs-hmss-global
              - qcom,sm6115-apcs-hmss-global
              - qcom,sm6125-apcs-hmss-global
          - const: qcom,msm8994-apcs-kpss-global
      - items:
          - enum:
              - qcom,sc7180-apss-shared
@@ -34,22 +52,14 @@ 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
      - enum:
          - qcom,ipq6018-apcs-apps-global
          - qcom,ipq8074-apcs-apps-global
          - qcom,msm8996-apcs-hmss-global
          - qcom,msm8998-apcs-hmss-global
          - qcom,qcm2290-apcs-hmss-global
          - qcom,sdm660-apcs-hmss-global
          - qcom,sdm845-apss-shared
          - qcom,sm4250-apcs-hmss-global
          - qcom,sm6115-apcs-hmss-global
          - qcom,sm6125-apcs-hmss-global

  reg:
    maxItems: 1
@@ -80,20 +90,38 @@ allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8916-apcs-kpss-global
    then:
      properties:
        clocks:
          items:
            - description: primary pll parent of the clock driver
            - description: auxiliary parent
        clock-names:
          items:
            - const: pll
            - const: aux

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8939-apcs-kpss-global
            - qcom,qcs404-apcs-apps-global
    then:
      properties:
        clocks:
          items:
            - description: primary pll parent of the clock driver
            - description: auxiliary parent
            - description: reference clock
        clock-names:
          items:
            - const: pll
            - const: aux
            - const: ref

  - if:
      properties:
@@ -113,6 +141,7 @@ allOf:
            - const: ref
            - const: pll
            - const: aux

  - if:
      properties:
        compatible:
@@ -137,16 +166,10 @@ allOf:
        compatible:
          enum:
            - 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,sdm660-apcs-hmss-global
            - qcom,sdm845-apss-shared
            - qcom,sm4250-apcs-hmss-global
            - qcom,sm6115-apcs-hmss-global
            - qcom,sm6125-apcs-hmss-global
    then:
      properties:
        clocks: false
@@ -192,7 +215,8 @@ examples:
    #define GCC_APSS_AHB_CLK_SRC  1
    #define GCC_GPLL0_AO_OUT_MAIN 123
    apcs: mailbox@b011000 {
        compatible = "qcom,qcs404-apcs-apps-global", "syscon";
        compatible = "qcom,qcs404-apcs-apps-global",
                     "qcom,msm8916-apcs-kpss-global", "syscon";
        reg = <0x0b011000 0x1000>;
        #mbox-cells = <1>;
        clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ properties:
          - qcom,sm8450-ipcc
          - qcom,sm8550-ipcc
          - qcom,sm8650-ipcc
          - qcom,x1e80100-ipcc
      - const: qcom,ipcc

  reg:
+119 −13
Original line number Diff line number Diff line
@@ -37,7 +37,9 @@ maintainers:

properties:
  compatible:
    const: xlnx,zynqmp-ipi-mailbox
    enum:
      - xlnx,zynqmp-ipi-mailbox
      - xlnx,versal-ipi-mailbox

  method:
    description: |
@@ -58,6 +60,12 @@ properties:
  '#size-cells':
    const: 2

  reg:
    maxItems: 2

  reg-names:
    maxItems: 2

  xlnx,ipi-id:
    description: |
      Remote Xilinx IPI agent ID of which the mailbox is connected to.
@@ -76,7 +84,17 @@ patternProperties:
    properties:

      compatible:
        const: xlnx,zynqmp-ipi-dest-mailbox
        enum:
          - xlnx,zynqmp-ipi-dest-mailbox
          - xlnx,versal-ipi-dest-mailbox

      reg:
        minItems: 1
        maxItems: 4

      reg-names:
        minItems: 1
        maxItems: 4

      xlnx,ipi-id:
        description:
@@ -88,6 +106,15 @@ patternProperties:
        description:
          It contains tx(0) or rx(1) channel IPI id number.

    allOf:
      - if:
          properties:
            compatible:
              contains:
                enum:
                  - xlnx,zynqmp-ipi-dest-mailbox
        then:
          properties:
            reg:
              maxItems: 4

@@ -97,14 +124,26 @@ patternProperties:
                - const: local_response_region
                - const: remote_request_region
                - const: remote_response_region
        else:
          properties:
            reg:
              minItems: 1
              items:
                - description: Remote IPI agent control register region
                - description: Remote IPI agent optional message buffers

            reg-names:
              minItems: 1
              items:
                - const: ctrl
                - const: msg

    required:
      - compatible
      - reg
      - reg-names
      - "#mbox-cells"

additionalProperties: false
      - xlnx,ipi-id

required:
  - compatible
@@ -113,6 +152,36 @@ required:
  - '#size-cells'
  - xlnx,ipi-id

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - xlnx,zynqmp-ipi-mailbox
    then:
      properties:
        reg: false
        reg-names: false

    else:
      properties:
        reg:
          items:
            - description: Host IPI agent control register region
            - description: Host IPI agent optional message buffers

        reg-names:
          items:
            - const: ctrl
            - const: msg

      required:
        - reg
        - reg-names

additionalProperties: false

examples:
  - |
    #include<dt-bindings/interrupt-controller/arm-gic.h>
@@ -144,4 +213,41 @@ examples:
      };
    };

  - |
    #include<dt-bindings/interrupt-controller/arm-gic.h>

    bus {
      #address-cells = <2>;
      #size-cells = <2>;
      mailbox@ff300000 {
        compatible = "xlnx,versal-ipi-mailbox";
        interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
        #address-cells = <2>;
        #size-cells = <2>;
        reg = <0x0 0xff300000 0x0 0x1000>,
              <0x0 0xff990000 0x0 0x1ff>;
        reg-names = "ctrl", "msg";
        xlnx,ipi-id = <0>;
        ranges;

        /* buffered IPI */
        mailbox@ff340000 {
          compatible = "xlnx,versal-ipi-dest-mailbox";
          reg = <0x0 0xff340000 0x0 0x1000>,
                <0x0 0xff990400 0x0 0x1ff>;
          reg-names = "ctrl", "msg";
          #mbox-cells = <1>;
          xlnx,ipi-id = <4>;
        };

        /* bufferless IPI */
        mailbox@ff370000 {
          compatible = "xlnx,versal-ipi-dest-mailbox";
          reg = <0x0 0xff370000 0x0 0x1000>;
          reg-names = "ctrl";
          #mbox-cells = <1>;
          xlnx,ipi-id = <7>;
        };
      };
    };
...
+2 −1
Original line number Diff line number Diff line
@@ -553,7 +553,8 @@ static irqreturn_t mhuv2_sender_interrupt(int irq, void *data)
	priv = chan->con_priv;

	if (!IS_PROTOCOL_DOORBELL(priv)) {
		writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx + priv->windows - 1].int_clr);
		for (i = 0; i < priv->windows; i++)
			writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx + i].int_clr);

		if (chan->cl) {
			mbox_chan_txdone(chan, 0);
+2 −4
Original line number Diff line number Diff line
@@ -1650,7 +1650,7 @@ static int flexrm_mbox_probe(struct platform_device *pdev)
	return ret;
}

static int flexrm_mbox_remove(struct platform_device *pdev)
static void flexrm_mbox_remove(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
	struct flexrm_mbox *mbox = platform_get_drvdata(pdev);
@@ -1661,8 +1661,6 @@ static int flexrm_mbox_remove(struct platform_device *pdev)

	dma_pool_destroy(mbox->cmpl_pool);
	dma_pool_destroy(mbox->bd_pool);

	return 0;
}

static const struct of_device_id flexrm_mbox_of_match[] = {
@@ -1677,7 +1675,7 @@ static struct platform_driver flexrm_mbox_driver = {
		.of_match_table = flexrm_mbox_of_match,
	},
	.probe		= flexrm_mbox_probe,
	.remove		= flexrm_mbox_remove,
	.remove_new	= flexrm_mbox_remove,
};
module_platform_driver(flexrm_mbox_driver);

Loading