1d548ed71SChris Packham# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2d548ed71SChris Packham%YAML 1.2
3d548ed71SChris Packham---
4d548ed71SChris Packham$id: http://devicetree.org/schemas/spi/spi-mux.yaml#
5d548ed71SChris Packham$schema: http://devicetree.org/meta-schemas/core.yaml#
6d548ed71SChris Packham
7d548ed71SChris Packhamtitle: Generic SPI Multiplexer
8d548ed71SChris Packham
9d548ed71SChris Packhamdescription: |
10d548ed71SChris Packham  This binding describes a SPI bus multiplexer to route the SPI chip select
11d548ed71SChris Packham  signals. This can be used when you need more devices than the SPI controller
12d548ed71SChris Packham  has chip selects available. An example setup is shown in ASCII art; the actual
13d548ed71SChris Packham  setting of the multiplexer to a channel needs to be done by a specific SPI mux
14d548ed71SChris Packham  driver.
15d548ed71SChris Packham
16d548ed71SChris Packham        MOSI /--------------------------------+--------+--------+--------\
17d548ed71SChris Packham        MISO |/------------------------------+|-------+|-------+|-------\|
18d548ed71SChris Packham         SCL ||/----------------------------+||------+||------+||------\||
19d548ed71SChris Packham             |||                            |||      |||      |||      |||
20d548ed71SChris Packham      +------------+                        |||      |||      |||      |||
21d548ed71SChris Packham      | SoC  |||   |                      +-+++-+  +-+++-+  +-+++-+  +-+++-+
22d548ed71SChris Packham      |      |||   |                      | dev |  | dev |  | dev |  | dev |
23d548ed71SChris Packham      |   +--+++-+ | CS-X  +------+\      +--+--+  +--+--+  +--+--+  +--+--+
24d548ed71SChris Packham      |   | SPI  +-|-------+ Mux  |\\   CS-0 |        |        |        |
25d548ed71SChris Packham      |   +------+ |       +--+---+\\\-------/   CS-1 |        |        |
26d548ed71SChris Packham      |            |          |    \\\----------------/   CS-2 |        |
27d548ed71SChris Packham      |   +------+ |          |     \\-------------------------/   CS-3 |
28d548ed71SChris Packham      |   | ?    +-|----------/      \----------------------------------/
29d548ed71SChris Packham      |   +------+ |
30d548ed71SChris Packham      +------------+
31d548ed71SChris Packham
32d548ed71SChris PackhamallOf:
33*99a7fa0eSKrzysztof Kozlowski  - $ref: /schemas/spi/spi-controller.yaml#
34*99a7fa0eSKrzysztof Kozlowski  - $ref: /schemas/spi/spi-peripheral-props.yaml#
35d548ed71SChris Packham
36d548ed71SChris Packhammaintainers:
37d548ed71SChris Packham  - Chris Packham <chris.packham@alliedtelesis.co.nz>
38d548ed71SChris Packham
39d548ed71SChris Packhamproperties:
40d548ed71SChris Packham  compatible:
41d548ed71SChris Packham    const: spi-mux
42d548ed71SChris Packham
43d548ed71SChris Packham  mux-controls:
44d548ed71SChris Packham    maxItems: 1
45d548ed71SChris Packham
46d548ed71SChris Packhamrequired:
47d548ed71SChris Packham  - compatible
48d548ed71SChris Packham  - reg
49d548ed71SChris Packham  - spi-max-frequency
50d548ed71SChris Packham  - mux-controls
51d548ed71SChris Packham
526fdc6e23SRob HerringunevaluatedProperties: false
536fdc6e23SRob Herring
54d548ed71SChris Packhamexamples:
55d548ed71SChris Packham  - |
56d548ed71SChris Packham    #include <dt-bindings/gpio/gpio.h>
57d548ed71SChris Packham    mux: mux-controller {
58d548ed71SChris Packham        compatible = "gpio-mux";
59d548ed71SChris Packham        #mux-control-cells = <0>;
60d548ed71SChris Packham
61d548ed71SChris Packham        mux-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
62d548ed71SChris Packham    };
63d548ed71SChris Packham
64d548ed71SChris Packham    spi {
65d548ed71SChris Packham        #address-cells = <1>;
66d548ed71SChris Packham        #size-cells = <0>;
67d548ed71SChris Packham        spi@0 {
68d548ed71SChris Packham            compatible = "spi-mux";
69d548ed71SChris Packham            reg = <0>;
70d548ed71SChris Packham            #address-cells = <1>;
71d548ed71SChris Packham            #size-cells = <0>;
72d548ed71SChris Packham            spi-max-frequency = <100000000>;
73d548ed71SChris Packham
74d548ed71SChris Packham            mux-controls = <&mux>;
75d548ed71SChris Packham
760b07154fSMichael Walle            flash@0 {
77d548ed71SChris Packham                compatible = "jedec,spi-nor";
78d548ed71SChris Packham                reg = <0>;
79d548ed71SChris Packham                spi-max-frequency = <40000000>;
80d548ed71SChris Packham            };
81d548ed71SChris Packham
8228ffe8bfSRob Herring            sensor@1 {
8328ffe8bfSRob Herring                compatible = "bosch,bme680";
84d548ed71SChris Packham                reg = <1>;
85d548ed71SChris Packham                spi-max-frequency = <10000000>;
86d548ed71SChris Packham            };
87d548ed71SChris Packham        };
88d548ed71SChris Packham    };
89