[PATCH 1/2] clk: fixed-rate: use full DT node name
From: mark.rutland@arm.com (Mark Rutland)
Date: 2014-02-14 10:35:56
Also in:
linux-devicetree
On Fri, Feb 14, 2014 at 06:16:52AM +0000, Stephen Warren wrote:
clk-fixed-rate currently names clocks according to a node's name without
the unit address. When faced with the legal and technically correct DT
structure below, this causes rgistration attempts for 3 clocks with the
same name, 2 of which fail.
clocks {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
clk_mmc: clock at 0 {
compatible = "fixed-clock";
reg = <0>;
...
clk_i2c: clock at 1 {
compatible = "fixed-clock";
reg = <1>;
...
clk_spi: clock at 2 {
compatible = "fixed-clock";
reg = <2>;
...
I'd argue that this case isn't valid.
The fixed-clock binding doesn't define a reg, yet simple bus binding
implies that the reg property of child nodes should be interpretted as
the same address space as their parent (MMIO in this case?). The
fixed-clock nodes reg proeprties clearly aren't MMIO addresses.
Additionally, the _requred_ ranges property is missing.
It's just nonsensical; rename them to clock_{0,1,..} instead and get rid
of the reg properties. Then they're named uniquely.
However, for cases where the reg value is meaningful the below patch
makes sense.
Thanks,
Mark.
quoted hunk
Solve this by naming the clocks after the full node name rather than the short version (e.g. /clocks/clock at 0). Signed-off-by: Stephen Warren <redacted> --- Note that if this is accepted, I intend to submit a patch for the RPi DTS which uses the naming structure above, so it might be useful to place this patch in its own branch. Or, I could submit the cleanup after 3.15-rc1. --- drivers/clk/clk-fixed-rate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c index 0fc56ab..3335b3c 100644 --- a/drivers/clk/clk-fixed-rate.c +++ b/drivers/clk/clk-fixed-rate.c@@ -115,7 +115,7 @@ EXPORT_SYMBOL_GPL(clk_register_fixed_rate); void of_fixed_clk_setup(struct device_node *node) { struct clk *clk; - const char *clk_name = node->name; + const char *clk_name = node->full_name; u32 rate; u32 accuracy = 0;-- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html