diff options
author | Qun-Wei Lin <qun-wei.lin@mediatek.com> | 2023-01-12 20:56:54 +0800 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2023-02-02 17:46:54 +1100 |
commit | 2022bb10879d8716d3e01468fd2fcea8ff28c803 (patch) | |
tree | 86cadd57a81a1d391e329ea18b5cc06593b4fb8f /checks.c | |
parent | abbd523bae6e75545ccff126a4a47218ec0defab (diff) | |
download | dtc-2022bb10879d8716d3e01468fd2fcea8ff28c803.zip dtc-2022bb10879d8716d3e01468fd2fcea8ff28c803.tar.gz dtc-2022bb10879d8716d3e01468fd2fcea8ff28c803.tar.bz2 |
checks: Update #{size,address}-cells check for 'dma-ranges'
The "dma-ranges" property value is a sequence of
child-address parent-address child-size
The size of each field is determined by taking the child's
"#address-cells" value, the parent's "#address-cells" value,
and the child's "#size-cells" value.
However, in the following example, it gives a false alarm:
+-----------------------------------+---------------------------------------+
| ranges.dts | dma-ranges.dts |
+-----------------------------------+---------------------------------------+
| /dts-v1/; | /dts-v1/; |
| | |
| /{ | /{ |
| #address-cells = <1>; | #address-cells = <1>; |
| | |
| parent { | parent { |
| #address-cells = <1>; | #address-cells = <1>; |
| #size-cells = <1>; | #size-cells = <1>; |
| ranges = <0x0 0xe000 0x1000>; | dma-ranges = <0x0 0xe000 0x1000>; |
| child { | child { |
| ... | ... |
| }; | }; |
| }; | }; |
| }; | }; |
+-----------------------------------+---------------------------------------+
| no warning | Warning (avoid_unnecessary_addr_size) |
+-----------------------------------+---------------------------------------+
Same as "ranges", it should not be reported in this check.
Signed-off-by: Qun-Wei Lin <qun-wei.lin@mediatek.com>
Message-Id: <20230112125654.13390-1-qun-wei.lin@mediatek.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'checks.c')
-rw-r--r-- | checks.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1222,7 +1222,7 @@ static void check_avoid_unnecessary_addr_size(struct check *c, struct dt_info *d if (!node->parent || node->addr_cells < 0 || node->size_cells < 0) return; - if (get_property(node, "ranges") || !node->children) + if (get_property(node, "ranges") || get_property(node, "dma-ranges") || !node->children) return; for_each_child(node, child) { @@ -1232,7 +1232,7 @@ static void check_avoid_unnecessary_addr_size(struct check *c, struct dt_info *d } if (!has_reg) - FAIL(c, dti, node, "unnecessary #address-cells/#size-cells without \"ranges\" or child \"reg\" property"); + FAIL(c, dti, node, "unnecessary #address-cells/#size-cells without \"ranges\", \"dma-ranges\" or child \"reg\" property"); } WARNING(avoid_unnecessary_addr_size, check_avoid_unnecessary_addr_size, NULL, &avoid_default_addr_size); |