Almost all labels generated by the extracting script are now prefixed
with DT_. The only exceptions are:
- stuff with 'base_label' specified in yaml bindings
- items specified by 'regs_config' and 'name_config' dictionaries
in globals.py module
- FLASH related labels generated by flash.extract() called separately
from generate_node_definitions(), e.g. FLASH_WRITE_BLOCK_SIZE -
these are used directly, not through fixups, from existing code
so I didn't want to touch them now
Labels generated for aliases are additionally prefixed with information
from the 'compatible' property, e.g. DT_GPIO_LEDS_LED0_* is generated
instead of LED0_*. To provide backward compatibility for code that uses
LEDx_* and SWx_* labels in their previous forms, a command line option
named 'old-alias-names' is added to the extraction script. This option
causes that the labels for aliases are generated in both old and new
forms. Currently this option is always enabled in dts.cmake.
Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
Allow directly calling the flash partition extraction function and
remove passing any arguments that the function doesn't actually use.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Reworked flash partition extraction so we call it when we see a
node that is 'partiton@' instead of per property. We also handle the
'read-only' property in the flash partition extraction function which
lets us remove 'use-property-label' handling.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
We don't have any cases that need 'use-property-label' related to
handling of reg extraction so lets remove it.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Compat define is generated without value. This should not harm,
but since generated flag is a "Kconfig like" define, we migth need it
to hold a value.
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
We can replace the method get_node_label_string in DTDirective with the
global function get_node_label. This way we have a single place that
labels for defines are being generated.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Don't based the compat to get_node_label, we can just figure out based
on the node address we are passed.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
We've never handled boolean properties well, if we had a boolean that
existed we'd generate a define of 'True' and if the boolean didn't exist
than nothing would be generated. So there was no easy way to tell that
the boolean wasn't defined.
Now if we mark a property as boolean in the yaml, we will generate a
define for it regardless if it exists or not. If it exists we'll
set the value to 1, and if it doesn't to 0.
Fixes#8376
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Add a function that given a node address we get a list of compats back
instead of just the first. This is in prep for eDTS support.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Before dtc 1.4.7 we'd get something like the following for an reg
property:
reg = <1 2 3 4>;
After dtc 1.4.7 we get:
reg = <1 2>, <3 4>;
We should handle both cases in the extract reg handling code. So if
we see a list of lists, we flatten it to a single list to normalize
the property.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
For now we've used range properties as a pass through. However range
properties can translate from one address space to another. This is
typically used one address spaces translate from one physical bus to
another (For example going from PCI address space to internal SoC memory
map). However, we can also use this for cases where we want to reduce
duplication (For example with ARMv8-M for secure v non-secure MMIO
registers).
'ranges' takes either the form of:
ranges; /* pass through translation */
or:
ranges = <child-bus-address parent-bus-address length>;
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
We use to walk to the full tree in search of addr/size cells. We should
only have to look at the parent of the node for these properties.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Given the path address to a node return the address/size cells. In
theory this should just be looking up the #{address,size}-cells in
the parent node, we'll make that cleanup next.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
In case of having more than one reg, aliases would not generate
properly. Number of register at the end of define was missing.
Signed-off-by: Mieszko Mierunski <mieszko.mierunski@nordicsemi.no>
When the code partition is not at the beginning of the flash, the load
offset is wrongly computed. The address in the device tree is already
relative to the beginning of the parent node, ie the beginning of the
flash memory space. There is therefore no need to subtract it.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
The node name parsing for the _LABEL #define does not parse the unique
node portion in the same fashion between @<unit_address> and _<number>.
This change normalizes the two modes.
Signed-off-by: David Leach <david.leach@nxp.com>
If size or address cells happened to be 2 we'd get the wrong value since
we where shift the least significant 32-bit's up. Adjust the math based
on the value of the cell amount to fix things.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Rename address / size cell variable to clarify that its the number
of address / size cells.
Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
reg class is updated to take into account whole use cases
of reg extraction so extract_reg_prop could be removed.
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
Parameter 'names' is provided as argument of several property
extract functions. Thought it is actually used only once.
Remove when not needed.
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Generate CONFIG_DT_COMPAT flags using available nodes
'compatible' property.
Store them in a bogus node_address key of defs dict so
duplicates could be removed.
Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
Before dtc 1.4.7 we'd get something like the following for an interrupt
property in which #interrupt-cells is 2.
interrupts = <1 2 3 4>;
After dtc 1.4.7 we get:
interrupts = <1 2>, <3 4>;
We should handle both cases in the extract interrupt handling code. So
if we see a list of lists, we flatten it to a single list to normalize
the property.
Fixes: #9558
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
A node alias name should be applied to the all property names.
Before this patch, the alias name is applied erroneously
just for CLOCK_CONTROLLER, skipping the CLOCK_BITS and CLOCK_BUS
property names.
Signed-off-by: Istvan Bisz <istvan.bisz@t-online.hu>
When a DTS node has no 'compatible' property and its parent node has a
list for its compatible property, return only the first element of the
parent's compatible list.
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
'defs' variable is used and passed as a parameter in the vast
majority of the functions of extract_dts_includes script.
Set this variable global
Do the same with 'struct' variable for upcoming change.
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
Treat new generated dtc element 'alt-name' as usual aliases.
Aim is not to duplicate generation of node elements but provide
pointers using generic alternate names.
For instance, defining following overriding node:
arduino_i2c : i2c1 {};
Will generate following definition:
#define ARDUINO_I2C_LABEL ST_STM32_I2C_V1_40005400_LABEL
Then 'ARDUINO_I2C_LABEL' could be use a generic binding.
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
In some cases, node label could be generated with "/" character
in name string, which prevents compilation
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
Signed-off-by: Florian Vaussard <florian.vaussard@gmail.com>
Modify get_compat function to look for 'compatible' property
in parent nodes if not available at node level.
Since this operation is quite common, this allows some code
factorization. As a consequence, get_compat takes 'node_address'
as argument instead of 'node'.
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
In order to generate defs for references in aliases dts node,
add some treatment in extract_xxx functions to generate
aliases #define's
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
Prepare to split extract_dts_includes in modules.
extract_dts_includes design is based on globals. Every module must be
able to use (import) them.
Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>