On Mon, Dec 09, 2019 at 07:35:01PM +0100, Daniel Mack wrote:
This patch adds documentation on the top-level MFD support for AD242x devices. The bindings implemented by drivers for sub-devices of the MFD are documented in other files in their respective subsystems.
The example in this file is referred to by other documents.
Signed-off-by: Daniel Mack daniel@zonque.org
.../bindings/mfd/adi,ad242x-bus.yaml | 29 +++ .../bindings/mfd/adi,ad242x-master.yaml | 235 ++++++++++++++++++ .../bindings/mfd/adi,ad242x-slave.yaml | 108 ++++++++ 3 files changed, 372 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml create mode 100644 Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml
diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml new file mode 100644 index 000000000000..89ca8d009bb9 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-bus.yaml @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/mfd/adi,ad242x-bus.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+title: Analog Devices AD242x A²B bus node
+maintainers:
- Daniel Mack daniel@zonque.org
+description: |
- AD242x slave nodes represent the secondary I²C address a master node
- transceiver exposes on the bus.
+properties:
- compatible:
- enum:
- adi,ad2428w-bus
Where is this in the example?
Is A2B a standard thing? If so, then shouldn't some of this be split into a A2B binding and then AD242x specific binding?
- reg:
- maxItems: 1
- description: |
The secondary I²C address of the master node(called 'BUS' in the datasheet)+required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml new file mode 100644 index 000000000000..649510575a79 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-master.yaml @@ -0,0 +1,235 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/mfd/adi,ad242x-master.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+title: Analog Devices AD242x A²B master node transceiver
+maintainers:
- Daniel Mack daniel@zonque.org
+description: |
- AD242x devices are A²B (Automotive Audio Bus) transceivers that are connected
- to each other in a daisy-chain. The payload transported on that bus includes
- multi-channel audio, I²C, GPIOs and others.
- The datasheet is located here:
- https://www.analog.com/media/en/technical-documentation/user-guides/AD242x_T...
- The primary node in the chain is called the master node, and the nodes in the
- chain are called slave nodes. A master can address up to 15 slave nodes. The
- master node exposes two I²C addresses, one for accessing the registers on the
- node itself, and one for registers on one of the slave nodes.
+properties:
- compatible:
- enum:
- adi,ad2428w-master- reg:
- maxItems: 1
- description: |
The primary I²C address of the master node(called 'BASE' in the datasheet)- clocks:
- minItems: 1
- clock-names:
- $ref: /schemas/types.yaml#/definitions/string-array
- const: sync
- clock-frequency:
- $ref: '/schemas/types.yaml#/definitions/uint32'
- enum: [44100, 48000]
- description: |
Specifies the clock frequency in Hz to configure on the given sync clock.If not specified, the clock is expected to already be configured to either44100 or 48000 Hz.- interrupts:
- maxItems: 1
- adi,a2b-bus:
- $ref: '/schemas/types.yaml#/definitions/phandle'
- description: Specifies the bus handle node
- adi,upstream-slot-size:
- description: The size for upstream slots
- allOf:
- $ref: '/schemas/types.yaml#/definitions/uint32'- enum: [8, 12, 16, 20, 24, 28, 32]- adi,downstream-slot-size:
- description: The size for downstream slots
- allOf:
- $ref: '/schemas/types.yaml#/definitions/uint32'- enum: [8, 12, 16, 20, 24, 28, 32]- adi,tdm-mode:
- description: The TDM mode to use
- allOf:
- $ref: '/schemas/types.yaml#/definitions/uint32'- enum: [2, 4, 8, 12, 16, 20, 24, 32]- adi,tdm-slot-size:
- description: The TDM slot size to use
- allOf:
- $ref: '/schemas/types.yaml#/definitions/uint32'- enum: [16, 32]- adi,alternate-upstream-slot-format:
- description: Selects the alternate format for upstream slots
- type: boolean
- adi,alternate-downstream-slot-format:
- description: Selects the alternate format for downstream slots
- type: boolean
- adi,invert-xcvr-b:
- description: Inverts the LVDS XCVR B data line
- type: boolean
- adi,alternating-sync:
- description: Drives the SYNC pin for I²S operation
- type: boolean
- adi,invert-sync:
- description: Invert the SYNC pin
- type: boolean
- adi,early-sync:
- description: |
Make the SYNC pin change one cycle before the first slot is transmitted- type: boolean
- adi,spread-a2b-clock:
- description: Enables spread spectrum mode for A²B bus clocks
- type: boolean
- adi,spread-a2b-i2s-clock:
- description: Enables spread spectrum mode for both A²B and I²S clocks
- type: boolean
- adi,spread-spectrum-high:
- description: Selects high spectrum spreading mode
- type: boolean
+required:
- compatible
- reg
- clocks
- clock-names
- adi,a2b-bus
- adi,upstream-slot-size
- adi,downstream-slot-size
- adi,tdm-mode
- adi,tdm-slot-size
+examples:
- |
- sync_clock: clock {
compatible = "fixed-clock";#clock-cells = <0>;clock-frequency = <48000>;- };
- i2c-bus {
ad2428w-master@68 {reg = <0x68>;compatible = "adi,ad2428w-master";adi,a2b-bus = <&a2b_bus>;clocks = <&sync_clock>;clock-names = "sync";adi,upstream-slot-size = <24>;adi,downstream-slot-size = <24>;adi,tdm-mode = <2>;adi,tdm-slot-size = <32>;adi,alternating-sync;adi,early-sync;codec {compatible = "adi,ad2428w-codec";#sound-dai-cells = <1>;};clock {compatible = "adi,ad2428w-clk";#clock-cells = <1>;clock-output-names = "master-clk1", "master-clk2";};nodes {#address-cells = <1>;#size-cells = <0>;node@0 {compatible = "adi,ad2428w-slave";reg = <0>;adi,alternating-sync;adi,early-sync;adi,invert-sync;adi,tdm-mode = <8>;adi,tdm-slot-size = <32>;downstream {rx-slots = <2 3 6 7 8 9>;#tx-slots = <4>;#forward-slots = <6>;};upstream {rx-slots = <0 1 6 7 8 9>;#tx-slots = <4>;#forward-slots = <6>;};a2bgpio: gpio {compatible = "adi,ad2428w-gpio";gpio-controller;#gpio-cells = <2>;gpio-over-distance {#address-cells = <1>;#size-cells = <0>;pin@0 {reg = <0>;adi,virtual-port-mask = <0x01>;};};};i2c {compatible = "adi,ad2428w-i2c";clock-frequency = <400000>;#address-cells = <1>;#size-cells = <0>;// I²C client devices located on the remote sideeeprom-top@52 {reg = <0x52>;compatible = "atmel,24c02";read-only;};};a2bclk: clock {compatible = "adi,ad2428w-clk";#clock-cells = <1>;clock-output-names = "node0-clk1", "node0-clk2";};codec {compatible = "adi,ad2428w-codec";#sound-dai-cells = <1>;adi,pdm-highpass-filter;};};};};- };
diff --git a/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml b/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml new file mode 100644 index 000000000000..3bea04dff267 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/adi,ad242x-slave.yaml @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/mfd/adi,ad242x-slave.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+title: Analog Devices AD242x A²B slave node transceiver
+maintainers:
- Daniel Mack daniel@zonque.org
+description: |
- AD242x slave nodes are connected to the master node through a daisy-chain.
- Modules of this type must be listed under the 'nodes' property of the master
- DT schema.
+properties:
- compatible:
- enum:
- adi,ad2428w-slave- adi,tdm-mode:
- description: The TDM mode to use
- allOf:
- $ref: '/schemas/types.yaml#/definitions/uint32'- enum: [2, 4, 8, 12, 16, 20, 24, 32]- adi,tdm-slot-size:
- description: The TDM slot size to use
- allOf:
- $ref: '/schemas/types.yaml#/definitions/uint32'- enum: [16, 32]- adi,alternating-sync:
- description: Drives the SYNC pin for I²S operation
- type: boolean
- adi,invert-sync:
- description: Invert the SYNC pin
- type: boolean
- adi,early-sync:
- description: |
Make the SYNC pin change one cycle before the first slot is transmitted- type: boolean
- adi,spread-a2b-clock:
- description: Enables spread spectrum mode for A²B bus clocks
- type: boolean
- adi,spread-a2b-i2s-clock:
- description: Enables spread spectrum mode for both A²B and I²S clocks
- type: boolean
- adi,spread-spectrum-high:
- description: Selects high spectrum spreading mode
- type: boolean
- upstream:
- type: object
- properties:
rx-slots:$ref: '/schemas/types.yaml#/definitions/uint32'description: |A bitmask that describes the slots that are received by thetransceiver from the upstream (A) side and put into its TX outputframebuffers. If not specified, an empty bitmask is assumed.'#tx-slots':$ref: '/schemas/types.yaml#/definitions/uint32'description: |The number of slots this transceiver contributes to the upstreamtraffic from its RX input frame buffer'#forward-slots':$ref: '/schemas/types.yaml#/definitions/uint32'description: |The number of slots this transceiver forwards from the upstream sideto the downstream side.- downstream:
- type: object
- properties:
rx-slots:$ref: '/schemas/types.yaml#/definitions/uint32'description: |A bitmask that describes the slots that are received by thetransceiver from the downstream (B) side and put into its TX outputframebuffers. If not specified, an empty bitmask is assumed.'#tx-slots':$ref: '/schemas/types.yaml#/definitions/uint32'description: |The number of slots this transceiver contributes to the downstreamtraffic from its RX input frame buffer'#forward-slots':$ref: '/schemas/types.yaml#/definitions/uint32'description: |The number of slots this transceiver forwards from the downstream sideto the upstream side.+required:
- compatible
- adi,tdm-mode
- adi,tdm-slot-size
- upstream
- downstream
-- 2.23.0