Skip to content

Commit

Permalink
tcl/interface: Find proper alias for RP1 on Raspberry Pi 5
Browse files Browse the repository at this point in the history
Previously, Linux assigned gpiochip numbers sequentially depending on
when the chip driver was probed. As RP1 is on the end of a PCIe link, it
is probed later than the on-board chips (including expanders connected
over SPI/I2C). This meant that RP1's gpiochip assignment was at an
offset that could potentially change.

A downstream kernel patch now assigns fixed offsets for RP1 and the
onboard gpiochips. Query the device tree to get proper GPIO_CHIP index.

Change-Id: I759978d4b3021c815a7d9febb41961cd1d3d185c
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/8650
Reviewed-by: Jonathan Bell <jonathan@raspberrypi.com>
Tested-by: jenkins
  • Loading branch information
tom-van committed Dec 29, 2024
1 parent 15d90dd commit 5284a5f
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion tcl/interface/raspberrypi5-gpiod.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,19 @@ proc read_file { name } {
return $result
}

proc find_rp1_alias {} {
foreach f [glob -directory "/proc/device-tree/aliases" "gpio\[0-9\]"] {
if {[string match "*/rp1/*" [read_file $f]]} {
return $f
}
}
}

set pcie_aspm [read_file /sys/module/pcie_aspm/parameters/policy]
if {![string match {*\[performance\]*} $pcie_aspm]} {
echo "Warn : Switch PCIe power saving off or the first couple of pulses gets clocked as fast as 20 MHz"
echo "Warn : Issue 'echo performance | sudo tee /sys/module/pcie_aspm/parameters/policy'"
}

set GPIO_CHIP 4
set GPIO_CHIP [string index [find_rp1_alias] end]
source [find interface/raspberrypi-gpio-connector.cfg]

0 comments on commit 5284a5f

Please # to comment.