diff options
author | Nicolas Saenz Julienne <nsaenzjulienne@suse.de> | 2020-07-31 12:02:48 +0200 |
---|---|---|
committer | Thomas Bogendoerfer <tsbogend@alpha.franken.de> | 2020-07-31 17:43:07 +0200 |
commit | c3028b951ed15b7c3409c6d9a69dad615de23d3f (patch) | |
tree | 0b91bbd860d580e55e6cab7ed438c63a37fabd77 | |
parent | 0fc0ead3488836503573286bcaa56f9743ea2bcc (diff) | |
download | linux-c3028b951ed15b7c3409c6d9a69dad615de23d3f.tar.gz linux-c3028b951ed15b7c3409c6d9a69dad615de23d3f.tar.bz2 linux-c3028b951ed15b7c3409c6d9a69dad615de23d3f.zip |
of: address: Fix parser address/size cells initialization
bus->count_cells() parses cells starting from the node's parent. This is
not good enough for parser_init() which is generally parsing a bus node.
Revert to previous behavior using of_bus_n_*_cells().
Fixes: 2f96593ecc37 ("of_address: Add bus type match for pci ranges parser")
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
-rw-r--r-- | drivers/of/address.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/of/address.c b/drivers/of/address.c index 157dc7e06077..df471d171a29 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -701,11 +701,11 @@ static int parser_init(struct of_pci_range_parser *parser, parser->node = node; parser->pna = of_n_addr_cells(node); + parser->na = of_bus_n_addr_cells(node); + parser->ns = of_bus_n_size_cells(node); parser->dma = !strcmp(name, "dma-ranges"); parser->bus = of_match_bus(node); - parser->bus->count_cells(parser->node, &parser->na, &parser->ns); - parser->range = of_get_property(node, name, &rlen); if (parser->range == NULL) return -ENOENT; |