dts: boards: arm: Rework FlexSPI bindings on i.MX RT boards

Reworks the NXP FlexSPI device tree bindings to configure controller and
device properties needed for an upcoming FlexSPI flash driver.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
This commit is contained in:
Maureen Helm 2020-12-17 15:19:45 -06:00 committed by Anas Nashif
commit 52b77ac956
15 changed files with 185 additions and 10 deletions

View file

@ -46,7 +46,7 @@ arduino_serial: &lpuart1 {};
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(16)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(16)>;
at25sf128a: at25sf128a@0 { at25sf128a: at25sf128a@0 {
compatible = "adesto,at25sf128a", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <134217728>; size = <134217728>;
label = "AT25SF128A"; label = "AT25SF128A";
reg = <0>; reg = <0>;

View file

@ -75,7 +75,7 @@ arduino_serial: &lpuart4 {};
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(16)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(16)>;
at25sf128a: at25sf128a@0 { at25sf128a: at25sf128a@0 {
compatible = "adesto,at25sf128a", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <134217728>; size = <134217728>;
label = "AT25SF128A"; label = "AT25SF128A";
reg = <0>; reg = <0>;

View file

@ -82,7 +82,7 @@ arduino_serial: &lpuart2 {};
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
is25wp064: is25wp064@0 { is25wp064: is25wp064@0 {
compatible = "issi,is25wp064", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <67108864>; size = <67108864>;
label = "IS25WP064"; label = "IS25WP064";
reg = <0>; reg = <0>;

View file

@ -93,7 +93,7 @@ arduino_serial: &lpuart3 {};
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(64)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(64)>;
s26ks512s0: s26ks512s@0 { s26ks512s0: s26ks512s@0 {
compatible = "cypress,s26ks512s"; compatible = "nxp,imx-flexspi-hyperflash";
size = <DT_SIZE_M(64*8)>; size = <DT_SIZE_M(64*8)>;
label = "S26KS512S"; label = "S26KS512S";
reg = <0>; reg = <0>;

View file

@ -11,7 +11,7 @@
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
is25wp064: is25wp064@0 { is25wp064: is25wp064@0 {
compatible = "issi,is25wp064", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <67108864>; size = <67108864>;
label = "IS25WP064"; label = "IS25WP064";
reg = <0>; reg = <0>;

View file

@ -94,7 +94,7 @@ arduino_serial: &lpuart3 {};
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
is25wp064: is25wp064@0 { is25wp064: is25wp064@0 {
compatible = "issi,is25wp064", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <67108864>; size = <67108864>;
label = "IS25WP064"; label = "IS25WP064";
reg = <0>; reg = <0>;

View file

@ -10,7 +10,7 @@
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(64)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(64)>;
s26ks512s0: s26ks512s@0 { s26ks512s0: s26ks512s@0 {
compatible = "cypress,s26ks512s"; compatible = "nxp,imx-flexspi-hyperflash";
size = <DT_SIZE_M(64*8)>; size = <DT_SIZE_M(64*8)>;
label = "S26KS512S"; label = "S26KS512S";
reg = <0>; reg = <0>;

View file

@ -135,7 +135,7 @@ arduino_i2c: &lpi2c1 {};
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
is25wp064: is25wp064@0 { is25wp064: is25wp064@0 {
compatible = "issi,is25wp064", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <67108864>; size = <67108864>;
label = "IS25WP064"; label = "IS25WP064";
reg = <0>; reg = <0>;

View file

@ -55,7 +55,7 @@
&flexspi { &flexspi {
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>; reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
is25wp064: is25wp064@0 { is25wp064: is25wp064@0 {
compatible = "issi,is25wp064", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <67108864>; size = <67108864>;
label = "IS25WP064"; label = "IS25WP064";
reg = <0>; reg = <0>;

View file

@ -72,6 +72,9 @@
label = "FLEXSPI"; label = "FLEXSPI";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
ahb-bufferable;
ahb-cacheable;
status = "disabled";
}; };
flexspi2: spi@402a4000 { flexspi2: spi@402a4000 {
@ -81,6 +84,9 @@
label = "FLEXSPI1"; label = "FLEXSPI1";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
ahb-bufferable;
ahb-cacheable;
status = "disabled";
}; };
semc: semc0@402f0000 { semc: semc0@402f0000 {

View file

@ -10,7 +10,7 @@
reg = <0x402a4000 0x4000>, <0x70000000 DT_SIZE_M(4)>; reg = <0x402a4000 0x4000>, <0x70000000 DT_SIZE_M(4)>;
/* WINBOND */ /* WINBOND */
w25q32jvwj0: w25q32jvwj@0 { w25q32jvwj0: w25q32jvwj@0 {
compatible = "winbond,w25q32jvwj", "jedec,spi-nor"; compatible = "nxp,imx-flexspi-nor";
size = <33554432>; size = <33554432>;
label = "W25Q32JVWJ0"; label = "W25Q32JVWJ0";
reg = <0>; reg = <0>;

View file

@ -0,0 +1,101 @@
# Copyright 2020 NXP
# SPDX-License-Identifier: Apache-2.0
description: NXP FlexSPI device
compatible: "nxp,imx-flexspi-device"
include: [spi-device.yaml, "jedec,jesd216.yaml"]
properties:
cs-interval-unit:
type: int
required: false
default: 1
enum:
- 1
- 256
description: |
Chip select interval units, in serial clock cycles. See the
CSINTERVALUNIT field in registers FLASHA1CR0 through FLASHB2CR0. The
default corresponds to the reset value of the register field.
cs-interval:
type: int
required: false
default: 0
description: |
Minimum interval between chip select deassertion and assertion. See the
CSINTERVAL field in registers FLASHA1CR0 through FLASHB2CR0. The
default corresponds to the reset value of the register field.
cs-setup-time:
type: int
required: false
default: 3
description: |
Chip select setup time, in serial clock cycles. See the TCSS field in
registers FLASHA1CR0 through FLASHB2CR0. The default corresponds to the
reset value of the register field.
cs-hold-time:
type: int
required: false
default: 3
description: |
Chip select hold time, in serial clock cycles. See the TCSH field in
registers FLASHA1CR0 through FLASHB2CR0. The default corresponds to the
reset value of the register field.
data-valid-time:
type: int
required: false
default: 0
description: |
Data valid time, in nanoseconds. See the registers DLLACR through
DLLBCR.
column-space:
type: int
required: false
default: 0
description: |
Column address bit width. Set to zero if the flash does not support
column address. See the CAS field in registers FLASHA1CR0 through
FLASHB2CR0. The default corresponds to the reset value of the register
field.
word-addressable:
type: boolean
required: false
description: |
Don't transmit the least significant address bit when the flash is word
addressable. See the WA field in registers FLASHA1CR0 through
FLASHB2CR0.
ahb-write-wait-unit:
type: int
required: false
default: 2
enum:
- 2
- 8
- 32
- 128
- 512
- 2048
- 8192
- 32768
description: |
AHB write wait interval units, in AHB clock cycles. See the AWRWAITUNIT
field in registers FLASHA1CR2 through FLASHB2CR2. The default
corresponds to the reset value of the register field.
ahb-write-wait-interval:
type: int
required: false
default: 0
description: |
Time to wait between AHB triggered command sequences. See the AWRWAIT
field in registers FLASHA1CR2 through FLASHB2CR2. The default
corresponds to the reset value of the register field.

View file

@ -0,0 +1,8 @@
# Copyright 2020 NXP
# SPDX-License-Identifier: Apache-2.0
description: NXP FlexSPI HyperFlash
compatible: "nxp,imx-flexspi-hyperflash"
include: nxp,imx-flexspi-device.yaml

View file

@ -0,0 +1,8 @@
# Copyright 2020 NXP
# SPDX-License-Identifier: Apache-2.0
description: NXP FlexSPI NOR
compatible: "nxp,imx-flexspi-nor"
include: nxp,imx-flexspi-device.yaml

View file

@ -13,3 +13,55 @@ properties:
interrupts: interrupts:
required: true required: true
ahb-bufferable:
type: boolean
required: false
description: |
Enable AHB bufferable write access by setting register field
AHBCR[BUFFERABLEEN].
ahb-cacheable:
type: boolean
required: false
description: |
Enable AHB cacheable read access by setting register field
AHBCR[CACHEABLEEN].
ahb-prefetch:
type: boolean
required: false
description: |
Enable AHB read prefetch by setting register field AHBCR[PREFETCHEN].
ahb-read-addr-opt:
type: boolean
required: false
description: |
Remove burst start address alignment limitation by setting register
field AHBCR[READADDROPT].
combination-mode:
type: boolean
required: false
description: |
Combine port A and port B data pins to support octal mode access by
setting register field MCR0[COMBINATIONEN].
rx-clock-source:
type: int
required: false
default: 0
enum:
- 0 # Loopback internally
- 1 # Loopback from DQS pad
- 2 # Loopback from SCK pad
- 3 # External input from DQS pad
description: |
Source clock for flash read. See the RXCLKSRC field in register MCR0.
The default corresponds to the reset value of the register field.
child-binding:
description: NXP FlexSPI port
include: nxp,imx-flexspi-device.yaml