devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] checkpatch: add DT compatible string documentation checks
@ 2013-12-04 16:03 Rob Herring
       [not found] ` <1386173031-17867-1-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Rob Herring @ 2013-12-04 16:03 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA
  Cc: Rob Herring, Grant Likely, Andy Whitcroft, Joe Perches

From: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>

This adds a simple check that any compatible strings in DeviceTree dts
files are present in Documentation/devicetree/bindings. Vendor prefixes
are also checked for existing in vendor-prefixes.txt These should be
temporary checks until we have more sophisticated binding schema checking.

Signed-off-by: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Andy Whitcroft <apw-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Cc: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
---
v3:
- Use a single message type UNDOCUMENTED_DT_STRING
- Ensure '+' is at beginning of the line
- Move vendor-prefixes.txt to variable

v2:
- Add vendor string checking against vendor-prefixes.txt
- Add '_', '.' and '+' as valid compatible string characters
- Use 'grep -E' instead of egrep

 scripts/checkpatch.pl | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 9c98100..3696366 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2034,6 +2034,31 @@ sub process {
 			     "Use of $flag is deprecated, please use \`$replacement->{$flag} instead.\n" . $herecurr) if ($replacement->{$flag});
 		}
 
+# check for DT compatible documentation
+		if ($realfile =~ /\.dts/ && $rawline =~ /^\+\s*compatible\s*=/) {
+			my @compats = $rawline =~ /\"([a-zA-Z0-9\-\,\.\+_]+)\"/g;
+
+			foreach my $compat (@compats) {
+				my $compat2 = $compat;
+				my $dt_path = "Documentation/devicetree/bindings/";
+				$compat2 =~ s/\,[a-z]*\-/\,<\.\*>\-/;
+				`grep -Erq "$compat|$compat2" $dt_path`;
+				if ( $? >> 8 ) {
+					WARN("UNDOCUMENTED_DT_STRING",
+					     "DT compatible string \"$compat\" appears un-documented -- check $dt_path\n" . $herecurr);
+				}
+
+				my $vendor = $compat;
+				my $vendor_path = $dt_path . "vendor-prefixes.txt";
+				$vendor =~ s/^([a-zA-Z0-9]+)\,.*/$1/;
+				`grep -Eq "$vendor" $vendor_path`;
+				if ( $? >> 8 ) {
+					WARN("UNDOCUMENTED_DT_STRING",
+					     "DT compatible string vendor \"$vendor\" appears un-documented -- check $vendor_path\n" . $herecurr);
+				}
+			}
+		}
+
 # check we are in a valid source file if not then ignore this hunk
 		next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] checkpatch: add DT compatible string documentation checks
       [not found] ` <1386173031-17867-1-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-12-04 16:12   ` Joe Perches
  2013-12-06  9:56     ` Andy Whitcroft
  0 siblings, 1 reply; 4+ messages in thread
From: Joe Perches @ 2013-12-04 16:12 UTC (permalink / raw)
  To: Rob Herring, Andrew Morton
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely,
	Andy Whitcroft

On Wed, 2013-12-04 at 10:03 -0600, Rob Herring wrote:
> From: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> 
> This adds a simple check that any compatible strings in DeviceTree dts
> files are present in Documentation/devicetree/bindings. Vendor prefixes
> are also checked for existing in vendor-prefixes.txt These should be
> temporary checks until we have more sophisticated binding schema checking.
> 
> Signed-off-by: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> Cc: Andy Whitcroft <apw-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
> Cc: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>

Signed-off-by: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>

