diff mbox

[01/31] drm/i915/debugfs: Create generic string tokenize function and update CRC control parsing

Message ID 1505842927-13327-2-git-send-email-sagar.a.kamble@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

sagar.a.kamble@intel.com Sept. 19, 2017, 5:41 p.m. UTC
Input string parsing used in CRC control parameter parsing is generic
and can be reused for other debugfs interfaces. Hence name it as
buffer_tokenize instead of tieing to display_crc. Also fix the function
desciption for CRC control parsing that was misplaced at tokenize function.

Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h       |  1 +
 drivers/gpu/drm/i915/intel_pipe_crc.c | 88 +++++++++++++++++------------------
 2 files changed, 45 insertions(+), 44 deletions(-)

Comments

Michal Wajdeczko Sept. 21, 2017, 3:12 p.m. UTC | #1
On Tue, 19 Sep 2017 19:41:37 +0200, Sagar Arun Kamble  
<sagar.a.kamble@intel.com> wrote:

> Input string parsing used in CRC control parameter parsing is generic
> and can be reused for other debugfs interfaces. Hence name it as
> buffer_tokenize instead of tieing to display_crc. Also fix the function
> desciption for CRC control parsing that was misplaced at tokenize  
> function.
>
> Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
> Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h       |  1 +
>  drivers/gpu/drm/i915/intel_pipe_crc.c | 88  
> +++++++++++++++++------------------
>  2 files changed, 45 insertions(+), 44 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h  
> b/drivers/gpu/drm/i915/i915_drv.h
> index 6d7d871..4d5ffde 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3847,6 +3847,7 @@ u32 i915_gem_fence_alignment(struct  
> drm_i915_private *dev_priv, u32 size,
>  int i915_debugfs_register(struct drm_i915_private *dev_priv);
>  int i915_debugfs_connector_add(struct drm_connector *connector);
>  void intel_display_crc_init(struct drm_i915_private *dev_priv);
> +int buffer_tokenize(char *buf, char *words[], int max_words);
>  #else
>  static inline int i915_debugfs_register(struct drm_i915_private  
> *dev_priv) {return 0;}
>  static inline int i915_debugfs_connector_add(struct drm_connector  
> *connector)
> diff --git a/drivers/gpu/drm/i915/intel_pipe_crc.c  
> b/drivers/gpu/drm/i915/intel_pipe_crc.c
> index 96043a5..2e312b8 100644
> --- a/drivers/gpu/drm/i915/intel_pipe_crc.c
> +++ b/drivers/gpu/drm/i915/intel_pipe_crc.c
> @@ -710,49 +710,6 @@ static int pipe_crc_set_source(struct  
> drm_i915_private *dev_priv,
>  	return ret;
>  }
> -/*
> - * Parse pipe CRC command strings:
> - *   command: wsp* object wsp+ name wsp+ source wsp*
> - *   object: 'pipe'
> - *   name: (A | B | C)
> - *   source: (none | plane1 | plane2 | pf)
> - *   wsp: (#0x20 | #0x9 | #0xA)+
> - *
> - * eg.:
> - *  "pipe A plane1"  ->  Start CRC computations on plane1 of pipe A
> - *  "pipe A none"    ->  Stop CRC
> - */
> -static int display_crc_ctl_tokenize(char *buf, char *words[], int  
> max_words)
> -{
> -	int n_words = 0;
> -
> -	while (*buf) {
> -		char *end;
> -
> -		/* skip leading white space */
> -		buf = skip_spaces(buf);
> -		if (!*buf)
> -			break;	/* end of buffer */
> -
> -		/* find end of word */
> -		for (end = buf; *end && !isspace(*end); end++)
> -			;
> -
> -		if (n_words == max_words) {
> -			DRM_DEBUG_DRIVER("too many words, allowed <= %d\n",
> -					 max_words);
> -			return -EINVAL;	/* ran out of words[] before bytes */
> -		}
> -
> -		if (*end)
> -			*end++ = '\0';
> -		words[n_words++] = buf;
> -		buf = end;
> -	}
> -
> -	return n_words;
> -}
> -
>  enum intel_pipe_crc_object {
>  	PIPE_CRC_OBJECT_PIPE,
>  };
> @@ -806,6 +763,49 @@ static int display_crc_ctl_parse_pipe(const char  
> *buf, enum pipe *pipe)
>  	return -EINVAL;
>  }
> +int buffer_tokenize(char *buf, char *words[], int max_words)
> +{
> +	int n_words = 0;
> +
> +	while (*buf) {
> +		char *end;
> +
> +		/* skip leading white space */
> +		buf = skip_spaces(buf);
> +		if (!*buf)
> +			break;	/* end of buffer */
> +
> +		/* find end of word */
> +		for (end = buf; *end && !isspace(*end); end++)
> +			;
> +
> +		if (n_words == max_words) {
> +			DRM_DEBUG_DRIVER("too many words, allowed <= %d\n",
> +					 max_words);
> +			return -EINVAL;	/* ran out of words[] before bytes */
> +		}
> +
> +		if (*end)
> +			*end++ = '\0';
> +		words[n_words++] = buf;
> +		buf = end;
> +	}
> +
> +	return n_words;
> +}

