From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <4FBE8605.2020507@freescale.com> Date: Thu, 24 May 2012 14:03:33 -0500 From: Timur Tabi MIME-Version: 1.0 To: David Daney Subject: Re: [PATCH v6 0/3] netdev/of/phy: MDIO bus multiplexer support. References: <1336007799-31016-1-git-send-email-ddaney.cavm@gmail.com> <4FB6C728.3090507@gmail.com> <4FB6C886.3050105@freescale.com> <4FB6CBF1.40300@gmail.com> <4FBE7DD8.509@freescale.com> <4FBE82F2.6080100@gmail.com> In-Reply-To: <4FBE82F2.6080100@gmail.com> Content-Type: text/plain; charset="ISO-8859-1" Cc: "netdev@vger.kernel.org" , "devicetree-discuss@lists.ozlabs.org" , "linuxppc-dev@lists.ozlabs.org" List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , David Daney wrote: > Well, the MDIO bus must have an associated device tree node. > > For my OCTEON code, the MDIO bus device is created as a result of the > call to of_platform_bus_probe(), which takes care of filling in all the > device tree nodes of the devices it finds and creates. Ok, let me give you some background. We actually already have MDIO muxing code in-house, but it's different from yours. So now I'm rewriting it to use your design instead. So our current code looks for "virtual MDIO nodes", and we call mdiobus_alloc() and then of_mdiobus_register(). I think this is what I'm missing now. I just don't know what to do next. Part of the problem is that I don't have much experience with MDIO drivers. >> It returns NULL. Here is my MDIO node: >> >> fman0: fman@400000 { >> enet0: ethernet@e0000 { >> tbi-handle =<&tbi0>; >> phy-handle =<&phy0>; >> phy-connection-type = "sgmii"; >> }; >> >> mdio0: mdio@e1120 { >> gpios =<&gpio0 0 0 >> &gpio0 1 0>; >> >> tbi0: tbi-phy@8 { >> reg =<0x8>; >> device_type = "tbi-phy"; >> }; >> >> phy0: ethernet-phy@1c { >> reg =<0x1c>; >> }; >> }; >> }; >> >> What am I missing? > > For starters, I do not see any compatible properties that would allow > the proper drivers to be bound to anything. Ok, that makes sense. > Also I see no MDIO mux node there, so it is unclear why you are even > asking these questions. I only gave you part of the device tree. Here's my mdio mux node: mdio-mux { compatible = "mdio-mux-gpio"; gpios = <&gpio0 0 0>, <&gpio0 1 0>; mdio-parent-bus = <&mdio0>; #address-cells = <1>; #size-cells = <0>; mdio@2 { reg = <2>; #address-cells = <1>; #size-cells = <0>; phy21: ethernet-phy@1 { reg = <1>; // compatible = "marvell,88e1149r", "ethernet-phy-ieee802.3-c22"; marvell,reg-init = <3 0x10 0 0x5777>, <3 0x11 0 0x00aa>, <3 0x12 0 0x4105>, <3 0x13 0 0x0a60>; interrupt-parent = <&gpio0>; // interrupts = <10 8>; /* Pin 10, active low */ }; }; }; }; > > David Daney > -- Timur Tabi Linux kernel developer at Freescale