Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 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 | |
| 7 | title: Generic SPI Multiplexer |
| 8 | |
| 9 | description: | |
| 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 | |
| 32 | allOf: |
| 33 | - $ref: /schemas/spi/spi-controller.yaml# |
| 34 | - $ref: /schemas/spi/spi-peripheral-props.yaml# |
| 35 | |
| 36 | maintainers: |
| 37 | - Chris Packham <chris.packham@alliedtelesis.co.nz> |
| 38 | |
| 39 | properties: |
| 40 | compatible: |
| 41 | const: spi-mux |
| 42 | |
| 43 | mux-controls: |
| 44 | maxItems: 1 |
| 45 | |
| 46 | required: |
| 47 | - compatible |
| 48 | - reg |
| 49 | - spi-max-frequency |
| 50 | - mux-controls |
| 51 | |
| 52 | unevaluatedProperties: false |
| 53 | |
| 54 | examples: |
| 55 | - | |
| 56 | #include <dt-bindings/gpio/gpio.h> |
| 57 | mux: mux-controller { |
| 58 | compatible = "gpio-mux"; |
| 59 | #mux-control-cells = <0>; |
| 60 | |
| 61 | mux-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>; |
| 62 | }; |
| 63 | |
| 64 | spi { |
| 65 | #address-cells = <1>; |
| 66 | #size-cells = <0>; |
| 67 | spi@0 { |
| 68 | compatible = "spi-mux"; |
| 69 | reg = <0>; |
| 70 | #address-cells = <1>; |
| 71 | #size-cells = <0>; |
| 72 | spi-max-frequency = <100000000>; |
| 73 | |
| 74 | mux-controls = <&mux>; |
| 75 | |
| 76 | flash@0 { |
| 77 | compatible = "jedec,spi-nor"; |
| 78 | reg = <0>; |
| 79 | spi-max-frequency = <40000000>; |
| 80 | }; |
| 81 | |
| 82 | sensor@1 { |
| 83 | compatible = "bosch,bme680"; |
| 84 | reg = <1>; |
| 85 | spi-max-frequency = <10000000>; |
| 86 | }; |
| 87 | }; |
| 88 | }; |