linux-gbmc: Add RoT mailbox backoff to everspin

When writing to the 64KB RAM-backed RoT mailbox region on Google
Hoth/Dauntless SPI NOR parts (at 0x700000 on 32MB hothb2-512 parts, or
the top 64KB on 64MB/128MB parts), the RoT intercepts the write and
holds the flash busy (SR_WIP) for several milliseconds while processing
the mailbox command. Tight status register polling in
spi_nor_wait_till_ready causes excessive SPI bus traffic and CPU usage.

Override the MTD _write callback in everspin.c so that status polling on
pages within the 64KB mailbox region uses an exponential backoff sleep
(250us doubling up to 20ms), while non-mailbox flash writes continue
using standard spi_nor_wait_till_ready() without backoff delay.

Tested: Verified on hardware that hothd mailbox transactions complete
with minimal SPI transfers instead of thousands of tight SR polls, while
non-mailbox flash operations remain unaffected.
Fusion-Link: fusion2 N/A

Google-Bug-Id: 565629335
Change-Id: I17eb681995d38bbcdf4d6015159cb2d9f5eeb13d
Signed-off-by: William A. Kennington III <wak@google.com>
1 file changed
tree: 07a289a0a8e7b541cc5034495051a156cb1cd9a8
  1. classes/
  2. conf/
  3. dynamic-layers/
  4. recipes-benchmark/
  5. recipes-bsp/
  6. recipes-connectivity/
  7. recipes-core/
  8. recipes-devtools/
  9. recipes-extended/
  10. recipes-google/
  11. recipes-kernel/
  12. recipes-phosphor/
  13. recipes-support/
  14. recipes-tpm1/
  15. recipes-tpm2/
  16. recipes-x86/
  17. LICENSE
  18. README.md
README.md

meta-gbmc-staging

This repository contains additions to the openbmc/meta-google layer that are not yet ready for OpenBMC inclusion.

How to use this layer

  1. Clone openbmc/openbmc from GitHub.
  2. Clone this layer from GitHub into a subdirectory of openbmc.