950-0797-overlays-jedec-spi-nor-Add-speed-parameter.patch 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. From 76c457e7e2920342637b1955fbaadf2aae282f05 Mon Sep 17 00:00:00 2001
  2. From: Phil Elwell <[email protected]>
  3. Date: Fri, 23 Jun 2023 09:48:59 +0100
  4. Subject: [PATCH] overlays: jedec-spi-nor: Add speed parameter
  5. Add a speed parameter to the jedec-spi-nor overlay to allow much
  6. faster accesses, taking the opportunity to simplify the internals.
  7. Signed-off-by: Phil Elwell <[email protected]>
  8. ---
  9. arch/arm/boot/dts/overlays/README | 8 +-
  10. .../dts/overlays/jedec-spi-nor-overlay.dts | 245 +++---------------
  11. 2 files changed, 41 insertions(+), 212 deletions(-)
  12. --- a/arch/arm/boot/dts/overlays/README
  13. +++ b/arch/arm/boot/dts/overlays/README
  14. @@ -2557,9 +2557,11 @@ Name: jedec-spi-nor
  15. Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The
  16. "jedec,spi-nor" kernel driver was formerly known as "m25p80".)
  17. Load: dtoverlay=jedec-spi-nor,<param>=<val>
  18. -Params: flash-spi<n>-<m> Enables flash device on SPI<n>, CS#<m>.
  19. - flash-fastr-spi<n>-<m> Enables flash device with fast read capability
  20. - on SPI<n>, CS#<m>.
  21. +Params: spi<n>-<m> Enable flash device on SPI<n>, CS#<m>
  22. + fastr Add fast read capability to the flash device
  23. + speed Maximum SPI frequency (Hz)
  24. + flash-spi<n>-<m> Same as spi<n>-<m> (deprecated)
  25. + flash-fastr-spi<n>-<m> Same as spi<n>->m>,fastr (deprecated)
  26. Name: justboom-both
  27. --- a/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
  28. +++ b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
  29. @@ -3,6 +3,7 @@
  30. // dtparams:
  31. // flash-spi<n>-<m> - Enables flash device on SPI<n>, CS#<m>.
  32. // flash-fastr-spi<n>-<m> - Enables flash device with fast read capability on SPI<n>, CS#<m>.
  33. +// speed - Set the SPI clock speed in Hz
  34. //
  35. // 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.
  36. //
  37. @@ -79,50 +80,23 @@
  38. };
  39. };
  40. - // enable flash on spi0.0
  41. + // Enable fast read for device
  42. + // Use default active low interrupt signalling.
  43. fragment@8 {
  44. - target = <&spi0>;
  45. + target = <&spi_nor>;
  46. __dormant__ {
  47. - status = "okay";
  48. - #address-cells = <1>;
  49. - #size-cells = <0>;
  50. - spi_nor_00: spi_nor@0 {
  51. - #address-cells = <1>;
  52. - #size-cells = <1>;
  53. - compatible = "jedec,spi-nor";
  54. - reg = <0>;
  55. - spi-max-frequency = <500000>;
  56. - };
  57. + m25p,fast-read;
  58. };
  59. };
  60. - // enable flash on spi0.1
  61. - fragment@9 {
  62. + payload: fragment@100 {
  63. target = <&spi0>;
  64. - __dormant__ {
  65. + __overlay__ {
  66. status = "okay";
  67. - #address-cells = <1>;
  68. - #size-cells = <0>;
  69. - spi_nor_01: spi_nor@1 {
  70. - #address-cells = <1>;
  71. - #size-cells = <1>;
  72. - compatible = "jedec,spi-nor";
  73. - reg = <1>;
  74. - spi-max-frequency = <500000>;
  75. - };
  76. - };
  77. - };
  78. + #address-cells = <1>;
  79. + #size-cells = <0>;
  80. - // enable flash on spi1.0
  81. - fragment@10 {
  82. - target = <&spi1>;
  83. - __dormant__ {
  84. - status = "okay";
  85. - #address-cells = <1>;
  86. - #size-cells = <0>;
  87. - spi_nor_10: spi_nor@0 {
  88. - #address-cells = <1>;
  89. - #size-cells = <1>;
  90. + spi_nor: spi_nor@0 {
  91. compatible = "jedec,spi-nor";
  92. reg = <0>;
  93. spi-max-frequency = <500000>;
  94. @@ -130,180 +104,33 @@
  95. };
  96. };
  97. - // enable flash on spi1.1
  98. - fragment@11 {
  99. - target = <&spi1>;
  100. - __dormant__ {
  101. - status = "okay";
  102. - #address-cells = <1>;
  103. - #size-cells = <0>;
  104. - spi_nor_11: spi_nor@1 {
  105. - #address-cells = <1>;
  106. - #size-cells = <1>;
  107. - compatible = "jedec,spi-nor";
  108. - reg = <1>;
  109. - spi-max-frequency = <500000>;
  110. - };
  111. - };
  112. - };
  113. -
  114. - // enable flash on spi1.2
  115. - fragment@12 {
  116. - target = <&spi1>;
  117. - __dormant__ {
  118. - status = "okay";
  119. - #address-cells = <1>;
  120. - #size-cells = <0>;
  121. - spi_nor_12: spi_nor@2 {
  122. - #address-cells = <1>;
  123. - #size-cells = <1>;
  124. - compatible = "jedec,spi-nor";
  125. - reg = <2>;
  126. - spi-max-frequency = <500000>;
  127. - };
  128. - };
  129. - };
  130. -
  131. - // enable flash on spi2.0
  132. - fragment@13 {
  133. - target = <&spi2>;
  134. - __dormant__ {
  135. - status = "okay";
  136. - #address-cells = <1>;
  137. - #size-cells = <0>;
  138. - spi_nor_20: spi_nor@0 {
  139. - #address-cells = <1>;
  140. - #size-cells = <1>;
  141. - compatible = "jedec,spi-nor";
  142. - reg = <0>;
  143. - spi-max-frequency = <500000>;
  144. - };
  145. - };
  146. - };
  147. -
  148. - // enable flash on spi2.1
  149. - fragment@14 {
  150. - target = <&spi2>;
  151. - __dormant__ {
  152. - status = "okay";
  153. - #address-cells = <1>;
  154. - #size-cells = <0>;
  155. - spi_nor_21: spi_nor@1 {
  156. - #address-cells = <1>;
  157. - #size-cells = <1>;
  158. - compatible = "jedec,spi-nor";
  159. - reg = <1>;
  160. - spi-max-frequency = <500000>;
  161. - };
  162. - };
  163. - };
  164. -
  165. - // enable flash on spi2.2
  166. - fragment@15 {
  167. - target = <&spi2>;
  168. - __dormant__ {
  169. - status = "okay";
  170. - #address-cells = <1>;
  171. - #size-cells = <0>;
  172. - spi_nor_22: spi_nor@2 {
  173. - #address-cells = <1>;
  174. - #size-cells = <1>;
  175. - compatible = "jedec,spi-nor";
  176. - reg = <2>;
  177. - spi-max-frequency = <500000>;
  178. - };
  179. - };
  180. - };
  181. -
  182. - // Enable fast read for device on spi0.0.
  183. - // Use default active low interrupt signalling.
  184. - fragment@16 {
  185. - target = <&spi_nor_00>;
  186. - __dormant__ {
  187. - m25p,fast-read;
  188. - };
  189. - };
  190. -
  191. - // Enable fast read for device on spi0.1.
  192. - // Use default active low interrupt signalling.
  193. - fragment@17 {
  194. - target = <&spi_nor_01>;
  195. - __dormant__ {
  196. - m25p,fast-read;
  197. - };
  198. - };
  199. -
  200. - // Enable fast read for device on spi1.0.
  201. - // Use default active low interrupt signalling.
  202. - fragment@18 {
  203. - target = <&spi_nor_10>;
  204. - __dormant__ {
  205. - m25p,fast-read;
  206. - };
  207. - };
  208. -
  209. - // Enable fast read for device on spi1.1.
  210. - // Use default active low interrupt signalling.
  211. - fragment@19 {
  212. - target = <&spi_nor_11>;
  213. - __dormant__ {
  214. - m25p,fast-read;
  215. - };
  216. - };
  217. -
  218. - // Enable fast read for device on spi1.2.
  219. - // Use default active low interrupt signalling.
  220. - fragment@20 {
  221. - target = <&spi_nor_12>;
  222. - __dormant__ {
  223. - m25p,fast-read;
  224. - };
  225. - };
  226. -
  227. - // Enable fast read for device on spi2.0.
  228. - // Use default active low interrupt signalling.
  229. - fragment@21 {
  230. - target = <&spi_nor_20>;
  231. - __dormant__ {
  232. - m25p,fast-read;
  233. - };
  234. - };
  235. -
  236. - // Enable fast read for device on spi2.1.
  237. - // Use default active low interrupt signalling.
  238. - fragment@22 {
  239. - target = <&spi_nor_21>;
  240. - __dormant__ {
  241. - m25p,fast-read;
  242. - };
  243. - };
  244. -
  245. - // Enable fast read for device on spi2.2.
  246. - // Use default active low interrupt signalling.
  247. - fragment@23 {
  248. - target = <&spi_nor_22>;
  249. - __dormant__ {
  250. - m25p,fast-read;
  251. - };
  252. - };
  253. -
  254. __overrides__ {
  255. - flash-spi0-0 = <0>,"+0+8";
  256. - flash-spi0-1 = <0>,"+1+9";
  257. - flash-spi1-0 = <0>,"+2+10";
  258. - flash-spi1-1 = <0>,"+3+11";
  259. - flash-spi1-2 = <0>,"+4+12";
  260. - flash-spi2-0 = <0>,"+5+13";
  261. - flash-spi2-1 = <0>,"+6+14";
  262. - flash-spi2-2 = <0>,"+7+15";
  263. - flash-fastr-spi0-0 = <0>,"+0+8+16";
  264. - flash-fastr-spi0-1 = <0>,"+1+9+17";
  265. - flash-fastr-spi1-0 = <0>,"+2+10+18";
  266. - flash-fastr-spi1-1 = <0>,"+3+11+19";
  267. - flash-fastr-spi1-2 = <0>,"+4+12+20";
  268. - flash-fastr-spi2-0 = <0>,"+5+13+21";
  269. - flash-fastr-spi2-1 = <0>,"+6+14+22";
  270. - flash-fastr-spi2-2 = <0>,"+7+15+23";
  271. + spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
  272. + spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
  273. + spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
  274. + spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
  275. + spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
  276. + spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
  277. + spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
  278. + spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
  279. + flash-spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
  280. + flash-spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
  281. + flash-spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
  282. + flash-spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
  283. + flash-spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
  284. + flash-spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
  285. + flash-spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
  286. + flash-spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
  287. + flash-fastr-spi0-0 = <0>,"+0+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
  288. + flash-fastr-spi0-1 = <0>,"+1+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
  289. + flash-fastr-spi1-0 = <0>,"+2+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
  290. + flash-fastr-spi1-1 = <0>,"+3+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
  291. + flash-fastr-spi1-2 = <0>,"+4+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
  292. + flash-fastr-spi2-0 = <0>,"+5+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
  293. + flash-fastr-spi2-1 = <0>,"+6+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
  294. + flash-fastr-spi2-2 = <0>,"+7+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
  295. + fastr = <0>,"+8";
  296. + speed = <&spi_nor>, "spi-max-frequency:0";
  297. };
  298. };