blob: f6a55fe78002e6a014005cf52b6fc038a76821f3 [file] [log] [blame]
Mike Frysingerffdb20b2013-12-03 16:43:27 -07001Sandbox SPI/SPI Flash Implementation
2====================================
3
Robert P. J. Day1cc0a9f2016-05-04 04:47:31 -04004U-Boot supports SPI and SPI flash emulation in sandbox. This must be enabled
AKASHI Takahiro5e61c4e2020-04-27 15:46:45 +09005via a device tree.
Mike Frysingerffdb20b2013-12-03 16:43:27 -07006
7For example:
8
AKASHI Takahiro5e61c4e2020-04-27 15:46:45 +09009 spi@0 {
10 #address-cells = <1>;
11 #size-cells = <0>;
12 reg = <0 1>;
13 compatible = "sandbox,spi";
14 cs-gpios = <0>, <&gpio_a 0>;
15 spi.bin@0 {
16 reg = <0>;
17 compatible = "spansion,m25p16", "jedec,spi-nor";
18 spi-max-frequency = <40000000>;
19 sandbox,filename = "spi.bin";
20 };
21 };
Mike Frysingerffdb20b2013-12-03 16:43:27 -070022
23Supported chips are W25Q16 (2MB), W25Q32 (4MB) and W25Q128 (16MB). Once
24U-Boot it started you can use 'sf' commands as normal. For example:
25
AKASHI Takahiro5e61c4e2020-04-27 15:46:45 +090026$ dd if=/dev/zero of=spi.bin bs=1M count=2
27$ u-boot -T
Mike Frysingerffdb20b2013-12-03 16:43:27 -070028
29Since the SPI bus is fully implemented as well as the SPI flash connected to
30it, you can also use low-level SPI commands to access the flash. For example
31this reads the device ID from the emulated chip:
32
33=> sspi 0 32 9f
AKASHI Takahiro5e61c4e2020-04-27 15:46:45 +090034SF: Detected m25p16 with page size 256 Bytes, erase size 64 KiB, total 2 MiB
35FF202015
Mike Frysingerffdb20b2013-12-03 16:43:27 -070036
37
38Simon Glass
39sjg@chromium.org
407/11/2013
41Note that the sandbox SPI implementation was written by Mike Frysinger
42<vapier@gentoo.org>.