u64 of_translate_address(struct device_node *dev, const __be32 *in_addr) { struct device_node *host; u64 ret; ret = __of_translate_address(dev, in_addr, "ranges", &host); if (host) { of_node_put(host); return OF_BAD_ADDR; } return ret; }
static u64 of_translate_ioport(struct device_node *dev, const __be32 *in_addr, u64 size) { u64 taddr; unsigned long port; struct device_node *host; taddr = __of_translate_address(dev, in_addr, "ranges", &host); if (host) { /* host-specific port access */ port = logic_pio_trans_hwaddr(&host->fwnode, taddr, size); of_node_put(host); } else { /* memory-mapped I/O range */ port = pci_address_to_pio(taddr); } if (port == (unsigned long)-1) return OF_BAD_ADDR; return port; }
u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr) { return __of_translate_address(dev, in_addr, "dma-ranges"); }