Commit graph

441 commits

Author SHA1 Message Date
Erwan Gouriou
deb0941cd5 scripts/extract/globals: treat node alternate names as 'aliases'
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>
2018-07-05 11:28:53 -05:00
Erwan Gouriou
fa5d6ec363 scripts: devicetree.py: get alternate labels from dt
Allow use of new element of dtc grammar called overriding nodes:
i2cexp: &i2c2  {};

It allows a node to assign an alternate label to a node that
could be generic and used for adapter boards.
This commit is a derivative of a dtc commit from dtc v1.4.2 [1]

[1] https://bit.ly/2GFLLOa

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-07-05 11:28:53 -05:00
Bobby Noelte
ca7fc2adbc scripts: extract_dts_includes.py: fix false info message
Do not provide info message if node type, title, version,
node description is overwritten.
This is the expected behaviour.

Fixes #8360

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
2018-07-04 08:28:45 -04:00
Bobby Noelte
08216f5ef4 scripts: extract_dts_includes.py: refactor for better maintenance
Refactor for better maintenance and to ease future enhancements.

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
2018-07-03 12:48:19 -05:00
Erwan Gouriou
ad29ec69dd scripts: extract: globals.py: fix node name when it includes "@"
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>
2018-06-12 03:54:26 -04:00
Bobby Noelte
1d27ee0b09 scripts: extract_dts_includes: fix recursion in extract_controller
Commit 93d3a42776 changed the interface
of extract_controller() but did not change the recursive call within.

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
2018-05-28 16:49:34 -04:00
Bobby Noelte
58967c7d3c scripts: extract_dts_includes.py: fix multiple include in bindings
Correctly process multiple include files given to the
!include command of the YAML loader.

The fix only targets the sequential definition of include files.

Fixes #7067

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
2018-05-25 10:59:12 -05:00
Erwan Gouriou
93d3a42776 scripts: extract_includes_dts: Remove usage of cell_string yaml attribute
'cell_string' yaml attribute has been introduced in order to
help enforcement of specific string during defines generation.
This adds complexity in understanding script behavior as a black
box and create additional dependency which is not strictly required.

For node specific generation functions (pinctrl and interrupts),
this could be replaced directly by an hardcoded version
(as everyone used the same 'cell_string' anyway).
For extract_cells functions, string could be replaced by extracted
property name. As a consequence, we're now able to generate defines
for properties refering to these controllers via phandle.
For instance, in following node
 	spbtle-rf@0 {
 		compatible = "st,spbtle-rf";
 		reg = <0>;
		reset-gpios = <&gpioa 8 0>;
 	};
We'll be able to generate:
 #define ST_STM32_SPI_...LE_RF_0_RESET_GPIOS_CONTROLLER	"GPIOA"
 #define ST_STM32_SPI_...PBTLE_RF_0_RESET_GPIOS_FLAGS_0		0
 #define ST_STM32_SPI_..._SPBTLE_RF_0_RESET_GPIOS_PIN_0		8

Only impact for this whole change is for NXP clocks which were the
only ones using 'cell_string' attribute with a value different than
the default one.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-05-10 10:38:23 -05:00
Erwan Gouriou
9272a3e5ac scripts: extract_dts_includes: remove prefix argument
prefix was given as argument in several functions but not used
as property is never defined.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-05-10 10:38:23 -05:00
Kumar Gala
ded17a910d scripts: extract_dts_includes: Fix extract_controller for a list
extract_controller only handle the first phandle in a cell property.
However we could easily have something like this where the phandles
vary:

gpios = <&gpiod 13 GPIO_INT_ACTIVE_LOW
         &gpioc 14 GPIO_INT_ACTIVE_LOW>;

So we need to walk the property list for each phandle and produce a
define associated with it.

