From 76c457e7e2920342637b1955fbaadf2aae282f05 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Jun 2023 09:48:59 +0100 Subject: [PATCH] overlays: jedec-spi-nor: Add speed parameter Add a speed parameter to the jedec-spi-nor overlay to allow much faster accesses, taking the opportunity to simplify the internals. Signed-off-by: Phil Elwell --- arch/arm/boot/dts/overlays/README | 8 +- .../dts/overlays/jedec-spi-nor-overlay.dts | 245 +++--------------- 2 files changed, 41 insertions(+), 212 deletions(-) --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -2557,9 +2557,11 @@ Name: jedec-spi-nor Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The "jedec,spi-nor" kernel driver was formerly known as "m25p80".) Load: dtoverlay=jedec-spi-nor,= -Params: flash-spi- Enables flash device on SPI, CS#. - flash-fastr-spi- Enables flash device with fast read capability - on SPI, CS#. +Params: spi- Enable flash device on SPI, CS# + fastr Add fast read capability to the flash device + speed Maximum SPI frequency (Hz) + flash-spi- Same as spi- (deprecated) + flash-fastr-spi- Same as spi->m>,fastr (deprecated) Name: justboom-both --- a/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts +++ b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts @@ -3,6 +3,7 @@ // dtparams: // flash-spi- - Enables flash device on SPI, CS#. // flash-fastr-spi- - Enables flash device with fast read capability on SPI, CS#. +// speed - Set the SPI clock speed in Hz // // If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. // @@ -79,50 +80,23 @@ }; }; - // enable flash on spi0.0 + // Enable fast read for device + // Use default active low interrupt signalling. fragment@8 { - target = <&spi0>; + target = <&spi_nor>; __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_00: spi_nor@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <0>; - spi-max-frequency = <500000>; - }; + m25p,fast-read; }; }; - // enable flash on spi0.1 - fragment@9 { + payload: fragment@100 { target = <&spi0>; - __dormant__ { + __overlay__ { status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_01: spi_nor@1 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <1>; - spi-max-frequency = <500000>; - }; - }; - }; + #address-cells = <1>; + #size-cells = <0>; - // enable flash on spi1.0 - fragment@10 { - target = <&spi1>; - __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_10: spi_nor@0 { - #address-cells = <1>; - #size-cells = <1>; + spi_nor: spi_nor@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <500000>; @@ -130,180 +104,33 @@ }; }; - // enable flash on spi1.1 - fragment@11 { - target = <&spi1>; - __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_11: spi_nor@1 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <1>; - spi-max-frequency = <500000>; - }; - }; - }; - - // enable flash on spi1.2 - fragment@12 { - target = <&spi1>; - __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_12: spi_nor@2 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <2>; - spi-max-frequency = <500000>; - }; - }; - }; - - // enable flash on spi2.0 - fragment@13 { - target = <&spi2>; - __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_20: spi_nor@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <0>; - spi-max-frequency = <500000>; - }; - }; - }; - - // enable flash on spi2.1 - fragment@14 { - target = <&spi2>; - __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_21: spi_nor@1 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <1>; - spi-max-frequency = <500000>; - }; - }; - }; - - // enable flash on spi2.2 - fragment@15 { - target = <&spi2>; - __dormant__ { - status = "okay"; - #address-cells = <1>; - #size-cells = <0>; - spi_nor_22: spi_nor@2 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "jedec,spi-nor"; - reg = <2>; - spi-max-frequency = <500000>; - }; - }; - }; - - // Enable fast read for device on spi0.0. - // Use default active low interrupt signalling. - fragment@16 { - target = <&spi_nor_00>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi0.1. - // Use default active low interrupt signalling. - fragment@17 { - target = <&spi_nor_01>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi1.0. - // Use default active low interrupt signalling. - fragment@18 { - target = <&spi_nor_10>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi1.1. - // Use default active low interrupt signalling. - fragment@19 { - target = <&spi_nor_11>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi1.2. - // Use default active low interrupt signalling. - fragment@20 { - target = <&spi_nor_12>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi2.0. - // Use default active low interrupt signalling. - fragment@21 { - target = <&spi_nor_20>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi2.1. - // Use default active low interrupt signalling. - fragment@22 { - target = <&spi_nor_21>; - __dormant__ { - m25p,fast-read; - }; - }; - - // Enable fast read for device on spi2.2. - // Use default active low interrupt signalling. - fragment@23 { - target = <&spi_nor_22>; - __dormant__ { - m25p,fast-read; - }; - }; - __overrides__ { - flash-spi0-0 = <0>,"+0+8"; - flash-spi0-1 = <0>,"+1+9"; - flash-spi1-0 = <0>,"+2+10"; - flash-spi1-1 = <0>,"+3+11"; - flash-spi1-2 = <0>,"+4+12"; - flash-spi2-0 = <0>,"+5+13"; - flash-spi2-1 = <0>,"+6+14"; - flash-spi2-2 = <0>,"+7+15"; - flash-fastr-spi0-0 = <0>,"+0+8+16"; - flash-fastr-spi0-1 = <0>,"+1+9+17"; - flash-fastr-spi1-0 = <0>,"+2+10+18"; - flash-fastr-spi1-1 = <0>,"+3+11+19"; - flash-fastr-spi1-2 = <0>,"+4+12+20"; - flash-fastr-spi2-0 = <0>,"+5+13+21"; - flash-fastr-spi2-1 = <0>,"+6+14+22"; - flash-fastr-spi2-2 = <0>,"+7+15+23"; + spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0"; + spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1"; + spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0"; + spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1"; + spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2"; + spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0"; + spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1"; + spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2"; + flash-spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0"; + flash-spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1"; + flash-spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0"; + flash-spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1"; + flash-spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2"; + flash-spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0"; + flash-spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1"; + flash-spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2"; + flash-fastr-spi0-0 = <0>,"+0+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0"; + flash-fastr-spi0-1 = <0>,"+1+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1"; + flash-fastr-spi1-0 = <0>,"+2+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0"; + flash-fastr-spi1-1 = <0>,"+3+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1"; + flash-fastr-spi1-2 = <0>,"+4+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2"; + flash-fastr-spi2-0 = <0>,"+5+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0"; + flash-fastr-spi2-1 = <0>,"+6+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1"; + flash-fastr-spi2-2 = <0>,"+7+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2"; + fastr = <0>,"+8"; + speed = <&spi_nor>, "spi-max-frequency:0"; }; };