From 47a7d0a2071b8732f405d75be239b001c6642eef Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Mon, 1 Apr 2024 14:44:47 +1100 Subject: [PATCH] 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 --- .../etc/uci-defaults/05-migrate-ten64-gpio | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 target/linux/armsr/base-files/etc/uci-defaults/05-migrate-ten64-gpio diff --git a/target/linux/armsr/base-files/etc/uci-defaults/05-migrate-ten64-gpio b/target/linux/armsr/base-files/etc/uci-defaults/05-migrate-ten64-gpio new file mode 100644 index 00000000000000..dc8648e57059ab --- /dev/null +++ b/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 \ No newline at end of file