mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
5.0 KiB
162 lines
5.0 KiB
.. SPDX-License-Identifier: GPL-2.0 |
|
|
|
==================== |
|
iosm devlink support |
|
==================== |
|
|
|
This document describes the devlink features implemented by the ``iosm`` |
|
device driver. |
|
|
|
Parameters |
|
========== |
|
|
|
The ``iosm`` driver implements the following driver-specific parameters. |
|
|
|
.. list-table:: Driver-specific parameters implemented |
|
:widths: 5 5 5 85 |
|
|
|
* - Name |
|
- Type |
|
- Mode |
|
- Description |
|
* - ``erase_full_flash`` |
|
- u8 |
|
- runtime |
|
- erase_full_flash parameter is used to check if full erase is required for |
|
the device during firmware flashing. |
|
If set, Full nand erase command will be sent to the device. By default, |
|
only conditional erase support is enabled. |
|
|
|
|
|
Flash Update |
|
============ |
|
|
|
The ``iosm`` driver implements support for flash update using the |
|
``devlink-flash`` interface. |
|
|
|
It supports updating the device flash using a combined flash image which contains |
|
the Bootloader images and other modem software images. |
|
|
|
The driver uses DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT to identify type of |
|
firmware image that need to be flashed as requested by user space application. |
|
Supported firmware image types. |
|
|
|
.. list-table:: Firmware Image types |
|
:widths: 15 85 |
|
|
|
* - Name |
|
- Description |
|
* - ``PSI RAM`` |
|
- Primary Signed Image |
|
* - ``EBL`` |
|
- External Bootloader |
|
* - ``FLS`` |
|
- Modem Software Image |
|
|
|
PSI RAM and EBL are the RAM images which are injected to the device when the |
|
device is in BOOT ROM stage. Once this is successful, the actual modem firmware |
|
image is flashed to the device. The modem software image contains multiple files |
|
each having one secure bin file and at least one Loadmap/Region file. For flashing |
|
these files, appropriate commands are sent to the modem device along with the |
|
data required for flashing. The data like region count and address of each region |
|
has to be passed to the driver using the devlink param command. |
|
|
|
If the device has to be fully erased before firmware flashing, user application |
|
need to set the erase_full_flash parameter using devlink param command. |
|
By default, conditional erase feature is supported. |
|
|
|
Flash Commands: |
|
=============== |
|
1) When modem is in Boot ROM stage, user can use below command to inject PSI RAM |
|
image using devlink flash command. |
|
|
|
$ devlink dev flash pci/0000:02:00.0 file <PSI_RAM_File_name> |
|
|
|
2) If user want to do a full erase, below command need to be issued to set the |
|
erase full flash param (To be set only if full erase required). |
|
|
|
$ devlink dev param set pci/0000:02:00.0 name erase_full_flash value true cmode runtime |
|
|
|
3) Inject EBL after the modem is in PSI stage. |
|
|
|
$ devlink dev flash pci/0000:02:00.0 file <EBL_File_name> |
|
|
|
4) Once EBL is injected successfully, then the actual firmware flashing takes |
|
place. Below is the sequence of commands used for each of the firmware images. |
|
|
|
a) Flash secure bin file. |
|
|
|
$ devlink dev flash pci/0000:02:00.0 file <Secure_bin_file_name> |
|
|
|
b) Flashing the Loadmap/Region file |
|
|
|
$ devlink dev flash pci/0000:02:00.0 file <Load_map_file_name> |
|
|
|
Regions |
|
======= |
|
|
|
The ``iosm`` driver supports dumping the coredump logs. |
|
|
|
In case a firmware encounters an exception, a snapshot will be taken by the |
|
driver. Following regions are accessed for device internal data. |
|
|
|
.. list-table:: Regions implemented |
|
:widths: 15 85 |
|
|
|
* - Name |
|
- Description |
|
* - ``report.json`` |
|
- The summary of exception details logged as part of this region. |
|
* - ``coredump.fcd`` |
|
- This region contains the details related to the exception occurred in the |
|
device (RAM dump). |
|
* - ``cdd.log`` |
|
- This region contains the logs related to the modem CDD driver. |
|
* - ``eeprom.bin`` |
|
- This region contains the eeprom logs. |
|
* - ``bootcore_trace.bin`` |
|
- This region contains the current instance of bootloader logs. |
|
* - ``bootcore_prev_trace.bin`` |
|
- This region contains the previous instance of bootloader logs. |
|
|
|
|
|
Region commands |
|
=============== |
|
|
|
$ devlink region show |
|
|
|
$ devlink region new pci/0000:02:00.0/report.json |
|
|
|
$ devlink region dump pci/0000:02:00.0/report.json snapshot 0 |
|
|
|
$ devlink region del pci/0000:02:00.0/report.json snapshot 0 |
|
|
|
$ devlink region new pci/0000:02:00.0/coredump.fcd |
|
|
|
$ devlink region dump pci/0000:02:00.0/coredump.fcd snapshot 1 |
|
|
|
$ devlink region del pci/0000:02:00.0/coredump.fcd snapshot 1 |
|
|
|
$ devlink region new pci/0000:02:00.0/cdd.log |
|
|
|
$ devlink region dump pci/0000:02:00.0/cdd.log snapshot 2 |
|
|
|
$ devlink region del pci/0000:02:00.0/cdd.log snapshot 2 |
|
|
|
$ devlink region new pci/0000:02:00.0/eeprom.bin |
|
|
|
$ devlink region dump pci/0000:02:00.0/eeprom.bin snapshot 3 |
|
|
|
$ devlink region del pci/0000:02:00.0/eeprom.bin snapshot 3 |
|
|
|
$ devlink region new pci/0000:02:00.0/bootcore_trace.bin |
|
|
|
$ devlink region dump pci/0000:02:00.0/bootcore_trace.bin snapshot 4 |
|
|
|
$ devlink region del pci/0000:02:00.0/bootcore_trace.bin snapshot 4 |
|
|
|
$ devlink region new pci/0000:02:00.0/bootcore_prev_trace.bin |
|
|
|
$ devlink region dump pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5 |
|
|
|
$ devlink region del pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
|
|
|