[PATCH 1/2] clk: fixed-rate: use full DT node name
From: Stephen Warren <hidden>
Date: 2014-02-14 16:43:04
Also in:
linux-devicetree
On 02/14/2014 03:35 AM, Mark Rutland wrote:
On Fri, Feb 14, 2014 at 06:16:52AM +0000, Stephen Warren wrote:quoted
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.
Well, it's very widely used, and was the result of numerous discussions of how this kind of thing should be represented:-/
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.
Perhaps we need to invent a simple-container instead then?
It's just nonsensical; rename them to clock_{0,1,..} instead and get rid
of the reg properties. Then they're named uniquely.That's not legal either. DT node names are supposed to represent the type of device/object (i.e. just "clock"), not the identity of the device/object (i.e. not include IDs etc.). Hence, the node name needs to be "clock" for all of them, and the unit address must be used to differentiate them.