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.
