Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753944AbdFMWkv (ORCPT ); Tue, 13 Jun 2017 18:40:51 -0400 Received: from vps0.lunn.ch ([178.209.37.122]:48498 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751802AbdFMWku (ORCPT ); Tue, 13 Jun 2017 18:40:50 -0400 Date: Wed, 14 Jun 2017 00:40:42 +0200 From: Andrew Lunn To: Salil Mehta Cc: Florian Fainelli , "davem@davemloft.net" , "Zhuangyuzeng (Yisen)" , huangdaode , "lipeng (Y)" , "mehta.salil.lnk@gmail.com" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Linuxarm Subject: Re: [PATCH net-next 6/9] net: hns3: Add MDIO support to HNS3 Ethernet driver for hip08 SoC Message-ID: <20170613224042.GF15847@lunn.ch> References: <20170610034630.493852-1-salil.mehta@huawei.com> <20170610034630.493852-7-salil.mehta@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1415 Lines: 39 > > Hum why do you do this? mdiobus_register() will scan through your bus > > provided that you set an appropriate phy_mask value (here you tell it > > not to) and you already provide the PHY address to scan for > > > I know this looks weird but the reason why it appears as it is in code is: > > mdiobus_register() calls mdiobus_scan(). If you see below code leg function > get_phy_device() assumes to be having supporting Clause 22 so its input > parameter 'is_c45' is always 'false'. > > struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr) > { > struct phy_device *phydev; > int err; > > phydev = get_phy_device(bus, addr, false); > if (IS_ERR(phydev)) ^^^^^ > return phydev; > [...] > } > > Therefore, to support C45 device we did below: > > * disabled the autoscan/mdiobus_scan() Of the PHY devices using the > phy_mask(= ~0) > * Now, did almost the same thing what mdiobus_scan does i.e. > * get_phy_device but with is_c45 (=true/false) > * register the above phy device with phy_device_register() > > There could be some gap in my understanding, please help to correct this? So this is the question i was asking Florian Rather than hack around limitations of the core, you should fix the core. I think we should make the core first try probing using c45. If that comes back with an error, or does not find a device, try the probe using c22. Andrew