Unverified Commit d548ed71 authored by Chris Packham's avatar Chris Packham Committed by Mark Brown
Browse files

dt-bindings: spi: Document binding for generic SPI multiplexer



Add binding documentation for the spi-mux driver. This allows a generic
multiplexer to be used to provide access to multiple SPI devices.

Signed-off-by: default avatarChris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20200204032838.20739-2-chris.packham@alliedtelesis.co.nz


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1565e8e8
Loading
Loading
Loading
Loading
+89 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/spi-mux.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Generic SPI Multiplexer

description: |
  This binding describes a SPI bus multiplexer to route the SPI chip select
  signals. This can be used when you need more devices than the SPI controller
  has chip selects available. An example setup is shown in ASCII art; the actual
  setting of the multiplexer to a channel needs to be done by a specific SPI mux
  driver.

        MOSI /--------------------------------+--------+--------+--------\
        MISO |/------------------------------+|-------+|-------+|-------\|
         SCL ||/----------------------------+||------+||------+||------\||
             |||                            |||      |||      |||      |||
      +------------+                        |||      |||      |||      |||
      | SoC  |||   |                      +-+++-+  +-+++-+  +-+++-+  +-+++-+
      |      |||   |                      | dev |  | dev |  | dev |  | dev |
      |   +--+++-+ | CS-X  +------+\      +--+--+  +--+--+  +--+--+  +--+--+
      |   | SPI  +-|-------+ Mux  |\\   CS-0 |        |        |        |
      |   +------+ |       +--+---+\\\-------/   CS-1 |        |        |
      |            |          |    \\\----------------/   CS-2 |        |
      |   +------+ |          |     \\-------------------------/   CS-3 |
      |   | ?    +-|----------/      \----------------------------------/
      |   +------+ |
      +------------+

allOf:
  - $ref: "/schemas/spi/spi-controller.yaml#"

maintainers:
  - Chris Packham <chris.packham@alliedtelesis.co.nz>

properties:
  compatible:
    const: spi-mux

  mux-controls:
    maxItems: 1

required:
   - compatible
   - reg
   - spi-max-frequency
   - mux-controls

examples:
   - |
     #include <dt-bindings/gpio/gpio.h>
     mux: mux-controller {
       compatible = "gpio-mux";
       #mux-control-cells = <0>;

       mux-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
     };

     spi {
       #address-cells = <1>;
       #size-cells = <0>;
       spi@0 {
         compatible = "spi-mux";
         reg = <0>;
         #address-cells = <1>;
         #size-cells = <0>;
         spi-max-frequency = <100000000>;

         mux-controls = <&mux>;

         spi-flash@0 {
           compatible = "jedec,spi-nor";
           reg = <0>;
           #address-cells = <1>;
           #size-cells = <0>;
           spi-max-frequency = <40000000>;
         };

         spi-device@1 {
           compatible = "lineartechnology,ltc2488";
           reg = <1>;
           #address-cells = <1>;
           #size-cells = <0>;
           spi-max-frequency = <10000000>;
         };
       };
     };