mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
Change spi-rx-bus-width and spi-tx-bus-width properties from single uint32 values to arrays of uint32 values. This allows describing SPI peripherals connected to controllers that have multiple data lanes for receiving or transmitting two or more words in parallel. Each index in the array corresponds to a physical data lane (one or more wires depending on the bus width). Additional mapping properties will be needed in cases where a lane on the controller or peripheral is skipped. Bindings that make use of this property are updated in the same commit to avoid validation errors. The adi,ad4030 binding can now better describe the chips multi-lane capabilities, so that binding is refined and gets a new example. Converting from single uint32 to array of uint32 does not break .dts/ .dtb files since there is no difference between specifying a single uint32 value and an array with a single uint32 value in devicetree. Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Reviewed-by: Marcelo Schmitt <marcelo.schmitt@analog.com> 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-1-12af183c06eb@baylibre.com Signed-off-by: Mark Brown <broonie@kernel.org>
114 lines
2.3 KiB
YAML
114 lines
2.3 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/spi/nvidia,tegra210-quad.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Tegra Quad SPI Controller
|
|
|
|
maintainers:
|
|
- Thierry Reding <thierry.reding@gmail.com>
|
|
- Jonathan Hunter <jonathanh@nvidia.com>
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- nvidia,tegra210-qspi
|
|
- nvidia,tegra186-qspi
|
|
- nvidia,tegra194-qspi
|
|
- nvidia,tegra234-qspi
|
|
- nvidia,tegra241-qspi
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clock-names:
|
|
items:
|
|
- const: qspi
|
|
- const: qspi_out
|
|
|
|
clocks:
|
|
maxItems: 2
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
dmas:
|
|
maxItems: 2
|
|
|
|
dma-names:
|
|
items:
|
|
- const: rx
|
|
- const: tx
|
|
|
|
iommus:
|
|
maxItems: 1
|
|
|
|
patternProperties:
|
|
"@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
properties:
|
|
spi-rx-bus-width:
|
|
items:
|
|
- enum: [1, 2, 4]
|
|
|
|
spi-tx-bus-width:
|
|
items:
|
|
- enum: [1, 2, 4]
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- clock-names
|
|
- clocks
|
|
- resets
|
|
|
|
unevaluatedProperties: false
|
|
|
|
allOf:
|
|
- $ref: spi-controller.yaml#
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
not:
|
|
contains:
|
|
const: nvidia,tegra234-qspi
|
|
then:
|
|
properties:
|
|
iommus: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/tegra210-car.h>
|
|
#include <dt-bindings/reset/tegra210-car.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
spi@70410000 {
|
|
compatible = "nvidia,tegra210-qspi";
|
|
reg = <0x70410000 0x1000>;
|
|
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
clocks = <&tegra_car TEGRA210_CLK_QSPI>,
|
|
<&tegra_car TEGRA210_CLK_QSPI_PM>;
|
|
clock-names = "qspi", "qspi_out";
|
|
resets = <&tegra_car 211>;
|
|
dmas = <&apbdma 5>, <&apbdma 5>;
|
|
dma-names = "rx", "tx";
|
|
|
|
flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
reg = <0>;
|
|
spi-max-frequency = <104000000>;
|
|
spi-tx-bus-width = <2>;
|
|
spi-rx-bus-width = <2>;
|
|
nvidia,tx-clk-tap-delay = <0>;
|
|
nvidia,rx-clk-tap-delay = <0>;
|
|
};
|
|
};
|