Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3869014ybt; Tue, 23 Jun 2020 12:52:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCGiSbt3pC0qSnwMtixwdO0PyUHDhTr1jbIVdEHmKqs+3qQvhgFeuCcKT0LsKICoqIWL7J X-Received: by 2002:a17:907:369:: with SMTP id rs9mr21460103ejb.187.1592941964042; Tue, 23 Jun 2020 12:52:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592941964; cv=none; d=google.com; s=arc-20160816; b=eaVS59AnSlWATIlKzzcFxrWOFGnJuUEwCHASRN5fIfG3txBqnh09koJNNKqi3zPvt4 Xn5k37h/ESiDvMhE4Ts5GATlgivmbrEb7C5nCxO4h1AHA0HXYjNtSpTnNgyLeWlcth2F xfkBAzCRY7H5l33JueqnGpVhie1T2BMhwuOQxVOu2MdbR0Xt1jLRwJiyIGAd1m65q10g e5/F6T/34w4KoORhEGYH044Cdk5aifJURL484App4N94At2CFgpWy6PKE3Z5z7UXoYkq kXG+Y9XgPcR/VI6FKegmiwA+vkSHtxTVmszYeSNFXcgmRH4MYZyXmwwlIsN1jpzpztF+ dW9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:from:references:cc:to:subject:dkim-signature; bh=hAK/qguNrmk0Gm1APUEN0dntiivLtTinL6GSxp7o6Ow=; b=zt7HQXFQ7wXJ+RJ0IyrTM/qWfuoRAFmM36cLTJHeedmE1itfs2jFnEwwAIKaJND5zG IYYPZe/PbNGMpBn9Ag0dI8Rcwj7Nc/lwAokocOORZgBtSd+17pnWb4aoluE13kkjSPKx EbuHmXYbkn2bcf8gv8HEVSWW4Dz+TF1MCjid4u25rIyubZaPkvWDr818ljvKcsD8XjgZ FwQMsZ8FuBJCbtqAsKSVknlxGcxj4D6mhHOGfStYbcm3PqCafDiorZ4Xxk5nj3sfcsVt Vu+9Zp7zVI7JD5zvdDFVDaJY910JXIZ0g3Wbj6Kpkgl/R6CrqLWIpOK4eXxi32FhyJJZ MSmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B+y2HgSD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y16si4016056ejq.260.2020.06.23.12.52.20; Tue, 23 Jun 2020 12:52:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B+y2HgSD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387579AbgFWTtV (ORCPT + 99 others); Tue, 23 Jun 2020 15:49:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733258AbgFWTtU (ORCPT ); Tue, 23 Jun 2020 15:49:20 -0400 Received: from mail-io1-xd44.google.com (mail-io1-xd44.google.com [IPv6:2607:f8b0:4864:20::d44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 239DBC061573; Tue, 23 Jun 2020 12:49:20 -0700 (PDT) Received: by mail-io1-xd44.google.com with SMTP id o5so25171105iow.8; Tue, 23 Jun 2020 12:49:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:autocrypt:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=hAK/qguNrmk0Gm1APUEN0dntiivLtTinL6GSxp7o6Ow=; b=B+y2HgSDU/5tRsw+WKTnUfx4ewuLBP1Z66CDJqZpdGGn/PNVQcD4gmWOR8yOObgEOx yOsTCYAAoRDhLhYdPJRirf86Ti50iPIFK9dcBBzA1zm5n/xckUIAJ09KuCLvBss10tkl 9+oqb4lYyDGKk3Rioqrn5CQGUKV2Z4WRHxcFDnkMMBqZO1pdgCVXgpE2OBKIoEsrHomG yqaau3D2o7z4Cq3uKAxybpAsyEGc2shjNcB62/uiBrZoBPyqi42MnFJeCjPrp0zgt3WL z6mCU+3Jqu/pCzcFEJDugPptN9cbXij7c0BKhsp0pU1EFZsnt+uffD4XIc8wGzLCR2WE 9xOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=hAK/qguNrmk0Gm1APUEN0dntiivLtTinL6GSxp7o6Ow=; b=Uqq0s/1yNX42j6iirbFcsvnkJgHMS4CthAWknB5phayFmOd7Xx/x4RdBCaCeKo0IHg /7Lr/JwEx8ZkuDosKEgU7CIdIROcDsDw0bYiGscq7RnmT2VwsGKBqKRicvlmUtygCKOk RaqUu21WI9eeX0S8DY/MSEwmrpU5onmdBFkiklsewycUNFTY1ZyBvBoT0wJvZJm6BbsH dYMQY/S8LtTp9AMfqwIQ+i1vhqNwi1ZuuxfaKBON3sWjLoKDpzUWARbXfaPsNPaKZld1 pTNmDbp86G7lDeQ/ujXL5XZoleeZHw1wumgs+hyJHYZU/VXxc8Zj9mJIJpJnc2cz9Bo4 XGsw== X-Gm-Message-State: AOAM530OhM6boXDk1eM4VkEe8DJgB/G6Z0WtahjgNMMlk+5xvW3flOEI K7KBjFP72mTvKifg3jyBskI= X-Received: by 2002:a02:2417:: with SMTP id f23mr26618811jaa.28.1592941759511; Tue, 23 Jun 2020 12:49:19 -0700 (PDT) Received: from [10.67.50.75] ([192.19.223.252]) by smtp.googlemail.com with ESMTPSA id k3sm6320722iot.42.2020.06.23.12.49.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 23 Jun 2020 12:49:18 -0700 (PDT) Subject: Re: [PATCH 09/15] net: phy: delay PHY driver probe until PHY registration To: Mark Brown , Andrew Lunn Cc: Bartosz Golaszewski , Heiner Kallweit , Russell King , "David S . Miller" , Jakub Kicinski , Rob Herring , Matthias Brugger , Microchip Linux Driver Support , Vladimir Oltean , Claudiu Manoil , Alexandre Belloni , Vivien Didelot , Tom Lendacky , Yisen Zhuang , Salil Mehta , Jassi Brar , Ilias Apalodimas , Iyappan Subramanian , Keyur Chudgar , Quan Nguyen , Frank Rowand , Philipp Zabel , Liam Girdwood , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Fabien Parent , Stephane Le Provost , Pedro Tsai , Andrew Perepech , Bartosz Golaszewski References: <20200622093744.13685-1-brgl@bgdev.pl> <20200622093744.13685-10-brgl@bgdev.pl> <20200622133940.GL338481@lunn.ch> <20200622135106.GK4560@sirena.org.uk> From: Florian Fainelli Autocrypt: addr=f.fainelli@gmail.com; prefer-encrypt=mutual; keydata= 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 G10n8gCguORqNGMsVRxrlLs7/himep7MrCc= Message-ID: Date: Tue, 23 Jun 2020 12:49:15 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200622135106.GK4560@sirena.org.uk> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 6/22/20 6:51 AM, Mark Brown wrote: > On Mon, Jun 22, 2020 at 03:39:40PM +0200, Andrew Lunn wrote: > >> The PHY subsystem cannot be the first to run into this problem, that >> you need a device structure to make use of the regulator API, but you >> need the regulator API to probe the device. How do other subsystems >> work around this? > > If the bus includes power management for the devices on the bus the > controller is generally responsible for that rather than the devices, > the devices access this via facilities provided by the bus if needed. > If the device is enumerated by firmware prior to being physically > enumerable then the bus will generally instantiate the device model > device and then arrange to wait for the physical device to appear and > get joined up with the device model device, typically in such situations > the physical device might appear and disappear dynamically at runtime > based on what the driver is doing anyway. In premise there is nothing that prevents the MDIO bus from taking care of the regulators, resets, prior to probing the PHY driver, what is complicated here is that we do need to issue a read of the actual PHY to know its 32-bit unique identifier and match it with an appropriate driver. The way that we have worked around this with if you do not wish such a hardware access to be made, is to provide an Ethernet PHY node compatible string that encodes that 32-bit OUI directly. In premise the same challenges exist with PCI devices/endpoints as well as USB, would they have reset or regulator typically attached to them. > >> Maybe it is time to add a lower level API to the regulator framework? > > I don't see any need for that here, this is far from the only thing > that's keyed off a struct device and having the device appear and > disappear at runtime can make things like runtime PM look really messy > to userspace. > > We could use a pre-probe stage in the device model for hotpluggable > buses in embedded contexts where you might need to bring things out of > reset or power them up before they'll appear on the bus for enumeration > but buses have mostly handled that at their level. > That sounds like a better solution, are there any subsystems currently implementing that, or would this be a generic Linux device driver model addition that needs to be done? -- Florian