[openwrt/openwrt] base-files: add minimal mmc support

LEDE Commits lede-commits at lists.infradead.org
Sun Oct 31 17:21:53 PDT 2021


chunkeey pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/6e137943442fb0ab66c34462fa19e5a4260eddd5

commit 6e137943442fb0ab66c34462fa19e5a4260eddd5
Author: Davide Fioravanti <pantanastyle at gmail.com>
AuthorDate: Wed Sep 2 01:18:16 2020 +0200

    base-files: add minimal mmc support
    
    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 at gmail.com>
    Signed-off-by: Robert Marko <robimarko at gmail.com>
    [replace dd with caldata_dd, moved sysupgrade mmc to orbi]
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 package/base-files/files/lib/functions.sh         | 13 +++++++++++++
 package/base-files/files/lib/functions/caldata.sh | 13 +++++++++++++
 package/base-files/files/lib/functions/system.sh  |  9 +++++++++
 3 files changed, 35 insertions(+)

diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index a5b23eb135..e56e4637f0 100644
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -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"
diff --git a/package/base-files/files/lib/functions/caldata.sh b/package/base-files/files/lib/functions/caldata.sh
index 2177cf8415..d7b88c7dce 100644
--- a/package/base-files/files/lib/functions/caldata.sh
+++ b/package/base-files/files/lib/functions/caldata.sh
@@ -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
diff --git a/package/base-files/files/lib/functions/system.sh b/package/base-files/files/lib/functions/system.sh
index 80e417182a..0ac2912014 100644
--- a/package/base-files/files/lib/functions/system.sh
+++ b/package/base-files/files/lib/functions/system.sh
@@ -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



More information about the lede-commits mailing list