diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2011-11-14 10:31:36 -0800 |
---|---|---|
committer | Duncan Laurie <dlaurie@chromium.org> | 2011-11-14 11:16:13 -0800 |
commit | 9b85a281c8a17d7c9e10ec2c899a26dd1c907072 (patch) | |
tree | a24e3d1d11426d5f3fd3fb6e17ec30ebcb3c2b3f /arch/arm/include/asm/arch-tegra | |
parent | 21f54150d1500cff386f9429735f274d0a066943 (diff) |
ICH SPI: Use an atomic preop for Write Enable
The U-boot spi interface uses Software Sequencing and handles
write transactions in three distinct steps:
1) issue Write Enable op
2) issue Page Program op
3) poll Read Status Reg for completion
However in an Intel 6-series chipset the Management Engine is
also issuing a lot of transactions through the same controller
to the same chip. It is possible for an ME transaction to
occur between the U-boot issuing WREN and sending the actual
data, resulting in the host WREN being lost and the data not
actually being written to the chip.
This change intercepts WREN opcode and instead applies it as
a prefix operator for the next issued transaction, ensuring
that the two are issued back-to-back to the SPI chip.
Unfortunately this register is not writable when the SPI
contoller is locked down, so it is not always applicable.
BUG=chrome-os-partner:6690
TEST=repeated manual testing on lumpy with boot/suspend/resume
Change-Id: I75e353942fd6148a93be561ff422e37dfc6dc8c4
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/11625
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Diffstat (limited to 'arch/arm/include/asm/arch-tegra')
0 files changed, 0 insertions, 0 deletions