Also, if alias to the node is defined, indexed alias define
is generated for every indexed controller define:
 #define GPIO_LEDS_0_GPIO_CONTROLLER_0	"GPIOA"
 #define GPIO_LEDS_0_GPIO_CONTROLLER_1	"GPIOB"
 #define LED1_GPIO_CONTROLLER_0		GPIO_LEDS_0_GPIO_CONTROLLER_0
 #define LED1_GPIO_CONTROLLER_1		GPIO_LEDS_0_GPIO_CONTROLLER_1

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2018-05-10 10:38:23 -05:00
Kumar Gala
97a1ea22fc scripts: extract_dts_includes: Fix extract_cells for a list
If we had something like:

gpios = <&gpiod 13 GPIO_INT_ACTIVE_LOW
         &gpiod 14 GPIO_INT_ACTIVE_LOW>;

The script blows up in extract_cells.  While extract_cells attempted to
handle more than a single item in such a list, it didn't manipulate the
prop list for the recursive calls properly.

Since we pop off items from the prop list as we use them we can easily
pass the prop list to the rescurive call to fix things.

Besides, if alias is defined for the node, indexed aliases defines are
generated:
 #define GPIO_LEDS_0_GPIO_FLAGS_0 4
 #define GPIO_LEDS_0_GPIO_FLAGS_1 0
 #define GPIO_LEDS_0_GPIO_PIN_0   5
 #define GPIO_LEDS_0_GPIO_PIN_1   6
 #define LED1_GPIO_FLAGS_0 GPIO_LEDS_0_GPIO_FLAGS_0
 #define LED1_GPIO_FLAGS_1 GPIO_LEDS_0_GPIO_FLAGS_1
 #define LED1_GPIO_PIN_0 GPIO_LEDS_0_GPIO_PIN_0
 #define LED1_GPIO_PIN_1 GPIO_LEDS_0_GPIO_PIN_1

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2018-05-10 10:38:23 -05:00
Erwan Gouriou
081c9c3bec scripts: extract_dts_includes: Generate'_0' defines only when needed
Indexed defines were systematically generated even when there
was only one element to generate.
So we ended up generated a lot of _0 defines.
Then we needed to generate aliases to these _0 indexed defines,
in order to get useful defines.
For instance:
 #define GPIO_LEDS_0_GPIO_FLAGS_0	4
 #define GPIO_LEDS_0_GPIO_PIN_0		5
 #define GPIO_LEDS_0_GPIO_FLAGS		GPIO_LEDS_0_GPIO_FLAGS_0
 #define GPIO_LEDS_0_GPIO_PIN		GPIO_LEDS_0_GPIO_PIN_0

This commit allows to generate _0 indexed define only if a
property has more than one elements to define.
Aliases generation to _0 indexed defines are also removed.

Note: IRQ are left untouched since this is frequent to handle
multiple IRQs in a driver

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-05-10 10:38:23 -05:00
Erwan Gouriou
e099f3813e scripts: extract_dts_includes: rename arguments for easier reading
Some functions were using y_key and y_val as argument.  This was not
quite easy to read.  Rename argument into more informative versions.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-05-10 10:38:23 -05:00
Erwan Gouriou
69beec87b1 scripts: extract_dts_includes: generate controller #define's
When a node is referencing to a parent node and this node is
reported as controller, generate a #define to declare this controller.
Value is controller property 'label'
For instance, if following gpio controller is referenced in board dts:
green_led_1: led@1 {
    gpios = <&gpioa 5 GPIO_INT_ACTIVE_HIGH>;
    label = "User LD1";
};
Following will be generated:
\#define GPIO_LEDS_1_GPIO_CONTROLLER "GPIOA"

