From patchwork Tue Apr 8 09:51:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042598 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4EE94C369A1 for ; Tue, 8 Apr 2025 09:55:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=B9jOtwj6zr/UlgyzehUvwRXcqVoFIXeaFAL8YGh83i0=; b=TOUGX/enq3XM2P/xTsIUp6eKi7 duKnkIjUNpbpJovTZU1/K/eJ5Glp9fQe2caze8+4MHpZOGg7Mle29FazVGukPV6s+twDBzMxuT5zV BLSYF+woUwsdX1QrlyQ27yw86YjT2r8xtewDobPhJGGzK2PR1hKsabIf73u8A2ufyZ0sEnLAWO2tT GksmWU8uJ6yLG8z5JNk/6+/OpRLaaxlmHrHSFm5NeICNHrhnhj+M0qPR+0z89puZr6vYmlkKIWoje KwFXuWIcQbgAmbriFRr4GyAeOp2n8m+ueM8NOekuOeuYyDMMSJJMt4OCjMPaQU/vQbjVZ+6U9bGh/ lr8oVMOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25fM-00000003X4N-0m8t; Tue, 08 Apr 2025 09:54:48 +0000 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25cs-00000003W2k-2B73; Tue, 08 Apr 2025 09:52:15 +0000 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-39bf44be22fso3555927f8f.0; Tue, 08 Apr 2025 02:52:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105933; x=1744710733; darn=lists.infradead.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=B9jOtwj6zr/UlgyzehUvwRXcqVoFIXeaFAL8YGh83i0=; b=RfuMNjOzp77glFYYJc5oZLw+oD/XXiE/+SLUwIiKfZMo+cfDWlc5IGoiuDJ7+9K+qy Wi/Sp7B/IsbIE2AyApnqlHm5QtLARz4MVpAmNIsREEm/8iKsMHo45cUE3dCjRYtAeiYG B67NYWfx5rAsGlNplqur2YtezPyp8O/CnrqnClv6ojAuAHPZeYj+09q1W8qeRvKEwr27 00n572sLfZztsYm8GMdTJjJVcqBzGI4+A4dpFysZGG4AZMts6XNNOOcn7of6J6s0Oa2q tqX1mQpkgu1eDAbH9YiNo17RsbprrMfYcB592TCuCZ2V03j06xgV1ksxuScgPj2TaA6l Ecvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105933; x=1744710733; 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=B9jOtwj6zr/UlgyzehUvwRXcqVoFIXeaFAL8YGh83i0=; b=vPKgDAKBEe/cTWe7bWYmvEnAv0DRrzlUXEbRUYnDvk2515RGlF0bEDcosLPn1aZzqu +yed69MtA6iUOzHtRG/B0ILyFeVAtR12YKTC/03KfR+T3bS/Jq55de/jjAxib3lLxzb5 kqo7zrS6SKYKsISuYOMckMxORQ2AQ8FdGHelavb7EZLn95qxrrJwUGEqL6+JKLSF4vBL TPMDLGJzBReoYUtdipNl8Jg/CGYWWHpJ1qQfEw6GB4DssvktyZm/MVQQ1fE3QhKFjnOh YP8NeBQ1+OnyDl5V5ljcWHyUPxB2fzx+KZLo2uCFX9GUgb5BdQgJ5lgfxD2jURhiWKZu KlWg== X-Forwarded-Encrypted: i=1; AJvYcCVRkB3Lg/HHzxEL5lIXEBZeSzrVg46thmY0hf1JEBZAgawvbs3E4qRzhi0vT3Smd2UhjEdWhXprF6rBTg1Vq3Q=@lists.infradead.org, AJvYcCVzS+Lkm7qwtZXf5V50aa2PtAC03eZJOB/g6od2xoIiffOm5N7V2d6IysKdJubPG0ri/VdEXiR0PGUmFnm/c18I@lists.infradead.org X-Gm-Message-State: AOJu0YzY6RrUEjsV9DoCOvBffGD47Rjc/Hc7eRPU5PWvgWccyMDVCbAS Fzt9mN3bhJ4YS6dknPBYxtHMSukmh21VNCKPdpsrPcxaZpNJ1GpV X-Gm-Gg: ASbGncsF4J9kHdP53DqWU1v1J2WfK/T8usbq5uKT/R6vKAwgDm9NowY/MEanrgpc4+l nNb8wZaMk+i/AuH1kRRBpnhamIN8g7/S9V8cLB74SEktYj1mpFvBTCmbACF2hpNRJpJFJYLoY2V liZ824/cVUFHEOkEkFuVtOZsPzORFijqyKd9/2l298ESVVZCa5pm8DMl5b6rbEHT6laYZhuxCky FHaRSDMMPgOVWUBQ134SmMdMy+f83KC+jgSGdGp4AfFfRyLc7C2zxtRZ0C23cYQh/DbSTuYyBxJ 29gCmUK60tHi/HxoBbggBrpTAodCn8OIwCtwj1Nal9n1L2LtWp+ATk74F7FJ+AZ27U7DdB7WUUy wxCWnZWOHT7/22A== X-Google-Smtp-Source: AGHT+IFwQXlkEkiv59tTOoBNbBWxAd5ev/Yt4wKxTnHPQXrrp31uVElCwlox+riOCqLgnYPJvB/0CA== X-Received: by 2002:a05:6000:1862:b0:39c:12ce:1054 with SMTP id ffacd0b85a97d-39d6fc00e59mr9843048f8f.8.1744105932837; Tue, 08 Apr 2025 02:52:12 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:12 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 01/16] dt-bindings: nvmem: Document support for Airoha AN8855 Switch EFUSE Date: Tue, 8 Apr 2025 11:51:08 +0200 Message-ID: <20250408095139.51659-2-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025214_558566_525B666C X-CRM114-Status: GOOD ( 13.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document support for Airoha AN8855 Switch EFUSE used to calibrate internal PHYs and store additional configuration info. Signed-off-by: Christian Marangi Reviewed-by: Rob Herring (Arm) --- .../bindings/nvmem/airoha,an8855-efuse.yaml | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 Documentation/devicetree/bindings/nvmem/airoha,an8855-efuse.yaml diff --git a/Documentation/devicetree/bindings/nvmem/airoha,an8855-efuse.yaml b/Documentation/devicetree/bindings/nvmem/airoha,an8855-efuse.yaml new file mode 100644 index 000000000000..9802d9ea2176 --- /dev/null +++ b/Documentation/devicetree/bindings/nvmem/airoha,an8855-efuse.yaml @@ -0,0 +1,123 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/nvmem/airoha,an8855-efuse.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Airoha AN8855 Switch EFUSE + +maintainers: + - Christian Marangi + +description: + Airoha AN8855 EFUSE used to calibrate internal PHYs and store additional + configuration info. + +$ref: nvmem.yaml# + +properties: + compatible: + const: airoha,an8855-efuse + + '#nvmem-cell-cells': + const: 0 + +required: + - compatible + - '#nvmem-cell-cells' + +unevaluatedProperties: false + +examples: + - | + efuse { + compatible = "airoha,an8855-efuse"; + + #nvmem-cell-cells = <0>; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + shift_sel_port0_tx_a: shift-sel-port0-tx-a@c { + reg = <0xc 0x4>; + }; + + shift_sel_port0_tx_b: shift-sel-port0-tx-b@10 { + reg = <0x10 0x4>; + }; + + shift_sel_port0_tx_c: shift-sel-port0-tx-c@14 { + reg = <0x14 0x4>; + }; + + shift_sel_port0_tx_d: shift-sel-port0-tx-d@18 { + reg = <0x18 0x4>; + }; + + shift_sel_port1_tx_a: shift-sel-port1-tx-a@1c { + reg = <0x1c 0x4>; + }; + + shift_sel_port1_tx_b: shift-sel-port1-tx-b@20 { + reg = <0x20 0x4>; + }; + + shift_sel_port1_tx_c: shift-sel-port1-tx-c@24 { + reg = <0x24 0x4>; + }; + + shift_sel_port1_tx_d: shift-sel-port1-tx-d@28 { + reg = <0x28 0x4>; + }; + + shift_sel_port2_tx_a: shift-sel-port2-tx-a@2c { + reg = <0x2c 0x4>; + }; + + shift_sel_port2_tx_b: shift-sel-port2-tx-b@30 { + reg = <0x30 0x4>; + }; + + shift_sel_port2_tx_c: shift-sel-port2-tx-c@34 { + reg = <0x34 0x4>; + }; + + shift_sel_port2_tx_d: shift-sel-port2-tx-d@38 { + reg = <0x38 0x4>; + }; + + shift_sel_port3_tx_a: shift-sel-port3-tx-a@4c { + reg = <0x4c 0x4>; + }; + + shift_sel_port3_tx_b: shift-sel-port3-tx-b@50 { + reg = <0x50 0x4>; + }; + + shift_sel_port3_tx_c: shift-sel-port3-tx-c@54 { + reg = <0x54 0x4>; + }; + + shift_sel_port3_tx_d: shift-sel-port3-tx-d@58 { + reg = <0x58 0x4>; + }; + + shift_sel_port4_tx_a: shift-sel-port4-tx-a@5c { + reg = <0x5c 0x4>; + }; + + shift_sel_port4_tx_b: shift-sel-port4-tx-b@60 { + reg = <0x60 0x4>; + }; + + shift_sel_port4_tx_c: shift-sel-port4-tx-c@64 { + reg = <0x64 0x4>; + }; + + shift_sel_port4_tx_d: shift-sel-port4-tx-d@68 { + reg = <0x68 0x4>; + }; + }; + }; From patchwork Tue Apr 8 09:51:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042599 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 38469C3600C for ; Tue, 8 Apr 2025 09:56:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=r9WVqBNjVDARAuAcOpCm7nO6NK//qFgMIDPPMTwzB9Y=; b=wWxCvI915uoo8i/CPl0LKMl+nX tJOy3YUVS9Hll1creFd3hI/9nLBN4cYPZVsa8wjLmIOsRqk/mKYbvutjE+Ei+tO0tIv6VeTpWqEmw R+KAQlUbRyxsdHvoFQb5HINmTAKxP6FNEPGviXj22cl0YIbpo8p+JV1E9+RcADMyLzhRtoVILEIhB ZvyvPyBWeUnXkalH54o6I5fb6dVImGOFw+x9N08SvJ/kU+GbwYFIwtsPJ0iKU7gDNE3AAqDIze/PM vgbF3Shu/UP5mtiALDUFa9aJkTuKLC96FKG0v8LVJkvSAVS83M2aydH9xfbBw8iAR4N0NR8evesAo 1XUEcJlQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25hA-00000003XWj-2bMf; Tue, 08 Apr 2025 09:56:40 +0000 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25ct-00000003W3K-2vuf; Tue, 08 Apr 2025 09:52:17 +0000 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-39c1ef4ae3aso3054927f8f.1; Tue, 08 Apr 2025 02:52:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105934; x=1744710734; darn=lists.infradead.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=r9WVqBNjVDARAuAcOpCm7nO6NK//qFgMIDPPMTwzB9Y=; b=RTZeQi+7U8gS87UZpzyTOAb2/5dDFSADMWQhuFUySRgWqoBrGoK3PDzshH0yOecDCj zC+dnySHuaMlkc4Rz2Jm8TjGZ9vsjXdGGXK5CwZzbN5KLaMfVds+S/SrgsZ+BKpwjNEV yjCgkOdw6dRxtXJqsXnJ64DybAzoOoH4Jpimvkr3u9G1BYU0dc5lzvQp8XUIpm597kNv wTIrGODRuUzskH33NGhyHx8M2VxvDK1fsjQoTdxp2x4P7I5N0GYAM9E++6icz/XesjeU SwNkhTWPpfn4WFieY/B9uJ2kKPjsdfvObhoWX+zzJMI9gdE5wL8qBAjYq1q4onuDfqPE LohQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105934; x=1744710734; 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=r9WVqBNjVDARAuAcOpCm7nO6NK//qFgMIDPPMTwzB9Y=; b=fmt2gDRbvU8h2jRb5ps6QNztzdepalUuTrt/cr1qivpGITTq9O3EpptTmdbMrWoaeH iYNsv5bBjtJW0Nc1y2aI/EiAqTJfc56+m6+fWuVUa9hCIkA1+Fn71xIUMArChE0mfcel tORJvDWcIq1ufq6wViWq3rn5zHdFnI/kpDRroFDM80HnZygJmiUUFrsiWB1vMvkxiOfb oKxXBYEJvkHd40Tpx0kl4rkp7BKB07NiymWlwwr5BxLPQJOTwERxOKBtvXf4N5842e6R CzbYdu+cQWn8sGX+se+80djDNdDSIRVeJiwuRZgYfDuWchTcndOdpclgsUSQTtmWIRuR Qv/A== X-Forwarded-Encrypted: i=1; AJvYcCW47K+2oZizmPLZLZuEFYPMm7n5VtmeTTB15RqpUUX+hqvea3lMnp8/FzeakPW1J7Wz3h+M8SPCGhEEN0HatdNh@lists.infradead.org, AJvYcCXa75NRbuDQEXy6dpVYKgFWwQwcnE9N4vLLIZT2FIzxhr5UT4kI8Xz9VyfDYYhYg0DC0xdCFldToo6KQGSzDXM=@lists.infradead.org X-Gm-Message-State: AOJu0Yzi+5+I9CdCLj4hePHCuHUzhCB0292RY4wok2FKbVJBoxyI1yvJ kjkExjUPSR5iROH7zMgrK9HybRuY/bNs8CrCO/5oyZ9Dim4SOD5E X-Gm-Gg: ASbGncvinmPkRMKw2M0h9vRijJADycm0TyJncXXN5T6Gl7s05OP8G9ZHBBCtkHWa0fR TAZdjwdvFa+TEiVsaPba6vn9c6bUP7XX6OO7uNzjkPpY69LeDODxttbtEyaKewRujx04JNblKUO mCB8DAJPWQJ3oRaRt3t94Qbpt/t9VAd+TVGYdvMW+XUpp0jT2g/cNub3jHzU0wItONDxT8Nycet 1vYPLhCTAxLDaJPfKq5hdm1AARXAUC5ykgiiN7t31MqHaHj8Qw+ZVgQ1dpodiL17Dw5Xw2FnzP9 4hSxdscbqMG0U/bHHLAcXpMfkUYN9uEG1sUQvBjbWK6iFZu76u3ZYPmmXG23hzP6fx8BT5mQhoD HTB2NXZxK/i2GOQ== X-Google-Smtp-Source: AGHT+IEVrAoJHAtIp9Eap+mm2qROvOpwdlWe6t15SZ+SKIAaChNthcm1sv/OWGyYjhXa68oUZgPklQ== X-Received: by 2002:a05:6000:290c:b0:39c:1f02:44d8 with SMTP id ffacd0b85a97d-39d820ab532mr2192973f8f.4.1744105934317; Tue, 08 Apr 2025 02:52:14 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:14 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 02/16] dt-bindings: net: Document support for Airoha AN8855 Switch Virtual MDIO Date: Tue, 8 Apr 2025 11:51:09 +0200 Message-ID: <20250408095139.51659-3-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025215_741994_EAF1BB0A X-CRM114-Status: GOOD ( 15.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document support for Airoha AN8855 Virtual MDIO Passtrough. This is needed as AN8855 require special handling as the same address on the MDIO bus is shared for both Switch and PHY and special handling for the page configuration is needed to switch accessing to Switch address space or PHY. Signed-off-by: Christian Marangi Reviewed-by: Rob Herring (Arm) --- .../bindings/net/airoha,an8855-mdio.yaml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/airoha,an8855-mdio.yaml diff --git a/Documentation/devicetree/bindings/net/airoha,an8855-mdio.yaml b/Documentation/devicetree/bindings/net/airoha,an8855-mdio.yaml new file mode 100644 index 000000000000..3078277bf478 --- /dev/null +++ b/Documentation/devicetree/bindings/net/airoha,an8855-mdio.yaml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/airoha,an8855-mdio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Airoha AN8855 MDIO Passtrough + +maintainers: + - Christian Marangi + +description: + Airoha AN8855 Virtual MDIO Passtrough. This is needed as AN8855 + require special handling as the same address on the MDIO bus is + shared for both Switch and PHY and special handling for the page + configuration is needed to switch accessing to Switch address space + or PHY. + +$ref: /schemas/net/mdio.yaml# + +properties: + compatible: + const: airoha,an8855-mdio + +required: + - compatible + +unevaluatedProperties: false + +examples: + - | + mdio { + compatible = "airoha,an8855-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + internal_phy1: phy@1 { + reg = <1>; + }; + + internal_phy2: phy@2 { + reg = <2>; + }; + + internal_phy3: phy@3 { + reg = <3>; + }; + + internal_phy4: phy@4 { + reg = <4>; + }; + + internal_phy5: phy@5 { + reg = <5>; + }; + }; From patchwork Tue Apr 8 09:51:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042604 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BFDF2C369A4 for ; Tue, 8 Apr 2025 10:00:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=byJPrCHf6giAb360kl2C62a9VTaGkIRY65ltid6z7nk=; b=VkJ73HptaPc2ooUPcBzx8bXujv jRj/oZlP3+kO5K2MROEUGaTArZqcP1JnsXwqs3c7rh8s1NYUk2kt/BNEjFarsB/MXWvRL5eac/Lx9 +rDqWL95k5hKFlVVdoqgT7UCGOB0zPeWfuLrypoFqRJkHd4M5y4QKPrzP4VlXV8JpFZ5DbhBM2RGp 5PzIzSElcigDRPn0KzjfY65Tita9WyW7vCjb9jmGKwOr/CA6VICeKcavun4o3pP4NmNiyQVZMRI/a Ux/W0NteYkEni7f7IwBGKp8Zen37H4UjdkMvHQ/zSXiY+XOJVeDPk52iI6OuWUBOBQejxK8zY+P4E /Ik1AvkQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25km-00000003YHI-3xeX; Tue, 08 Apr 2025 10:00:24 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25cv-00000003W3s-2fs6; Tue, 08 Apr 2025 09:52:19 +0000 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-43cf0d787eeso58276595e9.3; Tue, 08 Apr 2025 02:52:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105936; x=1744710736; darn=lists.infradead.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=byJPrCHf6giAb360kl2C62a9VTaGkIRY65ltid6z7nk=; b=Znbou5n73QBu7gEbdEpUIjYei40mlYGoLyczt3Grn2Z1pWGJImQ+JchV3OyIDK6o+/ YpdBzwfjGu6SGe2i3DFxMrfqfKzfmhB7T1pie4Xrf+K/IUV5FNJ2ShQqev7RZq3Z9U56 BjwkrqBBXN0ARe1NRnHSCc8R4uiL6oC9vtEE0Vjb0GOm8A7MntaO4IDhBxmoR0k5b47m xRJgPz44B61zBTAkTUC+LBxKzENlt1BnSOcQJu1d95OJVYJcCOGmStCb6LEzJxM7hY5q 7GXxh0xadXT09/fu93J2r3KjqO7b0NYrr1wu1AtNBtnCYNh0hdLNytVN2guBZsexMKgk POFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105936; x=1744710736; 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=byJPrCHf6giAb360kl2C62a9VTaGkIRY65ltid6z7nk=; b=YvpunJkgeEyXTNfdJQ7CtS0gT6P9fHSi4dy49g/9qV3GbdvvLIs29bE1BwZd6uDVut eY7OxSg3+agEMrFTlLl7smqVQLPZDpUKH1BdacOdTt2P9xwXJPaFN8Q2daThYHMAmQ8F TowTIblh9Y5T/+GByEzoyQpsi1pxhwRYLS4Tz4pivDVzumsKHBn1C/Ctew5JrwT4BYOC 0ufT+/UdIJ1LD5X9m0GO/F0gzAeFeTzzD4cRupyfrPGC82F0t/XtNEnXc+QDRAU/ma3y iTR9gWQsfSluql0ItN0BCy60iGo+csJnvuf0Y8Oy1y8FXEJvwBsp++MrD4WpC5wCgSs8 AtXw== X-Forwarded-Encrypted: i=1; AJvYcCUaq37jWbB2HWPjGsN40gZQTPsyH0SdAJob8UdRGCSrSb105V2cYV3HOinsFp0BhMAf0Y7lb+DcZRVzk2nRQIlR@lists.infradead.org, AJvYcCVnTq6CIcR3OVU3s+3uId4e4x1Xn/RYqQTn/4/mgU0CjTPpSZQouMxkGNXNU+WZsg5qxx0D2j2N7ZFBPQguq9c=@lists.infradead.org X-Gm-Message-State: AOJu0YxabiOqARWiqISC/ro3djJRLp2tjE0H9Qy6MAhvc+yxIDxPDzqE GlIJCaV9f4O+Pe8kd+PRH7O8RI2dtjdifuvfjhKdlReYIWUQPlks X-Gm-Gg: ASbGncsylvQy0XAz8WCAqVD/MRoig8FM4yZHvY0XmX++c0sLmYSRyQBeIZ84armon6j oEMeDO7fp/nRFPbkoPjU8rwmS/y0hqmFzI44QuJfvhJq1nk11KtqRhAV9Gjtz79VxgEJvstDjrU 2Ebf0gfVZoz5JkcSewOBjiWCC74ZBi8JAIxd/g4dz8DsBN0NXf9L6GlcCKvPPSGrLPNPbKYh9I6 LAlfyAxVkEfzclyBeTi4TF7PFZFTCLF4KR7ObT4jtwwuemuAwBnL0t9PqwfQvGtckc1NTqWtgbi XAcmSjp3RxyU8rPTj8T0My2cC4f2y6S/Ek647fMHnUrD8OO+TucSjNQGQrK12zRfKRwJpXu/R6/ nMjA5I/HP7t9Gcg== X-Google-Smtp-Source: AGHT+IGo880VawF4/5TDQUaFDegWLI9yM3ZULhdWp4WgfxOq5TQRzqsaKPB2/AwFAxQmOfQoB66hEA== X-Received: by 2002:a05:6000:2285:b0:394:ef93:9afc with SMTP id ffacd0b85a97d-39d0de17c21mr12141377f8f.18.1744105935819; Tue, 08 Apr 2025 02:52:15 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:15 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 03/16] dt-bindings: net: dsa: Document support for Airoha AN8855 DSA Switch Date: Tue, 8 Apr 2025 11:51:10 +0200 Message-ID: <20250408095139.51659-4-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025217_675229_0CFE42D5 X-CRM114-Status: GOOD ( 14.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document support for Airoha AN8855 5-port Gigabit Switch. It does expose the 5 Internal PHYs on the MDIO bus and each port can access the Switch register space by configurting the PHY page. Signed-off-by: Christian Marangi Reviewed-by: Rob Herring (Arm) --- .../net/dsa/airoha,an8855-switch.yaml | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/dsa/airoha,an8855-switch.yaml diff --git a/Documentation/devicetree/bindings/net/dsa/airoha,an8855-switch.yaml b/Documentation/devicetree/bindings/net/dsa/airoha,an8855-switch.yaml new file mode 100644 index 000000000000..fbb9219fadae --- /dev/null +++ b/Documentation/devicetree/bindings/net/dsa/airoha,an8855-switch.yaml @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/dsa/airoha,an8855-switch.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Airoha AN8855 Gigabit Switch + +maintainers: + - Christian Marangi + +description: > + Airoha AN8855 is a 5-port Gigabit Switch. + + It does expose the 5 Internal PHYs on the MDIO bus and each port + can access the Switch register space by configurting the PHY page. + +$ref: dsa.yaml#/$defs/ethernet-ports + +properties: + compatible: + const: airoha,an8855-switch + +required: + - compatible + +unevaluatedProperties: false + +examples: + - | + ethernet-switch { + compatible = "airoha,an8855-switch"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "lan1"; + phy-mode = "internal"; + phy-handle = <&internal_phy1>; + }; + + port@1 { + reg = <1>; + label = "lan2"; + phy-mode = "internal"; + phy-handle = <&internal_phy2>; + }; + + port@2 { + reg = <2>; + label = "lan3"; + phy-mode = "internal"; + phy-handle = <&internal_phy3>; + }; + + port@3 { + reg = <3>; + label = "lan4"; + phy-mode = "internal"; + phy-handle = <&internal_phy4>; + }; + + port@4 { + reg = <4>; + label = "wan"; + phy-mode = "internal"; + phy-handle = <&internal_phy5>; + }; + + port@5 { + reg = <5>; + label = "cpu"; + ethernet = <&gmac0>; + phy-mode = "2500base-x"; + + fixed-link { + speed = <2500>; + full-duplex; + pause; + }; + }; + }; + }; From patchwork Tue Apr 8 09:51:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042605 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3BBF0C369A1 for ; Tue, 8 Apr 2025 10:02:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=dMfOxJ+ivVKCbrvfLFliBdEaPDrw2fQxzA5hHL8RHBE=; b=fS6GL3/HwX+tLZc4QHKrYaunhM V9xWUyuNWASKqaWnRajWaeeSgzK+EWerHVq3yCW+7lALLQbJy284ugCw3/nKS1AUMrGOG0wLM+iWH L99EtSn/idpqeC3viwRNcaLtUuVPsVXQLbh4pyPxtc0wvMwpqnpmBEmmwxq6yzuAo6ed+fEyOhHlF aHCRhBHdmjKtr5aMJlx0G8TDgYGDQpHyJ28t3puc5hLgklviiKDqF0qXsAH+SHkcMRDP7KY3CLMk0 PESZzHekrPXRDc931RbGBkoBAq5FIB8FkiCLmokO7o+yjLo6jv34djuzjA/EWG1syu9tCvG/B4ws1 JOAQET6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25mb-00000003Ygt-0IhM; Tue, 08 Apr 2025 10:02:17 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25cx-00000003W4N-0Ynl; Tue, 08 Apr 2025 09:52:20 +0000 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3913b539aabso3109960f8f.2; Tue, 08 Apr 2025 02:52:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105937; x=1744710737; darn=lists.infradead.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=dMfOxJ+ivVKCbrvfLFliBdEaPDrw2fQxzA5hHL8RHBE=; b=BHg2x4Wh5iGzT6ooz8Piqow9IBosEaDPiB9IFoQrj3bbxnNTzPjyjdJApRdjK4Whuo hQZiylS8schQs64BJBq1HPZUZVlu6yDC0MSTMfRZA++JMTEbKtTOGpfc/sCLbMYmwTOl VignqcgV++4Fdg2iStaAELejlpMgC0f01QEBzKn7RJcUAs+zhck/2QaKJ5dtZsSNvHRu 1Ln7QhVewD0kz8n2eQ8cADJ09txI8XEbgJ/1NOJvzA4AQVzKbHvza8IMgieoRtqKOAXS WRUTJYUGfbxE5YYaekfUe+keh2bdFwfqTSLOylzCGZPQBnrotWrxddq4+7JF9DyZ8h78 JHFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105937; x=1744710737; 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=dMfOxJ+ivVKCbrvfLFliBdEaPDrw2fQxzA5hHL8RHBE=; b=pjrcfC784hHXDbklLef92MZc6ockwizatrtu37CVFcfWFKOkEoJjgeCaQt82MgJC3V y4+5KqLqu/MNQFTTFc1/gRymb3xdMEZ08LDwp/EB8htFUFr0l3jz+bx1a8jvKJJcu6kS 5t39MjOzN0yJxWvzCVJWgMwyO3eYB8U5pI8bHxt0hQnrX6hlunygqDsGMrliPEm89pkF zXbMj+0yEvzszgx2l3I6T+NEF/s6RSvluHwFRG9OOCOkhxe/k65E+tCHb1Bi/3VgdflG nJybTRni9nDudM3LDZHIls7fj8r8RE+ahUcf2B37XbiGNG5TAfwntr+NRWjnUuXgeaFC LcdA== X-Forwarded-Encrypted: i=1; AJvYcCUF8eQD2cdtKDyviuntcGi/2iW4hLRPEEu9TKonaFzo+lMr7sGXkDVysPoJVRkkLxQr4GW+uQwUbA03IKUAGVQF@lists.infradead.org, AJvYcCVni8K2ijsPJgOIsZrju6FipJWmuvjhxt3VmmWjHCM/pSjZbIyBAd+L2k5M6Wt+IOLu7hdbYpeIod1eLD0f2n0=@lists.infradead.org X-Gm-Message-State: AOJu0YyPUFlNupmKbl6XQqlxxaE1KhASLsPLE9feloC4y/JVNTzf0Kn+ he2f6WBr/xKZk192lrKQMDHzxlsKkKqeljMKUZkWvc4A3jf62FNW X-Gm-Gg: ASbGncsTz0KYTyEzBYoQzWRDjlZmOKHQRkOSAqE9KEjn434808yrh+H2VzQnmunuxBu g+NkaV7M7pwbsR/e/WdyIZDN0ce3klaedV9S140aFOCxefkuZSMsb1DpVcgxqKEuLZoIib2xYcr BXTshiuG2Gvvtl9PlAtujaHRqNxuLLhVla1s994IxS8nbHMmvgEQsDLWj145FwHNaM99h2lhQ8U JnxFH20Vvx3hwpWvgBdMw5oqtVA3MyiSrkNHUgcC6B3lK9CFYWxrXeOC//G7tMHWVzMm96MGNsT HMtKtmaroKpMCzZbY/a+nPMhW6riSROIzNnfV5EvXB7xQlUa7ladAcDSWb0X9BTmkw/3GjRKhb4 u87b1c9cNu4YAdw== X-Google-Smtp-Source: AGHT+IEXwpGN30PUlfHaaWGCiZEymBLvKdCoOgEM1azp0/BEOQhn10oJuQ7dwscnj+583gxofkLISQ== X-Received: by 2002:a5d:64cd:0:b0:391:2f15:c1f4 with SMTP id ffacd0b85a97d-39cba93d7e4mr13535785f8f.55.1744105937328; Tue, 08 Apr 2025 02:52:17 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:17 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 04/16] dt-bindings: net: Document support for AN8855 Switch Internal PHY Date: Tue, 8 Apr 2025 11:51:11 +0200 Message-ID: <20250408095139.51659-5-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025219_174767_6C2ACAE1 X-CRM114-Status: GOOD ( 16.22 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document support for AN8855 Switch Internal PHY. Airoha AN8855 is a 5-port Gigabit Switch that expose the Internal PHYs on the MDIO bus. Each PHY might need to be calibrated to correctly work with the use of the eFUSE provided by the Switch SoC. This can be enabled by defining in the PHY node the NVMEM cell properties. Signed-off-by: Christian Marangi Reviewed-by: Rob Herring (Arm) --- .../bindings/net/airoha,an8855-phy.yaml | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/airoha,an8855-phy.yaml diff --git a/Documentation/devicetree/bindings/net/airoha,an8855-phy.yaml b/Documentation/devicetree/bindings/net/airoha,an8855-phy.yaml new file mode 100644 index 000000000000..d2f86116badf --- /dev/null +++ b/Documentation/devicetree/bindings/net/airoha,an8855-phy.yaml @@ -0,0 +1,83 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/airoha,an8855-phy.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Airoha AN8855 Switch Internal PHY + +maintainers: + - Christian Marangi + +description: > + Airoha AN8855 is a 5-port Gigabit Switch that expose the Internal + PHYs on the MDIO bus. + + Each PHY might need to be calibrated to correctly work with the + use of the eFUSE provided by the Switch SoC. + +allOf: + - $ref: ethernet-phy.yaml# + +select: + properties: + compatible: + contains: + enum: + - ethernet-phy-idc0ff.0410 + required: + - compatible + +properties: + reg: + maxItems: 1 + + nvmem-cells: + items: + - description: phandle to SoC eFUSE tx_a + - description: phandle to SoC eFUSE tx_b + - description: phandle to SoC eFUSE tx_c + - description: phandle to SoC eFUSE tx_d + + nvmem-cell-names: + items: + - const: tx_a + - const: tx_b + - const: tx_c + - const: tx_d + +required: + - compatible + - reg + +dependentRequired: + nvmem-cells: [ nvmem-cell-names ] + +unevaluatedProperties: false + +examples: + - | + mdio { + #address-cells = <1>; + #size-cells = <0>; + + ethernet-phy@1 { + compatible = "ethernet-phy-idc0ff.0410", + "ethernet-phy-ieee802.3-c45"; + + reg = <1>; + }; + + ethernet-phy@2 { + compatible = "ethernet-phy-idc0ff.0410", + "ethernet-phy-ieee802.3-c45"; + + reg = <2>; + + nvmem-cells = <&shift_sel_port0_tx_a>, + <&shift_sel_port0_tx_b>, + <&shift_sel_port0_tx_c>, + <&shift_sel_port0_tx_d>; + nvmem-cell-names = "tx_a", "tx_b", "tx_c", "tx_d"; + }; + }; From patchwork Tue Apr 8 09:51:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042609 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0EB26C369A1 for ; Tue, 8 Apr 2025 10:04:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ExLehqKRvcjfnLv7M/oInDmYXs2lxlBzas9u/z/Ge4c=; b=e3ztlRmy5He4SUrs5tgMKLewUX eMnurRYVc3wfGrC5bs7g8egq9hRNmUBu3+ha20ALop1+TozPvwCsb2MeYBBFkvkJBUCLz5XENPAX0 ulOb+xksqNvLFhOzQfLS97Y8m8d0fxcURirUM5GExH0kAU0+ondjnDaxtV+yXW0Of6JQbCLAdFGAG nmPcsw5GCh1TyqvWN0Ck0x+izEpDxIksprrlPt6T+LrKxjwpVTiZY41lIkpWBH67xbtA2YP+pKJ38 m90G97a1Mvq975550a9xjseNxHxFciRTBrHmuRi2h7pJoao9qx3i4t8y/e+5QdkMAuuswxkcBRJAC 0bx9asLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25oP-00000003Z8N-0gQ0; Tue, 08 Apr 2025 10:04:09 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25cy-00000003W5M-1IrS; Tue, 08 Apr 2025 09:52:21 +0000 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3995ff6b066so2905112f8f.3; Tue, 08 Apr 2025 02:52:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105939; x=1744710739; darn=lists.infradead.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=ExLehqKRvcjfnLv7M/oInDmYXs2lxlBzas9u/z/Ge4c=; b=YSJJKX8TGsl3NNNHYZdnrs8I3u/UOPilOZdhnE9S5EAXtajG49SndvOcZ9opnvg4L2 XH+OP/lHXFVAAdXjZ23PAEEVf3Xr8CEb4AFDpw4i5LyVn9bRmtNXTVO2GWT7BW74cZ6P QqyM8ZkgamhLigU2OdGCKWPXyPsfkW77sfHnT20BmHd4qJWBM1p17n1g5cEyijA2gE+W BWBZaj17fJ58MXaO7lZKJqpzW7cDHl20wYcNObqBJBl1Z26XHpbh+bALHtZCetR4MhX2 Bs/5OSpbiISnGraWb3FWcVmBLBkvYQlw3SEqDHyoVp6d/RR1tgSVM+mKR8bAoYh7BXJz 8NOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105939; x=1744710739; 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=ExLehqKRvcjfnLv7M/oInDmYXs2lxlBzas9u/z/Ge4c=; b=Q7mzKAo0O00kV1J4TLb2MvhyTJ2XZBgV1eEcgY7q0AqexDh6tDE/wz5ycy0Oq1+B8w ui+RWtyNSEra3+5WxW0li8+w62t60M0hp/XCDYT+XuIIqhKsFI+EET0/5mU23z6woaxN lPfmNvFh77nA/qs57qDhZLH3jWEGYN+Ay1fY/iKiBMuLe6Uv2grvQn/nEhaHrDkYtmFg ACgEy7aEEWc2rFIxkjS4MrBXZBhswlzTafItxg9H7/P1VU4ZNoEQ1VnjdjCk0M+3aaa0 zvNdd1HVju5pj48SShgK0OJ30r2xKTWUt5H4ypejlTHrOZs5h3qzTH/jn7hcTvswOTA3 xdPg== X-Forwarded-Encrypted: i=1; AJvYcCUawTkSu9n+tlBCeXyuJZ1XCv1iPaxYsV3lOPVxYeyPOZzLMvj3f7VUxKUverRBXoGKPZn9ctdHNCof/ujweDhg@lists.infradead.org, AJvYcCVSFU5TkiOoR8kT0ZHo4sSPevgHWxQduB8BIMgibOhrMrjykPaiDdFV0tM9X1eNiV/AlCcTOmYISS6ZXANskYo=@lists.infradead.org X-Gm-Message-State: AOJu0YyDJb3NGrUeh69EcnXF8f0l3sRJkAp690KkoEPIDELSM44+epO/ xOn5B16bHDf8K+p+CFDgeqFuk2zPcDo99fVejYSvnqZgplKKcidl X-Gm-Gg: ASbGncvAq5eqvbeUhfsgxOS9mu0Z80W2TPMSL6dM8X9+LMCHIKwyujlR0/FwAasvINL UjQ0phht6IdOPInNsc4P89ajQtqoKXXruK4lQyipBpE+LQg+fCUbXTgICa72nneEbWOTrOsDOdj klKzURs0plOFBiMnZHBfmCpbo/HZmshAqM4kxlDMMHnartsZmIMWlniFFw7pGuFkobuuIy0+e+x R4GifqTUaWAJK1WU/INxx2GdtASd2eHHbdsUWOjpyuLj+m67hjn5JNNP0tEgbuy5RDt7dk94NDB mRCPJ/wr+7MlhgG3uj+jtv49k6oyS9yHEW1/mA43lruvDiVgf0jWQra03Sbz7LQdRcVs2xl4sHj XIKwftXsmqUk7Ng== X-Google-Smtp-Source: AGHT+IEQt71C0WsDeq8ESBHPrPvVXdso8be2LsvN0wOnaKBlrYDbH31KpmHG4v2carb+cHa3zLh90Q== X-Received: by 2002:a5d:5f43:0:b0:39c:dfb:9e8e with SMTP id ffacd0b85a97d-39cb3575ca3mr12127734f8f.8.1744105938882; Tue, 08 Apr 2025 02:52:18 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:18 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 05/16] dt-bindings: mfd: Document support for Airoha AN8855 Switch SoC Date: Tue, 8 Apr 2025 11:51:12 +0200 Message-ID: <20250408095139.51659-6-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025220_375387_D9B4B052 X-CRM114-Status: GOOD ( 14.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document support for Airoha AN8855 Switch SoC. This SoC expose various peripherals like an Ethernet Switch, a NVMEM provider and Ethernet PHYs. It does also support i2c and timers but those are not currently supported/used. Signed-off-by: Christian Marangi Reviewed-by: Rob Herring (Arm) --- .../bindings/mfd/airoha,an8855.yaml | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/airoha,an8855.yaml diff --git a/Documentation/devicetree/bindings/mfd/airoha,an8855.yaml b/Documentation/devicetree/bindings/mfd/airoha,an8855.yaml new file mode 100644 index 000000000000..a683db4f41d1 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/airoha,an8855.yaml @@ -0,0 +1,175 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/airoha,an8855.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Airoha AN8855 Switch SoC + +maintainers: + - Christian Marangi + +description: > + Airoha AN8855 Switch is a SoC that expose various peripherals like an + Ethernet Switch, a NVMEM provider and Ethernet PHYs. + + It does also support i2c and timers but those are not currently + supported/used. + +properties: + compatible: + const: airoha,an8855 + + reg: + maxItems: 1 + + reset-gpios: true + + efuse: + type: object + $ref: /schemas/nvmem/airoha,an8855-efuse.yaml + description: EFUSE exposed by the Airoha AN8855 SoC + + ethernet-switch: + type: object + $ref: /schemas/net/dsa/airoha,an8855-switch.yaml + description: Switch exposed by the Airoha AN8855 SoC + + mdio: + type: object + $ref: /schemas/net/airoha,an8855-mdio.yaml + description: MDIO exposed by the Airoha AN8855 SoC + +required: + - compatible + - reg + - mdio + - ethernet-switch + +additionalProperties: false + +examples: + - | + #include + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + soc@1 { + compatible = "airoha,an8855"; + reg = <1>; + + reset-gpios = <&pio 39 0>; + + efuse { + compatible = "airoha,an8855-efuse"; + + #nvmem-cell-cells = <0>; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + shift_sel_port0_tx_a: shift-sel-port0-tx-a@c { + reg = <0xc 0x4>; + }; + + shift_sel_port0_tx_b: shift-sel-port0-tx-b@10 { + reg = <0x10 0x4>; + }; + + shift_sel_port0_tx_c: shift-sel-port0-tx-c@14 { + reg = <0x14 0x4>; + }; + + shift_sel_port0_tx_d: shift-sel-port0-tx-d@18 { + reg = <0x18 0x4>; + }; + + shift_sel_port1_tx_a: shift-sel-port1-tx-a@1c { + reg = <0x1c 0x4>; + }; + + shift_sel_port1_tx_b: shift-sel-port1-tx-b@20 { + reg = <0x20 0x4>; + }; + + shift_sel_port1_tx_c: shift-sel-port1-tx-c@24 { + reg = <0x24 0x4>; + }; + + shift_sel_port1_tx_d: shift-sel-port1-tx-d@28 { + reg = <0x28 0x4>; + }; + }; + }; + + ethernet-switch { + compatible = "airoha,an8855-switch"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "lan1"; + phy-mode = "internal"; + phy-handle = <&internal_phy1>; + }; + + port@1 { + reg = <1>; + label = "lan2"; + phy-mode = "internal"; + phy-handle = <&internal_phy2>; + }; + + port@5 { + reg = <5>; + label = "cpu"; + ethernet = <&gmac0>; + phy-mode = "2500base-x"; + + fixed-link { + speed = <2500>; + full-duplex; + pause; + }; + }; + }; + }; + + mdio { + compatible = "airoha,an8855-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + internal_phy1: ethernet-phy@1 { + compatible = "ethernet-phy-idc0ff.0410", + "ethernet-phy-ieee802.3-c22"; + reg = <1>; + + nvmem-cells = <&shift_sel_port0_tx_a>, + <&shift_sel_port0_tx_b>, + <&shift_sel_port0_tx_c>, + <&shift_sel_port0_tx_d>; + nvmem-cell-names = "tx_a", "tx_b", "tx_c", "tx_d"; + }; + + internal_phy2: ethernet-phy@2 { + compatible = "ethernet-phy-idc0ff.0410", + "ethernet-phy-ieee802.3-c22"; + reg = <2>; + + nvmem-cells = <&shift_sel_port1_tx_a>, + <&shift_sel_port1_tx_b>, + <&shift_sel_port1_tx_c>, + <&shift_sel_port1_tx_d>; + nvmem-cell-names = "tx_a", "tx_b", "tx_c", "tx_d"; + }; + }; + }; + }; From patchwork Tue Apr 8 09:51:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042610 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 25899C369A1 for ; Tue, 8 Apr 2025 10:06:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=NEeHqPbidnUgfl04t+LLdBVbgy41Di7XU1dGgXeGDSo=; b=H1RbXoT2e4pJBN/QR3uUkQUZVf x8iWed0k0mbnXy3F4BuL8uikzkHmEtpF2pX6b0xVaZJ7c43dXD1F0XqAhU8LiMHcffDQExm/YlwLM OfOvik8x1Ntnb+2wtDdH0ujGuK7dkyUlpLu9QkTb0+QKls7JEd3RnY/bBBdBRX7KaHmbJjjEFEvG/ wqi/Hx939a8lgrxmAS0Fzb6a6d2IfLqPrS5XDbl0izUo3IIAjpV0ghWySe9V9MaeehXI1bZGiOfAG 9xrP5yGJpzmQo+SSrJ40ILQ94RBTryklkXvl30ZdHB2oF0FU1R/qhOr1Vm8oEuCGtKBL7GzsrhSLm 9bQWxfjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25qD-00000003Zce-2CtD; Tue, 08 Apr 2025 10:06:01 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d0-00000003W60-0YQj; Tue, 08 Apr 2025 09:52:23 +0000 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-39d83782ef6so290167f8f.0; Tue, 08 Apr 2025 02:52:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105940; x=1744710740; darn=lists.infradead.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=NEeHqPbidnUgfl04t+LLdBVbgy41Di7XU1dGgXeGDSo=; b=bhj05V3kX1AGdElYqrXuUG/xPm2JRoUoTQhmCRQnygbGxbD9YH3jwgTHEBML9PcLP/ MkxxMVFi/CU6FJJyHxqr5pTTAQGp5wCiwQEkAZ8mtcnVn0T/goPmef94KGrHj/14C66Q bfFYxCPaR6Ogt574jumx7VB8Lpo+gYFkjvGA32c/FsicuEbwqlmD0q5rncfUAvkY7qPS bVOf5GC4qTZjTXe2dhgzZPhg1BlxuGyT+T68/eG/rXCquB7oxIBjgcybBhSN5XF8OLbI UF9WSbXtlMXUaXDM5P/HKkwG2vstIQ+pn1lyEXWQTgNY4J8cdMal9fut57xblI2Jjj6F fkSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105940; x=1744710740; 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=NEeHqPbidnUgfl04t+LLdBVbgy41Di7XU1dGgXeGDSo=; b=uYXnkMzMvd6F6VYFXnYRfW+lhYNB6WIbgLZxAtPLwnNcc4nfUtbS5tK5Inr7MUXhbb Lipab8rv9f7nw/TCWEafir3C5G6ThgfJmQYLvUOx1hiiOHOA7tu7VJ8C7W37Xvv1QtqD LHyHWwZ70mIPpw3Yc4Az29usNetvm4tys6xhm8ulkf2B0cv2eFrTGVe61Vk/9KnmNUky fR28auJCOU8WlFq6zHXMeoKPW2ISsyDG7PVS0C2jbczPVVBvJCIJMx23vsdoFBJsIkLF UVTQcyzbRlB3IacMOV6SHbKzZhRM94pO7jf29THz1F3Owp44a42YExLKbk7GXPgf3Vck cF5Q== X-Forwarded-Encrypted: i=1; AJvYcCVKeuIbMkmRHbaM5KrTolAkNY37rdcCQQtWtE68FKgYYe0lH5KXu81Zesp1sRpqKL2AHXdHHGu9vkkkxnQpPPxq@lists.infradead.org, AJvYcCVVW/ZH1VvE4e8muk7GqEAx3ERXY9CM8Wbq3HNDgOs/lCD/QlAE0gHPxVSmpx6El7b1NSkMsWL+zx3YWfM98sU=@lists.infradead.org X-Gm-Message-State: AOJu0Yyrf66+vBgKQLhfeg0iBFZ86TcVGfHOPx6JrJcG/gt/rz5+vpEv jjgUrlyeRvnH7OIwzjZO8Pw5OxsSS8xuuzITgVVrYVxD2ZtHZEen X-Gm-Gg: ASbGnctdcNzXmGlq6281aNAYDz2t/RfGv3FiXPq7RIiQ91LxsCokGCMHuP/CVNXO7kB uYdFPK9tnGnNNLSPo5iXQfB22JN2CTIAKCiEvl6Dt71LCHUtOZFUXTPLPm0rxNQo2hTDQfEhDoi 8CgoPJShXGqHCHoyLPbyXESc729Y5nmOYETtcaAnGgnA66DlCvTSokbZxkuuhJMmPcpJvO4Xy5J 1ycoRHqVqTR/HXy9Y7u474dFDP1HjcHnnZqC6bqEXM56jucNkNOU6wODC6jz3lPEkeDcSK9gwt0 n/czaGbwrbb2ZAPjZg56l3jYIYv1vo7KTF9W1l6FmaKsiEKBZLsVoYJZQrnyq+EPQcNoaFMLruf 3zRSfExY9QrjX4g== X-Google-Smtp-Source: AGHT+IGrqwVCjgn7rIaO84RS/dOygNudZl4m5bHzjJ/0QnrWbjeDDkJm2owzPEvR2qtLmTK4q+Z6+g== X-Received: by 2002:a05:6000:2ab:b0:38d:df15:2770 with SMTP id ffacd0b85a97d-39d81f60b1dmr2398842f8f.0.1744105940434; Tue, 08 Apr 2025 02:52:20 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:20 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 06/16] net: mdio: regmap: prepare support for multiple valid addr Date: Tue, 8 Apr 2025 11:51:13 +0200 Message-ID: <20250408095139.51659-7-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025222_171205_319CD652 X-CRM114-Status: GOOD ( 15.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Rework the valid_addr and convert it to a mask in preparation for mdio regmap to support multiple valid addr in the case the regmap can support it. Signed-off-by: Christian Marangi Reviewed-by: Maxime Chevallier --- drivers/net/mdio/mdio-regmap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/mdio/mdio-regmap.c b/drivers/net/mdio/mdio-regmap.c index 8a742a8d6387..810ba0a736f0 100644 --- a/drivers/net/mdio/mdio-regmap.c +++ b/drivers/net/mdio/mdio-regmap.c @@ -19,7 +19,7 @@ struct mdio_regmap_priv { struct regmap *regmap; - u8 valid_addr; + u32 valid_addr_mask; }; static int mdio_regmap_read_c22(struct mii_bus *bus, int addr, int regnum) @@ -28,7 +28,7 @@ static int mdio_regmap_read_c22(struct mii_bus *bus, int addr, int regnum) unsigned int val; int ret; - if (ctx->valid_addr != addr) + if (!(ctx->valid_addr_mask & BIT(addr))) return -ENODEV; ret = regmap_read(ctx->regmap, regnum, &val); @@ -43,7 +43,7 @@ static int mdio_regmap_write_c22(struct mii_bus *bus, int addr, int regnum, { struct mdio_regmap_priv *ctx = bus->priv; - if (ctx->valid_addr != addr) + if (!(ctx->valid_addr_mask & BIT(addr))) return -ENODEV; return regmap_write(ctx->regmap, regnum, val); @@ -65,7 +65,7 @@ struct mii_bus *devm_mdio_regmap_register(struct device *dev, mr = mii->priv; mr->regmap = config->regmap; - mr->valid_addr = config->valid_addr; + mr->valid_addr_mask = BIT(config->valid_addr); mii->name = DRV_NAME; strscpy(mii->id, config->name, MII_BUS_ID_SIZE); @@ -74,7 +74,7 @@ struct mii_bus *devm_mdio_regmap_register(struct device *dev, mii->write = mdio_regmap_write_c22; if (config->autoscan) - mii->phy_mask = ~BIT(config->valid_addr); + mii->phy_mask = ~mr->valid_addr_mask; else mii->phy_mask = ~0; From patchwork Tue Apr 8 09:51:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042611 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CB9AAC3600C for ; Tue, 8 Apr 2025 10:08:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=B/n2TjI2M2VtBMHZFJp0/mcf13FR0dQEfPH18lq5S60=; b=U7MllGD+2jkfXiBjj2aU+i8xLa 6xM4PHYIKbeEXUZhLE5aqHT3t/+oRTMwD6hzjNJfJ9iMtSIRcS8Ei+vWtmMuMu+icow10H/M5Ry/n Lc8s3kgtLtZ1uGLwFV0pg3286qKBuQJBFZdkmko220Yl7Z/SFrl2MQHd6bPhNqbJypvc7FNOLGSkk zkvazdFjYlcFX/eSz9p2dxS2h2zp2634cJq+3ZrMCYYldP/JrKxQNlk4B2/vW6L2r/WYXdVZ+1HoI iMtYKkiwTSchxLWIpPFvvOaqj3Y1/99599tj2P+QzGfYzHHuR5octRuz9WJM4JC+KSjl5KbYrwYq6 kB1vzJnA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25s0-00000003Zwa-2atQ; Tue, 08 Apr 2025 10:07:52 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d1-00000003W6w-3Ge2; Tue, 08 Apr 2025 09:52:24 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-391342fc0b5so4168226f8f.3; Tue, 08 Apr 2025 02:52:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105942; x=1744710742; darn=lists.infradead.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=B/n2TjI2M2VtBMHZFJp0/mcf13FR0dQEfPH18lq5S60=; b=lc/WcfDCZsHivDzGTQJQzr6QIOmzDFttSSqRatR+StBnk3ALayOnJy5ZXOO3SDmKp0 17dFa6GRbfO26aSRpJx5Sqtq0MwWVueZyIcmXaNv3SGCXFKJcP/6D7TFlHPLZZQF2C7N UbJ1pC41KI4ci0uOnrHykWRr+I4hrHDpOLSqGO/ZSsp6htq1ZaIonVOpSHwtxOpgzzo9 tWiJ+0jtP3cMmz2F9799pcRwov1QYwkU2Jd+DN2QqNKV6eAHNPX6WeY6S24QXwHQ2m6i H1566zpl0YXbZZIv59w4abxuNLUH11JZ4fHhivNq79mROQFSUpPXUya9dhqZKF7mGeSD ijCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105942; x=1744710742; 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=B/n2TjI2M2VtBMHZFJp0/mcf13FR0dQEfPH18lq5S60=; b=m+iYCctrzFf6vw9Cp0O1IDWVcZnk/YthPKc4COcQfaRzZlU1xSEKmr9KiWdSAcPUZW Gsl4Di4pvuHaxBX3/8x1tEzftVkM2v7DFkLE7qQjERv9yBNYAmpV37D7yP/pfS+fzAFw FcvMUXtZQ4de5H75yLX/HS3XU23EPDhGPs3L2m7ZZHprhCt9yZ3+hEvA/D2xwphV8Er5 kKh+taEAeJGJtlXe/9uIowaRfGbmV1i0gI38O4hO+rHIXbVrDsuKTOaSMZsZyEPjj97j rtiEyvr8pEnTFHucoN+ZYtxI2+6WoRWCqvBoB9xCnIwFf6R2E/kti/2tqlBInTSnpvhH I5lw== X-Forwarded-Encrypted: i=1; AJvYcCVqNprbzTdzbVkr/6dAqkYAB+Y5tPBEO8jyCuxEQkQiTV9ZtIdFpdlVdPnmSy/r1T80BNv88trckRekDCsZPBOc@lists.infradead.org, AJvYcCXkavXEurl9EV9aLE2YNyl4sjdST6k1hzb4jIjwlWHQZzcssRUTVfYDmrzLLe/YsZ5xKOijLyLNcVXvdO7bRXQ=@lists.infradead.org X-Gm-Message-State: AOJu0YxokLY+FRnwM4Zvhj9hdXaL8zw7g1M+W0433SpuBy5dglAVgcJl OO9bBOtU6OFPyfnnDCDg0LGMC1cnx5nisYjiBW21MaoNclHaInpE X-Gm-Gg: ASbGnctM9z4UkhNQEqkAaHBCkKUWFjm3+c0tqSAWb916jHWVRubS/bVhWfj2ZBm1kIW 2BkuNelhC/X6MQuaMc0lXWnP3fNjmfNUpMMsP8HwRcr8SZoKH8g7pePN9lAhQYtgCrYGbzeeWVR LIEHqQKNZWqjua8PY0wimu9Ks0Te5iy5KpfWOcR8Q5/5E1sb2FtuvSYszQ8Ks+B4u8gg8+5UNnf 9vSH/cXQDhUidH160rlOwnXt/oUbi5IEHyXIqmnwnTZqquJxmC0/8UgaFtTrkk6Bm7mB35vDWvg onUobo8EaJlIcqXAoXCnDwJc8LX4AdbobzEB276AKHpJNNAH6ZzN/3yJ9qTybNBZPs9tz4MyyRp NC5evNO3vtrZgAQ== X-Google-Smtp-Source: AGHT+IH3R7VcjDJQU/ug/E8DovK1LG8xkzqoBKVcedT+o9lyrCg3IyGaPsRO5doikyNGRfNi09b8bQ== X-Received: by 2002:a05:6000:440e:b0:397:3900:ef83 with SMTP id ffacd0b85a97d-39cba93cfb8mr8318008f8f.32.1744105941913; Tue, 08 Apr 2025 02:52:21 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:21 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 07/16] net: mdio: regmap: add support for C45 read/write Date: Tue, 8 Apr 2025 11:51:14 +0200 Message-ID: <20250408095139.51659-8-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025223_823023_E71BF667 X-CRM114-Status: GOOD ( 25.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for C45 read/write for mdio regmap. This can be done by enabling the support_encoded_addr bool in mdio regmap config and by using the new API devm_mdio_regmap_init to init a regmap. To support C45, additional info needs to be appended to the regmap address passed to regmap OPs. The logic applied to the regmap address value: - First the regnum value (20, 16) - Second the devnum value (25, 21) - A bit to signal if it's C45 (26) devm_mdio_regmap_init MUST be used to register a regmap for this to correctly handle internally the encode/decode of the address. Drivers needs to define a mdio_regmap_init_config where an optional regmap name can be defined and MUST define C22 OPs (mdio_read/write). To support C45 operation also C45 OPs (mdio_read/write_c45). The regmap from devm_mdio_regmap_init will internally decode the encoded regmap address and extract the various info (addr, devnum if C45 and regnum). It will then call the related OP and pass the extracted values to the function. Example for a C45 read operation: - With an encoded address with C45 bit enabled, it will call the .mdio_read_c45 and addr, devnum and regnum will be passed. .mdio_read_c45 will then return the val and val will be stored in the regmap_read pointer and will return 0. If .mdio_read_c45 returns any error, then the regmap_read will return such error. With support_encoded_addr enabled, also C22 will encode the address in the regmap address and .mdio_read/write will called accordingly similar to C45 operation. Signed-off-by: Christian Marangi Reviewed-by: Maxime Chevallier --- drivers/net/mdio/mdio-regmap.c | 170 +++++++++++++++++++++++++++++-- include/linux/mdio/mdio-regmap.h | 14 +++ 2 files changed, 176 insertions(+), 8 deletions(-) diff --git a/drivers/net/mdio/mdio-regmap.c b/drivers/net/mdio/mdio-regmap.c index 810ba0a736f0..f263e4ae2477 100644 --- a/drivers/net/mdio/mdio-regmap.c +++ b/drivers/net/mdio/mdio-regmap.c @@ -15,22 +15,72 @@ #include #include +#define MDIO_REGMAP_C45 BIT(26) +#define MDIO_REGMAP_ADDR GENMASK(25, 21) +#define MDIO_REGMAP_DEVNUM GENMASK(20, 16) +#define MDIO_REGMAP_REGNUM GENMASK(15, 0) + #define DRV_NAME "mdio-regmap" struct mdio_regmap_priv { + void *ctx; + + const struct mdio_regmap_init_config *config; +}; + +struct mdio_regmap_mii_priv { struct regmap *regmap; u32 valid_addr_mask; + bool encode_addr; }; -static int mdio_regmap_read_c22(struct mii_bus *bus, int addr, int regnum) +static int mdio_regmap_mii_read_c22(struct mii_bus *bus, int addr, int regnum) +{ + struct mdio_regmap_mii_priv *ctx = bus->priv; + unsigned int val; + int ret; + + if (!(ctx->valid_addr_mask & BIT(addr))) + return -ENODEV; + + if (ctx->encode_addr) + regnum |= FIELD_PREP(MDIO_REGMAP_ADDR, addr); + + ret = regmap_read(ctx->regmap, regnum, &val); + if (ret < 0) + return ret; + + return val; +} + +static int mdio_regmap_mii_write_c22(struct mii_bus *bus, int addr, int regnum, + u16 val) { - struct mdio_regmap_priv *ctx = bus->priv; + struct mdio_regmap_mii_priv *ctx = bus->priv; + + if (!(ctx->valid_addr_mask & BIT(addr))) + return -ENODEV; + + if (ctx->encode_addr) + regnum |= FIELD_PREP(MDIO_REGMAP_ADDR, addr); + + return regmap_write(ctx->regmap, regnum, val); +} + +static int mdio_regmap_mii_read_c45(struct mii_bus *bus, int addr, int devnum, + int regnum) +{ + struct mdio_regmap_mii_priv *ctx = bus->priv; unsigned int val; int ret; if (!(ctx->valid_addr_mask & BIT(addr))) return -ENODEV; + regnum |= MDIO_REGMAP_C45; + regnum |= FIELD_PREP(MDIO_REGMAP_ADDR, addr); + regnum |= FIELD_PREP(MDIO_REGMAP_DEVNUM, devnum); + ret = regmap_read(ctx->regmap, regnum, &val); if (ret < 0) return ret; @@ -38,21 +88,25 @@ static int mdio_regmap_read_c22(struct mii_bus *bus, int addr, int regnum) return val; } -static int mdio_regmap_write_c22(struct mii_bus *bus, int addr, int regnum, - u16 val) +static int mdio_regmap_mii_write_c45(struct mii_bus *bus, int addr, int devnum, + int regnum, u16 val) { - struct mdio_regmap_priv *ctx = bus->priv; + struct mdio_regmap_mii_priv *ctx = bus->priv; if (!(ctx->valid_addr_mask & BIT(addr))) return -ENODEV; + regnum |= MDIO_REGMAP_C45; + regnum |= FIELD_PREP(MDIO_REGMAP_ADDR, addr); + regnum |= FIELD_PREP(MDIO_REGMAP_DEVNUM, devnum); + return regmap_write(ctx->regmap, regnum, val); } struct mii_bus *devm_mdio_regmap_register(struct device *dev, const struct mdio_regmap_config *config) { - struct mdio_regmap_priv *mr; + struct mdio_regmap_mii_priv *mr; struct mii_bus *mii; int rc; @@ -66,12 +120,17 @@ struct mii_bus *devm_mdio_regmap_register(struct device *dev, mr = mii->priv; mr->regmap = config->regmap; mr->valid_addr_mask = BIT(config->valid_addr); + mr->encode_addr = config->support_encoded_addr; mii->name = DRV_NAME; strscpy(mii->id, config->name, MII_BUS_ID_SIZE); mii->parent = config->parent; - mii->read = mdio_regmap_read_c22; - mii->write = mdio_regmap_write_c22; + mii->read = mdio_regmap_mii_read_c22; + mii->write = mdio_regmap_mii_write_c22; + if (config->support_encoded_addr) { + mii->read_c45 = mdio_regmap_mii_read_c45; + mii->write_c45 = mdio_regmap_mii_write_c45; + } if (config->autoscan) mii->phy_mask = ~mr->valid_addr_mask; @@ -88,6 +147,101 @@ struct mii_bus *devm_mdio_regmap_register(struct device *dev, } EXPORT_SYMBOL_GPL(devm_mdio_regmap_register); +static int mdio_regmap_reg_read(void *context, unsigned int reg, unsigned int *val) +{ + const struct mdio_regmap_init_config *config; + struct mdio_regmap_priv *priv = context; + int addr, regnum; + int ret; + + config = priv->config; + + addr = FIELD_GET(MDIO_REGMAP_ADDR, reg); + regnum = FIELD_GET(MDIO_REGMAP_REGNUM, reg); + + if (reg & MDIO_REGMAP_C45) { + int devnum; + + if (!config->mdio_write_c45) + return -EOPNOTSUPP; + + devnum = FIELD_GET(MDIO_REGMAP_DEVNUM, reg); + ret = config->mdio_read_c45(priv->ctx, addr, devnum, regnum); + } else { + ret = config->mdio_read(priv->ctx, addr, regnum); + } + + if (ret < 0) + return ret; + + *val = ret; + return 0; +} + +static int mdio_regmap_reg_write(void *context, unsigned int reg, unsigned int val) +{ + const struct mdio_regmap_init_config *config; + struct mdio_regmap_priv *priv = context; + int addr, regnum; + + config = priv->config; + + addr = FIELD_GET(MDIO_REGMAP_ADDR, reg); + regnum = FIELD_GET(MDIO_REGMAP_REGNUM, reg); + + if (reg & MDIO_REGMAP_C45) { + int devnum; + + if (!config->mdio_write_c45) + return -EOPNOTSUPP; + + devnum = FIELD_GET(MDIO_REGMAP_DEVNUM, reg); + return config->mdio_write_c45(priv->ctx, addr, devnum, regnum, val); + } + + return config->mdio_write(priv->ctx, addr, regnum, val); +} + +static const struct regmap_config mdio_regmap_default_config = { + .reg_bits = 26, + .val_bits = 16, + .reg_stride = 1, + .max_register = MDIO_REGMAP_C45 | MDIO_REGMAP_ADDR | + MDIO_REGMAP_DEVNUM | MDIO_REGMAP_REGNUM, + .reg_read = mdio_regmap_reg_read, + .reg_write = mdio_regmap_reg_write, + /* Locking MUST be handled in mdio_write/read(_c45) */ + .disable_locking = true, +}; + +struct regmap *devm_mdio_regmap_init(struct device *dev, void *priv, + const struct mdio_regmap_init_config *config) +{ + struct mdio_regmap_priv *mdio_regmap_priv; + struct regmap_config regmap_config; + + /* Validate config */ + if (!config->mdio_read || !config->mdio_write) { + dev_err(dev, ".mdio_read and .mdio_write MUST be defined in config\n"); + return ERR_PTR(-EINVAL); + } + + mdio_regmap_priv = devm_kzalloc(dev, sizeof(*mdio_regmap_priv), + GFP_KERNEL); + if (!mdio_regmap_priv) + return ERR_PTR(-ENOMEM); + + memcpy(®map_config, &mdio_regmap_default_config, sizeof(regmap_config)); + regmap_config.name = config->name; + + mdio_regmap_priv->ctx = priv; + mdio_regmap_priv->config = config; + + return devm_regmap_init(dev, NULL, mdio_regmap_priv, + ®map_config); +} +EXPORT_SYMBOL_GPL(devm_mdio_regmap_init); + MODULE_DESCRIPTION("MDIO API over regmap"); MODULE_AUTHOR("Maxime Chevallier "); MODULE_LICENSE("GPL"); diff --git a/include/linux/mdio/mdio-regmap.h b/include/linux/mdio/mdio-regmap.h index 679d9069846b..504fa2046043 100644 --- a/include/linux/mdio/mdio-regmap.h +++ b/include/linux/mdio/mdio-regmap.h @@ -17,10 +17,24 @@ struct mdio_regmap_config { struct regmap *regmap; char name[MII_BUS_ID_SIZE]; u8 valid_addr; + /* devm_mdio_regmap_init is required with this enabled */ + bool support_encoded_addr; bool autoscan; }; struct mii_bus *devm_mdio_regmap_register(struct device *dev, const struct mdio_regmap_config *config); +struct mdio_regmap_init_config { + const char *name; + + int (*mdio_read)(void *ctx, int addr, int regnum); + int (*mdio_write)(void *ctx, int addr, int regnum, u16 val); + int (*mdio_read_c45)(void *ctx, int addr, int devnum, int regnum); + int (*mdio_write_c45)(void *ctx, int addr, int devnum, int regnum, u16 val); +}; + +struct regmap *devm_mdio_regmap_init(struct device *dev, void *priv, + const struct mdio_regmap_init_config *config); + #endif From patchwork Tue Apr 8 09:51:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042619 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 002FFC3600C for ; Tue, 8 Apr 2025 10:09:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=i9cj1rDP/cubKfbE6LHAYD/iOcx4KqaxRMhogz7zaTE=; b=ydrPlAsvuS4+ltGFwyvVYHctU8 6gzmeNquds4GdrOAgo56N24cZ69Z2uyOOM9V6C7SMKY9b+Sq6HK99pzzbQZ5e5KYkEAsCxmpz3Olu igNTzlwiVbxNJU3VNiks5+LsD0pqRgvL+2DT7CkQmmyYXAzcWl3hxVt8sTm5uQIbHU3GpG/6quBEJ gR9azai9kaiz/C5dRc89U1/9eYmfZmrMAiBgNTEZbr//NotLwegsdhXNzHFEGyvE5bVwv7gpP3saq jkANL18Id0moIVLP95Hsh6A33HlB9E9CP82bQRt0LnatTQxDHfbW4B1w9Bmvez8LutXtlmn35C+hf NJu1Sykg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25to-00000003aMe-2cLY; Tue, 08 Apr 2025 10:09:44 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d3-00000003W7d-0Km5; Tue, 08 Apr 2025 09:52:26 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-43cfe63c592so50742055e9.2; Tue, 08 Apr 2025 02:52:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105943; x=1744710743; darn=lists.infradead.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=i9cj1rDP/cubKfbE6LHAYD/iOcx4KqaxRMhogz7zaTE=; b=f7fYt9V7/JFjnh1i7hwTmoVGBw8EKFnjKNH4t49rt+PrpDZhEUqhIZ1DIhVye9E35+ 5VJY1EeuzQA3IW6WLtPxpyLffrQW97yayhDhLeT9d162Q6gftKwr5o4LunPTx0XGT2M3 k898qPI9BmcF3CJmStUOL71Z9nr6/QkyzFo3gA+mFqAQzFpkW8gdyxWDu2nuceQKZ3Qp BFzm4HLZBupMTa76TFBg06QnDkuwFWBbfzgJu1MI0XPcwpwgsHOIH8Gjl7w5+bUvdSQ4 3qzpI278CVQPAUndoseNXzBPLW0DSeCBc4antkRGH91MWcVYY0+FSqcdKvNAOenFh8Lr ceLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105943; x=1744710743; 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=i9cj1rDP/cubKfbE6LHAYD/iOcx4KqaxRMhogz7zaTE=; b=NZzyttBk+ABfzpTx/3C1qOMaoPsC4bi8XhIrLLM4L4oziaMM/7/xKr2tjGgNE7bbXt wsGIhRj4Dcz2JxJEeaJEZ6CdD+lQPuL1KhGAY5mKjj8sIicThUe/VJVMAML7k1Q/RcHY PYSeEybtgQCS0W/lXrDVBbQO2CnvexNEe5SNzvjlU4ChHj1LnmZNRd5HfrLqRab4FFdu yh+AjgfIXKbsP0uw7Rajl900cAxs1xEG3u3nVzKm3WPLszNsf+LBG2RRvaCfdpI/eqxo T0Tu7f/tcBDCQq4SRR56Dpj6oEF1umgfK2TQQpidSwQdbYpBouKUlMAIbktd1kPR2c6Q Z3fQ== X-Forwarded-Encrypted: i=1; AJvYcCVt4D4JAmBbth4Xs4E5+JLCQsE2TWITrl0ioACfIn7xVCfSFD/e4CnVWubmvwDOHLADK7U5H/BqnGc2tPmSndom@lists.infradead.org, AJvYcCWbEZUl/v9s1fUH/uQoLptM+wv1xc1mM/22qHJnF9CwFvzmI5X6jbR3C3HyZIr424EM6dkw5v8RACwWRbIjf78=@lists.infradead.org X-Gm-Message-State: AOJu0YzmQvFZrrRVcB4ueD8rGYe24nQP8yAwZUiIsUdNZjetj8Jtewvi 6xsgXx3AIUM0WpRN+ASqLVc0DTBn2mD5M/7fs5h+xwVbbY/18vLF X-Gm-Gg: ASbGncvl0CDJGiKDLd1sE1ZJnr7Ishx9uOu7/Q+VnYzE7qs6hynxGy0ruu/KCxqaAse oOornXzd7jN4JbvANID2YWi6Y2HA88oIGTWjPTc3Ok1gyrK1ypmEI60K01cdt9dkTAQP5X37Yk8 MixCGgW6AnpO5VMmD2Zoh8YDZrImWA3TFXyH81bajTEEvQiyI72zI6bEU4VlEo1TbKM/PfxlApO xP8pSUj29ZCayDmMsDtxmb3ZnqNGAUBmykj73/5Xna1zQFswtilq0UHFHf5MMYOl8WGQG7UEpkX 1pfHOaGEdjSHVPbWQ0JV2ce9sLrv6a09MXMMpawiM8yrlGugCsL1aE/ryan20to2gGQZSJGQtEr 6XWxcoKZOE6P6puhLfiVCW3y5 X-Google-Smtp-Source: AGHT+IEY/oDiPIa/nOlTAjnwslt218cYgrDecYU+5L1GpQyJtEecEknywGQ7urVCh3StZq6R+wNITA== X-Received: by 2002:a05:600c:3d98:b0:43c:f81d:f with SMTP id 5b1f17b1804b1-43ed0bf62eemr150638415e9.8.1744105943506; Tue, 08 Apr 2025 02:52:23 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:23 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 08/16] net: mdio: regmap: add support for multiple valid addr Date: Tue, 8 Apr 2025 11:51:15 +0200 Message-ID: <20250408095139.51659-9-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025225_118557_2FF0685D X-CRM114-Status: GOOD ( 16.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for multiple valid addr for mdio regmap. This can be done by defining the new valid_addr_mask value in the mdio regmap config. This makes use of the new implementation used by C45 to encode additional info in the regmap address to support multiple MDIO address. To actually use this, support_encoded_addr MUST be enabled and (indirectly) devm_mdio_regmap_init must be used to create the regmap. Signed-off-by: Christian Marangi --- drivers/net/mdio/mdio-regmap.c | 8 +++++++- include/linux/mdio/mdio-regmap.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/mdio/mdio-regmap.c b/drivers/net/mdio/mdio-regmap.c index f263e4ae2477..ed0443eb039f 100644 --- a/drivers/net/mdio/mdio-regmap.c +++ b/drivers/net/mdio/mdio-regmap.c @@ -113,13 +113,19 @@ struct mii_bus *devm_mdio_regmap_register(struct device *dev, if (!config->parent) return ERR_PTR(-EINVAL); + if (config->valid_addr_mask && !config->support_encoded_addr) { + dev_err(dev, "encoded address support is required to support multiple MDIO address\n"); + return ERR_PTR(-EINVAL); + } + mii = devm_mdiobus_alloc_size(config->parent, sizeof(*mr)); if (!mii) return ERR_PTR(-ENOMEM); mr = mii->priv; mr->regmap = config->regmap; - mr->valid_addr_mask = BIT(config->valid_addr); + mr->valid_addr_mask = config->valid_addr_mask ? config->valid_addr_mask : + BIT(config->valid_addr); mr->encode_addr = config->support_encoded_addr; mii->name = DRV_NAME; diff --git a/include/linux/mdio/mdio-regmap.h b/include/linux/mdio/mdio-regmap.h index 504fa2046043..bb0e7dc9c0dc 100644 --- a/include/linux/mdio/mdio-regmap.h +++ b/include/linux/mdio/mdio-regmap.h @@ -17,6 +17,7 @@ struct mdio_regmap_config { struct regmap *regmap; char name[MII_BUS_ID_SIZE]; u8 valid_addr; + u32 valid_addr_mask; /* devm_mdio_regmap_init is required with this enabled */ bool support_encoded_addr; bool autoscan; From patchwork Tue Apr 8 09:51:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042620 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6449EC369A1 for ; Tue, 8 Apr 2025 10:11:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=xHfS9Ayq+62ZEPKyiIIGlUUpg7PHKrYF5eIEp4kJv8I=; b=iAFPJhTSeumaDXupuq3MTJ7rcD XpYri1aeI8rnPktHmC6nt5IwhiHeIglGRPFyt3AxTntAuZ7LNM31yFA/UsmlLe9v1hl7mWHLCQbrk cZ50srqOVCKsXtW/NnSVX2jyyqsZIgC8awQgSu3ChlGqzB0EPG4hV5sRtNbSTHAW0PDT8WplAVeck NRFHtiYEpxVaXCZJgx0EMrW3iHHxQk6l1d87S+UQ2IBZ/ZdlE4DtQmmQmSsAV4M9Vx0IOQUYHctNS B1Mpta5cvFJowE8kCM565luGbNLurfLhsEmQ0Y4h3g759uxEUgKdKjq1ljN3keb0TMhPUlyhGhEqs 4T4bgUng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25vc-00000003axT-42gc; Tue, 08 Apr 2025 10:11:36 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d4-00000003W8N-2cCV; Tue, 08 Apr 2025 09:52:27 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-43cfba466b2so52749625e9.3; Tue, 08 Apr 2025 02:52:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105945; x=1744710745; darn=lists.infradead.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=xHfS9Ayq+62ZEPKyiIIGlUUpg7PHKrYF5eIEp4kJv8I=; b=G/yZNF+04jpGaNx345DTfNp0HRPnj2oDDmWujxlwq4xQoFDzaHBLSmfUt82qcaHgd4 fT1EM5KOg8ZIgVxSbhQKnEhHiKNXCmhMJ3k2hK4sJqgbItbT1YJc2d7KpyGxwdLUceU5 YWD5fqiDTqivU1T+HeJxmByOzsZNrmeGDfCEaK/p8iLAt6aIa9Obmck36TTNaPPKHzm6 StmSTAFnjUM4F7TC3cSei2hX9kvB95TjSoBkiq2HflWZMAu/xoaE97cI/vFTag6p9u8Z Qbld0oH1tTMDLGn5CdjeHAcMP8q2kx4sN2y6wjpSb+bOGWh5XwBrNQX9KvnEn0C1Od9X B34Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105945; x=1744710745; 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=xHfS9Ayq+62ZEPKyiIIGlUUpg7PHKrYF5eIEp4kJv8I=; b=sA92bd4uybYfBp5l2LypGPlEllEU4RmT2ycfTEIM4TAFUeWiD908Ey1V/BThxHoTEg du6Z5azAlYQIPJS0pTHJlETkeRENor4fNFyBYSPKTi4q0RmRmPuqO+xjKxa8vwqQKV48 4w58yd3m4250c3VrYoGrreommDYi95Jp2+vdMI5GpU255EvT4KcXcAmdyLoXts9ptUP+ ahxcfNCOyQx/6/gPMtTCuGjGMHuxgQHDBpECFJehEOQFW5lcBAAWq9TDc49/uNlp540f tOfilWbEbiVxO3l9aVOJZeUxiF1eMchV8VNPtLUM498QmAtNvwstRET6NRuBYuuLW0YP YBjQ== X-Forwarded-Encrypted: i=1; AJvYcCU6Z3fWcRYV1wXIoYMd+tUZxsyYVSwTmBPJFKt2tYKbR7No6bY/Sup5Xdes2oQUlE0fxgB2t3Efyrq4SViNqIg=@lists.infradead.org, AJvYcCXmzV8X2u7uvFTlQFMON55t+xL10mRYKZE0INUOLrrXlWvLchPavQ6cAxquSmTerCZYHWTkcAiK1nxaQB4SCOJk@lists.infradead.org X-Gm-Message-State: AOJu0Yx+2z3mnUFpMINe3jR0JMzDwMMbQUkJB0Z/6ag/WNhGSp/wm+FM V90AGltPj03yj23wKtUz62OqOp9w21y9IQZYoLg41lOWQXCu50QB X-Gm-Gg: ASbGnctd8CA77t3D579kE8XOLpGw6OW9+X8sEVbmVC7NiYRSnE4Nvws/5ANm6kOY+0s fMvUAuo2NqF0G/1j8lN30OfoMI9ynfLwkwv+HFBWSKMl53gm8Y9DS6Ym94XoL/st1ZfqLlPVeqs xXwNrtUhCVj1u0tVVk1A4IoFc6eD+UDmE8Glp6QzcLS4z0iYytzDt5W4xtfonZok/xDYUN29e0T jwmE7FG0CUiqarAtCdyC25lc4SS8HeUS+N8U8G3Y0UqzpyARdFpkXYeSETF1dsREZwLr8EbFOoy QJmX/JbsA62X5YJ4OYjuTawfKs0hxgeDcURwvDeAFuSzhZL7YwWAon4tOz81jojrqiAZIXg2/Jv NeOo+i8oyvcPB4khCwdkes3FO X-Google-Smtp-Source: AGHT+IHs+RYORl9SDyQYvbJFkJWKqxzv51lL0XqnDQTULLmNslDEtLs39z+pWyUEwouddd/Lq6+k1Q== X-Received: by 2002:a05:600c:848d:b0:43c:f969:13c0 with SMTP id 5b1f17b1804b1-43ecfa1874emr139943075e9.29.1744105945053; Tue, 08 Apr 2025 02:52:25 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:24 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 09/16] net: mdio: regmap: add OF support Date: Tue, 8 Apr 2025 11:51:16 +0200 Message-ID: <20250408095139.51659-10-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025226_664298_AE9B8679 X-CRM114-Status: GOOD ( 15.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Permit to pass a device tree node to mdio regmap config and use the OF variant of mdiobus_register. This is done to autoprobe PHY defined in device tree as the current mdiobus_register only permits probing PHY using the MDIO mask value. Previous implementation is not changed as of_mdiobus_register fallback to mdiobus_register if the passed device tree pointer is NULL. Signed-off-by: Christian Marangi --- drivers/net/mdio/mdio-regmap.c | 2 +- include/linux/mdio/mdio-regmap.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/mdio/mdio-regmap.c b/drivers/net/mdio/mdio-regmap.c index ed0443eb039f..8e89068c844d 100644 --- a/drivers/net/mdio/mdio-regmap.c +++ b/drivers/net/mdio/mdio-regmap.c @@ -143,7 +143,7 @@ struct mii_bus *devm_mdio_regmap_register(struct device *dev, else mii->phy_mask = ~0; - rc = devm_mdiobus_register(dev, mii); + rc = devm_of_mdiobus_register(dev, mii, config->np); if (rc) { dev_err(config->parent, "Cannot register MDIO bus![%s] (%d)\n", mii->id, rc); return ERR_PTR(rc); diff --git a/include/linux/mdio/mdio-regmap.h b/include/linux/mdio/mdio-regmap.h index bb0e7dc9c0dc..228f12e90750 100644 --- a/include/linux/mdio/mdio-regmap.h +++ b/include/linux/mdio/mdio-regmap.h @@ -14,6 +14,7 @@ struct regmap; struct mdio_regmap_config { struct device *parent; + struct device_node *np; struct regmap *regmap; char name[MII_BUS_ID_SIZE]; u8 valid_addr; From patchwork Tue Apr 8 09:51:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042621 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3984FC3600C for ; Tue, 8 Apr 2025 10:13:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=g/oMSgq7sYFkno4RV+Q5yWXEvKJ7n0a3OFGNv6kqHBM=; b=J0dlFGrVUn6HEMKLurI1BjmTC7 3sMm9WN9z4dwTvBGnlpmmTvM0fijkBStFAOEAS6ohO/levpHuhtwLVigHSRU1Ye+eQd86MNF2HLYF 6I7c3Nr7c7frL02TDSO5HNpFugPjqDkd0j0eQV0D5p7N5/OTxDU6qf3BE27T3iPKjARjkrywiz5eV /7vNakP2g5DjzuFVcDXYqryYXnh5tx+2TsycGe9MoGeQ2j+1bEByDOTKjN56hWQiZxFqhIaiy5xoB WrQaKZR9mKyWeCZzYPzcSoEzKWNywW44qxreV7oXi2ZOr0ioS8SVejhfJl0zOjqiUJex4E8wMofOz +meFGd9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25xR-00000003be5-0Loh; Tue, 08 Apr 2025 10:13:29 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d6-00000003W9A-0VGq; Tue, 08 Apr 2025 09:52:30 +0000 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-39c13fa05ebso3060660f8f.0; Tue, 08 Apr 2025 02:52:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105947; x=1744710747; darn=lists.infradead.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=g/oMSgq7sYFkno4RV+Q5yWXEvKJ7n0a3OFGNv6kqHBM=; b=BQYVuReDyWLRRStAKEHqlCBvoIqiLqyCrqvkk7WspvH5HQU39yc0pSSibOjPAs8daR RGb0WcBvmMe9cpzK0Jk4ToRzIjy8feTqA00l27hOE7UhowfMe/GCusViyeTmkiXh0+Dd r2p+TBALJ3tNSl1mKSGXbDh6Mz2lhL3643L2Ff2iYdwel8A3Y7eFMbYT5lNZ2FANrM4I P4UV1Mf1uCHasC7x+ls5lw+uDKEoA7z8Ani1XLUYa3Fyd9Z1NE413GehFQX/Z8olyt3j HPZ8xdEPe455pEyvUYgQPYZArQ6CGRbWMG0aG0paXTqbyEac4QMLU3deuGGYDptFY0GK CVEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105947; x=1744710747; 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=g/oMSgq7sYFkno4RV+Q5yWXEvKJ7n0a3OFGNv6kqHBM=; b=KNYRTL3ILeOa35BR29953H5qFjGwKk+Mk4d5mQ66kGrDdizz/PRmoVNpj2bFRudQj7 aNUeNONYaIctv628b7rho+mSlAhUexcWKXQfrZYosyzAAlb2I7UR4st5qHHx37L6S/iy r59HH8F3VKV0Gb0StMMdxe6B0kuL8T0ojUxxKEGCNkA9AY4CXCrmdQPXxyN/UbMhOVtS zNSiskUZjoZb5fnITtmW9UOThQbEFn3Q+ysfI3cTEiCIAYD08Xakt45q8Lz0rVxYBsov 1HWKgyhCPNSaKYFO97ZjBTawaqRLeukW+2H5gvQ8gGIUFPgYITQFHXFpz99ZP3amb36m C5yA== X-Forwarded-Encrypted: i=1; AJvYcCVBFTuN/mZ93jQTFLR++8pR1ki2337claL41Ut0mktpJ5/9lwc2kOAsw9tFu88VBNjvvk7MjjNrmBU0eW8Ydt0=@lists.infradead.org, AJvYcCWeJ3jPs6ZPoBJtf+5IJY8ThJL9XhJRksfVhHQyge80xE+Qy0RtY5MA5LDqsdhXeb7MNn8KOZqZZSf2GpS6NIfg@lists.infradead.org X-Gm-Message-State: AOJu0YweISn/9BuCubMRsfhCM+BTb7rXL7tlB2e1YN3KxFVvvtSfiMpu QgVFbH0H7TVxOOylFsKa5ZrRO1fj8lKh7WQJwWhWRUcmVi/FCBdE X-Gm-Gg: ASbGncvhNfMSyFHPDl0M44iwFxXCr2nmnMt8kLc7QcqWVQW/oGEAdL2S6xQolb8oW4q ixI777yf+XZvToKzIQs4d5F8zhn5Zq/f/rknrcgjnyHa1xWQuCpklvmPPJKrXBnESE0muY09T9d sasYNcTZHjaxWwIGXZi3WbMrA/675ff3bWWu7Rm7bEWIZmgmrJZm5mmav2V+0DdXzVVu96roovS JTuliMSR6wFzbrJjSRB9KM5b1Om+L5C93POrnRbyNacm5kd++mqs/dc+3sHdyt45roQpbjlKvaa SeZQ29xdT3Ce53g98VPGscWZgK+Dfm43IbFush5jct8J5um5ygjhEzKzoABVRW0jdJW/NI6P31q kcRC6UjEF65FBhg== X-Google-Smtp-Source: AGHT+IGpjpd4CxIWAvXs4iDHSvrXVMcJ2nS+gwp8u4RZy/tfgUd7jRGBGybuKmuA2mz04D9BauX8oA== X-Received: by 2002:a05:6000:4203:b0:391:3998:2660 with SMTP id ffacd0b85a97d-39cb35759c8mr12826712f8f.7.1744105946626; Tue, 08 Apr 2025 02:52:26 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:26 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 10/16] mfd: an8855: Add support for Airoha AN8855 Switch MFD Date: Tue, 8 Apr 2025 11:51:17 +0200 Message-ID: <20250408095139.51659-11-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025228_307956_9797B978 X-CRM114-Status: GOOD ( 25.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for Airoha AN8855 Switch MFD that provide support for a DSA switch and a NVMEM provider. Also provide support for a virtual MDIO passthrough as the PHYs address for the switch are shared with the switch address. Signed-off-by: Christian Marangi --- drivers/mfd/Kconfig | 12 + drivers/mfd/Makefile | 1 + drivers/mfd/airoha-an8855.c | 429 ++++++++++++++++++++++++++++++++++++ 3 files changed, 442 insertions(+) create mode 100644 drivers/mfd/airoha-an8855.c diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 22b936310039..c5b5ee2f217b 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -53,6 +53,18 @@ config MFD_ALTERA_SYSMGR using regmap_mmio accesses for ARM32 parts and SMC calls to EL3 for ARM64 parts. +config MFD_AIROHA_AN8855 + tristate "Airoha AN8855 Switch Core" + select MFD_CORE + select MDIO_DEVICE + depends on NETDEVICES && OF + help + Support for the Airoha AN8855 Switch Core. This is an SoC + that provides various peripherals, to count, i2c, an Ethrnet + Switch, a CPU timer, GPIO, eFUSE. + + Currently it provides a DSA switch and a NVMEM provider. + config MFD_ACT8945A tristate "Active-semi ACT8945A" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 948cbdf42a18..f2095d57ab77 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -8,6 +8,7 @@ obj-$(CONFIG_MFD_88PM860X) += 88pm860x.o obj-$(CONFIG_MFD_88PM800) += 88pm800.o 88pm80x.o obj-$(CONFIG_MFD_88PM805) += 88pm805.o 88pm80x.o obj-$(CONFIG_MFD_88PM886_PMIC) += 88pm886.o +obj-$(CONFIG_MFD_AIROHA_AN8855) += airoha-an8855.o obj-$(CONFIG_MFD_ACT8945A) += act8945a.o obj-$(CONFIG_MFD_SM501) += sm501.o obj-$(CONFIG_ARCH_BCM2835) += bcm2835-pm.o diff --git a/drivers/mfd/airoha-an8855.c b/drivers/mfd/airoha-an8855.c new file mode 100644 index 000000000000..fb2edf3132f9 --- /dev/null +++ b/drivers/mfd/airoha-an8855.c @@ -0,0 +1,429 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Core driver for Airoha AN8855 Switch + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* Register for HW trap status */ +#define AN8855_HWTRAP 0x1000009c + +#define AN8855_CREV 0x10005000 +#define AN8855_ID 0x8855 + +#define AN8855_RG_GPHY_AFE_PWD 0x1028c840 + +/* MII Registers */ +#define AN8855_PHY_SELECT_PAGE 0x1f +#define AN8855_PHY_PAGE GENMASK(2, 0) +#define AN8855_PHY_PAGE_STANDARD FIELD_PREP_CONST(AN8855_PHY_PAGE, 0x0) +#define AN8855_PHY_PAGE_EXTENDED_1 FIELD_PREP_CONST(AN8855_PHY_PAGE, 0x1) +#define AN8855_PHY_PAGE_EXTENDED_4 FIELD_PREP_CONST(AN8855_PHY_PAGE, 0x4) + +/* MII Registers Page 4 */ +#define AN8855_PBUS_MODE 0x10 +#define AN8855_PBUS_MODE_ADDR_FIXED 0x0 +#define AN8855_PBUS_MODE_ADDR_INCR BIT(15) +#define AN8855_PBUS_WR_ADDR_HIGH 0x11 +#define AN8855_PBUS_WR_ADDR_LOW 0x12 +#define AN8855_PBUS_WR_DATA_HIGH 0x13 +#define AN8855_PBUS_WR_DATA_LOW 0x14 +#define AN8855_PBUS_RD_ADDR_HIGH 0x15 +#define AN8855_PBUS_RD_ADDR_LOW 0x16 +#define AN8855_PBUS_RD_DATA_HIGH 0x17 +#define AN8855_PBUS_RD_DATA_LOW 0x18 + +struct an8855_core_priv { + struct mii_bus *bus; + + unsigned int switch_addr; + u16 current_page; +}; + +static const struct mfd_cell an8855_core_childs[] = { + { + .name = "an8855-efuse", + .of_compatible = "airoha,an8855-efuse", + }, { + .name = "an8855-switch", + .of_compatible = "airoha,an8855-switch", + }, { + .name = "an8855-mdio", + .of_compatible = "airoha,an8855-mdio", + } +}; + +static int an8855_mii_set_page(struct an8855_core_priv *priv, u8 addr, + u8 page) __must_hold(&priv->bus->mdio_lock) +{ + struct mii_bus *bus = priv->bus; + int ret; + + ret = __mdiobus_write(bus, addr, AN8855_PHY_SELECT_PAGE, page); + if (ret) { + dev_err_ratelimited(&bus->dev, "failed to set mii page\n"); + return ret; + } + + /* Cache current page if next MII read/write is for Switch page */ + priv->current_page = page; + return 0; +} + +static int an8855_mii_read32(struct mii_bus *bus, u8 phy_id, u32 reg, + u32 *val) __must_hold(&bus->mdio_lock) +{ + int lo, hi, ret; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_MODE, + AN8855_PBUS_MODE_ADDR_FIXED); + if (ret) + goto err; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_RD_ADDR_HIGH, + upper_16_bits(reg)); + if (ret) + goto err; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_RD_ADDR_LOW, + lower_16_bits(reg)); + if (ret) + goto err; + + hi = __mdiobus_read(bus, phy_id, AN8855_PBUS_RD_DATA_HIGH); + if (hi < 0) { + ret = hi; + goto err; + } + + lo = __mdiobus_read(bus, phy_id, AN8855_PBUS_RD_DATA_LOW); + if (lo < 0) { + ret = lo; + goto err; + } + + *val = ((u16)hi << 16) | ((u16)lo & 0xffff); + + return 0; +err: + dev_err_ratelimited(&bus->dev, "failed to read register\n"); + return ret; +} + +static int an8855_regmap_read(void *ctx, uint32_t reg, uint32_t *val) +{ + struct an8855_core_priv *priv = ctx; + struct mii_bus *bus = priv->bus; + u16 addr = priv->switch_addr; + int ret; + + mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); + ret = an8855_mii_set_page(priv, addr, AN8855_PHY_PAGE_EXTENDED_4); + if (ret < 0) + goto exit; + + ret = an8855_mii_read32(bus, addr, reg, val); + +exit: + mutex_unlock(&bus->mdio_lock); + + return ret < 0 ? ret : 0; +} + +static int an8855_mii_write32(struct mii_bus *bus, u8 phy_id, u32 reg, + u32 val) __must_hold(&bus->mdio_lock) +{ + int ret; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_MODE, + AN8855_PBUS_MODE_ADDR_FIXED); + if (ret) + goto err; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_WR_ADDR_HIGH, + upper_16_bits(reg)); + if (ret) + goto err; + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_WR_ADDR_LOW, + lower_16_bits(reg)); + if (ret) + goto err; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_WR_DATA_HIGH, + upper_16_bits(val)); + if (ret) + goto err; + + ret = __mdiobus_write(bus, phy_id, AN8855_PBUS_WR_DATA_LOW, + lower_16_bits(val)); + if (ret) + goto err; + + return 0; +err: + dev_err_ratelimited(&bus->dev, + "failed to write an8855 register\n"); + return ret; +} + +static int an8855_regmap_write(void *ctx, uint32_t reg, uint32_t val) +{ + struct an8855_core_priv *priv = ctx; + struct mii_bus *bus = priv->bus; + u16 addr = priv->switch_addr; + int ret; + + mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); + ret = an8855_mii_set_page(priv, addr, AN8855_PHY_PAGE_EXTENDED_4); + if (ret) + goto exit; + + ret = an8855_mii_write32(bus, addr, reg, val); + +exit: + mutex_unlock(&bus->mdio_lock); + + return ret < 0 ? ret : 0; +} + +static int an8855_regmap_update_bits(void *ctx, uint32_t reg, uint32_t mask, + uint32_t write_val) +{ + struct an8855_core_priv *priv = ctx; + struct mii_bus *bus = priv->bus; + u16 addr = priv->switch_addr; + u32 val; + int ret; + + mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); + ret = an8855_mii_set_page(priv, addr, AN8855_PHY_PAGE_EXTENDED_4); + if (ret) + goto exit; + + ret = an8855_mii_read32(bus, addr, reg, &val); + if (ret < 0) + goto exit; + + val &= ~mask; + val |= write_val; + ret = an8855_mii_write32(bus, addr, reg, val); + +exit: + mutex_unlock(&bus->mdio_lock); + + return ret < 0 ? ret : 0; +} + +static const struct regmap_range an8855_readable_ranges[] = { + regmap_reg_range(0x10000000, 0x10000fff), /* SCU */ + regmap_reg_range(0x10001000, 0x10001fff), /* RBUS */ + regmap_reg_range(0x10002000, 0x10002fff), /* MCU */ + regmap_reg_range(0x10005000, 0x10005fff), /* SYS SCU */ + regmap_reg_range(0x10007000, 0x10007fff), /* I2C Slave */ + regmap_reg_range(0x10008000, 0x10008fff), /* I2C Master */ + regmap_reg_range(0x10009000, 0x10009fff), /* PDMA */ + regmap_reg_range(0x1000a100, 0x1000a2ff), /* General Purpose Timer */ + regmap_reg_range(0x1000a200, 0x1000a2ff), /* GPU timer */ + regmap_reg_range(0x1000a300, 0x1000a3ff), /* GPIO */ + regmap_reg_range(0x1000a400, 0x1000a5ff), /* EFUSE */ + regmap_reg_range(0x1000c000, 0x1000cfff), /* GDMP CSR */ + regmap_reg_range(0x10010000, 0x1001ffff), /* GDMP SRAM */ + regmap_reg_range(0x10200000, 0x10203fff), /* Switch - ARL Global */ + regmap_reg_range(0x10204000, 0x10207fff), /* Switch - BMU */ + regmap_reg_range(0x10208000, 0x1020bfff), /* Switch - ARL Port */ + regmap_reg_range(0x1020c000, 0x1020cfff), /* Switch - SCH */ + regmap_reg_range(0x10210000, 0x10213fff), /* Switch - MAC */ + regmap_reg_range(0x10214000, 0x10217fff), /* Switch - MIB */ + regmap_reg_range(0x10218000, 0x1021bfff), /* Switch - Port Control */ + regmap_reg_range(0x1021c000, 0x1021ffff), /* Switch - TOP */ + regmap_reg_range(0x10220000, 0x1022ffff), /* SerDes */ + regmap_reg_range(0x10286000, 0x10286fff), /* RG Batcher */ + regmap_reg_range(0x1028c000, 0x1028ffff), /* ETHER_SYS */ + regmap_reg_range(0x30000000, 0x37ffffff), /* I2C EEPROM */ + regmap_reg_range(0x38000000, 0x3fffffff), /* BOOT_ROM */ + regmap_reg_range(0xa0000000, 0xbfffffff), /* GPHY */ +}; + +static const struct regmap_access_table an8855_readable_table = { + .yes_ranges = an8855_readable_ranges, + .n_yes_ranges = ARRAY_SIZE(an8855_readable_ranges), +}; + +static const struct regmap_config an8855_regmap_config = { + .name = "switch", + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, + .max_register = 0xbfffffff, + .reg_read = an8855_regmap_read, + .reg_write = an8855_regmap_write, + .reg_update_bits = an8855_regmap_update_bits, + .disable_locking = true, + .rd_table = &an8855_readable_table, +}; + +static int an855_regmap_phy_reset_page(struct an8855_core_priv *priv, + int phy) __must_hold(&priv->bus->mdio_lock) +{ + /* Check PHY page only for addr shared with switch */ + if (phy != priv->switch_addr) + return 0; + + /* Don't restore page if it's not set to Switch page */ + if (priv->current_page != FIELD_GET(AN8855_PHY_PAGE, + AN8855_PHY_PAGE_EXTENDED_4)) + return 0; + + /* + * Restore page to 0, PHY might change page right after but that + * will be ignored as it won't be a switch page. + */ + return an8855_mii_set_page(priv, phy, AN8855_PHY_PAGE_STANDARD); +} + +static int an8855_regmap_phy_read(void *ctx, int addr, int regnum) +{ + struct an8855_core_priv *priv = ctx; + struct mii_bus *bus = priv->bus; + int ret; + + mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); + ret = an855_regmap_phy_reset_page(priv, addr); + if (ret) + goto exit; + + ret = __mdiobus_read(priv->bus, addr, regnum); + +exit: + mutex_unlock(&bus->mdio_lock); + + return ret; +} + +static int an8855_regmap_phy_write(void *ctx, int addr, int regnum, u16 val) +{ + struct an8855_core_priv *priv = ctx; + struct mii_bus *bus = priv->bus; + int ret; + + mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); + ret = an855_regmap_phy_reset_page(priv, addr); + if (ret) + goto exit; + + ret = __mdiobus_write(priv->bus, addr, regnum, val); + +exit: + mutex_unlock(&bus->mdio_lock); + + return ret; +} + +static const struct mdio_regmap_init_config an8855_regmap_phy_config = { + .name = "phy", + .mdio_read = an8855_regmap_phy_read, + .mdio_write = an8855_regmap_phy_write, +}; + +static int an8855_read_switch_id(struct device *dev, struct regmap *regmap) +{ + u32 id; + int ret; + + ret = regmap_read(regmap, AN8855_CREV, &id); + if (ret) + return ret; + + if (id != AN8855_ID) { + dev_err(dev, "Detected Switch ID %x but %x was expected\n", + id, AN8855_ID); + return -ENODEV; + } + + return 0; +} + +static int an8855_core_probe(struct mdio_device *mdiodev) +{ + struct regmap *regmap, *regmap_phy; + struct device *dev = &mdiodev->dev; + struct an8855_core_priv *priv; + struct gpio_desc *reset_gpio; + u32 val; + int ret; + + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->bus = mdiodev->bus; + priv->switch_addr = mdiodev->addr; + /* No DMA for mdiobus, mute warning for DMA mask not set */ + dev->dma_mask = &dev->coherent_dma_mask; + + regmap = devm_regmap_init(dev, NULL, priv, &an8855_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(dev, PTR_ERR(regmap), + "regmap initialization failed\n"); + + regmap_phy = devm_mdio_regmap_init(dev, priv, &an8855_regmap_phy_config); + if (IS_ERR(regmap_phy)) + return dev_err_probe(dev, PTR_ERR(regmap_phy), + "regmap phy initialization failed\n"); + + reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(reset_gpio)) + return PTR_ERR(reset_gpio); + + if (reset_gpio) { + usleep_range(100000, 150000); + gpiod_set_value_cansleep(reset_gpio, 0); + usleep_range(100000, 150000); + gpiod_set_value_cansleep(reset_gpio, 1); + + /* Poll HWTRAP reg to wait for Switch to fully Init */ + ret = regmap_read_poll_timeout(regmap, AN8855_HWTRAP, val, + val, 20, 200000); + if (ret) + return ret; + } + + ret = an8855_read_switch_id(dev, regmap); + if (ret) + return ret; + + /* Release global PHY power down */ + ret = regmap_write(regmap, AN8855_RG_GPHY_AFE_PWD, 0x0); + if (ret) + return ret; + + return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, an8855_core_childs, + ARRAY_SIZE(an8855_core_childs), NULL, 0, + NULL); +} + +static const struct of_device_id an8855_core_of_match[] = { + { .compatible = "airoha,an8855" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, an8855_core_of_match); + +static struct mdio_driver an8855_core_driver = { + .probe = an8855_core_probe, + .mdiodrv.driver = { + .name = "an8855", + .of_match_table = an8855_core_of_match, + }, +}; +mdio_module_driver(an8855_core_driver); + +MODULE_AUTHOR("Christian Marangi "); +MODULE_DESCRIPTION("Driver for Airoha AN8855 MFD"); +MODULE_LICENSE("GPL"); From patchwork Tue Apr 8 09:51:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042632 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 21E8BC369A1 for ; Tue, 8 Apr 2025 10:15:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=s3/BY8PYvNQdk6fZrNkLE1hVwik+/X8XgJnJ+/zsRwY=; b=A0FrCO9rAYCu9CjZ3hbB5Vq7/d OkAdK+dzAwy87uVVzwUxl6l74sRyczsY6j2te4MFBK5+c6B81F+QR8aziGSqYS+37/YEoaMaaokb3 Rn0QS1CCJXHkbZU74x6TWPBNwP8UYi9M3WhwnoXUp7byFwipRWhlsu7LDaSS6hij6A0FXoGrd9QvT 6bYZFy6OaJgnrMqxO5rgx+kHkC/UyJR5TkZZfl8vjXCpcLapI3nwPGAC1y8ui3Y2yJBzJMeluJiwL oAaHRuFe2A4d5wNMHpfGi7he76WhcVmEhaZEY1wUELIM70DntGwyQKyYrsba7RiP8KN2W4P2b8i/f OXXh1DBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25zF-00000003c5z-0H1y; Tue, 08 Apr 2025 10:15:21 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d7-00000003WAE-3DPJ; Tue, 08 Apr 2025 09:52:31 +0000 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-39c14016868so4709233f8f.1; Tue, 08 Apr 2025 02:52:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105948; x=1744710748; darn=lists.infradead.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=s3/BY8PYvNQdk6fZrNkLE1hVwik+/X8XgJnJ+/zsRwY=; b=bc8QMoIRu82/HL4NC+XT2RaeXNpHdOgYpmuqMjlWbBnyt6I4xJj/SH04oUJOCx3gJS LK0LUM+IaIAOujrg7mKKc2wSOPei0JB7ZWSe0Z9ls17dp06PTHYPBgKfafxX6dXtnTGl s9y/t48UM3pCfoUnhjtsDmFKlp7rKDLSI6WWAdYtKQYqWFXvXAV4Jp7MT5CWAZGcGIVI YBHl6sMvdaISBR8ON2FVL/rvIQiM7BmrVceDFtnCJAQD0JYjNkqWBPIgmxqZpU1CZKYO gbOBWga8wljIF0G+7ZCQLAlEk4JtAz1ww6fQI/hysiKsifN7O7bDPp3a/dTuCG30DTJq /NcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105948; x=1744710748; 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=s3/BY8PYvNQdk6fZrNkLE1hVwik+/X8XgJnJ+/zsRwY=; b=QdlTe0bEQ+ysE+XQGttU7LNqlO8cEE6eVRF5hRWL+Z+/iWzyhWRIQlxW8/E5UG4ddq WICc1rY6IZ8e9fQ3vGRnVJASApx6mbsr7lfQedRVhsv6TMB2JRSzS7+W4HE6uO1PFBuE eXTpr82vBIbzTpOgQTd0hmZBoPqGXUmp2hwjWuwbE2Nv5msNGLQPPHsWFR4VdCNPfcxC QdCWzU193x4YGgA4xKlnEJdX0cmuW6rcdTaeOs74IH+aC8uIMZOk4MAaqfAua3hM0mVh 1P5Z2d5Cgs0UPZP2fwyUd3pLzHaEnz2hdSbLzAVboJjHwXgecG901Zqtsav8EfZvMOCF K47g== X-Forwarded-Encrypted: i=1; AJvYcCUFr8eTfJzlPneHpwMkm4COLh5qOvlddq71UcoDo6AzQ7fIcN3fVJi/e3NhwjkTgErJaXziFFfB2IEtdh7HrqAZ@lists.infradead.org, AJvYcCV+FnXW0eTN9PsqZdwnrJzD0/5CVr7X2dBjXx22iTIPzBidWfCtVGqlKc7jdwGeaffQY7M1f9KocIl/rTslpv4=@lists.infradead.org X-Gm-Message-State: AOJu0YwiFabQemuGbNhPRAwpoY43ERHijRtSuFeqm8v/VekV2muibIVM gMHO0vUfszxq5Uoz4cKCwA7w/Vt8n3eNvWJXtkQyFN2Su9ynaS/3 X-Gm-Gg: ASbGncsIdqoppjXfqVZdjwT5gxpF/F7kt5bzud/sf/9dipM93s21dGCcWn6hQaX+NCt pvZmcfSttk1SYk+cnRgf+VOEtFMAmS324+oTEv/w49mxdguf17CejcVAnkXHD2nce66l2cR6qrT XFCWAdUSHuRvPh6BOahrIOaNHT74qBhbyQVrKypfUyGR9Z05dM75/GMJqOhI6jeVTAOTogMqOZj 5GBYF0tLuAaYBYw9JxomexkvKwWM+NiemwElmDNL6yA8qSK8x4RHRFtS0fpg2wr9CvedwIoKgfH xum2E7Fdvfrg789qmd55LZnx6eiasvmqQzr9cW6AGqFhMmu3p+tT4x8JG7+qmNXLOLHfT/ZXDCM PS2YO2qnk438MTA== X-Google-Smtp-Source: AGHT+IGk6lh9oHKBenBhQXCD5vvAz3tN3/0sAx6/S8ROb2EOxvICxmB1O37yZcrWQXZCVWyacHoQ1g== X-Received: by 2002:a5d:584e:0:b0:39c:dfa:d33e with SMTP id ffacd0b85a97d-39d0de2567dmr13218213f8f.23.1744105948149; Tue, 08 Apr 2025 02:52:28 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:27 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 11/16] net: mdio: Add Airoha AN8855 Switch MDIO Passtrough Date: Tue, 8 Apr 2025 11:51:18 +0200 Message-ID: <20250408095139.51659-12-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025229_817166_649D668A X-CRM114-Status: GOOD ( 21.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add Airoha AN8855 Switch driver to register a MDIO passtrough as switch address is shared with the internal PHYs and require additional page handling. This requires the upper Switch MFD to be probed and init to actually work. Signed-off-by: Christian Marangi --- drivers/net/mdio/Kconfig | 10 +++++++ drivers/net/mdio/Makefile | 1 + drivers/net/mdio/mdio-an8855.c | 49 ++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 drivers/net/mdio/mdio-an8855.c diff --git a/drivers/net/mdio/Kconfig b/drivers/net/mdio/Kconfig index 4a7a303be2f7..e31a37064934 100644 --- a/drivers/net/mdio/Kconfig +++ b/drivers/net/mdio/Kconfig @@ -61,6 +61,16 @@ config MDIO_XGENE This module provides a driver for the MDIO busses found in the APM X-Gene SoC's. +config MDIO_AN8855 + tristate "Airoha AN8855 Switch MDIO bus controller" + depends on MFD_AIROHA_AN8855 + depends on OF_MDIO + select MDIO_REGMAP + help + This module provides a driver for the Airoha AN8855 Switch + that requires a MDIO passtrough as switch address is shared + with the internal PHYs and requires additional page handling. + config MDIO_ASPEED tristate "ASPEED MDIO bus controller" depends on ARCH_ASPEED || COMPILE_TEST diff --git a/drivers/net/mdio/Makefile b/drivers/net/mdio/Makefile index 1015f0db4531..546c4e55b475 100644 --- a/drivers/net/mdio/Makefile +++ b/drivers/net/mdio/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_ACPI_MDIO) += acpi_mdio.o obj-$(CONFIG_FWNODE_MDIO) += fwnode_mdio.o obj-$(CONFIG_OF_MDIO) += of_mdio.o +obj-$(CONFIG_MDIO_AN8855) += mdio-an8855.o obj-$(CONFIG_MDIO_ASPEED) += mdio-aspeed.o obj-$(CONFIG_MDIO_BCM_IPROC) += mdio-bcm-iproc.o obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o diff --git a/drivers/net/mdio/mdio-an8855.c b/drivers/net/mdio/mdio-an8855.c new file mode 100644 index 000000000000..22d199942f1c --- /dev/null +++ b/drivers/net/mdio/mdio-an8855.c @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * MDIO passthrough driver for Airoha AN8855 Switch + */ + +#include +#include +#include +#include + +static int an8855_mdio_probe(struct platform_device *pdev) +{ + struct mdio_regmap_config mrc = { }; + struct device *dev = &pdev->dev; + struct mii_bus *bus; + + mrc.regmap = dev_get_regmap(dev->parent, "phy"); + mrc.parent = dev; + mrc.valid_addr_mask = GENMASK(31, 0); + mrc.support_encoded_addr = true; + mrc.autoscan = true; + mrc.np = dev->of_node; + snprintf(mrc.name, MII_BUS_ID_SIZE, KBUILD_MODNAME); + + bus = devm_mdio_regmap_register(dev, &mrc); + if (IS_ERR(bus)) + return dev_err_probe(dev, PTR_ERR(bus), "failed to register MDIO bus\n"); + + return 0; +} + +static const struct of_device_id an8855_mdio_of_match[] = { + { .compatible = "airoha,an8855-mdio", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, an8855_mdio_of_match); + +static struct platform_driver an8855_mdio_driver = { + .probe = an8855_mdio_probe, + .driver = { + .name = "an8855-mdio", + .of_match_table = an8855_mdio_of_match, + }, +}; +module_platform_driver(an8855_mdio_driver); + +MODULE_AUTHOR("Christian Marangi "); +MODULE_DESCRIPTION("Driver for AN8855 MDIO passthrough"); +MODULE_LICENSE("GPL"); From patchwork Tue Apr 8 09:51:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042633 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E4393C369A1 for ; Tue, 8 Apr 2025 10:17:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=d6eFHR/+HwP+QVEyAdkJj9R1VCVx1cbNXlZ7PvgU5mg=; b=hpbw+pRCsxWTmJQsy+qP6s3zGX XkpjqvYuxra/BHnGf9u9oim2CmtzDwkquz9y4EPWVFPiD6IC1rpvje/SpWap2cIJUbJaDfDBJ1mbz YxLjDZeUICJ0h0OkjK+VVV+jSom/KSXpeKeU75QmZMcAGOMAtJtDbeVM9yBg6l8s6wklJyelF2TX2 D8zh0pucKfKauxiJRvuO2LowBTITGF2riw+9RpxteAySwGLxFddRX3/RzNF2de/DTzsyxtAbXymOA kNWawQOQL6+dn85aE2QdsXoYmoWpwO9pJYghPqYjloTI/Mf9evWLjUqlATI4q94OyOmomqhAtRkaB 6ct0MHiw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u2612-00000003cOL-1aIx; Tue, 08 Apr 2025 10:17:12 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25d9-00000003WBS-0wAw; Tue, 08 Apr 2025 09:52:32 +0000 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-43cf3192f3bso52714325e9.1; Tue, 08 Apr 2025 02:52:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105950; x=1744710750; darn=lists.infradead.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=d6eFHR/+HwP+QVEyAdkJj9R1VCVx1cbNXlZ7PvgU5mg=; b=ITlrogVnnhhmMdS1hZ//quBpWuIEnmY76zP1YKPGtxJBQVpkDtivSVRvssnp6NqCZd Id2QnGdZHbuPaSSwFpypcwORNEN5RTM7Q7NBxL7LQX6dGe6d3qthIslbHyNvNxQ4HUCj YgBgMXiu1jEfj9DZuCIGv6M4hvdr/fNf4yei/C/zAHjLKTCXCYodkhcUKTXnoMkQSwfq AKIzEBLp5miPjcCIEYN8m4sBLKADgF3xwvCmOhUq5yaVNedC95g4SUsK7S7/hJUj45Cd x5BBymf9lTbqW8edEu96cqKFysNbdYcsSCsETU3FuLBowOwNz57eNTUw1Nzr5ySnzXzJ Vb4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105950; x=1744710750; 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=d6eFHR/+HwP+QVEyAdkJj9R1VCVx1cbNXlZ7PvgU5mg=; b=xA4YfdHjZI2UG3GPdt2FADHJzT/Va+WufoAEN4YCAGvPzd9mWqEgfyKgv8DHVlUiqv eMXE45ndfFN7zxd9uPEnGZQZQ05bnPlxBP2ZMNqrKOc7g+o1P2nPEKmWk41HX2PJP5Yz zPN9tHDjx4kZKv6iFqX9OBRsQsAxyW0W/sqNZtdqE0pc9MhdRlma/SqNwewbsmeoEe2t po7z4UmUT9t1Qe6ocGxCdurz2ml1l4wwKlvor9zaw6lC10rN2lGT18wy/xle9GkGaaas 5ICv6/InWC3xvv6zQLCVzXLtOk0vkXFppal+/uKcxLksiKldflVSVk/gzugwZlDju+VG oQkQ== X-Forwarded-Encrypted: i=1; AJvYcCVNm24pLQDPcZ7tsQzosAMgxtdKKypL8H52rCvMAMlCA0KJTvg1rWy/KRvfHD9BnTNMu/YnbVITFDVy8nLVp8s=@lists.infradead.org, AJvYcCXL+38IXLLsjn7whP8wuGaraGM1fyc8EsYurYNAM1eAElNWNkVPyrIqJcvcXMrcQzlpdjbC2bWdPC0NyY7b1f7V@lists.infradead.org X-Gm-Message-State: AOJu0Yw6khmSYboNw64mY2ntrbisGMXaRsP1rfKxlZDo0ThC2tZy2tKe cxG0jysJh2YnijqRjgNk2EVVMnkCaEJiNEP4sBPQz9+1JGuT4+tm X-Gm-Gg: ASbGnctj4MXBhs+F32BWSRD34T5chUer2vCBBlGrG4NOCAZP1pwk4GUpqcQXSM4TIqW IndAW6KRoB03b4uYnQyBieRUopva0JuKY68zxRnb37nOcJoLoy0AtCD66/a5x7shCePpjwkv0b7 rGOLLjuD47e2hoG0+ENCiY8UqS7L1rAHM7tjmuFm3kKnlPwfhT7KZCEC4qXdMOM3J+bxanW+L3I M9Vcq4rbpEZde04Gn7EqunfA9z/5saIaW0O44YVpD/DqPk5nTi6nrVLDeQHU/phi5NDf49PQoRP Y2MOY3HOHli3OFqLqzUwgDnKZA5cUdc7HykXQ5sDixigJSuXP+YY8gKt5KuRsKyp8QDabL/RsKy uZRIr8TWf9eT8U6+LAfEGHXHU X-Google-Smtp-Source: AGHT+IGnYUhJy/g8TudXJhkOLcfaktByFDYkfaf3ydBwVqRyzcsHcERQeIuA1I+0QEB3ctl78R0VKg== X-Received: by 2002:a05:6000:4203:b0:399:7f43:b3a4 with SMTP id ffacd0b85a97d-39d0de28771mr13511876f8f.24.1744105949782; Tue, 08 Apr 2025 02:52:29 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:29 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 12/16] nvmem: an8855: Add support for Airoha AN8855 Switch EFUSE Date: Tue, 8 Apr 2025 11:51:19 +0200 Message-ID: <20250408095139.51659-13-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025231_269627_7B95F0A8 X-CRM114-Status: GOOD ( 21.60 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for Airoha AN8855 Switch EFUSE. These EFUSE might be used for calibration data for the internal switch PHYs. Signed-off-by: Christian Marangi --- drivers/nvmem/Kconfig | 11 +++++++ drivers/nvmem/Makefile | 2 ++ drivers/nvmem/an8855-efuse.c | 63 ++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 drivers/nvmem/an8855-efuse.c diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig index 8671b7c974b9..ca96c6ea685a 100644 --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -28,6 +28,17 @@ source "drivers/nvmem/layouts/Kconfig" # Devices +config NVMEM_AN8855_EFUSE + tristate "Airoha AN8855 eFuse support" + depends on MFD_AIROHA_AN8855 || COMPILE_TEST + help + Say y here to enable support for reading eFuses on Airoha AN8855 + Switch. These are e.g. used to store factory programmed + calibration data required for the PHY. + + This driver can also be built as a module. If so, the module will + be called nvmem-an8855-efuse. + config NVMEM_APPLE_EFUSES tristate "Apple eFuse support" depends on ARCH_APPLE || COMPILE_TEST diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile index 5b77bbb6488b..c732132c0e45 100644 --- a/drivers/nvmem/Makefile +++ b/drivers/nvmem/Makefile @@ -10,6 +10,8 @@ nvmem_layouts-y := layouts.o obj-y += layouts/ # Devices +obj-$(CONFIG_NVMEM_AN8855_EFUSE) += nvmem-an8855-efuse.o +nvmem-an8855-efuse-y := an8855-efuse.o obj-$(CONFIG_NVMEM_APPLE_EFUSES) += nvmem-apple-efuses.o nvmem-apple-efuses-y := apple-efuses.o obj-$(CONFIG_NVMEM_BCM_OCOTP) += nvmem-bcm-ocotp.o diff --git a/drivers/nvmem/an8855-efuse.c b/drivers/nvmem/an8855-efuse.c new file mode 100644 index 000000000000..cd1564379098 --- /dev/null +++ b/drivers/nvmem/an8855-efuse.c @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Airoha AN8855 Switch EFUSE Driver + */ + +#include +#include +#include +#include +#include + +#define AN8855_EFUSE_CELL 50 + +#define AN8855_EFUSE_DATA0 0x1000a500 +#define AN8855_EFUSE_R50O GENMASK(30, 24) + +static int an8855_efuse_read(void *context, unsigned int offset, + void *val, size_t bytes) +{ + struct regmap *regmap = context; + + return regmap_bulk_read(regmap, AN8855_EFUSE_DATA0 + offset, + val, bytes / sizeof(u32)); +} + +static int an8855_efuse_probe(struct platform_device *pdev) +{ + struct nvmem_config an8855_nvmem_config = { + .name = "an8855-efuse", + .size = AN8855_EFUSE_CELL * sizeof(u32), + .stride = sizeof(u32), + .word_size = sizeof(u32), + .reg_read = an8855_efuse_read, + }; + struct device *dev = &pdev->dev; + struct nvmem_device *nvmem; + + /* Assign NVMEM priv to MFD regmap */ + an8855_nvmem_config.priv = dev_get_regmap(dev->parent, "switch"); + an8855_nvmem_config.dev = dev; + nvmem = devm_nvmem_register(dev, &an8855_nvmem_config); + + return PTR_ERR_OR_ZERO(nvmem); +} + +static const struct of_device_id an8855_efuse_of_match[] = { + { .compatible = "airoha,an8855-efuse", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, an8855_efuse_of_match); + +static struct platform_driver an8855_efuse_driver = { + .probe = an8855_efuse_probe, + .driver = { + .name = "an8855-efuse", + .of_match_table = an8855_efuse_of_match, + }, +}; +module_platform_driver(an8855_efuse_driver); + +MODULE_AUTHOR("Christian Marangi "); +MODULE_DESCRIPTION("Driver for AN8855 Switch EFUSE"); +MODULE_LICENSE("GPL"); From patchwork Tue Apr 8 09:51:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042659 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BB740C3600C for ; Tue, 8 Apr 2025 10:19:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BwltRZenz8I2v+f0rMVjtnSU0zbCoj6BsujDAg9wnzQ=; b=yMpXnukyVNAUeWP2m8UBue+bzC mqa/GFHG+1VrAgUPEeU+Z/phB9jCotFPDhkqzD7WD5ejKa/clQJ48vNgGaoyX5aiBhLQYNSy6YWGO Nqxp731cQJ/vxn9JTzBl0pKP5RIwGj3T/rXJxFDnPbbACGreGMQTHN3HBP+CKvn0a/drqujzuiiw1 K7HgBH+4bGXcdjqCvnKe3HqAF7yZC4qheLNiCs2DO36MJz/AecnZQRzOQMFKYo1B8oqKntlK+eHgh z1vQrB612gGg2ONvykOc6MLAXJE2Rkjy/EyoxGEwdsiqIAhQl/fGUPz5Kp5Hhm4fkQf5IllAhpBtG fNv9qHZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u262p-00000003cnT-1wVY; Tue, 08 Apr 2025 10:19:03 +0000 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25dC-00000003WDF-3D51; Tue, 08 Apr 2025 09:52:35 +0000 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-39c0dfad22aso3242463f8f.2; Tue, 08 Apr 2025 02:52:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105953; x=1744710753; darn=lists.infradead.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=BwltRZenz8I2v+f0rMVjtnSU0zbCoj6BsujDAg9wnzQ=; b=Un2kk9zC+Zs7ZRqKJMxRRy62gVhqfX7iz8ZmBuixTiRb3j35aXGZwjL7o0066YFXzc /jnKbCat/C8ZSS82Uph/J1pKXXuRRewhV5ptlpNlJMoiU/pacS5Vt7AHye9kGqlbjMI3 aX4GtSNLpUbEger7AHgo5IdKRK1fjntvZPCzX8cszGltqXLrIqRgr4hTeBSbLnfaplZw toBek/WMODxQMBZfkd0K9oBnw0RdXlM6c27M+fcgwZZ/XWD1asH8V9b4r6HZlZNZTJiI XPh7/UgAHaKxD7XSiuSwVMYr0yLG+bm0HwnGEHQSlBEVBhAJYCB2TPcJudpaOWIVvHBV nbYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105953; x=1744710753; 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=BwltRZenz8I2v+f0rMVjtnSU0zbCoj6BsujDAg9wnzQ=; b=sb1je4A1FrWL5XBzm59mx6zNvYCxfkIBw9TQLShjiTdD1O9eAEnIsaolQvbsD9q0Vr txLoVnwx3oLwpRhxtnLKTgvNbEyyRfrqQrsC88aIFcabyn9uCKNrOjWnHNLi8mERrwh4 rDmwoxfbpvRTPOeGecvfEHo1I74QtwTpbY9A5bNWFjrZFI3QB39Qnhlp/inLBMSl4V5b 8JPI4ruIRNaBNYfWYOTHMYDBJnwvzsvjIzJrdeeiuh4Af/LUcLW2kXUbDwzEfj+PKcCK UYi1NJ/Tb+pqE48ibtLB1k65t+I7rabZJOgx8aQfuHmft3kPDep+kgdsE28xrJrJtVPY B6TQ== X-Forwarded-Encrypted: i=1; AJvYcCWWEqxbKRCJKQfbtyZW5cEqePfP9rgV5T+6uFGIb0fGEIN/WDBg2d6As2dMoRdtNxw7aDv1/zsYOqXNJQm+BVAc@lists.infradead.org, AJvYcCX4cOcnnHn3XTKVD9+LsdjuJp4PRN4hpkjiYIg71OpK1i1a/zhMDs36ZE7Ot7JkeydN23bLhUJJlEyrrC6B2qc=@lists.infradead.org X-Gm-Message-State: AOJu0Yzh+JHIK3IYijhXmrjGQPht9a88/P3D4THRGxQ2o1dChRa3dEq0 smtrrAfdvKTD3CCL7ohBGE31QtI7YJW8W7lpTSpuyDB/VlAHjcbT X-Gm-Gg: ASbGncvekUtA28pH/SoNBipXUvZBULvF1EdR1/2R0SJMq8riaRa0sAsr1THFLfEmUAP 7y+hi4kC3oky9IE0kGJnCYvvdDQG0cYD2vXB/APFwJy32Mz18Ck2T70nBX1PT5Y/PA7vHy7KP2/ qB2sYljSZQSHdyHWIP/A1WE8OFYevUUDyD4x6+aOZCYBqdeOg9LHCtrqDOqo1dPJNJEUR+0Ujfw SDbtl/jodBP3jmkimxHopySEqPXFioCih3GPiQjqjW8dRHc+zqF+WzJ2i0vuYlb3PhbZKYqbf99 0KK71G6464k4VL4anTPL4pf2O1ZIxu6HoWkDQrZs4y84AE5srKfqBdPD11Qqk11oErtsy83lA5u GPQOostFBnsGNSg== X-Google-Smtp-Source: AGHT+IEiXMMaMpseNfIuzetRmfm0JW+UlWCUJtLCq4xShjI6Yzjro3br4yUVxfp2s/la4C1lG68H/g== X-Received: by 2002:a05:6000:4312:b0:390:ed04:a676 with SMTP id ffacd0b85a97d-39cb35be2edmr11974559f8f.22.1744105953116; Tue, 08 Apr 2025 02:52:33 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:32 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 14/16] net: phy: Add Airoha AN8855 Internal Switch Gigabit PHY Date: Tue, 8 Apr 2025 11:51:21 +0200 Message-ID: <20250408095139.51659-15-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025234_811996_80A57F52 X-CRM114-Status: GOOD ( 23.95 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for Airoha AN8855 Internal Switch Gigabit PHY. This is a simple PHY driver to configure and calibrate the PHY for the AN8855 Switch with the use of NVMEM cells. Signed-off-by: Christian Marangi --- drivers/net/phy/Kconfig | 5 + drivers/net/phy/Makefile | 1 + drivers/net/phy/air_an8855.c | 261 +++++++++++++++++++++++++++++++++++ 3 files changed, 267 insertions(+) create mode 100644 drivers/net/phy/air_an8855.c diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig index d29f9f7fd2e1..e96f61b8eaba 100644 --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig @@ -79,6 +79,11 @@ config SFP comment "MII PHY device drivers" +config AIR_AN8855_PHY + tristate "Airoha AN8855 Internal Gigabit PHY" + help + Currently supports the internal Airoha AN8855 Switch PHY. + config AIR_EN8811H_PHY tristate "Airoha EN8811H 2.5 Gigabit PHY" help diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile index 23ce205ae91d..9425ad9dbc00 100644 --- a/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile @@ -36,6 +36,7 @@ obj-y += $(sfp-obj-y) $(sfp-obj-m) obj-$(CONFIG_ADIN_PHY) += adin.o obj-$(CONFIG_ADIN1100_PHY) += adin1100.o +obj-$(CONFIG_AIR_AN8855_PHY) += air_an8855.o obj-$(CONFIG_AIR_EN8811H_PHY) += air_en8811h.o obj-$(CONFIG_AMD_PHY) += amd.o obj-$(CONFIG_AMCC_QT2025_PHY) += qt2025.o diff --git a/drivers/net/phy/air_an8855.c b/drivers/net/phy/air_an8855.c new file mode 100644 index 000000000000..a740dbaacf9a --- /dev/null +++ b/drivers/net/phy/air_an8855.c @@ -0,0 +1,261 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 Christian Marangi + */ + +#include +#include +#include +#include +#include + +#define AN8855_PHY_SELECT_PAGE 0x1f +#define AN8855_PHY_PAGE GENMASK(2, 0) +#define AN8855_PHY_PAGE_STANDARD FIELD_PREP_CONST(AN8855_PHY_PAGE, 0x0) +#define AN8855_PHY_PAGE_EXTENDED_1 FIELD_PREP_CONST(AN8855_PHY_PAGE, 0x1) + +/* MII Registers Page 1 */ +#define AN8855_PHY_EXT_REG_14 0x14 +#define AN8855_PHY_EN_DOWN_SHIFT BIT(4) + +/* R50 Calibration regs in MDIO_MMD_VEND1 */ +#define AN8855_PHY_R500HM_RSEL_TX_AB 0x174 +#define AN8855_PHY_R50OHM_RSEL_TX_A_EN BIT(15) +#define AN8855_PHY_R50OHM_RSEL_TX_A GENMASK(14, 8) +#define AN8855_PHY_R50OHM_RSEL_TX_B_EN BIT(7) +#define AN8855_PHY_R50OHM_RSEL_TX_B GENMASK(6, 0) +#define AN8855_PHY_R500HM_RSEL_TX_CD 0x175 +#define AN8855_PHY_R50OHM_RSEL_TX_C_EN BIT(15) +#define AN8855_PHY_R50OHM_RSEL_TX_C GENMASK(14, 8) +#define AN8855_PHY_R50OHM_RSEL_TX_D_EN BIT(7) +#define AN8855_PHY_R50OHM_RSEL_TX_D GENMASK(6, 0) + +#define AN8855_SWITCH_EFUSE_R50O GENMASK(30, 24) + +/* PHY TX PAIR DELAY SELECT Register */ +#define AN8855_PHY_TX_PAIR_DLY_SEL_GBE 0x013 +#define AN8855_PHY_CR_DA_TX_PAIR_DELKAY_SEL_A_GBE GENMASK(14, 12) +#define AN8855_PHY_CR_DA_TX_PAIR_DELKAY_SEL_B_GBE GENMASK(10, 8) +#define AN8855_PHY_CR_DA_TX_PAIR_DELKAY_SEL_C_GBE GENMASK(6, 4) +#define AN8855_PHY_CR_DA_TX_PAIR_DELKAY_SEL_D_GBE GENMASK(2, 0) +/* PHY ADC Register */ +#define AN8855_PHY_RXADC_CTRL 0x0d8 +#define AN8855_PHY_RG_AD_SAMNPLE_PHSEL_A BIT(12) +#define AN8855_PHY_RG_AD_SAMNPLE_PHSEL_B BIT(8) +#define AN8855_PHY_RG_AD_SAMNPLE_PHSEL_C BIT(4) +#define AN8855_PHY_RG_AD_SAMNPLE_PHSEL_D BIT(0) +#define AN8855_PHY_RXADC_REV_0 0x0d9 +#define AN8855_PHY_RG_AD_RESERVE0_A GENMASK(15, 8) +#define AN8855_PHY_RG_AD_RESERVE0_B GENMASK(7, 0) +#define AN8855_PHY_RXADC_REV_1 0x0da +#define AN8855_PHY_RG_AD_RESERVE0_C GENMASK(15, 8) +#define AN8855_PHY_RG_AD_RESERVE0_D GENMASK(7, 0) + +#define AN8855_PHY_ID 0xc0ff0410 + +struct air_an8855_priv { + bool needs_calibration; +}; + +static const u8 dsa_r50ohm_table[] = { + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 126, 122, 117, + 112, 109, 104, 101, 97, 94, 90, 88, 84, 80, + 78, 74, 72, 68, 66, 64, 61, 58, 56, 53, + 51, 48, 47, 44, 42, 40, 38, 36, 34, 32, + 31, 28, 27, 24, 24, 22, 20, 18, 16, 16, + 14, 12, 11, 9 +}; + +static int en8855_get_r50ohm_val(struct device *dev, const char *calib_name, + u8 *dest) +{ + u32 shift_sel, val; + int ret; + int i; + + ret = nvmem_cell_read_u32(dev, calib_name, &val); + if (ret) + return ret; + + shift_sel = FIELD_GET(AN8855_SWITCH_EFUSE_R50O, val); + for (i = 0; i < ARRAY_SIZE(dsa_r50ohm_table); i++) + if (dsa_r50ohm_table[i] == shift_sel) + break; + + if (i < 8 || i >= ARRAY_SIZE(dsa_r50ohm_table)) + *dest = dsa_r50ohm_table[25]; + else + *dest = dsa_r50ohm_table[i - 8]; + + return 0; +} + +static int an8855_probe(struct phy_device *phydev) +{ + struct device *dev = &phydev->mdio.dev; + struct air_an8855_priv *priv; + + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->needs_calibration = of_property_present(dev->of_node, + "nvmem-cells"); + + phydev->priv = priv; + + return 0; +} + +static int an8855_get_downshift(struct phy_device *phydev, u8 *data) +{ + int val; + + val = phy_read_paged(phydev, AN8855_PHY_PAGE_EXTENDED_1, AN8855_PHY_EXT_REG_14); + if (val < 0) + return val; + + *data = val & AN8855_PHY_EN_DOWN_SHIFT ? DOWNSHIFT_DEV_DEFAULT_COUNT : + DOWNSHIFT_DEV_DISABLE; + + return 0; +} + +static int an8855_set_downshift(struct phy_device *phydev, u8 cnt) +{ + u16 ds = cnt != DOWNSHIFT_DEV_DISABLE ? AN8855_PHY_EN_DOWN_SHIFT : 0; + + return phy_modify_paged(phydev, AN8855_PHY_PAGE_EXTENDED_1, + AN8855_PHY_EXT_REG_14, AN8855_PHY_EN_DOWN_SHIFT, + ds); +} + +static int an8855_config_init(struct phy_device *phydev) +{ + struct air_an8855_priv *priv = phydev->priv; + struct device *dev = &phydev->mdio.dev; + int ret; + + /* Enable HW auto downshift */ + ret = an8855_set_downshift(phydev, DOWNSHIFT_DEV_DEFAULT_COUNT); + if (ret) + return ret; + + if (priv->needs_calibration) { + u8 calibration_data[4]; + + ret = en8855_get_r50ohm_val(dev, "tx_a", &calibration_data[0]); + if (ret) + return ret; + + ret = en8855_get_r50ohm_val(dev, "tx_b", &calibration_data[1]); + if (ret) + return ret; + + ret = en8855_get_r50ohm_val(dev, "tx_c", &calibration_data[2]); + if (ret) + return ret; + + ret = en8855_get_r50ohm_val(dev, "tx_d", &calibration_data[3]); + if (ret) + return ret; + + ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, AN8855_PHY_R500HM_RSEL_TX_AB, + AN8855_PHY_R50OHM_RSEL_TX_A | AN8855_PHY_R50OHM_RSEL_TX_B, + FIELD_PREP(AN8855_PHY_R50OHM_RSEL_TX_A, calibration_data[0]) | + FIELD_PREP(AN8855_PHY_R50OHM_RSEL_TX_B, calibration_data[1])); + if (ret) + return ret; + ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, AN8855_PHY_R500HM_RSEL_TX_CD, + AN8855_PHY_R50OHM_RSEL_TX_C | AN8855_PHY_R50OHM_RSEL_TX_D, + FIELD_PREP(AN8855_PHY_R50OHM_RSEL_TX_C, calibration_data[2]) | + FIELD_PREP(AN8855_PHY_R50OHM_RSEL_TX_D, calibration_data[3])); + if (ret) + return ret; + } + + /* Apply values to reduce signal noise */ + ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, AN8855_PHY_TX_PAIR_DLY_SEL_GBE, + FIELD_PREP(AN8855_PHY_CR_DA_TX_PAIR_DELKAY_SEL_A_GBE, 0x4) | + FIELD_PREP(AN8855_PHY_CR_DA_TX_PAIR_DELKAY_SEL_C_GBE, 0x4)); + if (ret) + return ret; + ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, AN8855_PHY_RXADC_CTRL, + AN8855_PHY_RG_AD_SAMNPLE_PHSEL_A | + AN8855_PHY_RG_AD_SAMNPLE_PHSEL_C); + if (ret) + return ret; + ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, AN8855_PHY_RXADC_REV_0, + FIELD_PREP(AN8855_PHY_RG_AD_RESERVE0_A, 0x1)); + if (ret) + return ret; + ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, AN8855_PHY_RXADC_REV_1, + FIELD_PREP(AN8855_PHY_RG_AD_RESERVE0_C, 0x1)); + if (ret) + return ret; + + return 0; +} + +static int an8855_get_tunable(struct phy_device *phydev, + struct ethtool_tunable *tuna, void *data) +{ + switch (tuna->id) { + case ETHTOOL_PHY_DOWNSHIFT: + return an8855_get_downshift(phydev, data); + default: + return -EOPNOTSUPP; + } +} + +static int an8855_set_tunable(struct phy_device *phydev, + struct ethtool_tunable *tuna, const void *data) +{ + switch (tuna->id) { + case ETHTOOL_PHY_DOWNSHIFT: + return an8855_set_downshift(phydev, *(const u8 *)data); + default: + return -EOPNOTSUPP; + } +} + +static int an8855_read_page(struct phy_device *phydev) +{ + return __phy_read(phydev, AN8855_PHY_SELECT_PAGE); +} + +static int an8855_write_page(struct phy_device *phydev, int page) +{ + return __phy_write(phydev, AN8855_PHY_SELECT_PAGE, page); +} + +static struct phy_driver an8855_driver[] = { +{ + PHY_ID_MATCH_EXACT(AN8855_PHY_ID), + .name = "Airoha AN8855 internal PHY", + /* PHY_GBIT_FEATURES */ + .flags = PHY_IS_INTERNAL, + .probe = an8855_probe, + .config_init = an8855_config_init, + .soft_reset = genphy_soft_reset, + .get_tunable = an8855_get_tunable, + .set_tunable = an8855_set_tunable, + .suspend = genphy_suspend, + .resume = genphy_resume, + .read_page = an8855_read_page, + .write_page = an8855_write_page, +}, }; + +module_phy_driver(an8855_driver); + +static struct mdio_device_id __maybe_unused an8855_tbl[] = { + { PHY_ID_MATCH_EXACT(AN8855_PHY_ID) }, + { } +}; + +MODULE_DEVICE_TABLE(mdio, an8855_tbl); + +MODULE_DESCRIPTION("Airoha AN8855 PHY driver"); +MODULE_AUTHOR("Christian Marangi "); +MODULE_LICENSE("GPL"); From patchwork Tue Apr 8 09:51:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042660 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 75711C3600C for ; Tue, 8 Apr 2025 10:21:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=oQ6Ge5N/x+UWP4V38Q6zLxAFPEUt65Fhe18GDR23LPg=; b=uFL+RWlrLHCCKY0vBWllhEOS0Z y2Cr90rHSCy3kYgx/fCvh2F1fqznlTnZO0i+vzkCCsVNRAcSFdTLtfNEICgjS89fJFDuyouOVmGJ0 oru96MsnnQ3nopKzQ20xFHxXAUkfd4Q9NP3n/4J3l3kX+oEpi5hpcP0IPEQGmlLA/9AjMEktNVAm8 +GDdkle4lK5NHYjR5K2QvFuSB6GFtWtvk2HeiZevkIk9B29Zj8hJkI+hx/tEEpuabNgTLbgcltkW+ G2xbDAc02wunMs5hS8XHgDB9AuV0B4WN/jJB/Fpr3u+NIFHRlBU0VE/ON2H/8/GQMHTit9T1lKS4f jDprTBZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u264d-00000003dHq-2qiP; Tue, 08 Apr 2025 10:20:55 +0000 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25dE-00000003WDx-1Beb; Tue, 08 Apr 2025 09:52:37 +0000 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-39ac8e7688aso3959439f8f.2; Tue, 08 Apr 2025 02:52:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105955; x=1744710755; darn=lists.infradead.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=oQ6Ge5N/x+UWP4V38Q6zLxAFPEUt65Fhe18GDR23LPg=; b=jVfCmAMxZixdjY7FvMCUs+GHJ7bRHFZ4jJmSZRMihaRSQTl0BWeninrd/sJO4BWajz HrKs+d5FZsCqMdj1E7jfDHaMwZc7vIuPFbmx6x4IC+OkEaKWM3uwmMT/REv1E3XVrI5b IIJSFVy7hoSjRfPga4oMy6PWk3eDcG9o6nLHLudkpS/FbTs6XS2OUT6F7XHyzl8MOASq xz+piSRfeO5YkfzNBPgk+xJ1hMGYf7YsnnIQ9wlIrmUPoRWz0VyxKVc+2yErkCfRcJ/2 PGfYOpEeXENMJ8gD7p+q2aVQzP1PahYmuchV091ibjk+cBzH8GHsQUL4VMDAL5ue3WP6 aipg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105955; x=1744710755; 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=oQ6Ge5N/x+UWP4V38Q6zLxAFPEUt65Fhe18GDR23LPg=; b=qHns8dcbPKaswAyDb1ixj2lvBVLDKaGZ/yk19wvUaecTj8h+Nz4H6+u3gxL/gKSE6k EpV9ZWxMKmfvMgHehSCfWep5QC77Au7SVuXaMd5GsqZ6rDeTiJVZ42kV1sd+qmJJ2hQE IBq2cw3PchKy7P5M5v411afIIvnKUvKJ9OVuKy2IJKFxmByRhryxOYTmjfRG1nxxr5E6 rOLw1vgLxH7g3wh+OM+Wvki+15EYCJd1yzEn2kJp6PWddRTNJqTvAd4jM8W4hHA5iA9r NIuuMEYKyizqIBQqs1Y/A4c4Bh5JKKwPMyqLJhAAXhYX9i5lTCZTG5ckZ7XU/BrAjU2X Ntxg== X-Forwarded-Encrypted: i=1; AJvYcCUPquETNFSnWzENwU5+UAAOIUgwZoFcSLMRPeg3cYhbu+wgNytiVbzq3oDsk93fj+uhEvDSPrFsUjogXad6z2t8@lists.infradead.org, AJvYcCW2uH8JFmiyQrQtjWl9plXkkBTh6EZnNqWl1XED6Nh5I0436mCFB1iqJ/00jiRwXHxsgi6sWxDjy0lYjsPb6Rs=@lists.infradead.org X-Gm-Message-State: AOJu0Yy9/cvwrjSDbn4TaeaBfxuq4pStwMCJHy4/MpZT9EosHUR0tvI8 B3TlApVic7l8mPUhqXY1dKq+kss2Hb5MsE2QTwlx4547tY6wmkD6 X-Gm-Gg: ASbGncu3IcWk6CDYG9lTCJhIjyDrCS+JCwyKe7z2KFeexKXX9Ki+njpn3Wry7EF7Zji T4t+tZaWU3bL3+UlTKqQfM5ZXMlNKI1IxoVliNDCpgec0Pywmrhh0WqqleCaFHc9boqpVha34N5 QApYO9slrZds+5PTf17JyGkczyGsSIVqTjvouc0NFPTAkQejZe6uBkD+jNVnilf08MTKzWggNeR dmNgIcpsntl3MlNzHS1oaSk84YzGgPu/TDWjIGUo+oXga4RaFKowcR47ks2I8abpwmVxkbkoffA VUcVdu8GDFbrieewzY801C8LFdEdR8dwE7v4AvipFefpbJAjaAYS6pW1QG2AahI+jjkluMNNqIy hLr8L+k3DW5GgsA== X-Google-Smtp-Source: AGHT+IHpMGk4Yds8HZnyNiJDTf38Jb7LdTvCKQAIkk5y2ICjoSbvIt78dAK6v2Z6pag114kDRk80RQ== X-Received: by 2002:a05:6000:2403:b0:399:71d4:b8 with SMTP id ffacd0b85a97d-39d6fc293edmr7839272f8f.23.1744105954688; Tue, 08 Apr 2025 02:52:34 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:34 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 15/16] MAINTAINERS: add myself as maintainer for AN8855 Date: Tue, 8 Apr 2025 11:51:22 +0200 Message-ID: <20250408095139.51659-16-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025236_324117_11620F7B X-CRM114-Status: GOOD ( 11.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add myself as maintainer for AN8855 DSA driver and all the related subdriver (mfd, mdio, phy, nvmem) Signed-off-by: Christian Marangi --- MAINTAINERS | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 4c5c2e2c1278..74f99bea4875 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -729,6 +729,24 @@ S: Maintained F: Documentation/devicetree/bindings/net/airoha,en7581-eth.yaml F: drivers/net/ethernet/airoha/ +AIROHA AN8855 DSA DRIVER +M: Christian Marangi +L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) +L: netdev@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/mfd/airoha,an8855.yaml +F: Documentation/devicetree/bindings/net/airoha,an8855-mdio.yaml +F: Documentation/devicetree/bindings/net/airoha,an8855-phy.yaml +F: Documentation/devicetree/bindings/net/dsa/airoha,an8855-switch.yaml +F: Documentation/devicetree/bindings/nvmem/airoha,an8855-efuse.yaml +F: drivers/mfd/airoha-an8855.c +F: drivers/net/dsa/an8855.c +F: drivers/net/dsa/an8855.h +F: drivers/net/mdio/mdio-an8855.c +F: drivers/net/phy/air_an8855.c +F: drivers/nvmem/an8855-efuse.c + AIROHA PCIE PHY DRIVER M: Lorenzo Bianconi L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) From patchwork Tue Apr 8 09:51:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14042661 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 58DF9C3600C for ; Tue, 8 Apr 2025 10:22:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Q/W0x52D15NfB+BOP8T/m/ZC7owLNeVqs+BHfnihvT0=; b=ceippAhBqL8sxWQWZVRWxCSlaJ KetV0evOo0Mt0V3LYD8NVi71CD6F9i3D7toXTqTlc+YbfAzitzu74f7RvWYA/G4OpSRjSRnFZ1vok xjkVLHh2uEJGlwFOXK/WAb6F/yBrHsQdD7sHi0ldf5Dx+CpWAfmdmdAtYD7DJyYDMri3TzuwNEo0v dJR4NWAFZ0TX82gHwrqUnMKW9ZX7mCp09RlmlaPHbWvv4I4BVBbWZkClkO4McPEQHrZPV2oTZv0BM KmHI8/W7nRs7LKdqBYr/dLZqL3FeE/ytuUAiWbgRQJmqIFNZ3kneymQW/uMawgg4JYdjN0h3ThPXq cUlwoH5Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u266R-00000003deI-2oLx; Tue, 08 Apr 2025 10:22:47 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u25dF-00000003WEb-3nlx; Tue, 08 Apr 2025 09:52:39 +0000 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-43ea40a6e98so46538505e9.1; Tue, 08 Apr 2025 02:52:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744105956; x=1744710756; darn=lists.infradead.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=Q/W0x52D15NfB+BOP8T/m/ZC7owLNeVqs+BHfnihvT0=; b=gfoVPyIDAArtJJUJIxAP/8QjjDSRgZb/0JRtdp5fDi8MnwvSWkXvNBw0rO8ZGMhjqh DPfgypmT6iu081coibbGKiUWQJu4sUSKpMYIJpHeMPlxPJkpsOBXzVk/1ju+qHbuzzuj 8POapGopbV/uR0EjdcSTbEz/CGnIq04ariydRWLkTb5U4fXds1GIdC84cVdJrzf6ZxTl m5Bo5F5QqQz9OVXcW2J0dIOaoJowtG4DH/wBqtRMVSd8SoPxHXrDlQKdoN/2sULDBbMo L2j7Bl00Swx3vrZZ5syBrarZjxhXFvVAhw2pZRhliU2NyonIjUYrST+VIeHWE69r/Bi6 jWTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744105956; x=1744710756; 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=Q/W0x52D15NfB+BOP8T/m/ZC7owLNeVqs+BHfnihvT0=; b=XAorfzXUCt3d/Cav+K7/PxI/c6DTe99vvDGu6robjPvNkMWoWsf1OR1ZONRVtC3KsJ iUg5kQkAcSP+3IvgH63R9N4De0osxEzL18oY2I0o1RovrTAuKnvjOS6kavEVJ05gUryM eG2Em/Hzh+ylfl049oxxfgVT7kBMTv5stu7IinQjYA9AS5yAb5rUlfaTqoNJ5afL2NQh 9jUhkIwWfCqh8mzXqKbvs3pELSNYQ36H0cVT23Pm6Nh2oQEG1UySQaj96r+ej9xM6Em4 bQPazv6MB1AthVhvHjMrKb8SJMs63UmPDeiRDTFN0Hyr90dDlTYjRbWRRskbHQTvXbxl 1grg== X-Forwarded-Encrypted: i=1; AJvYcCXT3q/rNo+I4tE5OJkRZo86hd7btWXcudkyyw2YShwdpzuwsp6vTMwEZI1SnUD/pCa1vhQhj3feQ9EEicHBW+VL@lists.infradead.org, AJvYcCXktO6WQ95czAeQO+xZYRIhafAuDurbxUkyCIFYW7qBllFoTIN1cyWsj8C3M/BfAqr9LkjI2UHbQP4da01ZCnw=@lists.infradead.org X-Gm-Message-State: AOJu0Yy3a37p5Aa4wwyg9vNFkRAx2hQKMiDRy8SKCpmN6Cx7RdqMCOJR aB4i61GyFTQJvf/9Rqh0OvN1673/DsXo5nM9YtLocVtRgMyaudkJ X-Gm-Gg: ASbGnctdKV0f2JO3wgX+sitef48vk6PR7YuUStFYwPgr9wJuzw0qEf5YrzOHFldnVyV ogME9VEKdN2pb7lAz/ljLlkpAKjYSwuHlrBpTwRYTkiABao5bHMni9vYwGckG1/jRSJA5sgVd2O x8oLFKUWmkpYHL0kCFOFnWG6+aqIiKcoFyWEpb40XpoWE1Zbz95sECI7gGfOvtDaC70J0AYMTkR PxZ6OKr77r57RomxbSBdGYdKFKdtZANTZN7Eg6/o/xMxoI5xSGoLyfxTFAxUWllHwON/3C07/zT Ids6pSk5/enkrpQzyj3sVNeDUKHbnvNUwipMgCx1APQWDa8S/iYK9gMQwrDt5JFpmglFegXl+4C 9eZmZ4YBwyrTzTw== X-Google-Smtp-Source: AGHT+IHnIRihboK4mhsVHOwL3IqceZiuQzPsMe0EptmYYIze/kCrhf/3JVkvsqSSB53X5rHEN/sF5A== X-Received: by 2002:a05:600c:1c17:b0:43c:f64c:44a4 with SMTP id 5b1f17b1804b1-43ee063fbc7mr115902005e9.8.1744105956238; Tue, 08 Apr 2025 02:52:36 -0700 (PDT) Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it. [93.34.88.225]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-39c3020dacfsm14493310f8f.72.2025.04.08.02.52.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 02:52:35 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Simon Horman , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v14 16/16] net: dsa: tag_mtk: add comments about Airoha usage of this TAG Date: Tue, 8 Apr 2025 11:51:23 +0200 Message-ID: <20250408095139.51659-17-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250408095139.51659-1-ansuelsmth@gmail.com> References: <20250408095139.51659-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_025237_958591_3F794DDA X-CRM114-Status: GOOD ( 12.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add comments about difference between Airoha AN8855 and Mediatek tag bitmap. Airoha AN88555 doesn't support controlling SA learning and Leaky VLAN from tag. Although these bits are not used (and even not defined for Leaky VLAN), it's worth to add comments for these difference to prevent any kind of regression in the future if ever these bits will be used. Signed-off-by: Christian Marangi --- net/dsa/tag_mtk.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/dsa/tag_mtk.c b/net/dsa/tag_mtk.c index b670e3c53e91..ac3f956abe39 100644 --- a/net/dsa/tag_mtk.c +++ b/net/dsa/tag_mtk.c @@ -18,6 +18,9 @@ #define MTK_HDR_XMIT_TAGGED_TPID_88A8 2 #define MTK_HDR_RECV_SOURCE_PORT_MASK GENMASK(2, 0) #define MTK_HDR_XMIT_DP_BIT_MASK GENMASK(5, 0) +/* AN8855 doesn't support SA_DIS and Leaky VLAN + * control in tag as these bits doesn't exist. + */ #define MTK_HDR_XMIT_SA_DIS BIT(6) static struct sk_buff *mtk_tag_xmit(struct sk_buff *skb,