ioctl VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER
&manvol;
VIDIOC_DBG_G_REGISTERVIDIOC_DBG_S_REGISTERRead or write hardware registersint ioctlint fdint requeststruct v4l2_dbg_register *argpint ioctlint fdint requestconst struct v4l2_dbg_register
*argpArgumentsfd&fd;requestVIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTERargpDescriptionExperimentalThis 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 CONFIG_VIDEO_ADV_DEBUG option
to enable these ioctls.To write a register applications must initialize all fields
of a &v4l2-dbg-register; and call
VIDIOC_DBG_S_REGISTER with a pointer to this
structure. The match.type and
match.addr or match.name
fields select a chip on the TV
card, the 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
match.type,
match.addr or match.name and
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. On failure the structure remains
unchanged.When match.type is
V4L2_CHIP_MATCH_BRIDGE,
match.addr selects the nth non-sub-device chip
on the TV card. The number zero always selects the host chip, ⪚ the
chip connected to the PCI or USB bus. You can find out which chips are
present with the &VIDIOC-DBG-G-CHIP-INFO; ioctl.When match.type is
V4L2_CHIP_MATCH_I2C_DRIVER,
match.name contains the I2C driver name.
For instance
"saa7127" will match any chip
supported by the saa7127 driver, regardless of its &i2c; bus address.
When multiple chips supported by the same driver are present, the
effect of these ioctls is undefined. Again with the
&VIDIOC-DBG-G-CHIP-INFO; ioctl you can find out which &i2c; chips are
present.When match.type is
V4L2_CHIP_MATCH_I2C_ADDR,
match.addr selects a chip by its 7 bit &i2c;
bus address.When match.type is
V4L2_CHIP_MATCH_AC97,
match.addr selects the nth AC97 chip
on the TV card.When match.type is
V4L2_CHIP_MATCH_SUBDEV,
match.addr selects the nth sub-device.Success not guaranteedDue to a flaw in the Linux &i2c; bus driver these ioctls may
return successfully without actually reading or writing a register. To
catch the most likely failure we recommend a &VIDIOC-DBG-G-CHIP-INFO;
call confirming the presence of the selected &i2c; chip.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_G_REGISTER and
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 http://linuxtv.org/repo/ for
access instructions.
struct v4l2_dbg_match
&cs-ustr;
__u32typeSee for a list of
possible types.union(anonymous)__u32addrMatch a chip by this number, interpreted according
to the type field.charname[32]Match a chip by this name, interpreted according
to the type field.
struct v4l2_dbg_registerstruct v4l2_dbg_matchmatchHow to match the chip, see .__u64regA register number.__u64valThe value read from, or to be written into the
register.
Chip Match Types
&cs-def;
V4L2_CHIP_MATCH_BRIDGE0Match the nth chip on the card, zero for the
bridge chip. Does not match sub-devices.V4L2_CHIP_MATCH_I2C_DRIVER1Match an &i2c; chip by its driver name.V4L2_CHIP_MATCH_I2C_ADDR2Match a chip by its 7 bit &i2c; bus address.V4L2_CHIP_MATCH_AC973Match the nth anciliary AC97 chip.V4L2_CHIP_MATCH_SUBDEV4Match the nth sub-device.
&return-value;
EPERMInsufficient permissions. Root privileges are required
to execute these ioctls.