Skip to content

Commit

Permalink
base-files: armsr: add script to migrate GPIO switches on Ten64 board
Browse files Browse the repository at this point in the history
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 <matt@traverse.com.au>
  • Loading branch information
mcbridematt committed Apr 1, 2024
1 parent 18800ca commit 47a7d0a
Showing 1 changed file with 37 additions and 0 deletions.
@@ -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

0 comments on commit 47a7d0a

Please sign in to comment.