Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp496301ybt; Wed, 17 Jun 2020 06:38:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjuwwmkmTjeZGEshPh8Gm/AewcRRO+4+NQp65FYrxQ0qUsJgNF8WoBu6CCEQl38wzP1PrG X-Received: by 2002:a50:98c1:: with SMTP id j59mr7628371edb.120.1592401107801; Wed, 17 Jun 2020 06:38:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592401107; cv=none; d=google.com; s=arc-20160816; b=gIvstOwOuBtdgoc5EZYD+A3fTvOyAMVjZBDgFOPVIZr4+1x4MHpd66Npd3Ek8XDj+P sOOkbCPbuo8DIxt1K7PTs0SMH4PvWlfrjCqfDWgnB98H0fW+abCtT7BNYev3DRpNHO7K mBdsxhTfDWa/MXP/7fMnWHxq/JzxhaXaP2hT4ih1ZW7c7F/UhmZES0VLGNtr9Cnd9SvL cPixR2/OGvlKdB6nb7ZmYMlcLkNGtfvwRbZ7s9HHqlUOE96ZIwAQoyhMBX+tT6mi68iu CziHtRd6wLQRL11WySwJah5x7+nKC0v6KNcnWd4ZyEO5oSQXHh2HvHpq2IC001daZrIL oshg== 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:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=hGfaWFePeggg6a6bW+xY4zRGMnZWrOUzSh+BJ3y+S2Y=; b=lYyfNOriP8C+LqcPAvp+rGctiKiLCtho4YoAQUDzqgv9JYyVkfzAcUVrDBN9Gl5f37 0J7J4jRsNWnzzmFdNtx4trcyBEvtWCHU4W2IuutXp5mQJ0mYcGx+86X7aVHYaiCF9Vab y13j0htv6CNQ5EeGHTWeL/rX1YqDTA9gIJskPseI/VndKaGclvSSLjqpFuWvvNw9oYUk gN8z1jm+oUWerVSeGdCV8dTgJKcTk2LfxJTn8wfmnt+cQ23m3pUQRfBmc9YoRo7sNica JPogrY+2HlAHxTFX3IA7GcbbPjnox9KtX0jCWNgrxLbYBrMjAr3yFXcPr1HOnhIdVozA MyTA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p26si13223017ejb.592.2020.06.17.06.38.05; Wed, 17 Jun 2020 06:38:27 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726984AbgFQNgU (ORCPT + 99 others); Wed, 17 Jun 2020 09:36:20 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:40931 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726480AbgFQNgS (ORCPT ); Wed, 17 Jun 2020 09:36:18 -0400 X-Originating-IP: 90.76.143.236 Received: from localhost (lfbn-tou-1-1075-236.w90-76.abo.wanadoo.fr [90.76.143.236]) (Authenticated sender: antoine.tenart@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id BCEEAE000B; Wed, 17 Jun 2020 13:36:13 +0000 (UTC) From: Antoine Tenart To: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, richardcochran@gmail.com, alexandre.belloni@bootlin.com, UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, allan.nielsen@microchip.com, foss@0leil.net, antoine.tenart@bootlin.com Subject: [PATCH net-next v2 1/8] net: phy: add support for a common probe between shared PHYs Date: Wed, 17 Jun 2020 15:31:20 +0200 Message-Id: <20200617133127.628454-2-antoine.tenart@bootlin.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200617133127.628454-1-antoine.tenart@bootlin.com> References: <20200617133127.628454-1-antoine.tenart@bootlin.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Shared PHYs (PHYs in the same hardware package) may have shared registers and their drivers would usually need to share information. There is currently a way to have a shared (part of the) init, by using phy_package_init_once(). This patch extends the logic to share parts of the probe to allow sharing the initialization of locks or resources retrieval. Signed-off-by: Antoine Tenart --- include/linux/phy.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/include/linux/phy.h b/include/linux/phy.h index 8c05d0fb5c00..058219b6441f 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -244,7 +244,8 @@ struct phy_package_shared { }; /* used as bit number in atomic bitops */ -#define PHY_SHARED_F_INIT_DONE 0 +#define PHY_SHARED_F_INIT_DONE 0 +#define PHY_SHARED_F_PROBE_DONE 1 /* * The Bus class for PHYs. Devices which provide access to @@ -1554,14 +1555,25 @@ static inline int __phy_package_write(struct phy_device *phydev, return __mdiobus_write(phydev->mdio.bus, shared->addr, regnum, val); } -static inline bool phy_package_init_once(struct phy_device *phydev) +static inline bool __phy_package_set_once(struct phy_device *phydev, + unsigned int b) { struct phy_package_shared *shared = phydev->shared; if (!shared) return false; - return !test_and_set_bit(PHY_SHARED_F_INIT_DONE, &shared->flags); + return !test_and_set_bit(b, &shared->flags); +} + +static inline bool phy_package_init_once(struct phy_device *phydev) +{ + return __phy_package_set_once(phydev, PHY_SHARED_F_INIT_DONE); +} + +static inline bool phy_package_probe_once(struct phy_device *phydev) +{ + return __phy_package_set_once(phydev, PHY_SHARED_F_PROBE_DONE); } extern struct bus_type mdio_bus_type; -- 2.26.2