From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH] [v9] net: emac: emac gigabit ethernet controller driver Date: Wed, 31 Aug 2016 15:46:27 -0500 Message-ID: References: <1472161143-26417-1-git-send-email-timur@codeaurora.org> <20160831150043.GA575@rob-hp-laptop> <57C6F395.1030904@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: In-Reply-To: <57C6F395.1030904@codeaurora.org> Sender: netdev-owner@vger.kernel.org To: Timur Tabi Cc: netdev , "devicetree@vger.kernel.org" , linux-arm-msm , Sagar Dharia , Shanker Donthineni , Vikram Sethi , Christopher Covington , Gilad Avidov , Andrew Lunn , Bjorn Andersson , Mark Langsdorf , "jcm@redhat.com" , Andy Gross , David Miller , Florian Fainelli , Lino Sanfilippo List-Id: linux-arm-msm@vger.kernel.org On Wed, Aug 31, 2016 at 10:11 AM, Timur Tabi wrote: > Rob Herring wrote: > >>> + internal-phy = <&emac_sgmii>; >> >> >> Can't this use the standard generic phy binding (i.e. 'phys'). It's a >> bit confusing as there's the ethernet phy binding (phy-handle) and the >> generic one. > > > It's not a generic phy. It's a funky "internal phy" that differs among > SOCs. I call it the internal phy, but I could use another name. Internally, > some people call it the "sgmii phy", but I don't think that's accurate. Funky internal PHYs are precisely the types of PHYs this binding is for. It is generic in that the type is not defined. It can be USB, HDMI, DSI, LVDS, etc. > > I can call it "emac-phy", but I don't know if that's any better. > >>> + phy-handle = <&phy0>; >> >> >> This is bit redundant as the phy is the child node. I guess if you had >> multiple devices on the mdio bus you would need it. I'd drop it if you >> don't envision needing it and the kernel doesn't require it. > > > That's what I thought to, but without it, of_phy_find_device() won't work. > I need a pointer to the phy node, and I use of_parse_phandle() to get it: > > struct device_node *phy_np; > > ret = of_mdiobus_register(mii_bus, np); > if (ret) { > dev_err(&pdev->dev, "could not register mdio bus\n"); > return ret; > } > > phy_np = of_parse_phandle(np, "phy-handle", 0); You can just as easily find the child node called ethernet-phy. > adpt->phydev = of_phy_find_device(phy_np); > >>> + >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + phy0: ethernet-phy@0 { >> >> >> It's just an example, but don't we require compatible strings for phys >> now? > > > Nope. I had a compatible property, but it broke of_mdiobus_child_is_phy(). > I don't want to specify why kind of phy it is. I want to let phylib figure > it out. Okay, I'll defer to the mdio folks. Rob