From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933974AbdERPVt (ORCPT ); Thu, 18 May 2017 11:21:49 -0400 Received: from shards.monkeyblade.net ([184.105.139.130]:44302 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933826AbdERPVr (ORCPT ); Thu, 18 May 2017 11:21:47 -0400 Date: Thu, 18 May 2017 11:21:45 -0400 (EDT) Message-Id: <20170518.112145.1364316716714361952.davem@davemloft.net> To: geert+renesas@glider.be Cc: andrew@lunn.ch, f.fainelli@gmail.com, robh+dt@kernel.org, frowand.list@gmail.com, thomas.petazzoni@free-electrons.com, sergei.shtylyov@cogentembedded.com, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] of_mdio: Fix broken PHY IRQ in case of probe deferral From: David Miller In-Reply-To: <1495112345-24795-1-git-send-email-geert+renesas@glider.be> References: <1495112345-24795-1-git-send-email-geert+renesas@glider.be> X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.5.12 (shards.monkeyblade.net [149.20.54.216]); Thu, 18 May 2017 07:40:14 -0700 (PDT) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Geert Uytterhoeven Date: Thu, 18 May 2017 14:59:05 +0200 > If an Ethernet PHY is initialized before the interrupt controller it is > connected to, a message like the following is printed: > > irq: no irq domain found for /interrupt-controller@e61c0000 ! > > However, the actual error is ignored, leading to a non-functional (-1) > PHY interrupt later: > > Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY driver [Micrel KSZ8041RNLI] (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=-1) > > Depending on whether the PHY driver will fall back to polling, Ethernet > may or may not work. > > To fix this: > 1. Switch of_mdiobus_register_phy() from irq_of_parse_and_map() to > of_irq_get(). > Unlike the former, the latter returns -EPROBE_DEFER if the > interrupt controller is not yet available, so this condition can be > detected. > Other errors are handled the same as before, i.e. use the passed > mdio->irq[addr] as interrupt. > 2. Propagate and handle errors from of_mdiobus_register_phy() and > of_mdiobus_register_device(). > > Signed-off-by: Geert Uytterhoeven Florian or someone similarly knowledgable, please review.