| .. 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 |