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