Lines Matching refs:mapping

368 static __s32 uvc_ctrl_get_zoom(struct uvc_control_mapping *mapping,
386 static void uvc_ctrl_set_zoom(struct uvc_control_mapping *mapping,
691 /* Extract the bit string specified by mapping->offset and mapping->size
693 * a signed 32bit integer. Sign extension will be performed if the mapping
696 static __s32 uvc_get_le_value(struct uvc_control_mapping *mapping,
699 int bits = mapping->size;
700 int offset = mapping->offset;
717 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)
718 value |= -(value & (1 << (mapping->size - 1)));
723 /* Set the bit string specified by mapping->offset and mapping->size
726 static void uvc_set_le_value(struct uvc_control_mapping *mapping,
729 int bits = mapping->size;
730 int offset = mapping->offset;
738 if (mapping->v4l2_type == V4L2_CTRL_TYPE_BUTTON)
789 struct uvc_control_mapping **mapping, struct uvc_control **control,
807 *mapping = map;
811 if ((*mapping == NULL || (*mapping)->id > map->id) &&
814 *mapping = map;
821 __u32 v4l2_id, struct uvc_control_mapping **mapping)
827 *mapping = NULL;
834 __uvc_find_control(entity, v4l2_id, mapping, &ctrl, next);
906 struct uvc_control_mapping *mapping;
915 ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping);
922 v4l2_ctrl->id = mapping->id;
923 v4l2_ctrl->type = mapping->v4l2_type;
924 strlcpy(v4l2_ctrl->name, mapping->name, sizeof v4l2_ctrl->name);
939 v4l2_ctrl->default_value = mapping->get(mapping, UVC_GET_DEF,
943 switch (mapping->v4l2_type) {
946 v4l2_ctrl->maximum = mapping->menu_count - 1;
949 menu = mapping->menu_info;
950 for (i = 0; i < mapping->menu_count; ++i, ++menu) {
976 v4l2_ctrl->minimum = mapping->get(mapping, UVC_GET_MIN,
980 v4l2_ctrl->maximum = mapping->get(mapping, UVC_GET_MAX,
984 v4l2_ctrl->step = mapping->get(mapping, UVC_GET_RES,
1005 struct uvc_control_mapping *mapping;
1019 ctrl = uvc_find_control(chain, query_menu->id, &mapping);
1020 if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU) {
1025 if (query_menu->index >= mapping->menu_count) {
1030 menu_info = &mapping->menu_info[query_menu->index];
1032 if (mapping->data_type == UVC_CTRL_DATA_TYPE_BITMASK &&
1042 bitmap = mapping->get(mapping, UVC_GET_RES,
1155 struct uvc_control_mapping *mapping;
1160 ctrl = uvc_find_control(chain, xctrl->id, &mapping);
1175 xctrl->value = mapping->get(mapping, UVC_GET_CUR,
1178 if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
1179 menu = mapping->menu_info;
1180 for (i = 0; i < mapping->menu_count; ++i, ++menu) {
1195 struct uvc_control_mapping *mapping;
1202 ctrl = uvc_find_control(chain, xctrl->id, &mapping);
1207 switch (mapping->v4l2_type) {
1215 min = mapping->get(mapping, UVC_GET_MIN,
1217 max = mapping->get(mapping, UVC_GET_MAX,
1219 step = mapping->get(mapping, UVC_GET_RES,
1235 if (xctrl->value < 0 || xctrl->value >= mapping->menu_count)
1237 value = mapping->menu_info[xctrl->value].value;
1242 if (mapping->data_type == UVC_CTRL_DATA_TYPE_BITMASK &&
1250 step = mapping->get(mapping, UVC_GET_RES,
1263 /* If the mapping doesn't span the whole UVC control, the current value
1267 if (!ctrl->loaded && (ctrl->info.size * 8) != mapping->size) {
1291 mapping->set(mapping, value,
1593 * Control and mapping handling
1628 * Add a control mapping to a given control.
1631 struct uvc_control *ctrl, const struct uvc_control_mapping *mapping)
1640 map = kmemdup(mapping, sizeof(*mapping), GFP_KERNEL);
1644 size = sizeof(*mapping->menu_info) * mapping->menu_count;
1645 map->menu_info = kmemdup(mapping->menu_info, size, GFP_KERNEL);
1659 "Adding mapping '%s' to control %pUl/%u.\n",
1666 const struct uvc_control_mapping *mapping)
1675 if (mapping->id & ~V4L2_CTRL_ID_MASK) {
1676 uvc_trace(UVC_TRACE_CONTROL, "Can't add mapping '%s', control "
1677 "id 0x%08x is invalid.\n", mapping->name,
1678 mapping->id);
1687 !uvc_entity_match_guid(entity, mapping->entity))
1692 if (ctrl->index == mapping->selector - 1) {
1715 if (mapping->id == map->id) {
1716 uvc_trace(UVC_TRACE_CONTROL, "Can't add mapping '%s', "
1718 mapping->name, mapping->id);
1727 uvc_trace(UVC_TRACE_CONTROL, "Can't add mapping '%s', maximum "
1728 "mappings count (%u) exceeded.\n", mapping->name,
1734 ret = __uvc_ctrl_add_mapping(dev, ctrl, mapping);
1813 const struct uvc_control_mapping *mapping = uvc_ctrl_mappings;
1815 mapping + ARRAY_SIZE(uvc_ctrl_mappings);
1836 for (; mapping < mend; ++mapping) {
1837 if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
1838 ctrl->info.selector == mapping->selector)
1839 __uvc_ctrl_add_mapping(dev, ctrl, mapping);
1906 struct uvc_control_mapping *mapping, *nm;
1908 list_for_each_entry_safe(mapping, nm, &ctrl->info.mappings, list) {
1909 list_del(&mapping->list);
1910 kfree(mapping->menu_info);
1911 kfree(mapping);