Besides, if defined, alias label will be generated as well for this
controller:
aliases {
    led0 = &green_led_1;
};
will trigger generation of:
\#define LED0_GPIO_CONTROLLER GPIO_LEDS_1_GPIO_CONTROLLER

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-04-19 09:32:39 -05:00
Erwan Gouriou
f3caef8eac scripts: extract_dts_inlcudes: look up compatible field in parents
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>
2018-04-19 09:32:39 -05:00
Erwan Gouriou
3b529ca3ee scripts: extract_dts_inlcudes: generate cells for gpio
Apply extract_cells function also when property name
contains "gpio" (could be cs-gpio, rst-gpio, gpio-irq, ..)

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-04-13 13:36:45 -05:00
Erwan Gouriou
074c90c5c4 scripts: dts_extract_include: generate aliases defs
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>
2018-04-10 13:01:02 -05:00
Erwan Gouriou
ba2ce2e9f0 script/extract_dts_includes: factorize call to upper()
Factorize call to 'upper()' into convert_string_to_label function

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-04-10 13:01:02 -05:00
Erwan Gouriou
1ee8eeaccc scripts: extract_dts_include: convert inherited 'id' to 'node_type'
During yaml collapse step, convert inherited 'id' key to 'node_type'.
With this new 'node_type', it's is more easy to apply common treatment
to all bindings that include the same base yaml file but might not
have similar bindings/constraint naming convention.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2018-03-26 14:48:49 -04:00
Bobby Noelte
b6005bfb2a scripts: extract_dts_includes.py: factorize globals for module usage
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>
2018-03-26 14:48:49 -04:00
Tomasz Bursztyka
dfd92b0602 script/dts: Remove unnecessary empty return on functions
No need to use return at the end of a function when it's not returning
anything.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2018-03-26 14:48:49 -04:00
Tomasz Bursztyka
7ef3ddee0b scripts/dts: De-clutter main function in extract_dts_includes
Moving logical parts into dedicated functions for clarity.
Factorizing a bit the code for potential future changes (more
'zephyr,xxxx' directives related to CONFIG_ option).

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2018-03-26 14:48:49 -04:00
Tomasz Bursztyka
1134393ac1 scripts/dts: Make extract_dts_includes generating both files by itself
Thus no need to parse twice the .dtsi, .dts and .yaml files.
Simplify provided arguments relevancy, letting argparse generating usage
message by itself.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2018-03-26 14:48:49 -04:00
Tomasz Bursztyka
b34d156693 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>
2018-03-26 14:48:49 -04:00
Tomasz Bursztyka
6a9ebdcd18 scripts/dts: Fix Copyright headers
One was missing it and the other was not the new format.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2018-03-26 14:48:49 -04:00
Kumar Gala
767785825e scripts: extract_dts_inculdes: Fix issue if no zephyr,flash prop
We should be able to run the script without requiring a zephyr,flash
property in the choosen node.  Qualify insert based on having the
choosen property.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2018-03-15 08:14:00 -05:00
Maureen Helm
66d6b58176 scripts: extract_dts_includes: Fix path handling in Windows
When building in Windows, extract_dts_includes.py failed with an
exception on boards that have dts sensor bindings. This was caused by
path handling to search for i2c-device.yaml that worked in Linux, but
not in Windows.

Affected boards were disco_l475_iot1, frdm_k64f, frdm_kw41z, and
hexiwear_k64.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2018-03-12 09:44:36 -05:00
Kumar Gala
451fc36824 scripts: extract_dts_inculdes: Fix reg prop size/addr cell calculation
When we determine the address and size cells to determine how to parse a
reg property, we need to stop at the parent of the node, not at the node
itself.  If we have #address-cells or #size-cells in a node its meant
for the children of that node and not the node itself.

Fixes #4568

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2018-02-21 06:48:42 -06:00
Christopher Collins
14735116d1 subsys: mgmt: UART transport for SMP (mcumgr).
Add a UART driver dedicated to transporting mcumgr SMP requests and
responses.

Signed-off-by: Christopher Collins <ccollins@apache.org>
2018-02-20 22:07:52 +01:00
Erwin Rol
e4890181b4 scripts/dts/extract_dts_includes.py: add ccm support
Add support for generating CONFIG_CCM_BASE_ADDRESS and CONFIG_CCM_SIZE
from the dts files.

