zephyr/scripts/dts/extract/default.py
Ulf Magnusson f5b17d4138 scripts/dts: Call /foo/bar a "path" instead of an "address"
It's confusing that "address" is often used within the same function to
refer to both node paths and e.g. address cells.

Make things easier to understand by calling /foo/bar a path instead.

Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
2019-02-22 12:44:16 -06:00

74 lines
2.3 KiB
Python

#
# Copyright (c) 2018 Bobby Noelte
#
# SPDX-License-Identifier: Apache-2.0
#
from extract.globals import *
from extract.directive import DTDirective
##
# @brief Manage directives in a default way.
#
class DTDefault(DTDirective):
def __init__(self):
pass
##
# @brief Extract directives in a default way
#
# @param node_path Path to node owning the clockxxx definition.
# @param prop property name
# @param prop type (string, boolean, etc)
# @param def_label Define label string of node owning the directive.
#
def extract(self, node_path, prop, prop_type, def_label):
prop_def = {}
prop_alias = {}
if prop_type == 'boolean':
if prop in reduced[node_path]['props']:
prop_values = 1
else:
prop_values = 0
else:
prop_values = reduced[node_path]['props'][prop]
if isinstance(prop_values, list):
for i, prop_value in enumerate(prop_values):
prop_name = str_to_label(prop)
label = def_label + '_' + prop_name
if isinstance(prop_value, str):
prop_value = "\"" + prop_value + "\""
prop_def[label + '_' + str(i)] = prop_value
add_compat_alias(node_path,
prop_name + '_' + str(i),
label + '_' + str(i),
prop_alias)
else:
prop_name = str_to_label(prop)
label = def_label + '_' + prop_name
if prop_values == 'parent-label':
prop_values = find_parent_prop(node_path, 'label')
if isinstance(prop_values, str):
prop_values = "\"" + prop_values + "\""
prop_def[label] = prop_values
add_compat_alias(node_path, prop_name, label, prop_alias)
# generate defs for node aliases
if node_path in aliases:
add_prop_aliases(
node_path,
lambda alias: str_to_label(alias) + '_' + prop_name,
label,
prop_alias)
insert_defs(node_path, prop_def, prop_alias)
##
# @brief Management information for directives handled by default.
default = DTDefault()