Lines Matching refs:chain

893 static struct uvc_control *uvc_find_control(struct uvc_video_chain *chain,  in uvc_find_control()  argument
906 list_for_each_entry(entity, &chain->entities, chain) { in uvc_find_control()
919 static int uvc_ctrl_populate_cache(struct uvc_video_chain *chain, in uvc_ctrl_populate_cache() argument
925 ret = uvc_query_ctrl(chain->dev, UVC_GET_DEF, ctrl->entity->id, in uvc_ctrl_populate_cache()
926 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
934 ret = uvc_query_ctrl(chain->dev, UVC_GET_MIN, ctrl->entity->id, in uvc_ctrl_populate_cache()
935 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
942 ret = uvc_query_ctrl(chain->dev, UVC_GET_MAX, ctrl->entity->id, in uvc_ctrl_populate_cache()
943 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
950 ret = uvc_query_ctrl(chain->dev, UVC_GET_RES, ctrl->entity->id, in uvc_ctrl_populate_cache()
951 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
963 uvc_warn_once(chain->dev, UVC_WARN_XU_GET_RES, in uvc_ctrl_populate_cache()
995 static int __uvc_ctrl_get(struct uvc_video_chain *chain, in __uvc_ctrl_get() argument
1005 ret = uvc_query_ctrl(chain->dev, UVC_GET_CUR, ctrl->entity->id, in __uvc_ctrl_get()
1006 chain->dev->intfnum, ctrl->info.selector, in __uvc_ctrl_get()
1021 static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, in __uvc_query_v4l2_ctrl() argument
1047 int ret = __uvc_ctrl_get(chain, master_ctrl, master_map, &val); in __uvc_query_v4l2_ctrl()
1056 int ret = uvc_ctrl_populate_cache(chain, ctrl); in __uvc_query_v4l2_ctrl()
1113 int uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, in uvc_query_v4l2_ctrl() argument
1120 ret = mutex_lock_interruptible(&chain->ctrl_mutex); in uvc_query_v4l2_ctrl()
1124 ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping); in uvc_query_v4l2_ctrl()
1130 ret = __uvc_query_v4l2_ctrl(chain, ctrl, mapping, v4l2_ctrl); in uvc_query_v4l2_ctrl()
1132 mutex_unlock(&chain->ctrl_mutex); in uvc_query_v4l2_ctrl()
1145 int uvc_query_v4l2_menu(struct uvc_video_chain *chain, in uvc_query_v4l2_menu() argument
1159 ret = mutex_lock_interruptible(&chain->ctrl_mutex); in uvc_query_v4l2_menu()
1163 ctrl = uvc_find_control(chain, query_menu->id, &mapping); in uvc_query_v4l2_menu()
1181 ret = uvc_ctrl_populate_cache(chain, ctrl); in uvc_query_v4l2_menu()
1197 mutex_unlock(&chain->ctrl_mutex); in uvc_query_v4l2_menu()
1205 static void uvc_ctrl_fill_event(struct uvc_video_chain *chain, in uvc_ctrl_fill_event() argument
1213 __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl); in uvc_ctrl_fill_event()
1235 static void uvc_ctrl_send_event(struct uvc_video_chain *chain, in uvc_ctrl_send_event() argument
1246 uvc_ctrl_fill_event(chain, &ev, ctrl, mapping, value, changes); in uvc_ctrl_send_event()
1261 static void uvc_ctrl_send_slave_event(struct uvc_video_chain *chain, in uvc_ctrl_send_slave_event() argument
1273 if (__uvc_ctrl_get(chain, ctrl, mapping, &val) == 0) in uvc_ctrl_send_slave_event()
1276 uvc_ctrl_send_event(chain, handle, ctrl, mapping, val, changes); in uvc_ctrl_send_slave_event()
1284 struct uvc_video_chain *chain = w->chain; in uvc_ctrl_status_event_work() local
1291 mutex_lock(&chain->ctrl_mutex); in uvc_ctrl_status_event_work()
1307 uvc_ctrl_send_slave_event(chain, handle, ctrl, in uvc_ctrl_status_event_work()
1311 uvc_ctrl_send_event(chain, handle, ctrl, mapping, value, in uvc_ctrl_status_event_work()
1315 mutex_unlock(&chain->ctrl_mutex); in uvc_ctrl_status_event_work()
1325 bool uvc_ctrl_status_event(struct urb *urb, struct uvc_video_chain *chain, in uvc_ctrl_status_event() argument
1328 struct uvc_device *dev = chain->dev; in uvc_ctrl_status_event()
1338 w->chain = chain; in uvc_ctrl_status_event()
1369 ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping); in uvc_ctrl_send_events()
1389 uvc_ctrl_send_slave_event(handle->chain, handle, ctrl, in uvc_ctrl_send_events()
1402 uvc_ctrl_send_event(handle->chain, handle, ctrl, mapping, in uvc_ctrl_send_events()
1414 ret = mutex_lock_interruptible(&handle->chain->ctrl_mutex); in uvc_ctrl_add_event()
1418 ctrl = uvc_find_control(handle->chain, sev->id, &mapping); in uvc_ctrl_add_event()
1430 if (__uvc_ctrl_get(handle->chain, ctrl, mapping, &val) == 0) in uvc_ctrl_add_event()
1433 uvc_ctrl_fill_event(handle->chain, &ev, ctrl, mapping, val, in uvc_ctrl_add_event()
1442 mutex_unlock(&handle->chain->ctrl_mutex); in uvc_ctrl_add_event()
1450 mutex_lock(&handle->chain->ctrl_mutex); in uvc_ctrl_del_event()
1452 mutex_unlock(&handle->chain->ctrl_mutex); in uvc_ctrl_del_event()
1486 int uvc_ctrl_begin(struct uvc_video_chain *chain) in uvc_ctrl_begin() argument
1488 return mutex_lock_interruptible(&chain->ctrl_mutex) ? -ERESTARTSYS : 0; in uvc_ctrl_begin()
1545 struct uvc_video_chain *chain = handle->chain; in __uvc_ctrl_commit() local
1550 list_for_each_entry(entity, &chain->entities, chain) { in __uvc_ctrl_commit()
1551 ret = uvc_ctrl_commit_entity(chain->dev, entity, rollback); in __uvc_ctrl_commit()
1559 mutex_unlock(&chain->ctrl_mutex); in __uvc_ctrl_commit()
1563 int uvc_ctrl_get(struct uvc_video_chain *chain, in uvc_ctrl_get() argument
1569 ctrl = uvc_find_control(chain, xctrl->id, &mapping); in uvc_ctrl_get()
1573 return __uvc_ctrl_get(chain, ctrl, mapping, &xctrl->value); in uvc_ctrl_get()
1579 struct uvc_video_chain *chain = handle->chain; in uvc_ctrl_set() local
1588 ctrl = uvc_find_control(chain, xctrl->id, &mapping); in uvc_ctrl_set()
1598 ret = uvc_ctrl_populate_cache(chain, ctrl); in uvc_ctrl_set()
1637 ret = uvc_ctrl_populate_cache(chain, ctrl); in uvc_ctrl_set()
1664 ret = uvc_query_ctrl(chain->dev, UVC_GET_CUR, in uvc_ctrl_set()
1665 ctrl->entity->id, chain->dev->intfnum, in uvc_ctrl_set()
1847 int uvc_xu_ctrl_query(struct uvc_video_chain *chain, in uvc_xu_ctrl_query() argument
1859 list_for_each_entry(entity, &chain->entities, chain) { in uvc_xu_ctrl_query()
1886 if (mutex_lock_interruptible(&chain->ctrl_mutex)) in uvc_xu_ctrl_query()
1889 ret = uvc_ctrl_init_xu_ctrl(chain->dev, ctrl); in uvc_xu_ctrl_query()
1951 ret = uvc_query_ctrl(chain->dev, xqry->query, xqry->unit, in uvc_xu_ctrl_query()
1952 chain->dev->intfnum, xqry->selector, data, size); in uvc_xu_ctrl_query()
1961 mutex_unlock(&chain->ctrl_mutex); in uvc_xu_ctrl_query()
2090 int uvc_ctrl_add_mapping(struct uvc_video_chain *chain, in uvc_ctrl_add_mapping() argument
2093 struct uvc_device *dev = chain->dev; in uvc_ctrl_add_mapping()
2108 list_for_each_entry(entity, &chain->entities, chain) { in uvc_ctrl_add_mapping()
2129 if (mutex_lock_interruptible(&chain->ctrl_mutex)) in uvc_ctrl_add_mapping()
2171 mutex_unlock(&chain->ctrl_mutex); in uvc_ctrl_add_mapping()