]> www.infradead.org Git - users/willy/xarray.git/commitdiff
dt: dt-extract-compatibles: Extract compatibles from function parameters
authorRob Herring (Arm) <robh@kernel.org>
Wed, 17 Jul 2024 14:39:55 +0000 (08:39 -0600)
committerRob Herring (Arm) <robh@kernel.org>
Thu, 5 Sep 2024 15:17:03 +0000 (10:17 -0500)
Various DT and fwnode functions take a compatible string as a parameter.
These are often used in cases which don't have a driver, so they've been
missed.

The additional checks add about 400 more undocumented compatible
strings.

Link: https://lore.kernel.org/all/20240903200753.2097911-1-robh@kernel.org/
Acked-by: Saravana Kannan <saravanak@google.com>
Reviewed-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
scripts/dtc/dt-extract-compatibles

index 5ffb2364409b1746c5f1b7e8c4c2e3a85ea2c5a4..6570efabaa649ca42efee312b5b7253b2687424b 100755 (executable)
@@ -46,6 +46,15 @@ def parse_of_match_table(data):
        return match_table_list
 
 
+def parse_of_functions(data, func_name):
+       """ Find all compatibles in the last argument of a given function """
+       compat_list = []
+       for m in re.finditer(rf'{func_name}\(([a-zA-Z0-9_>\(\)"\-]+,\s)*"([a-zA-Z0-9_,-]+)"\)', data):
+               compat_list.append(m[2])
+
+       return compat_list
+
+
 def parse_compatibles(file, compat_ignore_list):
        with open(file, 'r', encoding='utf-8') as f:
                data = f.read().replace('\n', '')
@@ -60,6 +69,10 @@ def parse_compatibles(file, compat_ignore_list):
        else:
                compat_list = parse_of_declare_macros(data)
                compat_list += parse_of_device_id(data)
+               compat_list += parse_of_functions(data, "_is_compatible")
+               compat_list += parse_of_functions(data, "of_find_compatible_node")
+               compat_list += parse_of_functions(data, "for_each_compatible_node")
+               compat_list += parse_of_functions(data, "of_get_compatible_child")
 
        return compat_list