Lines Matching defs:chain
893 static struct uvc_control *uvc_find_control(struct uvc_video_chain *chain,
906 list_for_each_entry(entity, &chain->entities, chain) {
919 static int uvc_ctrl_populate_cache(struct uvc_video_chain *chain,
925 ret = uvc_query_ctrl(chain->dev, UVC_GET_DEF, ctrl->entity->id,
926 chain->dev->intfnum, ctrl->info.selector,
934 ret = uvc_query_ctrl(chain->dev, UVC_GET_MIN, ctrl->entity->id,
935 chain->dev->intfnum, ctrl->info.selector,
942 ret = uvc_query_ctrl(chain->dev, UVC_GET_MAX, ctrl->entity->id,
943 chain->dev->intfnum, ctrl->info.selector,
950 ret = uvc_query_ctrl(chain->dev, UVC_GET_RES, ctrl->entity->id,
951 chain->dev->intfnum, ctrl->info.selector,
963 uvc_warn_once(chain->dev, UVC_WARN_XU_GET_RES,
995 static int __uvc_ctrl_get(struct uvc_video_chain *chain,
1005 ret = uvc_query_ctrl(chain->dev, UVC_GET_CUR, ctrl->entity->id,
1006 chain->dev->intfnum, ctrl->info.selector,
1021 static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain,
1047 int ret = __uvc_ctrl_get(chain, master_ctrl, master_map, &val);
1056 int ret = uvc_ctrl_populate_cache(chain, ctrl);
1113 int uvc_query_v4l2_ctrl(struct uvc_video_chain *chain,
1120 ret = mutex_lock_interruptible(&chain->ctrl_mutex);
1124 ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping);
1130 ret = __uvc_query_v4l2_ctrl(chain, ctrl, mapping, v4l2_ctrl);
1132 mutex_unlock(&chain->ctrl_mutex);
1145 int uvc_query_v4l2_menu(struct uvc_video_chain *chain,
1159 ret = mutex_lock_interruptible(&chain->ctrl_mutex);
1163 ctrl = uvc_find_control(chain, query_menu->id, &mapping);
1181 ret = uvc_ctrl_populate_cache(chain, ctrl);
1197 mutex_unlock(&chain->ctrl_mutex);
1205 static void uvc_ctrl_fill_event(struct uvc_video_chain *chain,
1213 __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl);
1235 static void uvc_ctrl_send_event(struct uvc_video_chain *chain,
1246 uvc_ctrl_fill_event(chain, &ev, ctrl, mapping, value, changes);
1261 static void uvc_ctrl_send_slave_event(struct uvc_video_chain *chain,
1273 if (__uvc_ctrl_get(chain, ctrl, mapping, &val) == 0)
1276 uvc_ctrl_send_event(chain, handle, ctrl, mapping, val, changes);
1279 void uvc_ctrl_status_event(struct uvc_video_chain *chain,
1286 mutex_lock(&chain->ctrl_mutex);
1302 uvc_ctrl_send_slave_event(chain, handle, ctrl,
1306 uvc_ctrl_send_event(chain, handle, ctrl, mapping, value,
1310 mutex_unlock(&chain->ctrl_mutex);
1320 uvc_ctrl_status_event(w->chain, w->ctrl, w->data);
1334 bool uvc_ctrl_status_event_async(struct urb *urb, struct uvc_video_chain *chain,
1337 struct uvc_device *dev = chain->dev;
1347 w->chain = chain;
1378 ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping);
1398 uvc_ctrl_send_slave_event(handle->chain, handle, ctrl,
1411 uvc_ctrl_send_event(handle->chain, handle, ctrl, mapping,
1423 ret = mutex_lock_interruptible(&handle->chain->ctrl_mutex);
1427 ctrl = uvc_find_control(handle->chain, sev->id, &mapping);
1439 if (__uvc_ctrl_get(handle->chain, ctrl, mapping, &val) == 0)
1442 uvc_ctrl_fill_event(handle->chain, &ev, ctrl, mapping, val,
1451 mutex_unlock(&handle->chain->ctrl_mutex);
1459 mutex_lock(&handle->chain->ctrl_mutex);
1461 mutex_unlock(&handle->chain->ctrl_mutex);
1495 int uvc_ctrl_begin(struct uvc_video_chain *chain)
1497 return mutex_lock_interruptible(&chain->ctrl_mutex) ? -ERESTARTSYS : 0;
1554 struct uvc_video_chain *chain = handle->chain;
1559 list_for_each_entry(entity, &chain->entities, chain) {
1560 ret = uvc_ctrl_commit_entity(chain->dev, entity, rollback);
1568 mutex_unlock(&chain->ctrl_mutex);
1572 int uvc_ctrl_get(struct uvc_video_chain *chain,
1578 ctrl = uvc_find_control(chain, xctrl->id, &mapping);
1582 return __uvc_ctrl_get(chain, ctrl, mapping, &xctrl->value);
1588 struct uvc_video_chain *chain = handle->chain;
1597 ctrl = uvc_find_control(chain, xctrl->id, &mapping);
1607 ret = uvc_ctrl_populate_cache(chain, ctrl);
1646 ret = uvc_ctrl_populate_cache(chain, ctrl);
1673 ret = uvc_query_ctrl(chain->dev, UVC_GET_CUR,
1674 ctrl->entity->id, chain->dev->intfnum,
1856 int uvc_xu_ctrl_query(struct uvc_video_chain *chain,
1870 list_for_each_entry(entity, &chain->entities, chain) {
1900 if (mutex_lock_interruptible(&chain->ctrl_mutex))
1903 ret = uvc_ctrl_init_xu_ctrl(chain->dev, ctrl);
1965 ret = uvc_query_ctrl(chain->dev, xqry->query, xqry->unit,
1966 chain->dev->intfnum, xqry->selector, data, size);
1975 mutex_unlock(&chain->ctrl_mutex);
2090 int uvc_ctrl_add_mapping(struct uvc_video_chain *chain,
2093 struct uvc_device *dev = chain->dev;
2107 /* Search for the matching (GUID/CS) control on the current chain */
2108 list_for_each_entry(entity, &chain->entities, chain) {
2129 if (mutex_lock_interruptible(&chain->ctrl_mutex))
2171 mutex_unlock(&chain->ctrl_mutex);