VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER — Read or write hardware registers
|struct v4l2_dbg_register *argp|
|const struct v4l2_dbg_register
File descriptor returned by
This is an experimental interface and may change in the future.
For driver debugging purposes these ioctls allow test applications to access hardware registers directly. Regular applications must not use them.
Since writing or even reading registers can jeopardize the
system security, its stability and damage the hardware, both ioctls
require superuser privileges. Additionally the Linux kernel must be
compiled with the
to enable these ioctls.
To write a register applications must initialize all fields
of a struct v4l2_dbg_register except for
size and call
VIDIOC_DBG_S_REGISTER with a pointer to this
fields select a chip on the TV
reg field specifies a register
number and the
val field the value to be
written into the register.
To read a register applications must initialize the
reg fields, and call
VIDIOC_DBG_G_REGISTER with a pointer to this
structure. On success the driver stores the register value in the
val field and the size (in bytes) of the
match.addr selects the nth non-sub-device chip
on the TV card. The number zero always selects the host chip, e. g. the
chip connected to the PCI or USB bus. You can find out which chips are
present with the
match.addr selects the nth sub-device.
These ioctls are optional, not all drivers may support them.
However when a driver supports these ioctls it must also support
VIDIOC_DBG_G_CHIP_INFO. Conversely it may support
VIDIOC_DBG_G_CHIP_INFO but not these ioctls.
VIDIOC_DBG_S_REGISTER were introduced in Linux
2.6.21, but their API was changed to the one described here in kernel 2.6.29.
We recommended the v4l2-dbg utility over calling these ioctls directly. It is available from the LinuxTV v4l-dvb repository; see https://linuxtv.org/repo/ for access instructions.
Table A.7. struct v4l2_dbg_match
|__u32||See Table A.9, “Chip Match Types” for a list of possible types.|
|__u32||Match a chip by this number, interpreted according
to the |
|char||Match a chip by this name, interpreted according
to the |
Table A.8. struct v4l2_dbg_register
|struct v4l2_dbg_match||How to match the chip, see Table A.7, “struct v4l2_dbg_match”.|
|__u32||The register size in bytes.|
|__u64||A register number.|
|__u64||The value read from, or to be written into the register.|
Table A.9. Chip Match Types
|0||Match the nth chip on the card, zero for the bridge chip. Does not match sub-devices.|
|4||Match the nth sub-device.|
On success 0 is returned, on error -1 and the
errno variable is set appropriately. The generic error codes are described at the Generic Error Codes chapter.
Insufficient permissions. Root privileges are required to execute these ioctls.