Commit a5ffbc04 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Bjorn Andersson
Browse files

dt-bindings: soc: qcom,wcnss: convert to dtschema



Convert the Qualcomm WCNSS bindings to DT Schema.

Changes against original bindings: fix qcom,smd-channels and
qcom,smem-states names (how they are used in DTS and driver), enforce
child node naming of bluetooth and wifi.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220405065752.27389-3-krzysztof.kozlowski@linaro.org
parent d00004c4
Loading
Loading
Loading
Loading
+0 −131
Original line number Diff line number Diff line
Qualcomm WCNSS Binding

This binding describes the Qualcomm WCNSS hardware. It consists of control
block and a BT, WiFi and FM radio block, all using SMD as command channels.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be: "qcom,wcnss",

- qcom,smd-channel:
	Usage: required
	Value type: <string>
	Definition: standard SMD property specifying the SMD channel used for
		    communication with the WiFi firmware.
		    Should be "WCNSS_CTRL".

- qcom,mmio:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: reference to a node specifying the wcnss "ccu" and "dxe"
		    register blocks. The node must be compatible with one of
		    the following:
		    "qcom,riva",
		    "qcom,pronto"

- firmware-name:
	Usage: optional
	Value type: <string>
	Definition: specifies the relative firmware image path for the WLAN NV
		    blob. Defaults to "wlan/prima/WCNSS_qcom_wlan_nv.bin" if
		    not specified.

= SUBNODES
The subnodes of the wcnss node are optional and describe the individual blocks in
the WCNSS.

== Bluetooth
The following properties are defined to the bluetooth node:

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be:
		    "qcom,wcnss-bt"

- local-bd-address:
	Usage: optional
	Value type: <u8 array>
	Definition: see Documentation/devicetree/bindings/net/bluetooth.txt

== WiFi
The following properties are defined to the WiFi node:

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,wcnss-wlan",

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the "rx" and "tx" interrupts

- interrupt-names:
	Usage: required
	Value type: <stringlist>
	Definition: must contain "rx" and "tx"

- qcom,smem-state:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should reference the tx-enable and tx-rings-empty SMEM states

- qcom,smem-state-names:
	Usage: required
	Value type: <stringlist>
	Definition: must contain "tx-enable" and "tx-rings-empty"

= EXAMPLE
The following example represents a SMD node, with one edge representing the
"pronto" subsystem, with the wcnss device and its wcn3680 BT and WiFi blocks
described; as found on the 8974 platform.

smd {
	compatible = "qcom,smd";

	pronto-edge {
		interrupts = <0 142 1>;

		qcom,ipc = <&apcs 8 17>;
		qcom,smd-edge = <6>;

		wcnss {
			compatible = "qcom,wcnss";
			qcom,smd-channels = "WCNSS_CTRL";

			#address-cells = <1>;
			#size-cells = <1>;

			qcom,mmio = <&pronto>;

			bt {
				compatible = "qcom,wcnss-bt";

				/* BD address 00:11:22:33:44:55 */
				local-bd-address = [ 55 44 33 22 11 00 ];
			};

			wlan {
				compatible = "qcom,wcnss-wlan";

				interrupts = <0 145 0>, <0 146 0>;
				interrupt-names = "tx", "rx";

				qcom,smem-state = <&apps_smsm 10>, <&apps_smsm 9>;
				qcom,smem-state-names = "tx-enable", "tx-rings-empty";
			};
		};
	};
};

soc {
	pronto: pronto {
		compatible = "qcom,pronto";

		reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>;
		reg-names = "ccu", "dxe", "pmu";
	};
};
+137 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/qcom/qcom,wcnss.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm WCNSS

maintainers:
  - Andy Gross <agross@kernel.org>
  - Bjorn Andersson <bjorn.andersson@linaro.org>

description:
  The Qualcomm WCNSS hardware consists of control block and a BT, WiFi and FM
  radio block, all using SMD as command channels.

properties:
  compatible:
    const: qcom,wcnss

  firmware-name:
    $ref: /schemas/types.yaml#/definitions/string
    default: "wlan/prima/WCNSS_qcom_wlan_nv.bin"
    description:
      Relative firmware image path for the WLAN NV blob.

  qcom,mmio:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: |
      Reference to a node specifying the wcnss "ccu" and "dxe" register blocks.
      The node must be compatible with one of the following::
           - qcom,riva"
           - qcom,pronto"

  qcom,smd-channels:
    $ref: /schemas/types.yaml#/definitions/string
    const: WCNSS_CTRL
    description:
      Standard SMD property specifying the SMD channel used for communication
      with the WiFi firmware.

  bluetooth:
    type: object
    additionalProperties: false
    properties:
      compatible:
        const: qcom,wcnss-bt

      local-bd-address:
        $ref: /schemas/types.yaml#/definitions/uint8-array
        maxItems: 6
        description:
          See Documentation/devicetree/bindings/net/bluetooth.txt

    required:
      - compatible

  wifi:
    additionalProperties: false
    type: object
    properties:
      compatible:
        const: qcom,wcnss-wlan

      interrupts:
        maxItems: 2

      interrupt-names:
        items:
          - const: tx
          - const: rx

      qcom,smem-states:
        $ref: /schemas/types.yaml#/definitions/phandle-array
        maxItems: 2
        description:
          Should reference the tx-enable and tx-rings-empty SMEM states.

      qcom,smem-state-names:
        $ref: /schemas/types.yaml#/definitions/string-array
        items:
          - const: tx-enable
          - const: tx-rings-empty
        description:
          Names of SMEM states.

    required:
      - compatible
      - interrupts
      - interrupt-names
      - qcom,smem-states
      - qcom,smem-state-names

required:
  - compatible
  - qcom,mmio
  - qcom,smd-channels

additionalProperties: false

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

    smd-edge {
        interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>;

        qcom,ipc = <&apcs 8 17>;
        qcom,smd-edge = <6>;
        qcom,remote-pid = <4>;

        label = "pronto";

        wcnss {
            compatible = "qcom,wcnss";
            qcom,smd-channels = "WCNSS_CTRL";

            qcom,mmio = <&pronto>;

            bluetooth {
                compatible = "qcom,wcnss-bt";
                /* BD address 00:11:22:33:44:55 */
                local-bd-address = [ 55 44 33 22 11 00 ];
            };

            wifi {
                compatible = "qcom,wcnss-wlan";

                interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "tx", "rx";

                qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>;
                qcom,smem-state-names = "tx-enable", "tx-rings-empty";
            };
        };
    };