scripts/dts: Use 4-spaces tabs instead of 2-space tabs in devicetree.py

Mandated by Python PEP-8.
(And normalize the way we write python in dts scripts also)

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
diff --git a/scripts/dts/devicetree.py b/scripts/dts/devicetree.py
index ba47176..3b57d6a 100755
--- a/scripts/dts/devicetree.py
+++ b/scripts/dts/devicetree.py
@@ -5,279 +5,283 @@
 # SPDX-License-Identifier: Apache-2.0
 #
 
+# vim: ai:ts=4:sw=4
+
 import sys
 import pprint
 
 def read_until(line, fd, end):
-  out = [line]
-  while True:
-    idx = line.find(end)
-    if idx < 0:
-      line = clean_line(fd.readline(), fd)
-      out.append(line)
-    else:
-      out.append(line[idx + len(end):])
-      return out
+    out = [line]
+    while True:
+        idx = line.find(end)
+        if idx < 0:
+            line = clean_line(fd.readline(), fd)
+            out.append(line)
+        else:
+            out.append(line[idx + len(end):])
+            return out
 
 def remove_comment(line, fd):
-  out = []
-  while True:
-    idx = line.find('/*')
-    if idx < 0:
-      idx = line.find('//')
-      if idx < 0:
-        out.append(line)
-      else:
-        out.append(line[:idx])
-      return ' '.join(out)
+    out = []
+    while True:
+        idx = line.find('/*')
+        if idx < 0:
+            idx = line.find('//')
+            if idx < 0:
+                out.append(line)
+            else:
+                out.append(line[:idx])
+            return ' '.join(out)
 
-    out.append(line[:idx])
-    line = read_until(line[idx:], fd, '*/')[-1]
+        out.append(line[:idx])
+        line = read_until(line[idx:], fd, '*/')[-1]
 
 def clean_line(line, fd):
-  return remove_comment(line, fd).strip()
+    return remove_comment(line, fd).strip()
 
 def parse_node_name(line):
-  line = line[:-1]
+    line = line[:-1]
 
-  if '@' in line:
-    line, addr = line.split('@')
-  else:
-    addr = None
+    if '@' in line:
+        line, addr = line.split('@')
+    else:
+        addr = None
 
-  if ':' in line:
-    label, name = line.split(':')
-  else:
-    name = line
-    label = None
+    if ':' in line:
+        label, name = line.split(':')
+    else:
+        name = line
+        label = None
 
-  if addr is None:
-    return label, name.strip(), None, None
+    if addr is None:
+        return label, name.strip(), None, None
 
-  return label, name.strip(), addr, int(addr,16)
+    return label, name.strip(), addr, int(addr, 16)
 
 def parse_values_internal(value, start, end, separator):
-  out = []
+    out = []
 
-  inside = False
-  accum = []
-  for ch in value:
-    if not inside:
-      if ch == start:
-        inside = True
-        accum = []
-    else:
-      if ch == end:
-        inside = False
-        out.append(''.join(accum))
-        accum = []
-      else:
-        accum.append(ch)
+    inside = False
+    accum = []
+    for ch in value:
+        if not inside:
+            if ch == start:
+                inside = True
+                accum = []
+        else:
+            if ch == end:
+                inside = False
+                out.append(''.join(accum))
+                accum = []
+            else:
+                accum.append(ch)
 
-  if separator == ' ':
-    out = [v.split() for v in out]
+    if separator == ' ':
+        out = [v.split() for v in out]
 
-  if len(out) == 1:
-    return parse_value(out[0])
+    if len(out) == 1:
+        return parse_value(out[0])
 
-  return [parse_value(v) for v in out]
+    return [parse_value(v) for v in out]
 
 def parse_values(value, start, end, separator):
-  out = parse_values_internal(value, start, end, separator)
-  if isinstance(out, list) and all(isinstance(v, str) and len(v) == 1 and not v.isalpha() for v in out):
-    return bytearray(out)
-  return out
+    out = parse_values_internal(value, start, end, separator)
+    if isinstance(out, list) and \
+       all(isinstance(v, str) and len(v) == 1 and not v.isalpha() for v in out):
+        return bytearray(out)
+
+    return out
 
 def parse_value(value):
-  if value == '':
+    if value == '':
+        return value
+
+    if isinstance(value, list):
+        out = [parse_value(v) for v in value]
+        return out[0] if len(out) == 1 else out
+
+    if value[0] == '<':
+        return parse_values(value, '<', '>', ' ')
+    if value[0] == '"':
+        return parse_values(value, '"', '"', ',')
+    if value[0] == '[':
+        return parse_values(value, '[', ']', ' ')
+
+    if value[0] == '&':
+        return {'ref': value[1:]}
+
+    if value[0].isdigit():
+        if value.startswith("0x"):
+            return int(value, 16)
+        if value[0] == '0':
+            return int(value, 8)
+        return int(value, 10)
+
     return value
 
