forked from Openwrt/openwrt
5f609d8960
A change in kernel 6.2[1] caused the base numbers of GPIOs to change significantly on some architectures like aarch64. We have to number our GPIOs accordingly. Ideally the board.d scripts should look through sysfs to find the basenum (like cat "/sys/devices/platform/soc/2000000.i2c/ i2c-0/0-0076/gpio/gpiochip640/base"), but the problem is that this occurs before modules are loaded, meaning I2C and other runtime devices may be missing. Signed-off-by: Mathew McBride <matt@traverse.com.au> [1] https://lore.kernel.org/lkml/cover.1662116601.git.christophe.leroy@csgroup.eu/T/
32 lines
973 B
Bash
32 lines
973 B
Bash
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
. /lib/functions/uci-defaults.sh
|
|
|
|
KERNEL_MAJOR=$(uname -r | awk -F '.' '{print $1}')
|
|
KERNEL_MINOR=$(uname -r | awk -F '.' '{print $2}')
|
|
|
|
board_config_update
|
|
|
|
board=$(board_name)
|
|
|
|
case "$board" in
|
|
traverse,ten64)
|
|
if [ "${KERNEL_MAJOR}" -ge "6" ] && [ "${KERNEL_MINOR}" -ge "6" ]; then
|
|
I2C_GPIO_BASE=640
|
|
else
|
|
I2C_GPIO_BASE=368
|
|
fi
|
|
ucidef_add_gpio_switch "lte_reset" "Cell Modem Reset" "$(($I2C_GPIO_BASE + 8))"
|
|
ucidef_add_gpio_switch "lte_power" "Cell Modem Power" "$(($I2C_GPIO_BASE + 9))"
|
|
ucidef_add_gpio_switch "lte_disable" "Cell Modem Airplane mode" "$((I2C_GPIO_BASE + 10))"
|
|
ucidef_add_gpio_switch "gnss_disable" "Cell Modem Disable GNSS receiver" "$(($I2C_GPIO_BASE + 11))"
|
|
ucidef_add_gpio_switch "lower_sfp_txidsable" "Lower SFP+ TX Disable" "$(($I2C_GPIO_BASE + 1))"
|
|
ucidef_add_gpio_switch "upper_sfp_txdisable" "Upper SFP+ TX Disable" "$(($I2C_GPIO_BASE + 5))"
|
|
;;
|
|
esac
|
|
|
|
board_config_flush
|
|
|
|
exit 0
|