-
Notifications
You must be signed in to change notification settings - Fork 55.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'for-linus-20170212' of git://git.infradead.org/linux-mtd
Pull MTD updates from Brian Norris: "MTD updates for 4.11: General: - new kernel API for retrieving max bad blocks per die (not used yet) - track (and expose via sysfs) a partition's device tree node - support a "label" device tree property for naming an MTD NAND: - sunxi: avoid busy-waiting for NAND events - ifc: fix ECC handling on IFC v1.0 - OX820: add explicit dependency on ARCH_OXNAS in Kconfig - core: add a new manufacture ID and fix a kernel-doc warning - fsmc: kill pdata support - lpc32xx_slc: remove unneeded NULL check - support dynamic "max bad blocks" detection via ONFI SPI NOR: - add support for the 4-byte address instruction set - add support for new memory parts - add support to S3AN memories - add support to the Intel SPI controller - add support to the Aspeed AST2400 and AST2550 controllers - support max SPI message sizes in m25p80_read() - fixes for the Candence and Freescale QSPI drivers Other: - add support for Gemini flash probing - bcm47xxsflash: add support for reading outside memory-mapped window - bcm47xxparts: extend to support multiple TRX partitions - misc fixes and typos Extra note: we've pulled in an MFD subtree from Lee Jones as a dependency for a new Intel SPI NOR driver" [ Kudos to Brian for sending pull request a week early: "I refuse to acknowledge the existence of 4.10-rc8 and am therefore sending our MTD changes for 4.11 now" which is all good ] * tag 'for-linus-20170212' of git://git.infradead.org/linux-mtd: (52 commits) mtd: aspeed: remove redundant dev_err call in aspeed_smc_probe() dt-bindings: mtd: add a common label property to all mtd devices mtd: name the mtd device with an optional label property mtd: physmap_of: fixup gemini/versatile dependencies mtd: spi-nor: cqspi: remove redundant dead code on error return check Documentation: mtk-quadspi: update DT bindings mtd: fsl-quadspi: Rename SEQID_QUAD_READ to SEQID_READ mtd:fsl-quadspi:use the property fields of SPI-NOR mtd: spi-nor: Add support for gd25q16 mtd: spi-nor: Fix S3AN addressing calculation mtd: aspeed: fix compile warning in aspeed_smc_read_from_ahb() mtd: spi-nor: add dt support for Everspin MRAMs mtd: spi-nor: Add lock/unlock support for f25l32pa mtd: spi-nor: add a stateless method to support memory size above 128Mib mtd: spi-nor: rename SPINOR_OP_* macros of the 4-byte address op codes mtd: m25p80: consider max message size in m25p80_read mtd: spi-nor: bindings for the Aspeed memory controllers mtd: aspeed: add memory controllers for the Aspeed AST2400 SoC mtd: spi-nor: add memory controllers for the Aspeed AST2500 SoC mtd: spi-nor: remove WARN_ONCE() message in spi_nor_write() ...
- Loading branch information
Showing
54 changed files
with
2,874 additions
and
378 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
* Aspeed Firmware Memory controller | ||
* Aspeed SPI Flash Memory Controller | ||
|
||
The Firmware Memory Controller in the Aspeed AST2500 SoC supports | ||
three chip selects, two of which are always of SPI type and the third | ||
can be SPI or NOR type flash. These bindings only describe SPI. | ||
|
||
The two SPI flash memory controllers in the AST2500 each support two | ||
chip selects. | ||
|
||
Required properties: | ||
- compatible : Should be one of | ||
"aspeed,ast2400-fmc" for the AST2400 Firmware Memory Controller | ||
"aspeed,ast2400-spi" for the AST2400 SPI Flash memory Controller | ||
"aspeed,ast2500-fmc" for the AST2500 Firmware Memory Controller | ||
"aspeed,ast2500-spi" for the AST2500 SPI flash memory controllers | ||
|
||
- reg : the first contains the control register location and length, | ||
the second contains the memory window mapping address and length | ||
- #address-cells : must be 1 corresponding to chip select child binding | ||
- #size-cells : must be 0 corresponding to chip select child binding | ||
|
||
Optional properties: | ||
- interrupts : Should contain the interrupt for the dma device if an | ||
FMC | ||
|
||
The child nodes are the SPI flash modules which must have a compatible | ||
property as specified in bindings/mtd/jedec,spi-nor.txt | ||
|
||
Optionally, the child node can contain properties for SPI mode (may be | ||
ignored): | ||
- spi-max-frequency - max frequency of spi bus | ||
|
||
|
||
Example: | ||
fmc: fmc@1e620000 { | ||
compatible = "aspeed,ast2500-fmc"; | ||
reg = < 0x1e620000 0x94 | ||
0x20000000 0x02000000 >; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
interrupts = <19>; | ||
flash@0 { | ||
reg = < 0 >; | ||
compatible = "jedec,spi-nor"; | ||
/* spi-max-frequency = <>; */ | ||
/* m25p,fast-read; */ | ||
#address-cells = <1>; | ||
#size-cells = <1>; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
* Common properties of all MTD devices | ||
|
||
Optional properties: | ||
- label: user-defined MTD device name. Can be used to assign user | ||
friendly names to MTD devices (instead of the flash model or flash | ||
controller based name) in order to ease flash device identification | ||
and/or describe what they are used for. | ||
|
||
Example: | ||
|
||
flash@0 { | ||
label = "System-firmware"; | ||
|
||
/* flash type specific properties */ | ||
}; |
24 changes: 24 additions & 0 deletions
24
Documentation/devicetree/bindings/mtd/cortina,gemini-flash.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
Flash device on Cortina Systems Gemini SoC | ||
|
||
This flash is regular CFI compatible (Intel or AMD extended) flash chips with | ||
some special bits that can be controlled by the machine's system controller. | ||
|
||
Required properties: | ||
- compatible : must be "cortina,gemini-flash", "cfi-flash"; | ||
- reg : memory address for the flash chip | ||
- syscon : must be a phandle to the system controller | ||
- bank-width : width in bytes of flash interface, should be <2> | ||
|
||
For the rest of the properties, see mtd-physmap.txt. | ||
|
||
The device tree may optionally contain sub-nodes describing partitions of the | ||
address space. See partition.txt for more detail. | ||
|
||
Example: | ||
|
||
flash@30000000 { | ||
compatible = "cortina,gemini-flash", "cfi-flash"; | ||
reg = <0x30000000 0x01000000>; | ||
syscon = <&syscon>; | ||
bank-width = <2>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,8 @@ Required properties: | |
at25df641 | ||
at26df081a | ||
mr25h256 | ||
mr25h10 | ||
mr25h40 | ||
mx25l4005a | ||
mx25l1606e | ||
mx25l6405d | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
Upgrading BIOS using intel-spi | ||
------------------------------ | ||
|
||
Many Intel CPUs like Baytrail and Braswell include SPI serial flash host | ||
controller which is used to hold BIOS and other platform specific data. | ||
Since contents of the SPI serial flash is crucial for machine to function, | ||
it is typically protected by different hardware protection mechanisms to | ||
avoid accidental (or on purpose) overwrite of the content. | ||
|
||
Not all manufacturers protect the SPI serial flash, mainly because it | ||
allows upgrading the BIOS image directly from an OS. | ||
|
||
The intel-spi driver makes it possible to read and write the SPI serial | ||
flash, if certain protection bits are not set and locked. If it finds | ||
any of them set, the whole MTD device is made read-only to prevent | ||
partial overwrites. By default the driver exposes SPI serial flash | ||
contents as read-only but it can be changed from kernel command line, | ||
passing "intel-spi.writeable=1". | ||
|
||
Please keep in mind that overwriting the BIOS image on SPI serial flash | ||
might render the machine unbootable and requires special equipment like | ||
Dediprog to revive. You have been warned! | ||
|
||
Below are the steps how to upgrade MinnowBoard MAX BIOS directly from | ||
Linux. | ||
|
||
1) Download and extract the latest Minnowboard MAX BIOS SPI image | ||
[1]. At the time writing this the latest image is v92. | ||
|
||
2) Install mtd-utils package [2]. We need this in order to erase the SPI | ||
serial flash. Distros like Debian and Fedora have this prepackaged with | ||
name "mtd-utils". | ||
|
||
3) Add "intel-spi.writeable=1" to the kernel command line and reboot | ||
the board (you can also reload the driver passing "writeable=1" as | ||
module parameter to modprobe). | ||
|
||
4) Once the board is up and running again, find the right MTD partition | ||
(it is named as "BIOS"): | ||
|
||
# cat /proc/mtd | ||
dev: size erasesize name | ||
mtd0: 00800000 00001000 "BIOS" | ||
|
||
So here it will be /dev/mtd0 but it may vary. | ||
|
||
5) Make backup of the existing image first: | ||
|
||
# dd if=/dev/mtd0ro of=bios.bak | ||
16384+0 records in | ||
16384+0 records out | ||
8388608 bytes (8.4 MB) copied, 10.0269 s, 837 kB/s | ||
|
||
6) Verify the backup | ||
|
||
# sha1sum /dev/mtd0ro bios.bak | ||
fdbb011920572ca6c991377c4b418a0502668b73 /dev/mtd0ro | ||
fdbb011920572ca6c991377c4b418a0502668b73 bios.bak | ||
|
||
The SHA1 sums must match. Otherwise do not continue any further! | ||
|
||
7) Erase the SPI serial flash. After this step, do not reboot the | ||
board! Otherwise it will not start anymore. | ||
|
||
# flash_erase /dev/mtd0 0 0 | ||
Erasing 4 Kibyte @ 7ff000 -- 100 % complete | ||
|
||
8) Once completed without errors you can write the new BIOS image: | ||
|
||
# dd if=MNW2MAX1.X64.0092.R01.1605221712.bin of=/dev/mtd0 | ||
|
||
9) Verify that the new content of the SPI serial flash matches the new | ||
BIOS image: | ||
|
||
# sha1sum /dev/mtd0ro MNW2MAX1.X64.0092.R01.1605221712.bin | ||
9b4df9e4be2057fceec3a5529ec3d950836c87a2 /dev/mtd0ro | ||
9b4df9e4be2057fceec3a5529ec3d950836c87a2 MNW2MAX1.X64.0092.R01.1605221712.bin | ||
|
||
The SHA1 sums should match. | ||
|
||
10) Now you can reboot your board and observe the new BIOS starting up | ||
properly. | ||
|
||
References | ||
---------- | ||
|
||
[1] https://firmware.intel.com/sites/default/files/MinnowBoard.MAX_.X64.92.R01.zip | ||
[2] http://www.linux-mtd.infradead.org/ |
Oops, something went wrong.