You should move this function to i915_debugfs.c

> +
> +/*
> + * Parse pipe CRC command strings:
> + *   command: wsp* object wsp+ name wsp+ source wsp*
> + *   object: 'pipe'
> + *   name: (A | B | C)
> + *   source: (none | plane1 | plane2 | pf)
> + *   wsp: (#0x20 | #0x9 | #0xA)+
> + *
> + * eg.:
> + *  "pipe A plane1"  ->  Start CRC computations on plane1 of pipe A
> + *  "pipe A none"    ->  Stop CRC
> + */
>  static int display_crc_ctl_parse(struct drm_i915_private *dev_priv,
>  				 char *buf, size_t len)
>  {
> @@ -816,7 +816,7 @@ static int display_crc_ctl_parse(struct  
> drm_i915_private *dev_priv,
>  	enum intel_pipe_crc_object object;
>  	enum intel_pipe_crc_source source;
> -	n_words = display_crc_ctl_tokenize(buf, words, N_WORDS);
> +	n_words = buffer_tokenize(buf, words, N_WORDS);
>  	if (n_words != N_WORDS) {
>  		DRM_DEBUG_DRIVER("tokenize failed, a command is %d words\n",
>  				 N_WORDS);
sagar.a.kamble@intel.com Sept. 28, 2017, 9:10 a.m. UTC | #2
Thanks for the review Michal. Will update as suggested.

On 9/21/2017 8:42 PM, Michal Wajdeczko wrote:
> On Tue, 19 Sep 2017 19:41:37 +0200, Sagar Arun Kamble 
> <sagar.a.kamble@intel.com> wrote:
>
>> Input string parsing used in CRC control parameter parsing is generic
>> and can be reused for other debugfs interfaces. Hence name it as
>> buffer_tokenize instead of tieing to display_crc. Also fix the function
>> desciption for CRC control parsing that was misplaced at tokenize 
>> function.
>>
>> Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
>> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
>> Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
>> ---
>>  drivers/gpu/drm/i915/i915_drv.h       |  1 +
>>  drivers/gpu/drm/i915/intel_pipe_crc.c | 88 
>> +++++++++++++++++------------------
>>  2 files changed, 45 insertions(+), 44 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_drv.h 
>> b/drivers/gpu/drm/i915/i915_drv.h
>> index 6d7d871..4d5ffde 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.h
>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>> @@ -3847,6 +3847,7 @@ u32 i915_gem_fence_alignment(struct 
>> drm_i915_private *dev_priv, u32 size,
>>  int i915_debugfs_register(struct drm_i915_private *dev_priv);
>>  int i915_debugfs_connector_add(struct drm_connector *connector);
>>  void intel_display_crc_init(struct drm_i915_private *dev_priv);
>> +int buffer_tokenize(char *buf, char *words[], int max_words);
>>  #else
>>  static inline int i915_debugfs_register(struct drm_i915_private 
>> *dev_priv) {return 0;}
>>  static inline int i915_debugfs_connector_add(struct drm_connector 
>> *connector)
>> diff --git a/drivers/gpu/drm/i915/intel_pipe_crc.c 
>> b/drivers/gpu/drm/i915/intel_pipe_crc.c
>> index 96043a5..2e312b8 100644
>> --- a/drivers/gpu/drm/i915/intel_pipe_crc.c
>> +++ b/drivers/gpu/drm/i915/intel_pipe_crc.c
>> @@ -710,49 +710,6 @@ static int pipe_crc_set_source(struct 
>> drm_i915_private *dev_priv,
>>      return ret;
>>  }
>> -/*
>> - * Parse pipe CRC command strings:
>> - *   command: wsp* object wsp+ name wsp+ source wsp*
>> - *   object: 'pipe'
>> - *   name: (A | B | C)
>> - *   source: (none | plane1 | plane2 | pf)
>> - *   wsp: (#0x20 | #0x9 | #0xA)+
>> - *
>> - * eg.:
>> - *  "pipe A plane1"  ->  Start CRC computations on plane1 of pipe A
>> - *  "pipe A none"    ->  Stop CRC
>> - */
>> -static int display_crc_ctl_tokenize(char *buf, char *words[], int 
>> max_words)
>> -{
>> -    int n_words = 0;
>> -
>> -    while (*buf) {
>> -        char *end;
>> -
>> -        /* skip leading white space */
>> -        buf = skip_spaces(buf);
>> -        if (!*buf)
>> -            break;    /* end of buffer */
>> -
>> -        /* find end of word */
>> -        for (end = buf; *end && !isspace(*end); end++)
>> -            ;
>> -
>> -        if (n_words == max_words) {
>> -            DRM_DEBUG_DRIVER("too many words, allowed <= %d\n",
>> -                     max_words);
>> -            return -EINVAL;    /* ran out of words[] before bytes */
>> -        }
>> -
>> -        if (*end)
>> -            *end++ = '\0';
>> -        words[n_words++] = buf;
>> -        buf = end;
>> -    }
>> -
>> -    return n_words;
>> -}
>> -
>>  enum intel_pipe_crc_object {
>>      PIPE_CRC_OBJECT_PIPE,
>>  };
>> @@ -806,6 +763,49 @@ static int display_crc_ctl_parse_pipe(const char 
>> *buf, enum pipe *pipe)
>>      return -EINVAL;
>>  }
>> +int buffer_tokenize(char *buf, char *words[], int max_words)
>> +{
>> +    int n_words = 0;
>> +
>> +    while (*buf) {
>> +        char *end;
>> +
>> +        /* skip leading white space */
>> +        buf = skip_spaces(buf);
>> +        if (!*buf)
>> +            break;    /* end of buffer */
>> +
>> +        /* find end of word */
>> +        for (end = buf; *end && !isspace(*end); end++)
>> +            ;
>> +
>> +        if (n_words == max_words) {
>> +            DRM_DEBUG_DRIVER("too many words, allowed <= %d\n",
>> +                     max_words);
>> +            return -EINVAL;    /* ran out of words[] before bytes */
>> +        }
>> +
>> +        if (*end)
>> +            *end++ = '\0';
>> +        words[n_words++] = buf;
>> +        buf = end;
>> +    }
>> +
>> +    return n_words;
>> +}
>
> You should move this function to i915_debugfs.c
>
>> +
>> +/*
>> + * Parse pipe CRC command strings:
>> + *   command: wsp* object wsp+ name wsp+ source wsp*
>> + *   object: 'pipe'
>> + *   name: (A | B | C)
>> + *   source: (none | plane1 | plane2 | pf)
>> + *   wsp: (#0x20 | #0x9 | #0xA)+
>> + *
>> + * eg.:
>> + *  "pipe A plane1"  ->  Start CRC computations on plane1 of pipe A
>> + *  "pipe A none"    ->  Stop CRC
>> + */
>>  static int display_crc_ctl_parse(struct drm_i915_private *dev_priv,
>>                   char *buf, size_t len)
>>  {
>> @@ -816,7 +816,7 @@ static int display_crc_ctl_parse(struct 
>> drm_i915_private *dev_priv,
>>      enum intel_pipe_crc_object object;
>>      enum intel_pipe_crc_source source;
>> -    n_words = display_crc_ctl_tokenize(buf, words, N_WORDS);
>> +    n_words = buffer_tokenize(buf, words, N_WORDS);
>>      if (n_words != N_WORDS) {
>>          DRM_DEBUG_DRIVER("tokenize failed, a command is %d words\n",
>>                   N_WORDS);
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 6d7d871..4d5ffde 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3847,6 +3847,7 @@  u32 i915_gem_fence_alignment(struct drm_i915_private *dev_priv, u32 size,
 int i915_debugfs_register(struct drm_i915_private *dev_priv);
 int i915_debugfs_connector_add(struct drm_connector *connector);
 void intel_display_crc_init(struct drm_i915_private *dev_priv);
+int buffer_tokenize(char *buf, char *words[], int max_words);
 #else
 static inline int i915_debugfs_register(struct drm_i915_private *dev_priv) {return 0;}
 static inline int i915_debugfs_connector_add(struct drm_connector *connector)
diff --git a/drivers/gpu/drm/i915/intel_pipe_crc.c b/drivers/gpu/drm/i915/intel_pipe_crc.c
index 96043a5..2e312b8 100644
--- a/drivers/gpu/drm/i915/intel_pipe_crc.c
+++ b/drivers/gpu/drm/i915/intel_pipe_crc.c
@@ -710,49 +710,6 @@  static int pipe_crc_set_source(struct drm_i915_private *dev_priv,
 	return ret;
 }
 
-/*
- * Parse pipe CRC command strings:
- *   command: wsp* object wsp+ name wsp+ source wsp*
- *   object: 'pipe'
- *   name: (A | B | C)
- *   source: (none | plane1 | plane2 | pf)
- *   wsp: (#0x20 | #0x9 | #0xA)+
- *
- * eg.:
- *  "pipe A plane1"  ->  Start CRC computations on plane1 of pipe A
- *  "pipe A none"    ->  Stop CRC
- */
-static int display_crc_ctl_tokenize(char *buf, char *words[], int max_words)
-{
-	int n_words = 0;
-
-	while (*buf) {
-		char *end;
-
-		/* skip leading white space */
-		buf = skip_spaces(buf);
-		if (!*buf)
-			break;	/* end of buffer */
-
-		/* find end of word */
-		for (end = buf; *end && !isspace(*end); end++)
-			;
-
-		if (n_words == max_words) {
-			DRM_DEBUG_DRIVER("too many words, allowed <= %d\n",
-					 max_words);
-			return -EINVAL;	/* ran out of words[] before bytes */
-		}
-
-		if (*end)
-			*end++ = '\0';
-		words[n_words++] = buf;
-		buf = end;
-	}
-
-	return n_words;
-}
-
 enum intel_pipe_crc_object {
 	PIPE_CRC_OBJECT_PIPE,
 };
@@ -806,6 +763,49 @@  static int display_crc_ctl_parse_pipe(const char *buf, enum pipe *pipe)
 	return -EINVAL;
 }
 
+int buffer_tokenize(char *buf, char *words[], int max_words)
+{
+	int n_words = 0;
+
+	while (*buf) {
+		char *end;
+
+		/* skip leading white space */
+		buf = skip_spaces(buf);
+		if (!*buf)
+			break;	/* end of buffer */
+
+		/* find end of word */
+		for (end = buf; *end && !isspace(*end); end++)
+			;
+
+		if (n_words == max_words) {
+			DRM_DEBUG_DRIVER("too many words, allowed <= %d\n",
+					 max_words);
+			return -EINVAL;	/* ran out of words[] before bytes */
+		}
+
+		if (*end)
+			*end++ = '\0';
+		words[n_words++] = buf;
+		buf = end;
+	}
+
+	return n_words;
+}
+
+/*
+ * Parse pipe CRC command strings:
+ *   command: wsp* object wsp+ name wsp+ source wsp*
+ *   object: 'pipe'
+ *   name: (A | B | C)
+ *   source: (none | plane1 | plane2 | pf)
+ *   wsp: (#0x20 | #0x9 | #0xA)+
+ *
+ * eg.:
+ *  "pipe A plane1"  ->  Start CRC computations on plane1 of pipe A
+ *  "pipe A none"    ->  Stop CRC
+ */
 static int display_crc_ctl_parse(struct drm_i915_private *dev_priv,
 				 char *buf, size_t len)
 {
@@ -816,7 +816,7 @@  static int display_crc_ctl_parse(struct drm_i915_private *dev_priv,
 	enum intel_pipe_crc_object object;
 	enum intel_pipe_crc_source source;
 
-	n_words = display_crc_ctl_tokenize(buf, words, N_WORDS);
+	n_words = buffer_tokenize(buf, words, N_WORDS);
 	if (n_words != N_WORDS) {
 		DRM_DEBUG_DRIVER("tokenize failed, a command is %d words\n",
 				 N_WORDS);