mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
V4L/DVB: v4l2_subdev: Add s_io_pin_config to v4l2_subdev_core_ops
Add a method to v4l2_sudev_core_ops to allow bridge drivers to manage what signal pads/functions are routed out to multiplexed IO pins on a pin by pin basis. The interface also allows specifying initial output settings for pins and disabling an IO pin altogether. Signed-off-by: Andy Walls <awalls@md.metrocast.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
e9e5cf4727
commit
66752f8396
1 changed files with 23 additions and 0 deletions
|
@ -90,10 +90,31 @@ struct v4l2_decode_vbi_line {
|
||||||
not yet implemented) since ops provide proper type-checking.
|
not yet implemented) since ops provide proper type-checking.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Subdevice external IO pin configuration */
|
||||||
|
#define V4L2_SUBDEV_IO_PIN_DISABLE (1 << 0) /* ENABLE assumed */
|
||||||
|
#define V4L2_SUBDEV_IO_PIN_OUTPUT (1 << 1)
|
||||||
|
#define V4L2_SUBDEV_IO_PIN_INPUT (1 << 2)
|
||||||
|
#define V4L2_SUBDEV_IO_PIN_SET_VALUE (1 << 3) /* Set output value */
|
||||||
|
#define V4L2_SUBDEV_IO_PIN_ACTIVE_LOW (1 << 4) /* ACTIVE HIGH assumed */
|
||||||
|
|
||||||
|
struct v4l2_subdev_io_pin_config {
|
||||||
|
u32 flags; /* V4L2_SUBDEV_IO_PIN_* flags for this pin's config */
|
||||||
|
u8 pin; /* Chip external IO pin to configure */
|
||||||
|
u8 function; /* Internal signal pad/function to route to IO pin */
|
||||||
|
u8 value; /* Initial value for pin - e.g. GPIO output value */
|
||||||
|
u8 strength; /* Pin drive strength */
|
||||||
|
};
|
||||||
|
|
||||||
/* s_config: if set, then it is always called by the v4l2_i2c_new_subdev*
|
/* s_config: if set, then it is always called by the v4l2_i2c_new_subdev*
|
||||||
functions after the v4l2_subdev was registered. It is used to pass
|
functions after the v4l2_subdev was registered. It is used to pass
|
||||||
platform data to the subdev which can be used during initialization.
|
platform data to the subdev which can be used during initialization.
|
||||||
|
|
||||||
|
s_io_pin_config: configure one or more chip I/O pins for chips that
|
||||||
|
multiplex different internal signal pads out to IO pins. This function
|
||||||
|
takes a pointer to an array of 'n' pin configuration entries, one for
|
||||||
|
each pin being configured. This function could be called at times
|
||||||
|
other than just subdevice initialization.
|
||||||
|
|
||||||
init: initialize the sensor registors to some sort of reasonable default
|
init: initialize the sensor registors to some sort of reasonable default
|
||||||
values. Do not use for new drivers and should be removed in existing
|
values. Do not use for new drivers and should be removed in existing
|
||||||
drivers.
|
drivers.
|
||||||
|
@ -115,6 +136,8 @@ struct v4l2_subdev_core_ops {
|
||||||
int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip);
|
int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip);
|
||||||
int (*log_status)(struct v4l2_subdev *sd);
|
int (*log_status)(struct v4l2_subdev *sd);
|
||||||
int (*s_config)(struct v4l2_subdev *sd, int irq, void *platform_data);
|
int (*s_config)(struct v4l2_subdev *sd, int irq, void *platform_data);
|
||||||
|
int (*s_io_pin_config)(struct v4l2_subdev *sd, size_t n,
|
||||||
|
struct v4l2_subdev_io_pin_config *pincfg);
|
||||||
int (*init)(struct v4l2_subdev *sd, u32 val);
|
int (*init)(struct v4l2_subdev *sd, u32 val);
|
||||||
int (*load_fw)(struct v4l2_subdev *sd);
|
int (*load_fw)(struct v4l2_subdev *sd);
|
||||||
int (*reset)(struct v4l2_subdev *sd, u32 val);
|
int (*reset)(struct v4l2_subdev *sd, u32 val);
|
||||||
|
|
Loading…
Reference in a new issue