mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
Add spi-tx-lane-map and spi-rx-lane-map properties to the SPI peripheral device tree binding. These properties allow specifying the mapping of peripheral data lanes to controller data lanes. This is needed e.g. when some lanes are skipped on the controller side so that the controller can correctly route data to/from the peripheral. Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Signed-off-by: David Lechner <dlechner@baylibre.com> Link: https://patch.msgid.link/20260123-spi-add-multi-bus-support-v6-2-12af183c06eb@baylibre.com Signed-off-by: Mark Brown <broonie@kernel.org>
160 lines
5.7 KiB
YAML
160 lines
5.7 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/spi/spi-peripheral-props.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Peripheral-specific properties for a SPI bus.
|
|
|
|
description:
|
|
Many SPI controllers need to add properties to peripheral devices. They could
|
|
be common properties like spi-max-frequency, spi-cs-high, etc. or they could
|
|
be controller specific like delay in clock or data lines, etc. These
|
|
properties need to be defined in the peripheral node because they are
|
|
per-peripheral and there can be multiple peripherals attached to a
|
|
controller. All those properties are listed here. The controller specific
|
|
properties should go in their own separate schema that should be referenced
|
|
from here.
|
|
|
|
maintainers:
|
|
- Mark Brown <broonie@kernel.org>
|
|
|
|
properties:
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 256
|
|
items:
|
|
items:
|
|
- minimum: 0
|
|
maximum: 256
|
|
description:
|
|
Chip select used by the device.
|
|
|
|
spi-cs-high:
|
|
$ref: /schemas/types.yaml#/definitions/flag
|
|
description:
|
|
The device requires the chip select active high.
|
|
|
|
spi-lsb-first:
|
|
$ref: /schemas/types.yaml#/definitions/flag
|
|
description:
|
|
The device requires the LSB first mode.
|
|
|
|
spi-max-frequency:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Maximum SPI clocking speed of the device in Hz.
|
|
|
|
spi-cs-setup-delay-ns:
|
|
description:
|
|
Delay in nanoseconds to be introduced by the controller after CS is
|
|
asserted.
|
|
|
|
spi-cs-hold-delay-ns:
|
|
description:
|
|
Delay in nanoseconds to be introduced by the controller before CS is
|
|
de-asserted.
|
|
|
|
spi-cs-inactive-delay-ns:
|
|
description:
|
|
Delay in nanoseconds to be introduced by the controller after CS is
|
|
de-asserted.
|
|
|
|
spi-rx-bus-width:
|
|
description:
|
|
Bus width to the SPI bus used for read transfers.
|
|
If 0 is provided, then no RX will be possible on this device.
|
|
|
|
Some SPI peripherals and controllers may have multiple data lanes for
|
|
receiving two or more words at the same time. If this is the case, each
|
|
index in the array represents the lane on both the SPI peripheral and
|
|
controller. Additional mapping properties may be needed if a lane is
|
|
skipped on either side.
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
items:
|
|
enum: [0, 1, 2, 4, 8]
|
|
default: [1]
|
|
|
|
spi-rx-lane-map:
|
|
description: Mapping of peripheral SDO lanes to controller SDI lanes.
|
|
Each index in the array represents a peripheral SDO lane, and the value
|
|
at that index represents the corresponding controller SDI lane.
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
default: [0, 1, 2, 3, 4, 5, 6, 7]
|
|
|
|
spi-rx-delay-us:
|
|
description:
|
|
Delay, in microseconds, after a read transfer.
|
|
|
|
rx-sample-delay-ns:
|
|
description: SPI Rx sample delay offset, unit is nanoseconds.
|
|
The delay from the default sample time before the actual
|
|
sample of the rxd input signal occurs.
|
|
|
|
spi-tx-bus-width:
|
|
description:
|
|
Bus width to the SPI bus used for write transfers.
|
|
If 0 is provided, then no TX will be possible on this device.
|
|
|
|
Some SPI peripherals and controllers may have multiple data lanes for
|
|
transmitting two or more words at the same time. If this is the case, each
|
|
index in the array represents the lane on both the SPI peripheral and
|
|
controller. Additional mapping properties may be needed if a lane is
|
|
skipped on either side.
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
items:
|
|
enum: [0, 1, 2, 4, 8]
|
|
default: [1]
|
|
|
|
spi-tx-lane-map:
|
|
description: Mapping of peripheral SDI lanes to controller SDO lanes.
|
|
Each index in the array represents a peripheral SDI lane, and the value
|
|
at that index represents the corresponding controller SDO lane.
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
default: [0, 1, 2, 3, 4, 5, 6, 7]
|
|
|
|
spi-tx-delay-us:
|
|
description:
|
|
Delay, in microseconds, after a write transfer.
|
|
|
|
stacked-memories:
|
|
description: Several SPI memories can be wired in stacked mode.
|
|
This basically means that either a device features several chip
|
|
selects, or that different devices must be seen as a single
|
|
bigger chip. This basically doubles (or more) the total address
|
|
space with only a single additional wire, while still needing
|
|
to repeat the commands when crossing a chip boundary. The size of
|
|
each chip should be provided as members of the array.
|
|
$ref: /schemas/types.yaml#/definitions/uint64-array
|
|
minItems: 2
|
|
maxItems: 4
|
|
|
|
parallel-memories:
|
|
description: Several SPI memories can be wired in parallel mode.
|
|
The devices are physically on a different buses but will always
|
|
act synchronously as each data word is spread across the
|
|
different memories (eg. even bits are stored in one memory, odd
|
|
bits in the other). This basically doubles the address space and
|
|
the throughput while greatly complexifying the wiring because as
|
|
many busses as devices must be wired. The size of each chip should
|
|
be provided as members of the array.
|
|
$ref: /schemas/types.yaml#/definitions/uint64-array
|
|
minItems: 2
|
|
maxItems: 4
|
|
|
|
st,spi-midi-ns:
|
|
deprecated: true
|
|
description: |
|
|
Only for STM32H7, (Master Inter-Data Idleness) minimum time
|
|
delay in nanoseconds inserted between two consecutive data frames.
|
|
|
|
# The controller specific properties go here.
|
|
allOf:
|
|
- $ref: arm,pl022-peripheral-props.yaml#
|
|
- $ref: cdns,qspi-nor-peripheral-props.yaml#
|
|
- $ref: fsl,dspi-peripheral-props.yaml#
|
|
- $ref: samsung,spi-peripheral-props.yaml#
|
|
- $ref: nvidia,tegra210-quad-peripheral-props.yaml#
|
|
|
|
additionalProperties: true
|