mirror of
https://github.com/torvalds/linux.git
synced 2026-04-29 03:52:30 -04:00
Add support for the Renesas RZ/N1D400 QSPI controller. This SoC is identified in the bindings with its other name: r9a06g032. It is part of the RZ/N1 family, which contains a "D" and a "S" variant. IPs in this SoC are typically described using 2 compatibles: the SoC specific compatible and the family compatible. The original Cadence IP compatible is dropped because it is unusable on its own. Indirect accesses are not supported by this flavour of the Cadence IP, which means several properties have no meaning in the scope of the Renesas compatible. Let's make sure they are no longer expected nor mandatory. Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Miquel Raynal (Schneider Electric) <miquel.raynal@bootlin.com> Link: https://patch.msgid.link/20260205-schneider-6-19-rc1-qspi-v5-1-843632b3c674@bootlin.com Signed-off-by: Mark Brown <broonie@kernel.org>
214 lines
4.8 KiB
YAML
214 lines
4.8 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/spi/cdns,qspi-nor.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Cadence Quad/Octal SPI controller
|
|
|
|
maintainers:
|
|
- Vaishnav Achath <vaishnav.a@ti.com>
|
|
|
|
allOf:
|
|
- $ref: spi-controller.yaml#
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: xlnx,versal-ospi-1.0
|
|
then:
|
|
required:
|
|
- power-domains
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: starfive,jh7110-qspi
|
|
then:
|
|
properties:
|
|
resets:
|
|
minItems: 2
|
|
maxItems: 3
|
|
|
|
reset-names:
|
|
minItems: 2
|
|
maxItems: 3
|
|
items:
|
|
enum: [ qspi, qspi-ocp, rstc_ref ]
|
|
|
|
else:
|
|
properties:
|
|
resets:
|
|
maxItems: 2
|
|
|
|
reset-names:
|
|
minItems: 1
|
|
maxItems: 2
|
|
items:
|
|
enum: [ qspi, qspi-ocp ]
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: amd,pensando-elba-qspi
|
|
then:
|
|
properties:
|
|
cdns,fifo-depth:
|
|
enum: [ 128, 256, 1024 ]
|
|
default: 1024
|
|
else:
|
|
properties:
|
|
cdns,fifo-depth:
|
|
enum: [ 128, 256 ]
|
|
default: 128
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: renesas,rzn1-qspi
|
|
then:
|
|
properties:
|
|
cdns,trigger-address: false
|
|
cdns,fifo-depth: false
|
|
cdns,fifo-width: false
|
|
else:
|
|
required:
|
|
- cdns,trigger-address
|
|
- cdns,fifo-depth
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- items:
|
|
- enum:
|
|
- amd,pensando-elba-qspi
|
|
- amd,versal2-ospi
|
|
- intel,lgm-qspi
|
|
- intel,socfpga-qspi
|
|
- mobileye,eyeq5-ospi
|
|
- starfive,jh7110-qspi
|
|
- ti,am654-ospi
|
|
- ti,k2g-qspi
|
|
- xlnx,versal-ospi-1.0
|
|
# The compatible is qspi-nor for historical reasons but such
|
|
# controllers are meant to be used with flashes of all kinds,
|
|
# ie. also NAND flashes, not only NOR flashes.
|
|
- const: cdns,qspi-nor
|
|
- items:
|
|
- const: renesas,r9a06g032-qspi
|
|
- const: renesas,rzn1-qspi
|
|
- const: cdns,qspi-nor
|
|
deprecated: true
|
|
|
|
reg:
|
|
items:
|
|
- description: the controller register set
|
|
- description: the controller data area
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
minItems: 1
|
|
maxItems: 3
|
|
|
|
clock-names:
|
|
oneOf:
|
|
- items:
|
|
- const: ref
|
|
- items:
|
|
- const: ref
|
|
- const: ahb
|
|
- const: apb
|
|
|
|
cdns,fifo-depth:
|
|
description:
|
|
Size of the data FIFO in words.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
cdns,fifo-width:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Bus width of the data FIFO in bytes.
|
|
default: 4
|
|
|
|
cdns,trigger-address:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
32-bit indirect AHB trigger address.
|
|
|
|
cdns,is-decoded-cs:
|
|
type: boolean
|
|
description:
|
|
Flag to indicate whether decoder is used to select different chip select
|
|
for different memory regions.
|
|
|
|
cdns,rclk-en:
|
|
type: boolean
|
|
description:
|
|
Flag to indicate that QSPI return clock is used to latch the read
|
|
data rather than the QSPI clock. Make sure that QSPI return clock
|
|
is populated on the board before using this property.
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
minItems: 2
|
|
maxItems: 3
|
|
|
|
reset-names:
|
|
minItems: 2
|
|
maxItems: 3
|
|
items:
|
|
enum: [ qspi, qspi-ocp, rstc_ref ]
|
|
|
|
patternProperties:
|
|
"^flash@[0-9a-f]+$":
|
|
type: object
|
|
$ref: cdns,qspi-nor-peripheral-props.yaml
|
|
additionalProperties: true
|
|
required:
|
|
- cdns,read-delay
|
|
- cdns,tshsl-ns
|
|
- cdns,tsd2d-ns
|
|
- cdns,tchsh-ns
|
|
- cdns,tslch-ns
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- clocks
|
|
- '#address-cells'
|
|
- '#size-cells'
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
spi@ff705000 {
|
|
compatible = "intel,socfpga-qspi", "cdns,qspi-nor";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <0xff705000 0x1000>,
|
|
<0xffa00000 0x1000>;
|
|
interrupts = <0 151 4>;
|
|
clocks = <&qspi_clk>;
|
|
cdns,fifo-depth = <128>;
|
|
cdns,fifo-width = <4>;
|
|
cdns,trigger-address = <0x00000000>;
|
|
resets = <&rst 0x1>, <&rst 0x2>;
|
|
reset-names = "qspi", "qspi-ocp";
|
|
|
|
flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
reg = <0x0>;
|
|
cdns,read-delay = <4>;
|
|
cdns,tshsl-ns = <60>;
|
|
cdns,tsd2d-ns = <60>;
|
|
cdns,tchsh-ns = <60>;
|
|
cdns,tslch-ns = <60>;
|
|
};
|
|
};
|