clk: Add clk_resolve_parent_clk()
Add clk_resolve_parent_clk() to resolve parent clock udevice name based on clock-names DT property. This is used in SoC clock drivers to look up the clock name in clock tables, which matches a clock name in DT clock-names property, and convert it into udevice name which is used by U-Boot clock framework to look up parent clock in e.g. clk_register() using uclass_get_device_by_name(UCLASS_CLK, parent_name, &parent); Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:

committed by
Fabio Estevam

parent
cc9dcba9cc
commit
1054163c4d
@@ -420,6 +420,24 @@ int clk_get_by_name_nodev(ofnode node, const char *name, struct clk *clk)
|
|||||||
return clk_get_by_index_nodev(node, index, clk);
|
return clk_get_by_index_nodev(node, index, clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
clk_resolve_parent_clk(struct udevice *dev, const char *name)
|
||||||
|
{
|
||||||
|
struct udevice *parent;
|
||||||
|
struct clk clk;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = uclass_get_device_by_name(UCLASS_CLK, name, &parent);
|
||||||
|
if (!ret)
|
||||||
|
return name;
|
||||||
|
|
||||||
|
ret = clk_get_by_name(dev, name, &clk);
|
||||||
|
if (!clk.dev)
|
||||||
|
return name;
|
||||||
|
|
||||||
|
return clk.dev->name;
|
||||||
|
}
|
||||||
|
|
||||||
int clk_release_all(struct clk *clk, unsigned int count)
|
int clk_release_all(struct clk *clk, unsigned int count)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@@ -350,6 +350,15 @@ static inline int clk_get_by_name_nodev_optional(ofnode node, const char *name,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clk_resolve_parent_clk - Determine name of clock udevice based on clock-names
|
||||||
|
* @dev: The client udevice.
|
||||||
|
* @name: The name of the clock to look up.
|
||||||
|
*
|
||||||
|
* Return name of the clock udevice which represents clock with clock-names name.
|
||||||
|
*/
|
||||||
|
const char *clk_resolve_parent_clk(struct udevice *dev, const char *name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum clk_defaults_stage - What stage clk_set_defaults() is called at
|
* enum clk_defaults_stage - What stage clk_set_defaults() is called at
|
||||||
* @CLK_DEFAULTS_PRE: Called before probe. Setting of defaults for clocks owned
|
* @CLK_DEFAULTS_PRE: Called before probe. Setting of defaults for clocks owned
|
||||||
|
Reference in New Issue
Block a user