-  if isinstance(value, list):
-    out = [parse_value(v) for v in value]
-    return out[0] if len(out) == 1 else out
-
-  if value[0] == '<':
-    return parse_values(value, '<', '>', ' ')
-  if value[0] == '"':
-    return parse_values(value, '"', '"', ',')
-  if value[0] == '[':
-    return parse_values(value, '[', ']', ' ')
-
-  if value[0] == '&':
-    return {'ref': value[1:]}
-
-  if value[0].isdigit():
-    if value.startswith("0x"):
-      return int(value, 16)
-    if value[0] == '0':
-      return int(value, 8)
-    return int(value, 10)
-
-  return value
-
 def parse_property(property, fd):
-  if '=' in property:
-    key, value = property.split('=', 1)
-    value = ' '.join(read_until(value, fd, ';')).strip()
-    if not value.endswith(';'):
-      raise SyntaxError("parse_property: missing semicolon: %s" % value)
-    return key.strip(), parse_value(value[:-1])
+    if '=' in property:
+        key, value = property.split('=', 1)
+        value = ' '.join(read_until(value, fd, ';')).strip()
+        if not value.endswith(';'):
+            raise SyntaxError("parse_property: missing semicolon: %s" % value)
+        return key.strip(), parse_value(value[:-1])
 
-  property = property.strip()
-  if not property.endswith(';'):
-    raise SyntaxError("parse_property: missing semicolon: %s" % property)
+    property = property.strip()
+    if not property.endswith(';'):
+        raise SyntaxError("parse_property: missing semicolon: %s" % property)
 
-  return property[:-1].strip(), True
+    return property[:-1].strip(), True
 
 def build_node_name(name, addr):
-  if addr is None:
-    return name
-  elif isinstance(addr, int):
-    return '%s@%x' % (name, addr)
+    if addr is None:
+        return name
+    elif isinstance(addr, int):
+        return '%s@%x' % (name, addr)
 
-  return '%s@%s' % (name, addr.strip())
+    return '%s@%s' % (name, addr.strip())
 
 def parse_node(line, fd):
-  label, name, addr, numeric_addr = parse_node_name(line)
+    label, name, addr, numeric_addr = parse_node_name(line)
 
-  node = {
-    'label': label,
-    'type': type,
-    'addr': numeric_addr,
-    'children': {},
-    'props': {},
-    'name': build_node_name(name, addr)
-  }
-  while True:
-    line = fd.readline()
-    if not line:
-      raise SyntaxError("parse_node: Missing } while parsing node")
+    node = {
+        'label': label,
+        'type': type,
+        'addr': numeric_addr,
+        'children': {},
+        'props': {},
+        'name': build_node_name(name, addr)
+    }
+    while True:
+        line = fd.readline()
+        if not line:
+            raise SyntaxError("parse_node: Missing } while parsing node")
 
-    line = clean_line(line, fd)
-    if not line:
-      continue
+        line = clean_line(line, fd)
+        if not line:
+            continue
 
-    if line == "};":
-      break
+        if line == "};":
+            break
 
-    if line.endswith('{'):
-      new_node = parse_node(line, fd)
-      node['children'][new_node['name']] = new_node
-    else:
-      key, value = parse_property(line, fd)
-      node['props'][key] = value
+        if line.endswith('{'):
+            new_node = parse_node(line, fd)
+            node['children'][new_node['name']] = new_node
+        else:
+            key, value = parse_property(line, fd)
+            node['props'][key] = value
 
-  return node
+    return node
 
 def parse_file(fd, ignore_dts_version=False):
-  nodes = {}
-  has_v1_tag = False
-  while True:
-    line = fd.readline()
-    if not line:
-      break
+    nodes = {}
+    has_v1_tag = False
+    while True:
+        line = fd.readline()
+        if not line:
+            break
 
-    line = clean_line(line, fd)
-    if not line:
-      continue
+        line = clean_line(line, fd)
+        if not line:
+            continue
 
-    if line.startswith('/include/ '):
-      tag, filename = line.split()
-      with open(filename.strip()[1:-1], "r") as new_fd:
-        nodes.update(parse_file(new_fd, True))
-    elif line == '/dts-v1/;':
-      has_v1_tag = True
-    elif line.startswith('/memreserve/ ') and line.endswith(';'):
-      tag, start, end = line.split()
-      start = int(start, 16)
-      end = int(end[:-1], 16)
-      label = "reserved_memory_0x%x_0x%x" % (start, end)
-      nodes[label] = {
-        'type': 'memory',
-        'reg': [start, end],
-        'label': label,
-        'addr': start,
-        'name': build_node_name(name, start)
-      }
-    elif line.endswith('{'):
-      if not has_v1_tag and not ignore_dts_version:
-        raise SyntaxError("parse_file: Missing /dts-v1/ tag")
+        if line.startswith('/include/ '):
+            tag, filename = line.split()
+            with open(filename.strip()[1:-1], "r") as new_fd:
+                nodes.update(parse_file(new_fd, True))
+        elif line == '/dts-v1/;':
+            has_v1_tag = True
+        elif line.startswith('/memreserve/ ') and line.endswith(';'):
+            tag, start, end = line.split()
+            start = int(start, 16)
+            end = int(end[:-1], 16)
+            label = "reserved_memory_0x%x_0x%x" % (start, end)
+            nodes[label] = {
+                'type': 'memory',
+                'reg': [start, end],
+                'label': label,
+                'addr': start,
+                'name': build_node_name(name, start)
+            }
+        elif line.endswith('{'):
+            if not has_v1_tag and not ignore_dts_version:
+                raise SyntaxError("parse_file: Missing /dts-v1/ tag")
 
