Skip to content

Commit

Permalink
device property: Add fwnode_iomap()
Browse files Browse the repository at this point in the history
This patch introduces a new helper routine - fwnode_iomap(), which
allows to map the memory mapped IO for a given device node.

This implementation does not cover the ACPI case and may be expanded
in the future. The main purpose here is to be able to develop resource
provider agnostic drivers.

Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Anand Ashok Dumbre <anand.ashok.dumbre@xilinx.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/r/20211203212358.31444-2-anand.ashok.dumbre@xilinx.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
  • Loading branch information
Anand Ashok Dumbre authored and jic23 committed Dec 21, 2021
1 parent 8ebbfb9 commit eca6e2d
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
16 changes: 16 additions & 0 deletions drivers/base/property.c
Original file line number Diff line number Diff line change
Expand Up @@ -958,6 +958,22 @@ int fwnode_irq_get(const struct fwnode_handle *fwnode, unsigned int index)
}
EXPORT_SYMBOL(fwnode_irq_get);

/**
* fwnode_iomap - Maps the memory mapped IO for a given fwnode
* @fwnode: Pointer to the firmware node
* @index: Index of the IO range
*
* Returns a pointer to the mapped memory.
*/
void __iomem *fwnode_iomap(struct fwnode_handle *fwnode, int index)
{
if (IS_ENABLED(CONFIG_OF_ADDRESS) && is_of_node(fwnode))
return of_iomap(to_of_node(fwnode), index);

return NULL;
}
EXPORT_SYMBOL(fwnode_iomap);

/**
* fwnode_graph_get_next_endpoint - Get next endpoint firmware node
* @fwnode: Pointer to the parent firmware node
Expand Down
2 changes: 2 additions & 0 deletions include/linux/property.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,8 @@ void fwnode_handle_put(struct fwnode_handle *fwnode);

int fwnode_irq_get(const struct fwnode_handle *fwnode, unsigned int index);

void __iomem *fwnode_iomap(struct fwnode_handle *fwnode, int index);

unsigned int device_get_child_node_count(struct device *dev);

static inline bool device_property_read_bool(struct device *dev,
Expand Down

0 comments on commit eca6e2d

Please sign in to comment.