Logo

The Linux Kernel

next-20250509

Quick search

Contents

  • Development process
  • Submitting patches
  • Code of conduct
  • Maintainer handbook
  • All development-process docs
  • Core API
  • Driver APIs
  • Subsystems
    • Core subsystems
    • Human interfaces
    • Networking interfaces
      • Networking
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • Storage interfaces
    • Other subsystems
  • Locking
  • Licensing rules
  • Writing documentation
  • Development tools
  • Testing guide
  • Hacking guide
  • Tracing
  • Fault injection
  • Livepatching
  • Rust
  • Administration
  • Build system
  • Reporting issues
  • Userspace tools
  • Userspace API
  • Firmware
  • Firmware and Devicetree
  • CPU architectures
  • Unsorted documentation
  • Translations

This Page

  • Show Source

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.

Driver-specific parameters implemented¶

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.

Firmware Image types¶

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

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

  1. Flash secure bin file.

$ devlink dev flash pci/0000:02:00.0 file <Secure_bin_file_name>

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

Regions implemented¶

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

©The kernel development community. | Powered by Sphinx 5.3.0 & Alabaster 0.7.16 | Page source