aboutsummaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2014-07-21 09:45:42 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-07-25 18:18:51 -0400
commit5d0360a4f027576e5419d4a7c711c9ca0f1be8ca (patch)
treeb8ebb9afdd68b7bef28da38986d1bbb4a2fcc3e6 /include/media
parent592d1349f719db7c071ba9f4ade272be114b4196 (diff)
[media] v4l2-ctrls: add support for setting string controls
Rather than always having to use a v4l2_ext_control struct to set a control value from within a driver, switch to just setting the new value. This is faster and it makes it possible to set more complex types such as a string control as is added by this patch. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/v4l2-ctrls.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index 8c4edd69fa4b..d6540d201764 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -737,6 +737,30 @@ static inline int v4l2_ctrl_s_ctrl_int64(struct v4l2_ctrl *ctrl, s64 val)
737 return rval; 737 return rval;
738} 738}
739 739
740/** __v4l2_ctrl_s_ctrl_string() - Unlocked variant of v4l2_ctrl_s_ctrl_string(). */
741int __v4l2_ctrl_s_ctrl_string(struct v4l2_ctrl *ctrl, const char *s);
742
743/** v4l2_ctrl_s_ctrl_string() - Helper function to set a control's string value from within a driver.
744 * @ctrl: The control.
745 * @s: The new string.
746 *
747 * This set the control's new string safely by going through the control
748 * framework. This function will lock the control's handler, so it cannot be
749 * used from within the &v4l2_ctrl_ops functions.
750 *
751 * This function is for string type controls only.
752 */
753static inline int v4l2_ctrl_s_ctrl_string(struct v4l2_ctrl *ctrl, const char *s)
754{
755 int rval;
756
757 v4l2_ctrl_lock(ctrl);
758 rval = __v4l2_ctrl_s_ctrl_string(ctrl, s);
759 v4l2_ctrl_unlock(ctrl);
760
761 return rval;
762}
763
740/* Internal helper functions that deal with control events. */ 764/* Internal helper functions that deal with control events. */
741extern const struct v4l2_subscribed_event_ops v4l2_ctrl_sub_ev_ops; 765extern const struct v4l2_subscribed_event_ops v4l2_ctrl_sub_ev_ops;
742void v4l2_ctrl_replace(struct v4l2_event *old, const struct v4l2_event *new); 766void v4l2_ctrl_replace(struct v4l2_event *old, const struct v4l2_event *new);