1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-10-27 11:22:10 +01:00

nv_sma_spi: Add Nvidia SMA Programmer

Add initial support for System Management Agent (SMA) programmer.
SMA is a SOC which is working as a side band management on Nvidia
server board. One of its functionality is to flash firmware to other
components.

Test:
1. Build flashrom with this change.
2. Run operation: erase, write, read
3. All operations completed with expected performance.

NV_SMA_SPI has been tested with the following SPI flash models:

w25r128jw
w25r64jv
w25q16v

Change-Id: I6b2522788db3dcee2b30faff29f605cede8c0eaf
Co-Developed-by: Gilbert Chen <gilbertc@nvidia.com>
Co-Developed-by: Willie Thai <wthai@nvidia.com>
Signed-off-by: Willie Thai <wthai@nvidia.com>
Signed-off-by: Gilbert Chen <gilbertc@nvidia.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/88816
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Peter Marheine <pmarheine@chromium.org>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:
Willie Thai
2025-08-18 12:43:40 +00:00
committed by Anastasia Klimchuk
parent c54d068418
commit db43ab2989
17 changed files with 943 additions and 4 deletions

View File

@@ -357,6 +357,7 @@ All operations involving any chip access (probe/read/write/...) require the ``-p
* ``dirtyjtag_spi`` (for SPI flash ROMs attached to DirtyJTAG-compatible devices)
* ``asm106x`` (for SPI flash ROMs attached to asm106x PCI SATA controllers)
* ``spidriver`` (for SPI flash ROMs attached to an Excamera Labs SPIDriver)
* ``nv_sma_spi`` (for SPI flash ROMs attached to an Nvidia System Management Agent)
Some programmers have optional or mandatory parameters which are described in detail in the
**PROGRAMMER-SPECIFIC INFORMATION** section. Support for some programmers can be disabled at compile time.
@@ -1460,6 +1461,24 @@ Syntax is::
where ``state`` can be ``high`` or ``low``. The default ``state`` is ``high``.
nv_sma_spi programmer
^^^^^^^^^^^^^^^^^^^^^
The Optional ``cs`` parameter can be used to switch which chip select number is used. This allows connecting multiple
chips at once and selecting which one to flash.::
flashrom -p nv_sma_spi:cs=0
The optional ``bus`` and ``devnum`` parameters indicate which Nvidia System Management Agent is selected when multiple
SMAs are present. Both parameters must be specified simultaneously.::
flashrom -p nv_sma_spi:bus=0,devnum=1
The optional ``spispeed`` parameter sets the target frequency in Hz. The Nvidia System Management Agent selects the closest
supported frequency based on its capabilities. If the spispeed is not provided, the device default frequncy is used. An example
to set target frequency at 15MHz.::
flashrom -p nv_sma_spi:spispeed=15000000
EXAMPLES
--------
@@ -1547,7 +1566,7 @@ REQUIREMENTS
* need access to the respective USB device via libusb API version 1.0
* ch341a_spi, dediprog
* ch341a_spi, dediprog, nv_sma_spi
* need access to the respective USB device via libusb API version 1.0

View File

@@ -37,3 +37,8 @@ range, especially if using different names for those regions.
If you are flashing multiple regions or ones that partially overlap with
read-only parts then that could result in flashrom failing in the
middle, leaving you in unknown state.
New programmers
===============
* Nvidia System Management Agent