From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF8C457F734 for ; Tue, 8 Sep 2026 15:57:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788883039; cv=none; b=ijb2ai5s8fOziLt4w298miiJtYl8dyYCdg8SdjvbhhbKcagyBnv80Wov23za/wLkgWzGgNvDBhOekvTAOGaEKraNeCgaXTjep0R8J8EoixPVfOaS5wE3/+j7GlcgcUZMgrd1J1aEJfL2IwkIbrlHcmuEV4MDCIwrg/LlK/QkYpo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788883039; c=relaxed/simple; bh=mzH/5XaUhv6NQCYgufBy5oWC9jpITM+/znfPg5sAlv0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=N3TksOYbQuJn7L0Q9AmvYvfKFDuFfei/hxmBfOADe2uwB6D/Q9krTHKYfRhhs4OYcW/9cRZwUgACEr9CHFKNEezwL1t2mPBbOtgtBT9Pu2RhoRmLIAQyxsOunNHduu5+9cSnubDKKgC+4rZttzkZGlJXaQe8M7oj/EHRZI7Rw9w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lex.la; spf=pass smtp.mailfrom=lex.la; dkim=pass (2048-bit key) header.d=lex.la header.i=@lex.la header.b=ZZJ4jIUn; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lex.la Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lex.la Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lex.la header.i=@lex.la header.b="ZZJ4jIUn" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-49b392ccaacso71328295e9.2 for ; Tue, 08 Sep 2026 08:57:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lex.la; s=google; t=1788883035; x=1789487835; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=YfiP06w66PJnEqo2UKKQtS6GK/rrfhVqIhL6B6Ho9XA=; b=ZZJ4jIUnWChO1HRnNr8uRBBkq/7Tg98Mdj17P3zP0jkQ5oh5OikoapoNFvURgfMAq9 7gXKACengPgKiK6PHw+e/WLkv/vLn+WIjmV/uEShjNdc99Qro2EsPoIwypcPEGi9z/ej N+9SvWC/148IEVQWUVMz/qBe/ckSyuqxAciPR5N9//2j3bkp341EoeNWcwT5LhTZL/re 9oqqQVDB2DsK1Uq/OTocvGKitFQoJcBH8cd7l3iMLqFapiAtzvTdofKu6atB3Dlk4TW3 YxFhbnYjI0fbVP+/xHh0i1vLEUtU5jab2oFYpjrA8kZ/tZ2ezaopMwEoRYIqKLx5T5GL x6tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788883035; x=1789487835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=YfiP06w66PJnEqo2UKKQtS6GK/rrfhVqIhL6B6Ho9XA=; b=HRMRjz+/LFHAIIKgCj+DxIWLxq75cSjQYrg6Im2u2dovZJplK1RhY5gkAVwoh/fw57 2jK+EjTXfq5TkfH4SzQu/XmzV8tmtTcUT4PrbUuskVE/2tP/lhH5BgsCDmY25ESRHTzy zhzCjr27KscY4nrkCScDEvMNFVBCwBrTVWImTJH2dQ8Z+IUj3VOyFVdTVB7IM13keBog ImbgYAWisA6I0bQPFuaYwfv/LGZnxc0H7d7va6reqoK+pVqxb5hh1l2tECmrkR7qz56j j0pkhiDfKIyIZ8OESTEOnFw6I2NkLVa0dsMghuxvpfcd9tu/eOmwwPnKME0FlsFcKKZK YAKg== X-Forwarded-Encrypted: i=1; AKwUvBynCqHV8D8xLqozB5s/pCrkDelY7Yos5KVX3i7JlSlkTFk2wgY8HKbYQOsNdojKz6Q7xyze+nbdcvy3@vger.kernel.org X-Gm-Message-State: AFuF++m+Lh4pKRjmZirlwi4DIuwSuqUJceFpQky+CV7LyLFyd4eH80TA o+9Hkya9JWWQoCXiR7PndiECTXF3YJauftb19hYdHI3GFVpBFDnrNx5h6o0CpnVM3o0= X-Gm-Gg: AYBFou2l/h4wGhqlQhejuhQNr088zJJfu5wliTzjNFEI0wa0TGxCcHoIcecxD6BMLCu 6I595X6W1ggqvRmRFqrkt+ojdP40yjcI+DYDcj8hXdZhPuhZfNkxjmMluAwXL/IHTOxGc6xkpxl EzxRjFWbXkpSxTuKUKL8PDZfwKpPOE0kD91azxuaS54TrcApsmhft0XughmWdC1AcD9Rsla+LZL +NY0XhR8f6/IUhYhzm5ZNc8zYZYgETAD5wXvZSz6e4Iuh4QUud9tgcmdGvyCYHbMBtTSJMFPHz3 nfDhfWZKPYt7dPRXMQK0IR6RpawJWCdXlH78biIdnep6soc6MZDw0LPQRNWXVB0HZYpD5UVCbEU YEOwqvoW7DgBstHJh+MZQ870qCM5jfygDfh9XNHUZS7u0bHkahfsl6DbOlKtZCQQ2oNnTnvafkT OnEY4BKuO+9HtUsz79RLye0cbsWgM9/3ze9z6spASToOZgWvZQJg== X-Received: by 2002:a05:6000:2209:b0:485:8a46:7057 with SMTP id ffacd0b85a97d-4858a46719cmr30096870f8f.41.1788883034530; Tue, 08 Sep 2026 08:57:14 -0700 (PDT) Received: from remote-01 ([84.17.55.227]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-485883be709sm37345704f8f.21.2026.09.08.08.57.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:57:14 -0700 (PDT) From: Aleksei Sviridkin To: andrew@lunn.ch, andrew+netdev@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: ericwouds@gmail.com, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Aleksei Sviridkin Subject: [RFC PATCH net-next v2 3/7] net: phy: air: type the buckpbus core on the mdio device Date: Tue, 8 Sep 2026 15:57:03 +0000 Message-ID: <20260908155707.4164559-4-f@lex.la> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260908155707.4164559-1-f@lex.la> References: <20260908155707.4164559-1-f@lex.la> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The buckpbus accessors only need an MDIO device, but they take a phy_device, which ties them to a probed PHY. An upcoming MDIO device driver needs the same register access before any phy_device exists, since it runs precisely to make the PHY presentable. Retype the internal helpers onto an mdio_device and keep the exported phy_device API as page-selecting wrappers that pass &phydev->mdio. The EN8811H driver already reaches the AN8811HB pbus through an mdio_device, so this follows an existing direction rather than opening a new one. No functional change. Assisted-by: LLM Signed-off-by: Aleksei Sviridkin --- drivers/net/phy/air_phy_lib.c | 80 ++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/drivers/net/phy/air_phy_lib.c b/drivers/net/phy/air_phy_lib.c index 5141db19fa5e..e314717843ae 100644 --- a/drivers/net/phy/air_phy_lib.c +++ b/drivers/net/phy/air_phy_lib.c @@ -14,31 +14,32 @@ #include "air_phy_lib.h" -static int __air_buckpbus_reg_read(struct phy_device *phydev, +static int __air_buckpbus_reg_read(struct mdio_device *mdiodev, u32 pbus_address, u32 *pbus_data) { int pbus_data_low, pbus_data_high; int ret; - ret = __phy_write(phydev, AIR_BPBUS_MODE, AIR_BPBUS_MODE_ADDR_FIXED); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_MODE, + AIR_BPBUS_MODE_ADDR_FIXED); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_RD_ADDR_HIGH, - upper_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_RD_ADDR_HIGH, + upper_16_bits(pbus_address)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_RD_ADDR_LOW, - lower_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_RD_ADDR_LOW, + lower_16_bits(pbus_address)); if (ret < 0) return ret; - pbus_data_high = __phy_read(phydev, AIR_BPBUS_RD_DATA_HIGH); + pbus_data_high = __mdiodev_read(mdiodev, AIR_BPBUS_RD_DATA_HIGH); if (pbus_data_high < 0) return pbus_data_high; - pbus_data_low = __phy_read(phydev, AIR_BPBUS_RD_DATA_LOW); + pbus_data_low = __mdiodev_read(mdiodev, AIR_BPBUS_RD_DATA_LOW); if (pbus_data_low < 0) return pbus_data_low; @@ -46,64 +47,66 @@ static int __air_buckpbus_reg_read(struct phy_device *phydev, return 0; } -static int __air_buckpbus_reg_write(struct phy_device *phydev, +static int __air_buckpbus_reg_write(struct mdio_device *mdiodev, u32 pbus_address, u32 pbus_data) { int ret; - ret = __phy_write(phydev, AIR_BPBUS_MODE, AIR_BPBUS_MODE_ADDR_FIXED); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_MODE, + AIR_BPBUS_MODE_ADDR_FIXED); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_ADDR_HIGH, - upper_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_ADDR_HIGH, + upper_16_bits(pbus_address)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_ADDR_LOW, - lower_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_ADDR_LOW, + lower_16_bits(pbus_address)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_DATA_HIGH, - upper_16_bits(pbus_data)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_DATA_HIGH, + upper_16_bits(pbus_data)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_DATA_LOW, - lower_16_bits(pbus_data)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_DATA_LOW, + lower_16_bits(pbus_data)); if (ret < 0) return ret; return 0; } -static int __air_buckpbus_reg_modify(struct phy_device *phydev, +static int __air_buckpbus_reg_modify(struct mdio_device *mdiodev, u32 pbus_address, u32 mask, u32 set) { int pbus_data_low, pbus_data_high; u32 pbus_data_old, pbus_data_new; int ret; - ret = __phy_write(phydev, AIR_BPBUS_MODE, AIR_BPBUS_MODE_ADDR_FIXED); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_MODE, + AIR_BPBUS_MODE_ADDR_FIXED); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_RD_ADDR_HIGH, - upper_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_RD_ADDR_HIGH, + upper_16_bits(pbus_address)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_RD_ADDR_LOW, - lower_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_RD_ADDR_LOW, + lower_16_bits(pbus_address)); if (ret < 0) return ret; - pbus_data_high = __phy_read(phydev, AIR_BPBUS_RD_DATA_HIGH); + pbus_data_high = __mdiodev_read(mdiodev, AIR_BPBUS_RD_DATA_HIGH); if (pbus_data_high < 0) return pbus_data_high; - pbus_data_low = __phy_read(phydev, AIR_BPBUS_RD_DATA_LOW); + pbus_data_low = __mdiodev_read(mdiodev, AIR_BPBUS_RD_DATA_LOW); if (pbus_data_low < 0) return pbus_data_low; @@ -112,23 +115,23 @@ static int __air_buckpbus_reg_modify(struct phy_device *phydev, if (pbus_data_new == pbus_data_old) return 0; - ret = __phy_write(phydev, AIR_BPBUS_WR_ADDR_HIGH, - upper_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_ADDR_HIGH, + upper_16_bits(pbus_address)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_ADDR_LOW, - lower_16_bits(pbus_address)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_ADDR_LOW, + lower_16_bits(pbus_address)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_DATA_HIGH, - upper_16_bits(pbus_data_new)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_DATA_HIGH, + upper_16_bits(pbus_data_new)); if (ret < 0) return ret; - ret = __phy_write(phydev, AIR_BPBUS_WR_DATA_LOW, - lower_16_bits(pbus_data_new)); + ret = __mdiodev_write(mdiodev, AIR_BPBUS_WR_DATA_LOW, + lower_16_bits(pbus_data_new)); if (ret < 0) return ret; @@ -144,7 +147,8 @@ int air_phy_buckpbus_reg_read(struct phy_device *phydev, u32 pbus_address, saved_page = phy_select_page(phydev, AIR_PHY_PAGE_EXTENDED_4); if (saved_page >= 0) { - ret = __air_buckpbus_reg_read(phydev, pbus_address, pbus_data); + ret = __air_buckpbus_reg_read(&phydev->mdio, pbus_address, + pbus_data); if (ret < 0) phydev_err(phydev, "%s 0x%08x failed: %d\n", __func__, pbus_address, ret); @@ -163,7 +167,7 @@ int air_phy_buckpbus_reg_write(struct phy_device *phydev, u32 pbus_address, saved_page = phy_select_page(phydev, AIR_PHY_PAGE_EXTENDED_4); if (saved_page >= 0) { - ret = __air_buckpbus_reg_write(phydev, pbus_address, + ret = __air_buckpbus_reg_write(&phydev->mdio, pbus_address, pbus_data); if (ret < 0) phydev_err(phydev, "%s 0x%08x failed: %d\n", __func__, @@ -183,8 +187,8 @@ int air_phy_buckpbus_reg_modify(struct phy_device *phydev, u32 pbus_address, saved_page = phy_select_page(phydev, AIR_PHY_PAGE_EXTENDED_4); if (saved_page >= 0) { - ret = __air_buckpbus_reg_modify(phydev, pbus_address, mask, - set); + ret = __air_buckpbus_reg_modify(&phydev->mdio, pbus_address, + mask, set); if (ret < 0) phydev_err(phydev, "%s 0x%08x failed: %d\n", __func__, pbus_address, ret); -- 2.53.0