> ---
> v3:
> - Use a single message type UNDOCUMENTED_DT_STRING
> - Ensure '+' is at beginning of the line
> - Move vendor-prefixes.txt to variable
> 
> v2:
> - Add vendor string checking against vendor-prefixes.txt
> - Add '_', '.' and '+' as valid compatible string characters
> - Use 'grep -E' instead of egrep
> 
>  scripts/checkpatch.pl | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 9c98100..3696366 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2034,6 +2034,31 @@ sub process {
>  			     "Use of $flag is deprecated, please use \`$replacement->{$flag} instead.\n" . $herecurr) if ($replacement->{$flag});
>  		}
>  
> +# check for DT compatible documentation
> +		if ($realfile =~ /\.dts/ && $rawline =~ /^\+\s*compatible\s*=/) {
> +			my @compats = $rawline =~ /\"([a-zA-Z0-9\-\,\.\+_]+)\"/g;
> +
> +			foreach my $compat (@compats) {
> +				my $compat2 = $compat;
> +				my $dt_path = "Documentation/devicetree/bindings/";
> +				$compat2 =~ s/\,[a-z]*\-/\,<\.\*>\-/;
> +				`grep -Erq "$compat|$compat2" $dt_path`;
> +				if ( $? >> 8 ) {
> +					WARN("UNDOCUMENTED_DT_STRING",
> +					     "DT compatible string \"$compat\" appears un-documented -- check $dt_path\n" . $herecurr);
> +				}
> +
> +				my $vendor = $compat;
> +				my $vendor_path = $dt_path . "vendor-prefixes.txt";
> +				$vendor =~ s/^([a-zA-Z0-9]+)\,.*/$1/;
> +				`grep -Eq "$vendor" $vendor_path`;
> +				if ( $? >> 8 ) {
> +					WARN("UNDOCUMENTED_DT_STRING",
> +					     "DT compatible string vendor \"$vendor\" appears un-documented -- check $vendor_path\n" . $herecurr);
> +				}
> +			}
> +		}
> +
>  # check we are in a valid source file if not then ignore this hunk
>  		next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
>  



--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] checkpatch: add DT compatible string documentation checks
  2013-12-04 16:12   ` Joe Perches
@ 2013-12-06  9:56     ` Andy Whitcroft
  2013-12-06 16:48       ` Joe Perches
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Whitcroft @ 2013-12-06  9:56 UTC (permalink / raw)
  To: Joe Perches
  Cc: Rob Herring, Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely

On Wed, Dec 04, 2013 at 08:12:43AM -0800, Joe Perches wrote:
> On Wed, 2013-12-04 at 10:03 -0600, Rob Herring wrote:
> > From: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> > 
> > This adds a simple check that any compatible strings in DeviceTree dts
> > files are present in Documentation/devicetree/bindings. Vendor prefixes
> > are also checked for existing in vendor-prefixes.txt These should be
> > temporary checks until we have more sophisticated binding schema checking.
> > 
> > Signed-off-by: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> > Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> > Cc: Andy Whitcroft <apw-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
> > Cc: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
> 
> Signed-off-by: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
> 
> > ---
> > v3:
> > - Use a single message type UNDOCUMENTED_DT_STRING
> > - Ensure '+' is at beginning of the line
> > - Move vendor-prefixes.txt to variable
> > 
> > v2:
> > - Add vendor string checking against vendor-prefixes.txt
> > - Add '_', '.' and '+' as valid compatible string characters
> > - Use 'grep -E' instead of egrep
> > 
> >  scripts/checkpatch.pl | 25 +++++++++++++++++++++++++
> >  1 file changed, 25 insertions(+)
> > 
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> > index 9c98100..3696366 100755
> > --- a/scripts/checkpatch.pl
> > +++ b/scripts/checkpatch.pl
> > @@ -2034,6 +2034,31 @@ sub process {
> >  			     "Use of $flag is deprecated, please use \`$replacement->{$flag} instead.\n" . $herecurr) if ($replacement->{$flag});
> >  		}
> >  
> > +# check for DT compatible documentation
> > +		if ($realfile =~ /\.dts/ && $rawline =~ /^\+\s*compatible\s*=/) {
> > +			my @compats = $rawline =~ /\"([a-zA-Z0-9\-\,\.\+_]+)\"/g;
> > +
> > +			foreach my $compat (@compats) {
> > +				my $compat2 = $compat;
> > +				my $dt_path = "Documentation/devicetree/bindings/";
> > +				$compat2 =~ s/\,[a-z]*\-/\,<\.\*>\-/;
> > +				`grep -Erq "$compat|$compat2" $dt_path`;
> > +				if ( $? >> 8 ) {
> > +					WARN("UNDOCUMENTED_DT_STRING",
> > +					     "DT compatible string \"$compat\" appears un-documented -- check $dt_path\n" . $herecurr);
> > +				}
> > +
> > +				my $vendor = $compat;
> > +				my $vendor_path = $dt_path . "vendor-prefixes.txt";
> > +				$vendor =~ s/^([a-zA-Z0-9]+)\,.*/$1/;
> > +				`grep -Eq "$vendor" $vendor_path`;
> > +				if ( $? >> 8 ) {
> > +					WARN("UNDOCUMENTED_DT_STRING",
> > +					     "DT compatible string vendor \"$vendor\" appears un-documented -- check $vendor_path\n" . $herecurr);
> > +				}
> > +			}
> > +		}

So this only works if you are in the top of the tree at the time when
you run it (unless I've missed something).  So it might be appropraite
to suppress this when the vendor-prefixes.txt file is not found.

-apw
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] checkpatch: add DT compatible string documentation checks
  2013-12-06  9:56     ` Andy Whitcroft