-      new_node = parse_node(line, fd)
-      nodes[new_node['name']] = new_node
-    else:
-      raise SyntaxError("parse_file: Couldn't understand the line: %s" % line)
-  return nodes
+            new_node = parse_node(line, fd)
+            nodes[new_node['name']] = new_node
+        else:
+            raise SyntaxError("parse_file: Couldn't understand the line: %s" % line)
+    return nodes
 
 def dump_refs(name, value, indent=0):
-  spaces = '  ' * indent
+    spaces = '  ' * indent
 
-  out = []
-  if isinstance(value, dict) and 'ref' in value:
-    out.append('%s\"%s\" -> \"%s\";' % (spaces, name, value['ref']))
-  elif isinstance(value, list):
-    for elem in value:
-      out.extend(dump_refs(name, elem, indent))
+    out = []
+    if isinstance(value, dict) and 'ref' in value:
+        out.append('%s\"%s\" -> \"%s\";' % (spaces, name, value['ref']))
+    elif isinstance(value, list):
+        for elem in value:
+            out.extend(dump_refs(name, elem, indent))
 
-  return out
+    return out
 
 def dump_all_refs(name, props, indent=0):
-  out = []
-  for key, value in props.items():
-    out.extend(dump_refs(name, value, indent))
-  return out
+    out = []
+    for key, value in props.items():
+        out.extend(dump_refs(name, value, indent))
+    return out
 
 def next_subgraph(count=[0]):
-  count[0] += 1
-  return 'subgraph cluster_%d' % count[0]
+    count[0] += 1
+    return 'subgraph cluster_%d' % count[0]
 
 def get_dot_node_name(node):
-  name = node['name']
-  return name[1:] if name[0] == '&' else name
+    name = node['name']
+    return name[1:] if name[0] == '&' else name
 
 def dump_to_dot(nodes, indent=0, start_string='digraph devicetree', name=None):
-  spaces = '  ' * indent
+    spaces = '  ' * indent
 
-  print("%s%s {" % (spaces, start_string))
+    print("%s%s {" % (spaces, start_string))
 
-  if name is not None:
-    print("%slabel = \"%s\";" % (spaces, name))
-    print("%s\"%s\";" % (spaces, name))
+    if name is not None:
+        print("%slabel = \"%s\";" % (spaces, name))
+        print("%s\"%s\";" % (spaces, name))
 
-  ref_list = []
-  for key, value in nodes.items():
-    if value.get('children'):
-      refs = dump_to_dot(value['children'], indent + 1, next_subgraph(), get_dot_node_name(value))
-      ref_list.extend(refs)
-    else:
-      print("%s\"%s\";" % (spaces, get_dot_node_name(value)))
+    ref_list = []
+    for key, value in nodes.items():
+        if value.get('children'):
+            refs = dump_to_dot(value['children'], indent + 1, next_subgraph(), get_dot_node_name(value))
+            ref_list.extend(refs)
+        else:
+            print("%s\"%s\";" % (spaces, get_dot_node_name(value)))
 
-  for key, value in nodes.items():
-    refs = dump_all_refs(get_dot_node_name(value), value.get('props', {}), indent)
-    ref_list.extend(refs)
+    for key, value in nodes.items():
+        refs = dump_all_refs(get_dot_node_name(value), value.get('props', {}), indent)
+        ref_list.extend(refs)
 
-  if start_string.startswith("digraph"):
-    print("%s%s" % (spaces, '\n'.join(ref_list)))
+    if start_string.startswith("digraph"):
+        print("%s%s" % (spaces, '\n'.join(ref_list)))
 
-  print("%s}" % spaces)
+    print("%s}" % spaces)
 
-  return ref_list
+    return ref_list
 
 def main(args):
-  if len(args) == 1:
-    print('Usage: %s filename.dts' % args[0])
-    return 1
+    if len(args) == 1:
+        print('Usage: %s filename.dts' % args[0])
+        return 1
 
-  if '--dot' in args:
-    formatter = dump_to_dot
-    args.remove('--dot')
-  else:
-    formatter = lambda nodes: pprint.pprint(nodes, indent=2)
+    if '--dot' in args:
+        formatter = dump_to_dot
+        args.remove('--dot')
+    else:
+        formatter = lambda nodes: pprint.pprint(nodes, indent=2)
 
-  with open(args[1], "r") as fd:
-    formatter(parse_file(fd))
+    with open(args[1], "r") as fd:
+        formatter(parse_file(fd))
 
-  return 0
+    return 0
 
 if __name__ == '__main__':
-  sys.exit(main(sys.argv))
+    sys.exit(main(sys.argv))