mirror of
https://xff.cz/git/u-boot/
synced 2025-09-04 02:02:08 +02:00
ofnode: add {ofnode, dev}_read_resource_byname()
Linux supports platform_get_resource_byname() to look up a resource by name. We want a similar helper. It is useful when a device node has named register regions. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -627,3 +627,15 @@ int ofnode_read_resource(ofnode node, uint index, struct resource *res)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ofnode_read_resource_byname(ofnode node, const char *name,
|
||||||
|
struct resource *res)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
|
||||||
|
index = ofnode_stringlist_search(node, "reg-names", name);
|
||||||
|
if (index < 0)
|
||||||
|
return index;
|
||||||
|
|
||||||
|
return ofnode_read_resource(node, index, res);
|
||||||
|
}
|
||||||
|
@@ -164,3 +164,9 @@ int dev_read_resource(struct udevice *dev, uint index, struct resource *res)
|
|||||||
{
|
{
|
||||||
return ofnode_read_resource(dev_ofnode(dev), index, res);
|
return ofnode_read_resource(dev_ofnode(dev), index, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int dev_read_resource_byname(struct udevice *dev, const char *name,
|
||||||
|
struct resource *res)
|
||||||
|
{
|
||||||
|
return ofnode_read_resource_byname(dev_ofnode(dev), name, res);
|
||||||
|
}
|
||||||
|
@@ -625,5 +625,7 @@ int ofnode_read_simple_size_cells(ofnode node);
|
|||||||
bool ofnode_pre_reloc(ofnode node);
|
bool ofnode_pre_reloc(ofnode node);
|
||||||
|
|
||||||
int ofnode_read_resource(ofnode node, uint index, struct resource *res);
|
int ofnode_read_resource(ofnode node, uint index, struct resource *res);
|
||||||
|
int ofnode_read_resource_byname(ofnode node, const char *name,
|
||||||
|
struct resource *res);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -359,13 +359,24 @@ int dev_read_enabled(struct udevice *dev);
|
|||||||
/**
|
/**
|
||||||
* dev_read_resource() - obtain an indexed resource from a device.
|
* dev_read_resource() - obtain an indexed resource from a device.
|
||||||
*
|
*
|
||||||
* @dev: devuce to examine
|
* @dev: device to examine
|
||||||
* @index index of the resource to retrieve (0 = first)
|
* @index index of the resource to retrieve (0 = first)
|
||||||
* @res returns the resource
|
* @res returns the resource
|
||||||
* @return 0 if ok, negative on error
|
* @return 0 if ok, negative on error
|
||||||
*/
|
*/
|
||||||
int dev_read_resource(struct udevice *dev, uint index, struct resource *res);
|
int dev_read_resource(struct udevice *dev, uint index, struct resource *res);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dev_read_resource_byname() - obtain a named resource from a device.
|
||||||
|
*
|
||||||
|
* @dev: device to examine
|
||||||
|
* @name: name of the resource to retrieve
|
||||||
|
* @res: returns the resource
|
||||||
|
* @return 0 if ok, negative on error
|
||||||
|
*/
|
||||||
|
int dev_read_resource_byname(struct udevice *dev, const char *name,
|
||||||
|
struct resource *res);
|
||||||
|
|
||||||
#else /* CONFIG_DM_DEV_READ_INLINE is enabled */
|
#else /* CONFIG_DM_DEV_READ_INLINE is enabled */
|
||||||
|
|
||||||
static inline int dev_read_u32_default(struct udevice *dev,
|
static inline int dev_read_u32_default(struct udevice *dev,
|
||||||
@@ -513,6 +524,13 @@ static inline int dev_read_resource(struct udevice *dev, uint index,
|
|||||||
return ofnode_read_resource(dev_ofnode(dev), index, res);
|
return ofnode_read_resource(dev_ofnode(dev), index, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int dev_read_resource_byname(struct udevice *dev,
|
||||||
|
const char *name,
|
||||||
|
struct resource *res)
|
||||||
|
{
|
||||||
|
return ofnode_read_resource_byname(dev_ofnode(dev), name, res);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_DM_DEV_READ_INLINE */
|
#endif /* CONFIG_DM_DEV_READ_INLINE */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user