checkpatch: Add warnings for unexpected struct names

As a way of keeping the driver declarations more consistent, add a warning
if the struct used does not end with _priv or _plat.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2020-12-03 16:55:24 -07:00
parent 8a8d24bdf1
commit b7bbd553de
2 changed files with 66 additions and 0 deletions

View File

@@ -2320,6 +2320,23 @@ sub get_raw_comment {
return $comment;
}
# Args:
# line: Patch line to check
# auto: Auto variable name, e.g. "per_child_auto"
# suffix: Suffix to expect on member, e.g. "_priv"
# warning: Warning name, e.g. "PRIV_AUTO"
sub u_boot_struct_name {
my ($line, $auto, $suffix, $warning) = @_;
# Use _priv as a suffix for the device-private data struct
if ($line =~ /^\+\s*\.${auto}\s*=\s*sizeof\(struct\((\w+)\).*/) {
my $struct_name = $1;
if ($struct_name !~ /^\w+${suffix}/) {
WARN($warning, "struct \'$struct_name\' should have a ${suffix} suffix");
}
}
}
# Checks specific to U-Boot
sub u_boot_line {
my ($realfile, $line, $rawline, $herecurr) = @_;
@@ -2371,6 +2388,27 @@ sub u_boot_line {
ERROR("CONFIG_IS_ENABLED_CONFIG",
"CONFIG_IS_ENABLED() takes values without the CONFIG_ prefix\n" . $herecurr);
}
# Use _priv as a suffix for the device-private data struct
if ($line =~ /^\+\s*\.priv_auto\s*=\s*sizeof\(struct\((\w+)\).*/) {
my $struct_name = $1;
if ($struct_name !~ /^\w+_priv/) {
WARN("PRIV_AUTO", "struct \'$struct_name\' should have a _priv suffix");
}
}
# Check struct names for the 'auto' members of struct driver
u_boot_struct_name($line, "priv_auto", "_priv", "PRIV_AUTO");
u_boot_struct_name($line, "plat_auto", "_plat", "PLAT_AUTO");
u_boot_struct_name($line, "per_child_auto", "_priv", "CHILD_PRIV_AUTO");
u_boot_struct_name($line, "per_child_plat_auto", "_plat",
"CHILD_PLAT_AUTO");
# Now the ones for struct uclass, skipping those in common with above
u_boot_struct_name($line, "per_device_auto", "_priv",
"DEVICE_PRIV_AUTO");
u_boot_struct_name($line, "per_device_plat_auto", "_plat",
"DEVICE_PLAT_AUTO");
}
sub process {