Re: [PATCH] media: uvcvideo: Set media controller entity functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

On 28/07/2020 01:13, Laurent Pinchart wrote:
> Kieran, would you have time to give this a review ?
> 
> On Sun, Jun 07, 2020 at 05:20:47AM +0300, Laurent Pinchart wrote:
>> The media controller core prints a warning when an entity is registered
>> without a function being set. This affect the uvcvideo driver, as the

s/affect/affects/

>> warning was added without first addressing the issue in existing
>> drivers. The problem is harmless, but unnecessarily worries users. Fix
>> it by mapping UVC entity types to MC entity functions as accurately as
>> possible using the existing functions.
>>
>> Fixes: b50bde4e476d ("[media] v4l2-subdev: use MEDIA_ENT_T_UNKNOWN for new subdevs")
>> Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

Looks fine to me.

Reviewed-by: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx>

>> ---
>>  drivers/media/usb/uvc/uvc_entity.c | 35 ++++++++++++++++++++++++++++++
>>  1 file changed, 35 insertions(+)
>>
>> diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
>> index b4499cddeffe..ca3a9c2eec27 100644
>> --- a/drivers/media/usb/uvc/uvc_entity.c
>> +++ b/drivers/media/usb/uvc/uvc_entity.c
>> @@ -73,10 +73,45 @@ static int uvc_mc_init_entity(struct uvc_video_chain *chain,
>>  	int ret;
>>  
>>  	if (UVC_ENTITY_TYPE(entity) != UVC_TT_STREAMING) {
>> +		u32 function;
>> +
>>  		v4l2_subdev_init(&entity->subdev, &uvc_subdev_ops);
>>  		strscpy(entity->subdev.name, entity->name,
>>  			sizeof(entity->subdev.name));
>>  
>> +		switch (UVC_ENTITY_TYPE(entity)) {
>> +		case UVC_VC_SELECTOR_UNIT:
>> +			function = MEDIA_ENT_F_VID_MUX;
>> +			break;
>> +		case UVC_VC_PROCESSING_UNIT:
>> +		case UVC_VC_EXTENSION_UNIT:
>> +			/* For lack of a better option. */
>> +			function = MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER;
>> +			break;
>> +		case UVC_COMPOSITE_CONNECTOR:
>> +		case UVC_COMPONENT_CONNECTOR:
>> +			function = MEDIA_ENT_F_CONN_COMPOSITE;
>> +			break;
>> +		case UVC_SVIDEO_CONNECTOR:
>> +			function = MEDIA_ENT_F_CONN_SVIDEO;
>> +			break;
>> +		case UVC_ITT_CAMERA:
>> +			function = MEDIA_ENT_F_CAM_SENSOR;
>> +			break;
>> +		case UVC_TT_VENDOR_SPECIFIC:
>> +		case UVC_ITT_VENDOR_SPECIFIC:
>> +		case UVC_ITT_MEDIA_TRANSPORT_INPUT:
>> +		case UVC_OTT_VENDOR_SPECIFIC:
>> +		case UVC_OTT_DISPLAY:
>> +		case UVC_OTT_MEDIA_TRANSPORT_OUTPUT:
>> +		case UVC_EXTERNAL_VENDOR_SPECIFIC:
>> +		default:
>> +			function = MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN;
>> +			break;
>> +		}
>> +
>> +		entity->subdev.entity.function = function;
>> +
>>  		ret = media_entity_pads_init(&entity->subdev.entity,
>>  					entity->num_pads, entity->pads);
>>  
> 

-- 
Regards
--
Kieran



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux