diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-21 19:50:31 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-21 19:50:31 -0500 |
commit | 13a3cec8443290b082af2a5254562aca247fe591 (patch) | |
tree | 5c873a2c9333be348266234ac5d7101caa1b6d7d /include/media/v4l2-subdev.h | |
parent | 973c9f4f49ca96a53bcf6384c4c59ccd26c33906 (diff) | |
parent | 88914bdf8c677ebd7e797adac05e47303fd6ac77 (diff) |
Merge branch 'media_fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'media_fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (101 commits)
[media] staging/lirc: fix mem leaks and ptr err usage
[media] hdpvr: reduce latency of i2c read/write w/recycled buffer
[media] hdpvr: enable IR part
[media] rc/mceusb: timeout should be in ns, not us
[media] v4l2-device: fix 'use-after-freed' oops
[media] v4l2-dev: don't memset video_device.dev
[media] zoran: use video_device_alloc instead of kmalloc
[media] w9966: zero device state after a detach
[media] v4l: Fix a use-before-set in the control framework
[media] v4l: Include linux/videodev2.h in media/v4l2-ctrls.h
[media] DocBook/v4l: update V4L2 revision and update copyright years
[media] DocBook/v4l: fix validation error in dev-rds.xml
[media] v4l2-ctrls: queryctrl shouldn't attempt to replace V4L2_CID_PRIVATE_BASE IDs
[media] v4l2-ctrls: fix missing 'read-only' check
[media] pvrusb2: Provide more information about IR units to lirc_zilog and ir-kbd-i2c
[media] ir-kbd-i2c: Add back defaults setting for Zilog Z8's at addr 0x71
[media] lirc_zilog: Update TODO.lirc_zilog
[media] lirc_zilog: Add Andy Walls to copyright notice and authors list
[media] lirc_zilog: Remove useless struct i2c_driver.command function
[media] lirc_zilog: Remove unneeded tests for existence of the IR Tx function
...
Diffstat (limited to 'include/media/v4l2-subdev.h')
-rw-r--r-- | include/media/v4l2-subdev.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index b0316a7cf08d..daf1e57d9b26 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h | |||
@@ -106,10 +106,7 @@ struct v4l2_subdev_io_pin_config { | |||
106 | u8 strength; /* Pin drive strength */ | 106 | u8 strength; /* Pin drive strength */ |
107 | }; | 107 | }; |
108 | 108 | ||
109 | /* s_config: if set, then it is always called by the v4l2_i2c_new_subdev* | 109 | /* |
110 | functions after the v4l2_subdev was registered. It is used to pass | ||
111 | platform data to the subdev which can be used during initialization. | ||
112 | |||
113 | s_io_pin_config: configure one or more chip I/O pins for chips that | 110 | s_io_pin_config: configure one or more chip I/O pins for chips that |
114 | multiplex different internal signal pads out to IO pins. This function | 111 | multiplex different internal signal pads out to IO pins. This function |
115 | takes a pointer to an array of 'n' pin configuration entries, one for | 112 | takes a pointer to an array of 'n' pin configuration entries, one for |
@@ -141,7 +138,6 @@ struct v4l2_subdev_io_pin_config { | |||
141 | struct v4l2_subdev_core_ops { | 138 | struct v4l2_subdev_core_ops { |
142 | int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip); | 139 | int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip); |
143 | int (*log_status)(struct v4l2_subdev *sd); | 140 | int (*log_status)(struct v4l2_subdev *sd); |
144 | int (*s_config)(struct v4l2_subdev *sd, int irq, void *platform_data); | ||
145 | int (*s_io_pin_config)(struct v4l2_subdev *sd, size_t n, | 141 | int (*s_io_pin_config)(struct v4l2_subdev *sd, size_t n, |
146 | struct v4l2_subdev_io_pin_config *pincfg); | 142 | struct v4l2_subdev_io_pin_config *pincfg); |
147 | int (*init)(struct v4l2_subdev *sd, u32 val); | 143 | int (*init)(struct v4l2_subdev *sd, u32 val); |
@@ -415,6 +411,21 @@ struct v4l2_subdev_ops { | |||
415 | const struct v4l2_subdev_sensor_ops *sensor; | 411 | const struct v4l2_subdev_sensor_ops *sensor; |
416 | }; | 412 | }; |
417 | 413 | ||
414 | /* | ||
415 | * Internal ops. Never call this from drivers, only the v4l2 framework can call | ||
416 | * these ops. | ||
417 | * | ||
418 | * registered: called when this subdev is registered. When called the v4l2_dev | ||
419 | * field is set to the correct v4l2_device. | ||
420 | * | ||
421 | * unregistered: called when this subdev is unregistered. When called the | ||
422 | * v4l2_dev field is still set to the correct v4l2_device. | ||
423 | */ | ||
424 | struct v4l2_subdev_internal_ops { | ||
425 | int (*registered)(struct v4l2_subdev *sd); | ||
426 | void (*unregistered)(struct v4l2_subdev *sd); | ||
427 | }; | ||
428 | |||
418 | #define V4L2_SUBDEV_NAME_SIZE 32 | 429 | #define V4L2_SUBDEV_NAME_SIZE 32 |
419 | 430 | ||
420 | /* Set this flag if this subdev is a i2c device. */ | 431 | /* Set this flag if this subdev is a i2c device. */ |
@@ -431,6 +442,8 @@ struct v4l2_subdev { | |||
431 | u32 flags; | 442 | u32 flags; |
432 | struct v4l2_device *v4l2_dev; | 443 | struct v4l2_device *v4l2_dev; |
433 | const struct v4l2_subdev_ops *ops; | 444 | const struct v4l2_subdev_ops *ops; |
445 | /* Never call these internal ops from within a driver! */ | ||
446 | const struct v4l2_subdev_internal_ops *internal_ops; | ||
434 | /* The control handler of this subdev. May be NULL. */ | 447 | /* The control handler of this subdev. May be NULL. */ |
435 | struct v4l2_ctrl_handler *ctrl_handler; | 448 | struct v4l2_ctrl_handler *ctrl_handler; |
436 | /* name must be unique */ | 449 | /* name must be unique */ |