Signed-off-by: Erwin Rol <erwin@erwinrol.com>
2018-02-13 12:36:22 -06:00
Kumar Gala
8a6381d8e8 dts: flash: Add support for flash labels
Added a label for soc-nv-flash nodes.  Made some updates to the
generation to maintain creating defines for properties like
erase-block-size and write-block-size so they we get both
FLASH_ERASE_BLOCK_SIZE and FLASH_${LABEL}_ERASE_BLOCK_SIZE (same for
WRITE_BLOCK_SIZE).

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2018-02-07 11:28:28 -06:00
Kumar Gala
bc6aae8d73 scripts: extract_dts_includes: Sanitize interrupt names
Its possible we have dashes in interrupt names that we need to convert
to underscores when we generate defines.  Make sure we do that otherwise
things aren't going to build.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2018-01-29 11:10:43 -06:00
Marti Bolivar
607a817a4a scripts: extract_dts_includes: fix potential undefined read
Only read 'status' when it has been assigned in compress_nodes().

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-12-15 09:57:30 -05:00
Erwan Gouriou
fa47748ca3 scripts: extract_dts_inculdes: treat 'parent: bus' attribute
When node has 'bus' as 'parent' attribute, change base label to
include parent address in label prefix.

Besides, generates a "_BUS_NAME" define which equals parent label.

Signed-Off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2017-12-14 11:30:44 -06:00
Erwan Gouriou
568fc9d91f scripts: extract_dts_include: update to match new bindings path
Following move of dts bindings from common/yaml to bindings,
update yaml file search routine.

Signed-Off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2017-12-14 11:30:44 -06:00
Erwan Gouriou
318436589c script: extract_dts_includes: fix recursive inclusion
extract_dts_includes script was not handling correctly
recusrsive inclusions. Fix it.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2017-12-12 12:52:04 -06:00
Erwan Gouriou
104553d93f yaml: fix properties syntax to 'mapping' instead of 'series'
According to yaml syntaxic rules, 'properties' described in dts
bindings yaml files could be seen as 'mapping'(key/value couple),
instead of 'series' (list of single elements).
yaml 'mappings' will then be converted by yaml python library as
python 'dict' which will ease treatment (instead of current list
as were before this commit).
Same treatment is applied to 'inherits'.

script extract_dts_inlcude is updated to take change of yaml_list
structre into account. This allows some code simplification. Largest
impact is yaml_collapse function which works now allow complete
overload method on all the attributes of a yaml nodes.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2017-11-28 11:42:59 -06:00
Kumar Gala
03fb9ff5f9 scripts/dts/extract_dts_includes.py: Cleanup yaml file finding
Cleanup how we find the yaml files for device tree bindings.  Move to a
recursive dir search of the dts/ dir.  This will be useful for
supporting re-organizing of the yaml files to match binding dir
structure.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2017-10-23 15:02:00 +02:00
Kumar Gala
aed577a853 scripts/dts/extract_dts_includes.py: allow multiple fixup files
Allow the script to take multiple -f (fixup) file options.  We output
the fixup files in order that the -f options are passed.  This will
allow us to have a common soc fixup and board fixup if we desire.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2017-09-17 17:34:38 -04:00
Aska Wu
729a7b1e84 scripts/dts/extract_dts_includes.py: Fix tab calculation
If there's any key in the alias which length is larger than other keys
in the node, the include file will be incorrect, there will be no tab
between the key and value.

We need to take into account the max length of alias keys.

Signed-off-by: Aska Wu <aska.wu@linaro.org>
2017-09-17 16:51:16 -04:00
Anas Nashif
3461c8cf59 scripts: move dts related scripts to scripts/dts/
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-09-11 08:53:56 -07:00