aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/of/address.c19
-rw-r--r--include/linux/of_address.h10
2 files changed, 25 insertions, 4 deletions
diff --git a/drivers/of/address.c b/drivers/of/address.c
index 792722e7d458..fa6cabfc3cb9 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -232,8 +232,8 @@ int of_pci_address_to_resource(struct device_node *dev, int bar,
232} 232}
233EXPORT_SYMBOL_GPL(of_pci_address_to_resource); 233EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
234 234
235int of_pci_range_parser_init(struct of_pci_range_parser *parser, 235static int parser_init(struct of_pci_range_parser *parser,
236 struct device_node *node) 236 struct device_node *node, const char *name)
237{ 237{
238 const int na = 3, ns = 2; 238 const int na = 3, ns = 2;
239 int rlen; 239 int rlen;
@@ -242,7 +242,7 @@ int of_pci_range_parser_init(struct of_pci_range_parser *parser,
242 parser->pna = of_n_addr_cells(node); 242 parser->pna = of_n_addr_cells(node);
243 parser->np = parser->pna + na + ns; 243 parser->np = parser->pna + na + ns;
244 244
245 parser->range = of_get_property(node, "ranges", &rlen); 245 parser->range = of_get_property(node, name, &rlen);
246 if (parser->range == NULL) 246 if (parser->range == NULL)
247 return -ENOENT; 247 return -ENOENT;
248 248
@@ -250,8 +250,21 @@ int of_pci_range_parser_init(struct of_pci_range_parser *parser,
250 250
251 return 0; 251 return 0;
252} 252}
253
254int of_pci_range_parser_init(struct of_pci_range_parser *parser,
255 struct device_node *node)
256{
257 return parser_init(parser, node, "ranges");
258}
253EXPORT_SYMBOL_GPL(of_pci_range_parser_init); 259EXPORT_SYMBOL_GPL(of_pci_range_parser_init);
254 260
261int of_pci_dma_range_parser_init(struct of_pci_range_parser *parser,
262 struct device_node *node)
263{
264 return parser_init(parser, node, "dma-ranges");
265}
266EXPORT_SYMBOL_GPL(of_pci_dma_range_parser_init);
267
255struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser, 268struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser,
256 struct of_pci_range *range) 269 struct of_pci_range *range)
257{ 270{
diff --git a/include/linux/of_address.h b/include/linux/of_address.h
index 37864734ca50..8beed2de98e9 100644
--- a/include/linux/of_address.h
+++ b/include/linux/of_address.h
@@ -49,6 +49,8 @@ extern const __be32 *of_get_address(struct device_node *dev, int index,
49 49
50extern int of_pci_range_parser_init(struct of_pci_range_parser *parser, 50extern int of_pci_range_parser_init(struct of_pci_range_parser *parser,
51 struct device_node *node); 51 struct device_node *node);
52extern int of_pci_dma_range_parser_init(struct of_pci_range_parser *parser,
53 struct device_node *node);
52extern struct of_pci_range *of_pci_range_parser_one( 54extern struct of_pci_range *of_pci_range_parser_one(
53 struct of_pci_range_parser *parser, 55 struct of_pci_range_parser *parser,
54 struct of_pci_range *range); 56 struct of_pci_range *range);
@@ -85,7 +87,13 @@ static inline const __be32 *of_get_address(struct device_node *dev, int index,
85static inline int of_pci_range_parser_init(struct of_pci_range_parser *parser, 87static inline int of_pci_range_parser_init(struct of_pci_range_parser *parser,
86 struct device_node *node) 88 struct device_node *node)
87{ 89{
88 return -1; 90 return -ENOSYS;
91}
92
93static inline int of_pci_dma_range_parser_init(struct of_pci_range_parser *parser,
94 struct device_node *node)
95{
96 return -ENOSYS;
89} 97}
90 98
91static inline struct of_pci_range *of_pci_range_parser_one( 99static inline struct of_pci_range *of_pci_range_parser_one(