[PATCH 5/5] dtoc: Tidy up Python style in dtb_platdata
Walter Lozano
walter.lozano at collabora.com
Fri Nov 13 04:42:53 CET 2020
Hi Simon,
Thanks for this series. I've tried to test it but I had issues to apply
it. I have tried in u-boot, both master and next, and u-boot-dm.
Could you please point me to the right tree/version?
On 9/11/20 00:36, Simon Glass wrote:
> Update this, mostly to add comments for argument and return types. It is
> probably still too early to use type hinting since it was introduced in
> 3.5.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> tools/dtoc/dtb_platdata.py | 71 ++++++++++++++++++++++----------------
> 1 file changed, 42 insertions(+), 29 deletions(-)
>
> diff --git a/tools/dtoc/dtb_platdata.py b/tools/dtoc/dtb_platdata.py
> index 0ef245397a9..6b10eabafb9 100644
> --- a/tools/dtoc/dtb_platdata.py
> +++ b/tools/dtoc/dtb_platdata.py
> @@ -9,6 +9,8 @@
>
> This supports converting device tree data to C structures definitions and
> static data.
> +
> +See doc/driver-model/of-plat.rst for more informaiton
*information
> """
>
> import collections
> @@ -19,9 +21,9 @@ import sys
>
> from dtoc import fdt
> from dtoc import fdt_util
> -from patman import tools
>
> -# When we see these properties we ignore them - i.e. do not create a structure member
> +# When we see these properties we ignore them - i.e. do not create a structure
> +# member
> PROP_IGNORE_LIST = [
> '#address-cells',
> '#gpio-cells',
> @@ -69,9 +71,9 @@ def conv_name_to_c(name):
> (400ms for 1m calls versus 1000ms for the 're' version).
>
> Args:
> - name: Name to convert
> + name (str): Name to convert
> Return:
> - String containing the C version of this name
> + str: String containing the C version of this name
> """
> new = name.replace('@', '_at_')
> new = new.replace('-', '_')
> @@ -83,11 +85,11 @@ def tab_to(num_tabs, line):
> """Append tabs to a line of text to reach a tab stop.
>
> Args:
> - num_tabs: Tab stop to obtain (0 = column 0, 1 = column 8, etc.)
> - line: Line of text to append to
> + num_tabs (int): Tab stop to obtain (0 = column 0, 1 = column 8, etc.)
> + line (str): Line of text to append to
>
> Returns:
> - line with the correct number of tabs appeneded. If the line already
> + str: line with the correct number of tabs appeneded. If the line already
> extends past that tab stop then a single space is appended.
> """
> if len(line) >= num_tabs * 8:
> @@ -103,28 +105,31 @@ def get_value(ftype, value):
> For booleans this return 'true'
>
> Args:
> - type: Data type (fdt_util)
> - value: Data value, as a string of bytes
> + ftype (fdt.Type): Data type (fdt_util)
> + value (bytes): Data value, as a string of bytes
> +
> + Returns:
> + str: String representation of the value
> """
> if ftype == fdt.Type.INT:
> return '%#x' % fdt_util.fdt32_to_cpu(value)
> elif ftype == fdt.Type.BYTE:
> ch = value[0]
> - return '%#x' % (ord(ch) if type(ch) == str else ch)
> + return '%#x' % (ord(ch) if isinstance(ch, str) else ch)
> elif ftype == fdt.Type.STRING:
> # Handle evil ACPI backslashes by adding another backslash before them.
> # So "\\_SB.GPO0" in the device tree effectively stays like that in C
> return '"%s"' % value.replace('\\', '\\\\')
> elif ftype == fdt.Type.BOOL:
> return 'true'
> - elif ftype == fdt.Type.INT64:
> + else: # ftype == fdt.Type.INT64:
> return '%#x' % value
>
> def get_compat_name(node):
> """Get the node's list of compatible string as a C identifiers
>
> Args:
> - node: Node object to check
> + node (fdt.Node): Node object to check
> Return:
> List of C identifiers for all the compatible strings
> """
> @@ -213,7 +218,7 @@ class DtbPlatdata(object):
> file.
>
> Args:
> - fname: Filename to send output to, or '-' for stdout
> + fname (str): Filename to send output to, or '-' for stdout
> """
> if fname == '-':
> self._outfile = sys.stdout
> @@ -224,7 +229,7 @@ class DtbPlatdata(object):
> """Output a string to the output file
>
> Args:
> - line: String to output
> + line (str): String to output
> """
> self._outfile.write(line)
>
> @@ -232,7 +237,7 @@ class DtbPlatdata(object):
> """Buffer up a string to send later
>
> Args:
> - line: String to add to our 'buffer' list
> + line (str): String to add to our 'buffer' list
> """
> self._lines.append(line)
>
> @@ -240,7 +245,7 @@ class DtbPlatdata(object):
> """Get the contents of the output buffer, and clear it
>
> Returns:
> - The output buffer, which is then cleared for future use
> + list(str): The output buffer, which is then cleared for future use
> """
> lines = self._lines
> self._lines = []
> @@ -263,9 +268,14 @@ class DtbPlatdata(object):
> or not. As an interim measure, use a list of known property names.
>
> Args:
> - prop: Prop object to check
> - Return:
> - Number of argument cells is this is a phandle, else None
> + prop (fdt.Prop): Prop object to check
> + node_name (str): Node name, only used for raising an error
> + Returns:
> + int or None: Number of argument cells is this is a phandle,
> + else None
> + Raises:
> + ValueError: if the phandle cannot be parsed or the required property
> + is not present
> """
> if prop.name in ['clocks', 'cd-gpios']:
> if not isinstance(prop.value, list):
> @@ -294,7 +304,7 @@ class DtbPlatdata(object):
> break
> if not cells:
> raise ValueError("Node '%s' has no cells property" %
> - (target.name))
> + (target.name))
> num_args = fdt_util.fdt32_to_cpu(cells.value)
> max_args = max(max_args, num_args)
> args.append(num_args)
> @@ -404,7 +414,7 @@ class DtbPlatdata(object):
> """Get the number of cells in addresses and sizes for this node
>
> Args:
> - node: Node to check
> + node (fdt.None): Node to check
>
> Returns:
> Tuple:
> @@ -440,9 +450,10 @@ class DtbPlatdata(object):
> raise ValueError("Node '%s' reg property is not an int" %
> node.name)
> if len(reg.value) % total:
> - raise ValueError("Node '%s' reg property has %d cells "
> - 'which is not a multiple of na + ns = %d + %d)' %
> - (node.name, len(reg.value), na, ns))
> + raise ValueError(
> + "Node '%s' reg property has %d cells "
> + 'which is not a multiple of na + ns = %d + %d)' %
> + (node.name, len(reg.value), na, ns))
> reg.na = na
> reg.ns = ns
> if na != 1 or ns != 1:
> @@ -585,7 +596,7 @@ class DtbPlatdata(object):
> """Output the C code for a node
>
> Args:
> - node: node to output
> + node (fdt.Node): node to output
> """
> def _output_list(node, prop):
> """Output the C code for a devicetree property that holds a list
> @@ -707,10 +718,12 @@ def run_steps(args, dtb_file, include_disabled, output, warning_disabled=False,
> """Run all the steps of the dtoc tool
>
> Args:
> - args: List of non-option arguments provided to the problem
> - dtb_file: Filename of dtb file to process
> - include_disabled: True to include disabled nodes
> - output: Name of output file
> + args (list): List of non-option arguments provided to the problem
> + dtb_file (str): Filename of dtb file to process
> + include_disabled (bool): True to include disabled nodes
> + output (str): Name of output file
> + Raises:
> + ValueError: if args has no command, or an unknown command
> """
> if not args:
> raise ValueError('Please specify a command: struct, platdata')
Regards,
Walter
More information about the U-Boot
mailing list