1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-10-27 19:32:11 +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

@@ -29,6 +29,7 @@ uint8_t __wrap_libusb_get_device_address(libusb_device *dev);
int __wrap_libusb_get_device_descriptor(libusb_device *dev, struct libusb_device_descriptor *desc);
int __wrap_libusb_get_config_descriptor(
libusb_device *dev, uint8_t config_index, struct libusb_config_descriptor **config);
int __wrap_libusb_get_active_config_descriptor(libusb_device *dev, struct libusb_config_descriptor **config);
void __wrap_libusb_free_config_descriptor(struct libusb_config_descriptor *config);
int __wrap_libusb_get_configuration(libusb_device_handle *devh, int *config);
int __wrap_libusb_set_configuration(libusb_device_handle *devh, int config);
@@ -36,6 +37,8 @@ int __wrap_libusb_claim_interface(libusb_device_handle *devh, int interface_numb
int __wrap_libusb_control_transfer(libusb_device_handle *devh, uint8_t bmRequestType,
uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data,
uint16_t wLength, unsigned int timeout);
int __wrap_libusb_bulk_transfer(libusb_device_handle *devh, unsigned char endpoint,
unsigned char *data, int length, int *actual_length, unsigned int timeout);
int __wrap_libusb_release_interface(libusb_device_handle *devh, int interface_number);
void __wrap_libusb_close(libusb_device_handle *devh);
libusb_device *__wrap_libusb_ref_device(libusb_device *dev);