From patchwork Sat Nov 25 00:11:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 169616 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp1643932vqx; Fri, 24 Nov 2023 16:38:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IHkGshPeS/b0RdbOyA5PM5a8sL1TeJnqwDrOCB66QKCPRr4kikEy5xkVNdKow8lKeETWwMv X-Received: by 2002:aa7:9434:0:b0:6cc:3b5:8a40 with SMTP id y20-20020aa79434000000b006cc03b58a40mr673243pfo.9.1700872730821; Fri, 24 Nov 2023 16:38:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700872730; cv=none; d=google.com; s=arc-20160816; b=wz5MDKqG4apLRDayOeNy71hs5jwRJnAjw0Ya2e6J9Nh74Dtd3vFjFmfr4gkx4GpS6r I5TJs1NdBKMXU6N/yczK5eELbT2GQR9x3xOFcUjjNT1qTjZYomwJ7NrPZryfInCLWtqM zhSICjnDlHVSI0KAP/6PBCNMuczc7tKzssVKTyqNG8nXEwk4tiYhKTyqTD+DyZHS8fxQ 0hu8UHPThc0Bf/rC26N4RGAiijrFB0huyDDQf5jTi4qKZqweV8wm9xZdHxiDH4NA0pZd 4qQ8ymVthXhUfVhuTvTZ9Nx38EUruwfwlhMyOyIcRHWYEvijq04aikcn8TLHHa0WFcbp 5NYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=1AwvqFzZJu6lRLjlg2HSWxHNqqoUH9PNhraV2LjOZjE=; fh=KnePIrL541cXuIqRX5BeE2s85RbGE/iyqYtB/9IDmzA=; b=FYnKFsnQ0y4Z41QEFsesT/5A6yBJurKO4RHBS4IfRoGRpm80IidkzlwRSoqB60hHxf 6JW71WFhaCgzO2tVavMEIKLQUH9c/RVYAkQK8lS4jx0jh1n2ECoU9/6+yiPAhgWmUDc6 BJK9ptKLZNjxYAcVEYR74nPIUuX7fE+ReZ6iu5WmSrakfCfcrcFlyRceC0SZSWM/r5bk MukxH/ECT3bLTUkZQQXccUfA1KcWbZSToZHw7f3H8oFncB6xtvf/fzqc1c0jAz5Zgsox gShlLjQgZ6BbVl0nvCx+a/Xk6KhS15OB7m8jQgAdr5ZOXdbnqQ8NWvEDbUs5Oe5GTda9 xYLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=m07uCMjj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id c16-20020a056a000ad000b006cbbc07a1c6si4837264pfl.179.2023.11.24.16.38.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Nov 2023 16:38:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=m07uCMjj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 02A80802D1D2; Fri, 24 Nov 2023 16:35:57 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231837AbjKYAfi (ORCPT + 99 others); Fri, 24 Nov 2023 19:35:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231628AbjKYAfU (ORCPT ); Fri, 24 Nov 2023 19:35:20 -0500 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A37B19A3; Fri, 24 Nov 2023 16:35:26 -0800 (PST) Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-332e42469f0so1304018f8f.1; Fri, 24 Nov 2023 16:35:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700872525; x=1701477325; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=1AwvqFzZJu6lRLjlg2HSWxHNqqoUH9PNhraV2LjOZjE=; b=m07uCMjjzBaNfUSsT35g7VNUL5K0jkBMNzOT6zekSQMIBG1WbeUttlfr3pHGu0CgUQ sVV0Psa6vNw5Qc/2ZaeExlU6ri1aJoY/hvAr1HOUyQTyguyP7Jt+8wnXpOF4hqVquzpn sxVk7pbuRMn6Y+R0kpkpgyQ+RLxocsb/vANVRlfbClL3+kO95ntzhwEE9Bi25Y5puRlR LIwmuzEdrcGDMNBLryIDCf86KuqdHypGPC/sjSyJy3vTj083ElVNhf8HVyVe8sSSECGv jHy+fzx1P4/fjyjDIwPIKIYBbGDwTVAp5kHuQLsfCZxGVhadnhLm5T+xS2ojoMv4NJNz n5mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700872525; x=1701477325; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1AwvqFzZJu6lRLjlg2HSWxHNqqoUH9PNhraV2LjOZjE=; b=T3ZsMybyAsHpHLVVJE4x+V1AUCURjctKJLdug1XpS97PClRdz80NGb1832HBkn2A6H xPkIb0VmygBIwO8GaCTbpszyqzMFz0oZ/mAOdVBzgyOFhQzFgRGGDspAGv68/qM2UWqd wn+m/k7IFgm1St8e9YBrslrK9PwiWX8U83O6vlnQqdiTnRm4M/AdXkpng+pxygkOkSog ot/OqZwtoDFoag6upgxZd6jwgVNtiqcA7MR0LtzEm7BS+BLfkqnk6xMLKXzRhID/cH/W ajFkdh7Ymh9IpkB8xnnDResvYUq42BJyd3D7ZWYnYjhvWxDcBj3qqQwB9c69aKews3pi kAdw== X-Gm-Message-State: AOJu0YzqEyU2nMuzBIaaFfYNu/YuKZdDFjYu97Pc1HgkQVwgcUOAzJfu qY/0jL0+TeY4Sq4DaZwu7VE= X-Received: by 2002:adf:e911:0:b0:32d:8bf9:1990 with SMTP id f17-20020adfe911000000b0032d8bf91990mr4003007wrm.37.1700872524729; Fri, 24 Nov 2023 16:35:24 -0800 (PST) Received: from localhost.localdomain (93-34-89-13.ip49.fastwebnet.it. [93.34.89.13]) by smtp.googlemail.com with ESMTPSA id u13-20020a05600c00cd00b00405718cbeadsm4268005wmm.1.2023.11.24.16.35.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Nov 2023 16:35:24 -0800 (PST) From: Christian Marangi To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andy Gross , Bjorn Andersson , Konrad Dybcio , Andrew Lunn , Heiner Kallweit , Russell King , Florian Fainelli , Broadcom internal kernel review list , Daniel Golle , Qingfang Deng , SkyLake Huang , Matthias Brugger , AngeloGioacchino Del Regno , Vladimir Oltean , David Epping , Harini Katakam , Christian Marangi , "Russell King (Oracle)" , Robert Marko , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: [net-next RFC PATCH v2 05/11] net: phy: add support for driver specific PHY package probe/config Date: Sat, 25 Nov 2023 01:11:21 +0100 Message-Id: <20231125001127.5674-6-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231125001127.5674-1-ansuelsmth@gmail.com> References: <20231125001127.5674-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 24 Nov 2023 16:35:57 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783494324427824668 X-GMAIL-MSGID: 1783494324427824668 Add PHY driver specific function to probe and configure PHY package. These function are run only once before the PHY probe and config_init. They are used in conjunction with DT PHY package define for basic PHY package implementation to setup and probe PHY package with simple functions directly defined in the PHY driver struct. Signed-off-by: Christian Marangi --- drivers/net/phy/phy_device.c | 14 ++++++++++++++ include/linux/phy.h | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 454dc8256e94..d7cfeb1011c1 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1246,6 +1246,13 @@ int phy_init_hw(struct phy_device *phydev) if (ret < 0) return ret; + if (phydev->drv->phy_package_config_init_once && + phy_package_init_once(phydev)) { + ret = phydev->drv->phy_package_config_init_once(phydev); + if (ret < 0) + return ret; + } + if (phydev->drv->config_init) { ret = phydev->drv->config_init(phydev); if (ret < 0) @@ -3370,6 +3377,13 @@ static int phy_probe(struct device *dev) /* Deassert the reset signal */ phy_device_reset(phydev, 0); + if (phydev->drv->phy_package_probe_once && + phy_package_probe_once(phydev)) { + err = phydev->drv->phy_package_probe_once(phydev); + if (err) + goto out; + } + if (phydev->drv->probe) { err = phydev->drv->probe(phydev); if (err) diff --git a/include/linux/phy.h b/include/linux/phy.h index 4ddf08e89624..677b5bceac45 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -923,12 +923,33 @@ struct phy_driver { */ int (*soft_reset)(struct phy_device *phydev); + /** + * @phy_package_config_init_once: Driver specific PHY package + * config init call + * @def: PHY device to use to probe PHY package + * + * Called to initialize the PHY package, including after + * a reset. + * Called BEFORE PHY config_init. + */ + int (*phy_package_config_init_once)(struct phy_device *dev); + /** * @config_init: Called to initialize the PHY, * including after a reset */ int (*config_init)(struct phy_device *phydev); + /** + * @phy_package_probe_once: Driver specific PHY package probe + * @def: PHY device to use to probe PHY package + * + * Called during discovery once per PHY package. Used to set + * up device-specific PHY package structures, if any. + * Called BEFORE PHY probe. + */ + int (*phy_package_probe_once)(struct phy_device *dev); + /** * @probe: Called during discovery. Used to set * up device-specific structures, if any