mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
media: uvcvideo: Move guid to entity
Instead of having multiple copies of the entity guid on the code, move it to the entity structure. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
dc9455ffae
commit
351509c604
|
|
@ -826,31 +826,10 @@ static void uvc_set_le_value(struct uvc_control_mapping *mapping,
|
|||
* Terminal and unit management
|
||||
*/
|
||||
|
||||
static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
|
||||
static const u8 uvc_camera_guid[16] = UVC_GUID_UVC_CAMERA;
|
||||
static const u8 uvc_media_transport_input_guid[16] =
|
||||
UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
|
||||
|
||||
static int uvc_entity_match_guid(const struct uvc_entity *entity,
|
||||
const u8 guid[16])
|
||||
const u8 guid[16])
|
||||
{
|
||||
switch (UVC_ENTITY_TYPE(entity)) {
|
||||
case UVC_ITT_CAMERA:
|
||||
return memcmp(uvc_camera_guid, guid, 16) == 0;
|
||||
|
||||
case UVC_ITT_MEDIA_TRANSPORT_INPUT:
|
||||
return memcmp(uvc_media_transport_input_guid, guid, 16) == 0;
|
||||
|
||||
case UVC_VC_PROCESSING_UNIT:
|
||||
return memcmp(uvc_processing_guid, guid, 16) == 0;
|
||||
|
||||
case UVC_VC_EXTENSION_UNIT:
|
||||
return memcmp(entity->extension.guidExtensionCode,
|
||||
guid, 16) == 0;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return memcmp(entity->guid, guid, sizeof(entity->guid)) == 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
|
|
@ -1776,8 +1755,7 @@ static int uvc_ctrl_fill_xu_info(struct uvc_device *dev,
|
|||
if (data == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(info->entity, ctrl->entity->extension.guidExtensionCode,
|
||||
sizeof(info->entity));
|
||||
memcpy(info->entity, ctrl->entity->guid, sizeof(info->entity));
|
||||
info->index = ctrl->index;
|
||||
info->selector = ctrl->index + 1;
|
||||
|
||||
|
|
@ -1883,7 +1861,7 @@ int uvc_xu_ctrl_query(struct uvc_video_chain *chain,
|
|||
|
||||
if (!found) {
|
||||
uvc_trace(UVC_TRACE_CONTROL, "Control %pUl/%u not found.\n",
|
||||
entity->extension.guidExtensionCode, xqry->selector);
|
||||
entity->guid, xqry->selector);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1019,6 +1019,11 @@ static int uvc_parse_streaming(struct uvc_device *dev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static const u8 uvc_camera_guid[16] = UVC_GUID_UVC_CAMERA;
|
||||
static const u8 uvc_media_transport_input_guid[16] =
|
||||
UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
|
||||
static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
|
||||
|
||||
static struct uvc_entity *uvc_alloc_entity(u16 type, u8 id,
|
||||
unsigned int num_pads, unsigned int extra_size)
|
||||
{
|
||||
|
|
@ -1038,6 +1043,22 @@ static struct uvc_entity *uvc_alloc_entity(u16 type, u8 id,
|
|||
entity->id = id;
|
||||
entity->type = type;
|
||||
|
||||
/*
|
||||
* Set the GUID for standard entity types. For extension units, the GUID
|
||||
* is initialized by the caller.
|
||||
*/
|
||||
switch (type) {
|
||||
case UVC_ITT_CAMERA:
|
||||
memcpy(entity->guid, uvc_camera_guid, 16);
|
||||
break;
|
||||
case UVC_ITT_MEDIA_TRANSPORT_INPUT:
|
||||
memcpy(entity->guid, uvc_media_transport_input_guid, 16);
|
||||
break;
|
||||
case UVC_VC_PROCESSING_UNIT:
|
||||
memcpy(entity->guid, uvc_processing_guid, 16);
|
||||
break;
|
||||
}
|
||||
|
||||
entity->num_links = 0;
|
||||
entity->num_pads = num_pads;
|
||||
entity->pads = ((void *)(entity + 1)) + extra_size;
|
||||
|
|
@ -1109,7 +1130,7 @@ static int uvc_parse_vendor_control(struct uvc_device *dev,
|
|||
if (unit == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(unit->extension.guidExtensionCode, &buffer[4], 16);
|
||||
memcpy(unit->guid, &buffer[4], 16);
|
||||
unit->extension.bNumControls = buffer[20];
|
||||
memcpy(unit->baSourceID, &buffer[22], p);
|
||||
unit->extension.bControlSize = buffer[22+p];
|
||||
|
|
@ -1368,7 +1389,7 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
|
|||
if (unit == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(unit->extension.guidExtensionCode, &buffer[4], 16);
|
||||
memcpy(unit->guid, &buffer[4], 16);
|
||||
unit->extension.bNumControls = buffer[20];
|
||||
memcpy(unit->baSourceID, &buffer[22], p);
|
||||
unit->extension.bControlSize = buffer[22+p];
|
||||
|
|
|
|||
|
|
@ -304,6 +304,7 @@ struct uvc_entity {
|
|||
u8 id;
|
||||
u16 type;
|
||||
char name[64];
|
||||
u8 guid[16];
|
||||
|
||||
/* Media controller-related fields. */
|
||||
struct video_device *vdev;
|
||||
|
|
@ -342,7 +343,6 @@ struct uvc_entity {
|
|||
} selector;
|
||||
|
||||
struct {
|
||||
u8 guidExtensionCode[16];
|
||||
u8 bNumControls;
|
||||
u8 bControlSize;
|
||||
u8 *bmControls;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user