Florian Fainelli wrote:
emac_sgmii: ethernet-phy@410400 {
compatible = "qcom,qdf2432-emac-phy";
reg = <0x0 0x00410400 0x0 0x100>;
interrupts = <0 0x104 0>;
};
Is this register range relative to the emac0 node here, or is this
really a separate node, within the same adress space as your emac0 node?
It's a separate node within the same address space. We can't guarantee
that it's adjacent to any other EMAC register -- it could be anywhere in
memory. 0x00410400 is the real physical address of those registers.
Answer largely depends on whether your device is really located outside
of the emac, if it located outside, then a platform device matching the
compatible string would get you what you want. If the emac_sgmii block
is a sub-block within the EMAC, then a few things need fixing:
- your emac_sgmii node should be a sub-node of the emac node, not a sibling
- the emac0 node should have a "ranges" property that indicates how to
translate the sub-nodes' "reg" property based on the base register
address of the emac0 block
- you would have to call of_platform_populate from the EMAC driver to
ensure that the emac_sgmii child node and therefore platform device gets
created
Even if the emac_sgmii block were a sub-block, wouldn't it conflict with
the ethernet-phy@4 node? The #address-cells and #size-cells properties
cannot be valid for both the emac_sgmii and ethernet-phy@4 nodes.
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the
Code Aurora Forum, hosted by The Linux Foundation.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html