Lines Matching refs:chain
892 static struct uvc_control *uvc_find_control(struct uvc_video_chain *chain, in uvc_find_control() argument
905 list_for_each_entry(entity, &chain->entities, chain) { in uvc_find_control()
918 static int uvc_ctrl_populate_cache(struct uvc_video_chain *chain, in uvc_ctrl_populate_cache() argument
924 ret = uvc_query_ctrl(chain->dev, UVC_GET_DEF, ctrl->entity->id, in uvc_ctrl_populate_cache()
925 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
933 ret = uvc_query_ctrl(chain->dev, UVC_GET_MIN, ctrl->entity->id, in uvc_ctrl_populate_cache()
934 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
941 ret = uvc_query_ctrl(chain->dev, UVC_GET_MAX, ctrl->entity->id, in uvc_ctrl_populate_cache()
942 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
949 ret = uvc_query_ctrl(chain->dev, UVC_GET_RES, ctrl->entity->id, in uvc_ctrl_populate_cache()
950 chain->dev->intfnum, ctrl->info.selector, in uvc_ctrl_populate_cache()
962 uvc_warn_once(chain->dev, UVC_WARN_XU_GET_RES, in uvc_ctrl_populate_cache()
994 static int __uvc_ctrl_get(struct uvc_video_chain *chain, in __uvc_ctrl_get() argument
1004 ret = uvc_query_ctrl(chain->dev, UVC_GET_CUR, ctrl->entity->id, in __uvc_ctrl_get()
1005 chain->dev->intfnum, ctrl->info.selector, in __uvc_ctrl_get()
1020 static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, in __uvc_query_v4l2_ctrl() argument
1046 int ret = __uvc_ctrl_get(chain, master_ctrl, master_map, &val); in __uvc_query_v4l2_ctrl()
1055 int ret = uvc_ctrl_populate_cache(chain, ctrl); in __uvc_query_v4l2_ctrl()
1112 int uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, in uvc_query_v4l2_ctrl() argument
1119 ret = mutex_lock_interruptible(&chain->ctrl_mutex); in uvc_query_v4l2_ctrl()
1123 ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping); in uvc_query_v4l2_ctrl()
1129 ret = __uvc_query_v4l2_ctrl(chain, ctrl, mapping, v4l2_ctrl); in uvc_query_v4l2_ctrl()
1131 mutex_unlock(&chain->ctrl_mutex); in uvc_query_v4l2_ctrl()
1144 int uvc_query_v4l2_menu(struct uvc_video_chain *chain, in uvc_query_v4l2_menu() argument
1158 ret = mutex_lock_interruptible(&chain->ctrl_mutex); in uvc_query_v4l2_menu()
1162 ctrl = uvc_find_control(chain, query_menu->id, &mapping); in uvc_query_v4l2_menu()
1180 ret = uvc_ctrl_populate_cache(chain, ctrl); in uvc_query_v4l2_menu()
1196 mutex_unlock(&chain->ctrl_mutex); in uvc_query_v4l2_menu()
1204 static void uvc_ctrl_fill_event(struct uvc_video_chain *chain, in uvc_ctrl_fill_event() argument
1212 __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl); in uvc_ctrl_fill_event()
1234 static void uvc_ctrl_send_event(struct uvc_video_chain *chain, in uvc_ctrl_send_event() argument
1245 uvc_ctrl_fill_event(chain, &ev, ctrl, mapping, value, changes); in uvc_ctrl_send_event()
1260 static void uvc_ctrl_send_slave_event(struct uvc_video_chain *chain, in uvc_ctrl_send_slave_event() argument
1272 if (__uvc_ctrl_get(chain, ctrl, mapping, &val) == 0) in uvc_ctrl_send_slave_event()
1275 uvc_ctrl_send_event(chain, handle, ctrl, mapping, val, changes); in uvc_ctrl_send_slave_event()
1283 struct uvc_video_chain *chain = w->chain; in uvc_ctrl_status_event_work() local
1290 mutex_lock(&chain->ctrl_mutex); in uvc_ctrl_status_event_work()
1306 uvc_ctrl_send_slave_event(chain, handle, ctrl, in uvc_ctrl_status_event_work()
1310 uvc_ctrl_send_event(chain, handle, ctrl, mapping, value, in uvc_ctrl_status_event_work()
1314 mutex_unlock(&chain->ctrl_mutex); in uvc_ctrl_status_event_work()
1324 bool uvc_ctrl_status_event(struct urb *urb, struct uvc_video_chain *chain, in uvc_ctrl_status_event() argument
1327 struct uvc_device *dev = chain->dev; in uvc_ctrl_status_event()
1337 w->chain = chain; in uvc_ctrl_status_event()
1368 ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping); in uvc_ctrl_send_events()
1388 uvc_ctrl_send_slave_event(handle->chain, handle, ctrl, in uvc_ctrl_send_events()
1401 uvc_ctrl_send_event(handle->chain, handle, ctrl, mapping, in uvc_ctrl_send_events()
1413 ret = mutex_lock_interruptible(&handle->chain->ctrl_mutex); in uvc_ctrl_add_event()
1417 ctrl = uvc_find_control(handle->chain, sev->id, &mapping); in uvc_ctrl_add_event()
1429 if (__uvc_ctrl_get(handle->chain, ctrl, mapping, &val) == 0) in uvc_ctrl_add_event()
1432 uvc_ctrl_fill_event(handle->chain, &ev, ctrl, mapping, val, in uvc_ctrl_add_event()
1441 mutex_unlock(&handle->chain->ctrl_mutex); in uvc_ctrl_add_event()
1449 mutex_lock(&handle->chain->ctrl_mutex); in uvc_ctrl_del_event()
1451 mutex_unlock(&handle->chain->ctrl_mutex); in uvc_ctrl_del_event()
1485 int uvc_ctrl_begin(struct uvc_video_chain *chain) in uvc_ctrl_begin() argument
1487 return mutex_lock_interruptible(&chain->ctrl_mutex) ? -ERESTARTSYS : 0; in uvc_ctrl_begin()
1544 struct uvc_video_chain *chain = handle->chain; in __uvc_ctrl_commit() local
1549 list_for_each_entry(entity, &chain->entities, chain) { in __uvc_ctrl_commit()
1550 ret = uvc_ctrl_commit_entity(chain->dev, entity, rollback); in __uvc_ctrl_commit()
1558 mutex_unlock(&chain->ctrl_mutex); in __uvc_ctrl_commit()
1562 int uvc_ctrl_get(struct uvc_video_chain *chain, in uvc_ctrl_get() argument
1568 ctrl = uvc_find_control(chain, xctrl->id, &mapping); in uvc_ctrl_get()
1572 return __uvc_ctrl_get(chain, ctrl, mapping, &xctrl->value); in uvc_ctrl_get()
1578 struct uvc_video_chain *chain = handle->chain; in uvc_ctrl_set() local
1587 ctrl = uvc_find_control(chain, xctrl->id, &mapping); in uvc_ctrl_set()
1597 ret = uvc_ctrl_populate_cache(chain, ctrl); in uvc_ctrl_set()
1636 ret = uvc_ctrl_populate_cache(chain, ctrl); in uvc_ctrl_set()
1663 ret = uvc_query_ctrl(chain->dev, UVC_GET_CUR, in uvc_ctrl_set()
1664 ctrl->entity->id, chain->dev->intfnum, in uvc_ctrl_set()
1846 int uvc_xu_ctrl_query(struct uvc_video_chain *chain, in uvc_xu_ctrl_query() argument
1860 list_for_each_entry(entity, &chain->entities, chain) { in uvc_xu_ctrl_query()
1890 if (mutex_lock_interruptible(&chain->ctrl_mutex)) in uvc_xu_ctrl_query()
1893 ret = uvc_ctrl_init_xu_ctrl(chain->dev, ctrl); in uvc_xu_ctrl_query()
1955 ret = uvc_query_ctrl(chain->dev, xqry->query, xqry->unit, in uvc_xu_ctrl_query()
1956 chain->dev->intfnum, xqry->selector, data, size); in uvc_xu_ctrl_query()
1965 mutex_unlock(&chain->ctrl_mutex); in uvc_xu_ctrl_query()
2080 int uvc_ctrl_add_mapping(struct uvc_video_chain *chain, in uvc_ctrl_add_mapping() argument
2083 struct uvc_device *dev = chain->dev; in uvc_ctrl_add_mapping()
2098 list_for_each_entry(entity, &chain->entities, chain) { in uvc_ctrl_add_mapping()
2119 if (mutex_lock_interruptible(&chain->ctrl_mutex)) in uvc_ctrl_add_mapping()
2161 mutex_unlock(&chain->ctrl_mutex); in uvc_ctrl_add_mapping()