[PATCH 02/10] drm: crc: Introduce get_crc_sources callback

Kumar, Mahesh mahesh1.kumar at intel.com
Tue Jul 10 12:01:38 UTC 2018


Hi,

thanks for the review.
On 7/10/2018 4:52 PM, Laurent Pinchart wrote:
> Hi Mahesh,
>
> Thank you for the patch.
>
> On Monday, 2 July 2018 14:07:21 EEST Mahesh Kumar wrote:
>> This patch introduce a callback function "get_crc_sources" which
>> will be called during read of control node. It is an optional
>> callback function and if driver implements this callback, driver
>> should print list of available CRC sources in seq_file privided
>> as an input to the callback.
> The commit message seems to be outdated, the callback doesn't take a seq_file
> anymore.
ops, will update.
>
>> Changes Since V1: (Daniel)
>>   - return const pointer to an array of crc sources list
>>   - do validation of sources in CRC-core
>>
>> Signed-off-by: Mahesh Kumar <mahesh1.kumar at intel.com>
>> Cc: dri-devel at lists.freedesktop.org
>> Reviewed-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>> ---
>>   drivers/gpu/drm/drm_debugfs_crc.c | 20 +++++++++++++++++++-
>>   include/drm/drm_crtc.h            | 16 ++++++++++++++++
>>   2 files changed, 35 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/drm_debugfs_crc.c
>> b/drivers/gpu/drm/drm_debugfs_crc.c index c6a725b79ac6..f4d76528d24c 100644
>> --- a/drivers/gpu/drm/drm_debugfs_crc.c
>> +++ b/drivers/gpu/drm/drm_debugfs_crc.c
>> @@ -67,9 +67,27 @@
>>   static int crc_control_show(struct seq_file *m, void *data)
>>   {
>>   	struct drm_crtc *crtc = m->private;
>> +	size_t count;
> Count it only used within the if () {} block, you can declare it there.
agree.
>
>> +
>> +	if (crtc->funcs->get_crc_sources) {
>> +		const char *const *sources = crtc->funcs->get_crc_sources(crtc,
>> +									&count);
>> +		size_t values_cnt;
>> +		int i;
> I only takes positive values, it can be an unsigned int.
ok
>
>> +
>> +		if (count <= 0 || !sources)
> count is a size_t, it can't be negative.
>
> The .get_crc_sources() documentation doesn't clearly specify whether sources
> should always be NULL when count is zero. I advise updating the documentation,
> and possibly updating this check accordingly.
ok will update.
>
>> +			goto out;
>> +
>> +		seq_puts(m, "[");
>> +		for (i = 0; i < count; i++)
>> +			if (!crtc->funcs->verify_crc_source(crtc, sources[i],
>> +							    &values_cnt))
> I assume that you verify sources one by one here to avoid having to create a
> list of sources dynamically in the .get_crc_sources() callback ? If so, I
> think the .get_crc_sources() callback should document that.
>
> You should also document that .verify_crc_source() is required when
> get_crc_sources() is provided.
ok sure.
>
>> +				seq_printf(m, "%s ", sources[i]);
>> +		seq_puts(m, "] ");
> This assumes that source names can't include a space. Isn't that too
> restrictive ? Shouldn't a different separator be used ? How about one source
> name per line ?
what about comma separated as I'm putting names inside square-brackets?
>
> Additionally, shouldn't the active source be marked ?
active source is again printed by the code in next few lines. output 
will be of following format.
[space separated list of valid sources] active_source

-Mahesh
>
>> +	}
>>
>> +out:
>>   	seq_printf(m, "%s\n", crtc->crc.source);
>> -
>>   	return 0;
>>   }
>>
>> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
>> index 1a6dcbf91744..ffaec138aeee 100644
>> --- a/include/drm/drm_crtc.h
>> +++ b/include/drm/drm_crtc.h
>> @@ -676,6 +676,22 @@ struct drm_crtc_funcs {
>>   	 */
>>   	int (*verify_crc_source)(struct drm_crtc *crtc, const char *source,
>>   				 size_t *values_cnt);
>> +	/**
>> +	 * @get_crc_sources:
>> +	 *
>> +	 * Driver callback for getting a list of all the available sources for
>> +	 * CRC generation.
>> +	 *
>> +	 * This callback is optional if the driver does not support exporting of
>> +	 * possible CRC sources list. CRC-core does the verification of sources.
>> +	 *
>> +	 * RETURNS:
>> +	 *
>> +	 * a constant character pointer to the list of all the available CRC
>> +	 * sources
>> +	 */
>> +	const char *const *(*get_crc_sources)(struct drm_crtc *crtc,
>> +					      size_t *count);
>>
>>   	/**
>>   	 * @atomic_print_state:



More information about the dri-devel mailing list