diff options
| author | Simon Glass <sjg@chromium.org> | 2013-12-03 16:43:25 -0700 | 
|---|---|---|
| committer | Simon Glass <sjg@chromium.org> | 2013-12-09 12:22:14 -0700 | 
| commit | afb6134f30db2f97bae81ff56c7c9e4eee07b396 (patch) | |
| tree | b10873a9d05a5e889e4ac0c997537e8e51e2d90d | |
| parent | 0efc02499f9131bd7e1689ebb8d626ef12387de4 (diff) | |
| download | olio-uboot-2014.01-afb6134f30db2f97bae81ff56c7c9e4eee07b396.tar.xz olio-uboot-2014.01-afb6134f30db2f97bae81ff56c7c9e4eee07b396.zip | |
spi: Add device tree binding for SPI bus
This was obtained from Linux 3.12 commit 5e01dc7b26.
Signed-off-by: Simon Glass <sjg@chromium.org>
| -rw-r--r-- | doc/device-tree-bindings/spi/spi-bus.txt | 92 | 
1 files changed, 92 insertions, 0 deletions
| diff --git a/doc/device-tree-bindings/spi/spi-bus.txt b/doc/device-tree-bindings/spi/spi-bus.txt new file mode 100644 index 000000000..800dafe5b --- /dev/null +++ b/doc/device-tree-bindings/spi/spi-bus.txt @@ -0,0 +1,92 @@ +SPI (Serial Peripheral Interface) busses + +SPI busses can be described with a node for the SPI master device +and a set of child nodes for each SPI slave on the bus.  For this +discussion, it is assumed that the system's SPI controller is in +SPI master mode.  This binding does not describe SPI controllers +in slave mode. + +The SPI master node requires the following properties: +- #address-cells  - number of cells required to define a chip select +    		address on the SPI bus. +- #size-cells     - should be zero. +- compatible      - name of SPI bus controller following generic names +    		recommended practice. +- cs-gpios	  - (optional) gpios chip select. +No other properties are required in the SPI bus node.  It is assumed +that a driver for an SPI bus device will understand that it is an SPI bus. +However, the binding does not attempt to define the specific method for +assigning chip select numbers.  Since SPI chip select configuration is +flexible and non-standardized, it is left out of this binding with the +assumption that board specific platform code will be used to manage +chip selects.  Individual drivers can define additional properties to +support describing the chip select layout. + +Optional property: +- num-cs : total number of chipselects + +If cs-gpios is used the number of chip select will automatically increased +with max(cs-gpios > hw cs) + +So if for example the controller has 2 CS lines, and the cs-gpios +property looks like this: + +cs-gpios = <&gpio1 0 0> <0> <&gpio1 1 0> <&gpio1 2 0>; + +Then it should be configured so that num_chipselect = 4 with the +following mapping: + +cs0 : &gpio1 0 0 +cs1 : native +cs2 : &gpio1 1 0 +cs3 : &gpio1 2 0 + +SPI slave nodes must be children of the SPI master node and can +contain the following properties. +- reg             - (required) chip select address of device. +- compatible      - (required) name of SPI device following generic names +    		recommended practice +- spi-max-frequency - (required) Maximum SPI clocking speed of device in Hz +- spi-cpol        - (optional) Empty property indicating device requires +    		inverse clock polarity (CPOL) mode +- spi-cpha        - (optional) Empty property indicating device requires +    		shifted clock phase (CPHA) mode +- spi-cs-high     - (optional) Empty property indicating device requires +    		chip select active high +- spi-3wire       - (optional) Empty property indicating device requires +    		    3-wire mode. +- spi-tx-bus-width - (optional) The bus width(number of data wires) that +                      used for MOSI. Defaults to 1 if not present. +- spi-rx-bus-width - (optional) The bus width(number of data wires) that +                      used for MISO. Defaults to 1 if not present. + +Some SPI controllers and devices support Dual and Quad SPI transfer mode. +It allows data in SPI system transfered in 2 wires(DUAL) or 4 wires(QUAD). +Now the value that spi-tx-bus-width and spi-rx-bus-width can receive is +only 1(SINGLE), 2(DUAL) and 4(QUAD). +Dual/Quad mode is not allowed when 3-wire mode is used. + +If a gpio chipselect is used for the SPI slave the gpio number will be passed +via the cs_gpio + +SPI example for an MPC5200 SPI bus: +	spi@f00 { +		#address-cells = <1>; +		#size-cells = <0>; +		compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi"; +		reg = <0xf00 0x20>; +		interrupts = <2 13 0 2 14 0>; +		interrupt-parent = <&mpc5200_pic>; + +		ethernet-switch@0 { +			compatible = "micrel,ks8995m"; +			spi-max-frequency = <1000000>; +			reg = <0>; +		}; + +		codec@1 { +			compatible = "ti,tlv320aic26"; +			spi-max-frequency = <100000>; +			reg = <1>; +		}; +	}; |