Lines Matching refs:mapping
370 static s32 uvc_ctrl_get_zoom(struct uvc_control_mapping *mapping, in uvc_ctrl_get_zoom() argument
388 static void uvc_ctrl_set_zoom(struct uvc_control_mapping *mapping, in uvc_ctrl_set_zoom() argument
395 static s32 uvc_ctrl_get_rel_speed(struct uvc_control_mapping *mapping, in uvc_ctrl_get_rel_speed() argument
398 unsigned int first = mapping->offset / 8; in uvc_ctrl_get_rel_speed()
415 static void uvc_ctrl_set_rel_speed(struct uvc_control_mapping *mapping, in uvc_ctrl_set_rel_speed() argument
418 unsigned int first = mapping->offset / 8; in uvc_ctrl_set_rel_speed()
769 static s32 uvc_get_le_value(struct uvc_control_mapping *mapping, in uvc_get_le_value() argument
772 int bits = mapping->size; in uvc_get_le_value()
773 int offset = mapping->offset; in uvc_get_le_value()
790 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED) in uvc_get_le_value()
791 value |= -(value & (1 << (mapping->size - 1))); in uvc_get_le_value()
799 static void uvc_set_le_value(struct uvc_control_mapping *mapping, in uvc_set_le_value() argument
802 int bits = mapping->size; in uvc_set_le_value()
803 int offset = mapping->offset; in uvc_set_le_value()
811 if (mapping->v4l2_type == V4L2_CTRL_TYPE_BUTTON) in uvc_set_le_value()
862 struct uvc_control_mapping **mapping, struct uvc_control **control, in __uvc_find_control() argument
880 *mapping = map; in __uvc_find_control()
884 if ((*mapping == NULL || (*mapping)->id > map->id) && in __uvc_find_control()
887 *mapping = map; in __uvc_find_control()
894 u32 v4l2_id, struct uvc_control_mapping **mapping) in uvc_find_control() argument
900 *mapping = NULL; in uvc_find_control()
907 __uvc_find_control(entity, v4l2_id, mapping, &ctrl, next); in uvc_find_control()
975 static s32 __uvc_ctrl_get_value(struct uvc_control_mapping *mapping, in __uvc_ctrl_get_value() argument
978 s32 value = mapping->get(mapping, UVC_GET_CUR, data); in __uvc_ctrl_get_value()
980 if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) { in __uvc_ctrl_get_value()
981 struct uvc_menu_info *menu = mapping->menu_info; in __uvc_ctrl_get_value()
984 for (i = 0; i < mapping->menu_count; ++i, ++menu) { in __uvc_ctrl_get_value()
996 struct uvc_control *ctrl, struct uvc_control_mapping *mapping, in __uvc_ctrl_get() argument
1015 *value = __uvc_ctrl_get_value(mapping, in __uvc_ctrl_get()
1023 struct uvc_control_mapping *mapping, in __uvc_query_v4l2_ctrl() argument
1032 v4l2_ctrl->id = mapping->id; in __uvc_query_v4l2_ctrl()
1033 v4l2_ctrl->type = mapping->v4l2_type; in __uvc_query_v4l2_ctrl()
1034 strlcpy(v4l2_ctrl->name, mapping->name, sizeof(v4l2_ctrl->name)); in __uvc_query_v4l2_ctrl()
1042 if (mapping->master_id) in __uvc_query_v4l2_ctrl()
1043 __uvc_find_control(ctrl->entity, mapping->master_id, in __uvc_query_v4l2_ctrl()
1051 if (val != mapping->master_manual) in __uvc_query_v4l2_ctrl()
1062 v4l2_ctrl->default_value = mapping->get(mapping, UVC_GET_DEF, in __uvc_query_v4l2_ctrl()
1066 switch (mapping->v4l2_type) { in __uvc_query_v4l2_ctrl()
1069 v4l2_ctrl->maximum = mapping->menu_count - 1; in __uvc_query_v4l2_ctrl()
1072 menu = mapping->menu_info; in __uvc_query_v4l2_ctrl()
1073 for (i = 0; i < mapping->menu_count; ++i, ++menu) { in __uvc_query_v4l2_ctrl()
1099 v4l2_ctrl->minimum = mapping->get(mapping, UVC_GET_MIN, in __uvc_query_v4l2_ctrl()
1103 v4l2_ctrl->maximum = mapping->get(mapping, UVC_GET_MAX, in __uvc_query_v4l2_ctrl()
1107 v4l2_ctrl->step = mapping->get(mapping, UVC_GET_RES, in __uvc_query_v4l2_ctrl()
1117 struct uvc_control_mapping *mapping; in uvc_query_v4l2_ctrl() local
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()
1149 struct uvc_control_mapping *mapping; in uvc_query_v4l2_menu() local
1163 ctrl = uvc_find_control(chain, query_menu->id, &mapping); in uvc_query_v4l2_menu()
1164 if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU) { in uvc_query_v4l2_menu()
1169 if (query_menu->index >= mapping->menu_count) { in uvc_query_v4l2_menu()
1174 menu_info = &mapping->menu_info[query_menu->index]; in uvc_query_v4l2_menu()
1176 if (mapping->data_type == UVC_CTRL_DATA_TYPE_BITMASK && in uvc_query_v4l2_menu()
1186 bitmap = mapping->get(mapping, UVC_GET_RES, in uvc_query_v4l2_menu()
1208 struct uvc_control_mapping *mapping, in uvc_ctrl_fill_event() argument
1213 __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl); in uvc_ctrl_fill_event()
1237 struct uvc_control_mapping *mapping, s32 value, u32 changes) in uvc_ctrl_send_event() argument
1243 if (list_empty(&mapping->ev_subs)) in uvc_ctrl_send_event()
1246 uvc_ctrl_fill_event(chain, &ev, ctrl, mapping, value, changes); in uvc_ctrl_send_event()
1248 list_for_each_entry(sev, &mapping->ev_subs, node) { in uvc_ctrl_send_event()
1264 struct uvc_control_mapping *mapping = NULL; in uvc_ctrl_send_slave_event() local
1269 __uvc_find_control(master->entity, slave_id, &mapping, &ctrl, 0); in uvc_ctrl_send_slave_event()
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()
1285 struct uvc_control_mapping *mapping; in uvc_ctrl_status_event_work() local
1296 list_for_each_entry(mapping, &ctrl->info.mappings, list) { in uvc_ctrl_status_event_work()
1297 s32 value = __uvc_ctrl_get_value(mapping, w->data); in uvc_ctrl_status_event_work()
1303 for (i = 0; i < ARRAY_SIZE(mapping->slave_ids); ++i) { in uvc_ctrl_status_event_work()
1304 if (!mapping->slave_ids[i]) in uvc_ctrl_status_event_work()
1308 mapping->slave_ids[i]); in uvc_ctrl_status_event_work()
1311 uvc_ctrl_send_event(chain, handle, ctrl, mapping, value, in uvc_ctrl_status_event_work()
1362 struct uvc_control_mapping *mapping; in uvc_ctrl_send_events() local
1369 ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping); in uvc_ctrl_send_events()
1375 for (j = 0; j < ARRAY_SIZE(mapping->slave_ids); ++j) { in uvc_ctrl_send_events()
1376 u32 slave_id = mapping->slave_ids[j]; in uvc_ctrl_send_events()
1397 if (mapping->master_id && in uvc_ctrl_send_events()
1399 mapping->master_id)) in uvc_ctrl_send_events()
1402 uvc_ctrl_send_event(handle->chain, handle, ctrl, mapping, in uvc_ctrl_send_events()
1410 struct uvc_control_mapping *mapping; in uvc_ctrl_add_event() local
1418 ctrl = uvc_find_control(handle->chain, sev->id, &mapping); in uvc_ctrl_add_event()
1424 list_add_tail(&sev->node, &mapping->ev_subs); 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()
1567 struct uvc_control_mapping *mapping; in uvc_ctrl_get() local
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()
1581 struct uvc_control_mapping *mapping; in uvc_ctrl_set() local
1588 ctrl = uvc_find_control(chain, xctrl->id, &mapping); in uvc_ctrl_set()
1595 switch (mapping->v4l2_type) { in uvc_ctrl_set()
1603 min = mapping->get(mapping, UVC_GET_MIN, in uvc_ctrl_set()
1605 max = mapping->get(mapping, UVC_GET_MAX, in uvc_ctrl_set()
1607 step = mapping->get(mapping, UVC_GET_RES, in uvc_ctrl_set()
1614 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED) in uvc_ctrl_set()
1627 if (xctrl->value < 0 || xctrl->value >= mapping->menu_count) in uvc_ctrl_set()
1629 value = mapping->menu_info[xctrl->value].value; in uvc_ctrl_set()
1634 if (mapping->data_type == UVC_CTRL_DATA_TYPE_BITMASK && in uvc_ctrl_set()
1642 step = mapping->get(mapping, UVC_GET_RES, in uvc_ctrl_set()
1659 if (!ctrl->loaded && (ctrl->info.size * 8) != mapping->size) { in uvc_ctrl_set()
1683 mapping->set(mapping, value, in uvc_ctrl_set()
2055 struct uvc_control *ctrl, const struct uvc_control_mapping *mapping) in __uvc_ctrl_add_mapping() argument
2064 map = kmemdup(mapping, sizeof(*mapping), GFP_KERNEL); in __uvc_ctrl_add_mapping()
2070 size = sizeof(*mapping->menu_info) * mapping->menu_count; in __uvc_ctrl_add_mapping()
2071 map->menu_info = kmemdup(mapping->menu_info, size, GFP_KERNEL); in __uvc_ctrl_add_mapping()
2091 const struct uvc_control_mapping *mapping) in uvc_ctrl_add_mapping() argument
2100 if (mapping->id & ~V4L2_CTRL_ID_MASK) { in uvc_ctrl_add_mapping()
2102 "id 0x%08x is invalid.\n", mapping->name, in uvc_ctrl_add_mapping()
2103 mapping->id); in uvc_ctrl_add_mapping()
2112 !uvc_entity_match_guid(entity, mapping->entity)) in uvc_ctrl_add_mapping()
2117 if (ctrl->index == mapping->selector - 1) { in uvc_ctrl_add_mapping()
2140 if (mapping->size > 32 || in uvc_ctrl_add_mapping()
2141 mapping->offset + mapping->size > ctrl->info.size * 8) { in uvc_ctrl_add_mapping()
2147 if (mapping->id == map->id) { in uvc_ctrl_add_mapping()
2150 mapping->name, mapping->id); in uvc_ctrl_add_mapping()
2160 "mappings count (%u) exceeded.\n", mapping->name, in uvc_ctrl_add_mapping()
2166 ret = __uvc_ctrl_add_mapping(dev, ctrl, mapping); in uvc_ctrl_add_mapping()
2245 const struct uvc_control_mapping *mapping = uvc_ctrl_mappings; in uvc_ctrl_init_ctrl() local
2247 mapping + ARRAY_SIZE(uvc_ctrl_mappings); in uvc_ctrl_init_ctrl()
2268 for (; mapping < mend; ++mapping) { in uvc_ctrl_init_ctrl()
2269 if (uvc_entity_match_guid(ctrl->entity, mapping->entity) && in uvc_ctrl_init_ctrl()
2270 ctrl->info.selector == mapping->selector) in uvc_ctrl_init_ctrl()
2271 __uvc_ctrl_add_mapping(dev, ctrl, mapping); in uvc_ctrl_init_ctrl()
2339 struct uvc_control_mapping *mapping, *nm; in uvc_ctrl_cleanup_mappings() local
2341 list_for_each_entry_safe(mapping, nm, &ctrl->info.mappings, list) { in uvc_ctrl_cleanup_mappings()
2342 list_del(&mapping->list); in uvc_ctrl_cleanup_mappings()
2343 kfree(mapping->menu_info); in uvc_ctrl_cleanup_mappings()
2344 kfree(mapping); in uvc_ctrl_cleanup_mappings()