123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- From 76c457e7e2920342637b1955fbaadf2aae282f05 Mon Sep 17 00:00:00 2001
- From: Phil Elwell <[email protected]>
- 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 <[email protected]>
- ---
- 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,<param>=<val>
- -Params: flash-spi<n>-<m> Enables flash device on SPI<n>, CS#<m>.
- - flash-fastr-spi<n>-<m> Enables flash device with fast read capability
- - on SPI<n>, CS#<m>.
- +Params: spi<n>-<m> Enable flash device on SPI<n>, CS#<m>
- + fastr Add fast read capability to the flash device
- + speed Maximum SPI frequency (Hz)
- + flash-spi<n>-<m> Same as spi<n>-<m> (deprecated)
- + flash-fastr-spi<n>-<m> Same as spi<n>->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<n>-<m> - Enables flash device on SPI<n>, CS#<m>.
- // flash-fastr-spi<n>-<m> - Enables flash device with fast read capability on SPI<n>, CS#<m>.
- +// 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";
- };
- };
-
|