@ 2013-12-06 16:48       ` Joe Perches
  0 siblings, 0 replies; 4+ messages in thread
From: Joe Perches @ 2013-12-06 16:48 UTC (permalink / raw)
  To: Andy Whitcroft
  Cc: Rob Herring, Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely

On Fri, 2013-12-06 at 09:56 +0000, Andy Whitcroft wrote:
> On Wed, Dec 04, 2013 at 08:12:43AM -0800, Joe Perches wrote:
> > On Wed, 2013-12-04 at 10:03 -0600, Rob Herring wrote:
> > > From: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> > > 
> > > This adds a simple check that any compatible strings in DeviceTree dts
> > > files are present in Documentation/devicetree/bindings. Vendor prefixes
> > > are also checked for existing in vendor-prefixes.txt These should be
> > > temporary checks until we have more sophisticated binding schema checking.
[]
> > > +# check for DT compatible documentation
> > > +		if ($realfile =~ /\.dts/ && $rawline =~ /^\+\s*compatible\s*=/) {
> > > +			my @compats = $rawline =~ /\"([a-zA-Z0-9\-\,\.\+_]+)\"/g;
> > > +
> > > +			foreach my $compat (@compats) {
> > > +				my $compat2 = $compat;
> > > +				my $dt_path = "Documentation/devicetree/bindings/";
> > > +				$compat2 =~ s/\,[a-z]*\-/\,<\.\*>\-/;
> > > +				`grep -Erq "$compat|$compat2" $dt_path`;
> > > +				if ( $? >> 8 ) {
> > > +					WARN("UNDOCUMENTED_DT_STRING",
> > > +					     "DT compatible string \"$compat\" appears un-documented -- check $dt_path\n" . $herecurr);
> > > +				}
> > > +
> > > +				my $vendor = $compat;
> > > +				my $vendor_path = $dt_path . "vendor-prefixes.txt";
> > > +				$vendor =~ s/^([a-zA-Z0-9]+)\,.*/$1/;
> > > +				`grep -Eq "$vendor" $vendor_path`;
> > > +				if ( $? >> 8 ) {
> > > +					WARN("UNDOCUMENTED_DT_STRING",
> > > +					     "DT compatible string vendor \"$vendor\" appears un-documented -- check $vendor_path\n" . $herecurr);
> > > +				}
> > > +			}
> > > +		}
> 
> So this only works if you are in the top of the tree at the time when
> you run it (unless I've missed something).  So it might be appropraite
> to suppress this when the vendor-prefixes.txt file is not found.

I suppose it's useful to use the $root variable
on the file open too.

	my $vendor_path = $root . '/' . $dt_path . "vendor-prefixes.txt";


--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-12-06 16:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-04 16:03 [PATCH v3] checkpatch: add DT compatible string documentation checks Rob Herring
     [not found] ` <1386173031-17867-1-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-12-04 16:12   ` Joe Perches
2013-12-06  9:56     ` Andy Whitcroft
2013-12-06 16:48       ` Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).