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