jtag/drivers/bcm2835gpio: add peripheral_mem_dev config command
commit5c46a5de49f5dd14227b9444a5815eaaadd7ceb4
authorTomas Vanek <vanekt@fbl.cz>
Sat, 13 May 2023 04:39:48 +0000 (13 06:39 +0200)
committerTomas Vanek <vanekt@fbl.cz>
Wed, 24 May 2023 05:27:02 +0000 (24 05:27 +0000)
treee4f71f2e6dbe9e9ae72c44c8f7deba929f251b97
parentb41b368255d53d9561851900eeeba38b12720a82
jtag/drivers/bcm2835gpio: add peripheral_mem_dev config command

The bcm2835gpio driver preferred /dev/gpiomem for access to
memory mapped GPIO control and used /dev/mem as a fallback
only if it couldn't open /dev/gpiomem.

/dev/mem usually requires elevated rights or specific capabilities
of the opening process, so the fallback failed anyway.

Although /dev/gpiomem is the strongly preferred option with respect
to security, there could be also use cases which require /dev/mem
even if /dev/gpiomem is available (e.g. changing the GPIO pad
settings is necessary or testing/debugging OpenOCD).
It was difficult to handle such cases because they required
to block globally the system device /dev/gpiomem
(remove, rename or chmod).

Drop the fallback feature and select the memory device
by 'bcm2835gpio peripheral_mem_dev' configuration command.
Use /dev/gpiomem as a default.

Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Change-Id: I60e427bda795d7a13d55d61443590dd31d694832
Reviewed-on: https://review.openocd.org/c/openocd/+/7350
Tested-by: jenkins
Reviewed-by: Jonathan Bell <jonathan@raspberrypi.com>
doc/openocd.texi
src/jtag/drivers/bcm2835gpio.c