Просмотр исходного кода

base-files: armsr: add script to migrate GPIO switches on Ten64 board

Due to a change in kernel 6.2, the GPIO numbers on certain
architectures (including arm64) have changed. This script
will update any defined GPIO switches to the new numbering.

See https://lists.openwrt.org/pipermail/openwrt-devel/2024-March/042448.html
for more information.

In the future, the GPIO switch mechanism will likely be
replaced with something using libgpiod.

Signed-off-by: Mathew McBride <[email protected]>
Mathew McBride 1 год назад
Родитель
Сommit
ffbc4c897f
1 измененных файлов с 37 добавлено и 0 удалено
  1. 37 0
      target/linux/armsr/base-files/etc/uci-defaults/05-migrate-ten64-gpio

+ 37 - 0
target/linux/armsr/base-files/etc/uci-defaults/05-migrate-ten64-gpio

@@ -0,0 +1,37 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# This script migrates GPIO switch pin numbers
+# from kernel versions prior to 6.6
+# See https://lists.openwrt.org/pipermail/openwrt-devel/2024-March/042448.html
+
+. /lib/functions.sh
+
+ten64_update_gpioswitch_num() {
+	local section="$1"
+	config_get gpio_pin  "${section}" gpio_pin
+	config_get gpio_name "${section}" name
+	if [ -z "${gpio_pin}" ]; then
+		return
+	fi
+	local this_pin_name=$(uci get "system.${section}.name")
+	if [ "${gpio_pin}" -lt 640 ]; then
+		new_pin_value=$(( $gpio_pin + 272 ))
+		uci set "system.${section}.gpio_pin=${new_pin_value}"
+	fi
+}
+
+board=$(board_name)
+if [ "${board}" != "traverse,ten64" ]; then
+	exit 0
+fi
+
+KERNEL_MINOR=$(uname -r | awk -F '.' '{print $2}')
+if [ "${KERNEL_MINOR}" -lt "6" ]; then
+	exit 0
+fi
+
+config_load system
+config_foreach ten64_update_gpioswitch_num gpio_switch
+
+exit 0