mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 20:01:55 +00:00
612762e82a
This patch adds DMA capabilities to the spi-qup driver. If DMA channels are present, the QUP will use DMA instead of block mode for transfers to/from SPI peripherals for transactions larger than the length of a block. Signed-off-by: Andy Gross <agross@codeaurora.org> Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Reviewed-by: Ivan T. Ivanov <iivanov@mm-sol.com Signed-off-by: Mark Brown <broonie@kernel.org>
104 lines
3.1 KiB
Plaintext
104 lines
3.1 KiB
Plaintext
Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI)
|
|
|
|
The QUP core is an AHB slave that provides a common data path (an output FIFO
|
|
and an input FIFO) for serial peripheral interface (SPI) mini-core.
|
|
|
|
SPI in master mode supports up to 50MHz, up to four chip selects, programmable
|
|
data path from 4 bits to 32 bits and numerous protocol variants.
|
|
|
|
Required properties:
|
|
- compatible: Should contain:
|
|
"qcom,spi-qup-v1.1.1" for 8660, 8960 and 8064.
|
|
"qcom,spi-qup-v2.1.1" for 8974 and later
|
|
"qcom,spi-qup-v2.2.1" for 8974 v2 and later.
|
|
|
|
- reg: Should contain base register location and length
|
|
- interrupts: Interrupt number used by this controller
|
|
|
|
- clocks: Should contain the core clock and the AHB clock.
|
|
- clock-names: Should be "core" for the core clock and "iface" for the
|
|
AHB clock.
|
|
|
|
- #address-cells: Number of cells required to define a chip select
|
|
address on the SPI bus. Should be set to 1.
|
|
- #size-cells: Should be zero.
|
|
|
|
Optional properties:
|
|
- spi-max-frequency: Specifies maximum SPI clock frequency,
|
|
Units - Hz. Definition as per
|
|
Documentation/devicetree/bindings/spi/spi-bus.txt
|
|
- num-cs: total number of chipselects
|
|
- cs-gpios: should specify GPIOs used for chipselects.
|
|
The gpios will be referred to as reg = <index> in the SPI child
|
|
nodes. If unspecified, a single SPI device without a chip
|
|
select can be used.
|
|
|
|
- dmas: Two DMA channel specifiers following the convention outlined
|
|
in bindings/dma/dma.txt
|
|
- dma-names: Names for the dma channels, if present. There must be at
|
|
least one channel named "tx" for transmit and named "rx" for
|
|
receive.
|
|
|
|
SPI slave nodes must be children of the SPI master node and can contain
|
|
properties described in Documentation/devicetree/bindings/spi/spi-bus.txt
|
|
|
|
Example:
|
|
|
|
spi_8: spi@f9964000 { /* BLSP2 QUP2 */
|
|
|
|
compatible = "qcom,spi-qup-v2";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <0xf9964000 0x1000>;
|
|
interrupts = <0 102 0>;
|
|
spi-max-frequency = <19200000>;
|
|
|
|
clocks = <&gcc GCC_BLSP2_QUP2_SPI_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
|
|
clock-names = "core", "iface";
|
|
|
|
dmas = <&blsp1_bam 13>, <&blsp1_bam 12>;
|
|
dma-names = "rx", "tx";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&spi8_default>;
|
|
|
|
device@0 {
|
|
compatible = "arm,pl022-dummy";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
reg = <0>; /* Chip select 0 */
|
|
spi-max-frequency = <19200000>;
|
|
spi-cpol;
|
|
};
|
|
|
|
device@1 {
|
|
compatible = "arm,pl022-dummy";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
reg = <1>; /* Chip select 1 */
|
|
spi-max-frequency = <9600000>;
|
|
spi-cpha;
|
|
};
|
|
|
|
device@2 {
|
|
compatible = "arm,pl022-dummy";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
reg = <2>; /* Chip select 2 */
|
|
spi-max-frequency = <19200000>;
|
|
spi-cpol;
|
|
spi-cpha;
|
|
};
|
|
|
|
device@3 {
|
|
compatible = "arm,pl022-dummy";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
reg = <3>; /* Chip select 3 */
|
|
spi-max-frequency = <19200000>;
|
|
spi-cpol;
|
|
spi-cpha;
|
|
spi-cs-high;
|
|
};
|
|
};
|