On 2/17/2024 6:29 PM, Krzysztof Kozlowski wrote:
On 17/02/2024 11:24, Yang Xiwen wrote:
+
+examples:
+ - |
+ #include <dt-bindings/clock/histb-clock.h>
+
+ peripheral-controller@8a20000 {
+ compatible = "hisilicon,hi3798cv200-perictrl", "syscon", "simple-mfd";
+ reg = <0x8a20000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x8a20000 0x1000>;
Drop the node, not related to this binding. If this binding is supposed
to be part of other device in case of MFD devices or some tightly
coupled ones, then could be included in the example there.
For CV200, this binding is supposed to be always inside the perictrl
device. The PHY address space are accessed from a bus implemented by
perictrl.
Every node is supposes to be somewhere in something, so with this logic
you would start from soc@. What's wrong in putting it in parent schema?
When the ports reg property only has an dummy address (no size), it must
be inside the perictrl node, accessed from the bus implemented by perictrl.
But when the ports has its own MMIO address space (mv200), it should be
located under a simple-bus node instead.
So it's either:
perictrl@8a20000 {
usb2-phy@120: {
reg = <0x120 0x4>; // this is the register that controls writes
and reads to the phy, implemented by perictrl. (just like SPI/I2C)
phy@0: {
reg = <0>; // the reg is used as an index
};
};
};
or:
soc@0 {
usb2-phy@f9865000 { // MMIO
reg = <0xf9865000 0x1000>
port0@0 {
reg = <0x0 0x400>; // used as MMIO address space
};
};
};
So here is why i include perictrl node in the example. If the ports are
not mmio, the phy must be under a perictrl node. Or if the ports has its
own address space, it should not be under a perictrl node, but rather an
simple-bus node.
Best regards,
Krzysztof
--
Regards,
Yang Xiwen