Skip to content

Commit

Permalink
base-files: upgrade: nand: allow custom fw extraction in nand_do_upgr…
Browse files Browse the repository at this point in the history
…ade()

By default nand_do_upgrade() can only deal with raw and gzipped firmware
files. Vendors often use custom firmware containers. Allow passing
custom extraction command to allow using nand_do_upgrade() with vendor
firmwares.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  • Loading branch information
Rafał Miłecki committed Jul 26, 2024
1 parent 73832e1 commit a67b20e
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions package/base-files/files/lib/upgrade/nand.sh
Original file line number Diff line number Diff line change
Expand Up @@ -387,9 +387,11 @@ nand_verify_tar_file() {

nand_do_flash_file() {
local file="$1"
local cmd="$2"
local file_type

local cmd="$(identify_if_gzip "$file")cat"
local file_type="$(identify "$file" "$cmd" "")"
[ -z "$cmd" ] && cmd="$(identify_if_gzip "$file")cat"
file_type="$(identify "$file" "$cmd" "")"

[ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART=rootfs

Expand Down Expand Up @@ -423,17 +425,22 @@ nand_do_restore_config() {
# Supported firmware containers:
# 1. Raw file
# 2. Gzip
# 3. Custom (requires passing extracting command)
#
# Supported data formats:
# 1. Tar with kernel/rootfs
# 2. UBI image (built using "ubinized")
# 3. UBIFS image (to update UBI volume with)
# 4. FIT image (to update UBI volume with)
#
# $(1): firmware file path
# $(2): (optional) pipe command to extract firmware
nand_do_upgrade() {
local file="$1"
local cmd="$2"

sync
nand_do_flash_file "$file" && nand_do_upgrade_success
nand_do_flash_file "$file" "$cmd" && nand_do_upgrade_success
nand_do_upgrade_failed
}

Expand Down

0 comments on commit a67b20e

Please sign in to comment.