Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754098AbbLKKVz (ORCPT ); Fri, 11 Dec 2015 05:21:55 -0500 Received: from metis.ext.4.pengutronix.de ([92.198.50.35]:34021 "EHLO metis.ext.4.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751309AbbLKKVg (ORCPT ); Fri, 11 Dec 2015 05:21:36 -0500 Date: Fri, 11 Dec 2015 11:21:30 +0100 From: Sascha Hauer To: Gregory CLEMENT Cc: "David S. Miller" , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Nicolas Ferre , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Thomas Petazzoni Subject: Re: [PATCH] net/macb: add support for resetting PHY using GPIO Message-ID: <20151211102130.GA11966@pengutronix.de> References: <1449683383-5022-1-git-send-email-gregory.clement@free-electrons.com> <20151210073756.GA11966@pengutronix.de> <871tau8hpj.fsf@free-electrons.com> <20151211084630.GW11966@pengutronix.de> <87wpsl727t.fsf@free-electrons.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87wpsl727t.fsf@free-electrons.com> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-IRC: #ptxdist @freenode X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-Uptime: 10:54:36 up 54 days, 18:33, 92 users, load average: 0.56, 0.35, 0.26 User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: sha@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3626 Lines: 97 On Fri, Dec 11, 2015 at 10:40:22AM +0100, Gregory CLEMENT wrote: > Hi Sascha, > > On ven., d?c. 11 2015, Sascha Hauer wrote: > > > On Thu, Dec 10, 2015 at 04:08:08PM +0100, Gregory CLEMENT wrote: > >> Hi Sascha, > >> > >> On jeu., d?c. 10 2015, Sascha Hauer wrote: > >> > >> > Hi Gregory, > >> > > >> > On Wed, Dec 09, 2015 at 06:49:43PM +0100, Gregory CLEMENT wrote: > >> >> With device tree it is no more possible to reset the PHY at board > >> >> level. Furthermore, doing in the driver allow to power down the PHY when > >> >> the network interface is no more used. > >> >> > >> >> The patch introduces a new optional property "phy-reset-gpio" inspired > >> >> from the one use for the FEC. > >> > > >> > I don't think it's a good idea to further extend the usage of this > >> > binding. The driver should use the phy-handle property and > >> > of_phy_connect() which gives you a proper device node for the phy. Then > >> > the phy device node should get the reset gpio. I know it's more work, > >> > >> So you suggest to pass from this binding: > >> macb1: ethernet@fc028000 { > >> phy-mode = "rmii"; > >> status = "okay"; > >> #address-cells = <1>; > >> #size-cells = <0>; > >> status = "okay"; > >> phy-reset-gpio = <&pioE 6 GPIO_ACTIVE_HIGH>; > >> > >> ethernet-phy@1 { > >> reg = <0x1>; > >> interrupt-parent = <&pioB>; > >> interrupts = <31 IRQ_TYPE_EDGE_FALLING>; > >> > >> }; > >> }; > >> > >> to this binding > >> macb1: ethernet@fc028000 { > >> phy-mode = "rmii"; > >> status = "okay"; > >> #address-cells = <1>; > >> #size-cells = <0>; > >> status = "okay"; > >> > >> ethernet-phy@1 { > >> reg = <0x1>; > >> interrupt-parent = <&pioB>; > >> interrupts = <31 IRQ_TYPE_EDGE_FALLING>; > >> phy-reset-gpio = <&pioE 6 GPIO_ACTIVE_HIGH>; > >> }; > >> }; > > > > s/phy-reset-gpio/reset-gpios/, but yes. > > So I took this way. But I had several issues. The first one was that to > be able to create a phy device it must first be detected by > get_phy_device from of_mdiobus_register_phy. But in order to be > detected it must answer during the scan of the mii bus. That means we > can't bind the gpio to the device in order to use it because when we > need to manage the reset gpio the device is not yet created. > > So I see 2 options: > > - leaving the phy-reset-gpios property in the ethernet node. Thanks to > this we can use the gpiod functions, and it is still possible to use > manage the power management. > > - using a reset-gpios property inside the phy node. But then the only > solution to get a reference on it, will be to use > of_get_named_gpio. All the gpiod functions need a reference to the > device that we won't have at this point. Also we will only be able to > power up the reset, but we won't have any reference to it latter. Have you seen fwnode_get_named_gpiod()? This seems to be the right function for the job. I think we should get the binding right. The code can be changed easier than the binding later. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/