base-files: add minimal mmc support
authorDavide Fioravanti <pantanastyle@gmail.com>
Tue, 1 Sep 2020 23:18:16 +0000 (01:18 +0200)
committerChristian Lamparter <chunkeey@gmail.com>
Sun, 31 Oct 2021 23:56:51 +0000 (00:56 +0100)
Added minimal mmc support for helper functions:

 - find_mmc_part: Look for a given partition name. Returns the
coresponding partition path
 - caldata_extract_mmc: Look for a given partition name and then
extracts the calibration data
 - mmc_get_mac_binary: Returns the mac address from a given partition
name and offset

Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
Signed-off-by: Robert Marko <robimarko@gmail.com>
[replace dd with caldata_dd, moved sysupgrade mmc to orbi]
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
package/base-files/files/lib/functions.sh
package/base-files/files/lib/functions/caldata.sh
package/base-files/files/lib/functions/system.sh

index a5b23eb1350f5233c7c7a045367e9d2df7574c4e..e56e4637f0116f9f4e7fdf31f47ab77a47f5f75e 100644 (file)
@@ -330,6 +330,19 @@ find_mtd_part() {
        echo "${INDEX:+$PREFIX$INDEX}"
 }
 
+find_mmc_part() {
+       local DEVNAME PARTNAME
+
+       if grep -q "$1" /proc/mtd; then
+               echo "" && return 0
+       fi
+
+       for DEVNAME in /sys/block/mmcblk*/mmcblk*p*; do
+               PARTNAME="$(grep PARTNAME ${DEVNAME}/uevent | cut -f2 -d'=')"
+               [ "$PARTNAME" = "$1" ] && echo "/dev/$(basename $DEVNAME)" && return 0
+       done
+}
+
 group_add() {
        local name="$1"
        local gid="$2"
index 2177cf8415326e2906460c0a7229e9fa3b484889..d7b88c7dcef23f7c141bd1434e3949b20f42ea65 100644 (file)
@@ -48,6 +48,19 @@ caldata_extract_ubi() {
                caldata_die "failed to extract calibration data from $ubi"
 }
 
+caldata_extract_mmc() {
+       local part=$1
+       local offset=$(($2))
+       local count=$(($3))
+       local mmc_part
+
+       mmc_part=$(find_mmc_part $part)
+       [ -n "$mmc_part" ] || caldata_die "no mmc partition found for partition $part"
+
+       caldata_dd $mmc_part /lib/firmware/$FIRMWARE $count $offset || \
+               caldata_die "failed to extract calibration data from $mmc_part"
+}
+
 caldata_extract_reverse() {
        local part=$1
        local offset=$2
index 80e417182a269326e560524b4136def819703257..0ac291201452a01ab1ba4d96188990387f83576e 100644 (file)
@@ -135,6 +135,15 @@ mtd_get_part_size() {
        done < /proc/mtd
 }
 
+mmc_get_mac_binary() {
+       local part_name="$1"
+       local offset="$2"
+       local part
+
+       part=$(find_mmc_part "$part_name")
+       get_mac_binary "$part" "$offset"
+}
+
 macaddr_add() {
        local mac=$1
        local val=$2