drm/amd: Add documentation for how to flash a dGPU
The flashing process for dGPUs uses sysfs files in a non-obvious way, so document it for users. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
98d19a6c49
commit
649663af73
33
Documentation/gpu/amdgpu/flashing.rst
Normal file
33
Documentation/gpu/amdgpu/flashing.rst
Normal file
@ -0,0 +1,33 @@
|
||||
=======================
|
||||
dGPU firmware flashing
|
||||
=======================
|
||||
|
||||
IFWI
|
||||
----
|
||||
Flashing the dGPU integrated firmware image (IFWI) is supported by GPUs that
|
||||
use the PSP to orchestrate the update (Navi3x or newer GPUs).
|
||||
For supported GPUs, `amdgpu` will export a series of sysfs files that can be
|
||||
used for the flash process.
|
||||
|
||||
The IFWI flash process is:
|
||||
|
||||
1. Ensure the IFWI image is intended for the dGPU on the system.
|
||||
2. "Write" the IFWI image to the sysfs file `psp_vbflash`. This will stage the IFWI in memory.
|
||||
3. "Read" from the `psp_vbflash` sysfs file to initiate the flash process.
|
||||
4. Poll the `psp_vbflash_status` sysfs file to determine when the flash process completes.
|
||||
|
||||
USB-C PD F/W
|
||||
------------
|
||||
On GPUs that support flashing an updated USB-C PD firmware image, the process
|
||||
is done using the `usbc_pd_fw` sysfs file.
|
||||
|
||||
* Reading the file will provide the current firmware version.
|
||||
* Writing the name of a firmware payload stored in `/lib/firmware/amdgpu` to the sysfs file will initiate the flash process.
|
||||
|
||||
The firmware payload stored in `/lib/firmware/amdgpu` can be named any name
|
||||
as long as it doesn't conflict with other existing binaries that are used by
|
||||
`amdgpu`.
|
||||
|
||||
sysfs files
|
||||
-----------
|
||||
.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
|
@ -10,6 +10,7 @@ Next (GCN), Radeon DNA (RDNA), and Compute DNA (CDNA) architectures.
|
||||
module-parameters
|
||||
driver-core
|
||||
display/index
|
||||
flashing
|
||||
xgmi
|
||||
ras
|
||||
thermal
|
||||
|
@ -3570,6 +3570,11 @@ void psp_copy_fw(struct psp_context *psp, uint8_t *start_addr, uint32_t bin_size
|
||||
drm_dev_exit(idx);
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC: usbc_pd_fw
|
||||
* Reading from this file will retrieve the USB-C PD firmware version. Writing to
|
||||
* this file will trigger the update process.
|
||||
*/
|
||||
static DEVICE_ATTR(usbc_pd_fw, 0644,
|
||||
psp_usbc_pd_fw_sysfs_read,
|
||||
psp_usbc_pd_fw_sysfs_write);
|
||||
@ -3663,6 +3668,11 @@ rel_buf:
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC: psp_vbflash
|
||||
* Writing to this file will stage an IFWI for update. Reading from this file
|
||||
* will trigger the update process.
|
||||
*/
|
||||
static struct bin_attribute psp_vbflash_bin_attr = {
|
||||
.attr = {.name = "psp_vbflash", .mode = 0660},
|
||||
.size = 0,
|
||||
@ -3670,6 +3680,12 @@ static struct bin_attribute psp_vbflash_bin_attr = {
|
||||
.read = amdgpu_psp_vbflash_read,
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: psp_vbflash_status
|
||||
* The status of the flash process.
|
||||
* 0: IFWI flash not complete.
|
||||
* 1: IFWI flash complete.
|
||||
*/
|
||||
static ssize_t amdgpu_psp_vbflash_status(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
|
Loading…
Reference in New Issue
Block a user