From patchwork Mon Mar 20 22:16:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181967 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 52BCFC77B60 for ; Mon, 20 Mar 2023 22:19:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=a4pIvRAlLso496fygt7/R6U3zG+8eZGV+VBiyDecq80=; b=ESHbbymRCwVjZQ F8y53e/zL8x/h8GjpjRoYhjDcMf5lP4SvWvvyOS4XC37B38gbykMzTHaJbYeZanEuZlYadI05u7Jz y2XomFN5I3x2u3mrcCJw0MlWOYC1rfThJ9zUpHcn398Y/knZ2KbTTlh2+BL2Z/i55Pehwv9HMW3mm o2U4AmqiaJXglNmAvj/CMXTBMkiGPCq+TqEzXAsZUln6eEnKCtWUT0UxNH1ROE32pnNwpC5V5Rcr9 NjIaL1PYkkqYnfL0f0jjMt6Tl6X79YaZWG3R9L5+T37Grci7rQ0C2Rj9+VDeu/n6LTVhSGg77fudU jYDNhhJkIaDwYhEIDHSw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNpa-00AcpL-2Y; Mon, 20 Mar 2023 22:18:18 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNpS-00AcjT-1Y for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:18:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350689; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YlOqWVli75QXNprPmQyXqnWUqk+FMVr+7rpbpXO8i/U=; b=JVejl5sMwYVj42T9wJ8Va8ckKb2/8skCd2ey5BldaYJhzvELH6fQ8m7s8l3b8Fn9jmjNsm 4cKEUbEgppaUI4vhxsXSJ50YdlGv2ifbKqCiTHS4Jr1wwIJKJTxqdz0Gj9CLh2J1R78iFD Mzj2AhSnotPbAtQ2Q2RckPD5+qG2UD4= Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com [209.85.210.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-380-PI75aGL3NOCFDkIi6Ak8_Q-1; Mon, 20 Mar 2023 18:16:37 -0400 X-MC-Unique: PI75aGL3NOCFDkIi6Ak8_Q-1 Received: by mail-ot1-f71.google.com with SMTP id y14-20020a056830208e00b006943ddbfb7eso6244708otq.5 for ; Mon, 20 Mar 2023 15:16:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350597; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YlOqWVli75QXNprPmQyXqnWUqk+FMVr+7rpbpXO8i/U=; b=s9TKDGLlqevYW0jfG6inkxKVihI1GVQPkwR5BMA6F+gVru8QrddWzyx8qqaHdMX8vM 5uG3EM2V2pxwcXHi9yKBbwTaFXioXD+5lrpPVVKXh6yYwhjtIwtHjI04dTkcONkS5gtt q1PoE3Forh7MJY1SjsummljsIY5kvtnDTlbg65bgDEr9IhYQiCdn0tX7lwrTfTuYHm73 agQ4LyWTcSIDI5bvwzMMQ46cluStyXTzUAJhIyeNstv+UFI/nL40XbB3Ar5Tdoa2EShk Loe4viuFs1rJ37ptArMjMcNSC8Hu62hK8peYT4B+aPIdKqmBZ48mDtBMkBA6esMpKyU/ Kzuw== X-Gm-Message-State: AO0yUKXN1rlQtM1zIMIzhXNGHyifMLqyNLJLPlCBgmUoVtrqHgEey1d1 cw9kYHgn8e/xgcrq/R6yP584yFeQiKVtNt06wl4mVscTZ0xuMuoIHNxOInxkn7dsQeSZ4U2Hzil gNYFs7f84hsx0D55mwu/tw01Es+2YDlWdxL4= X-Received: by 2002:a4a:d50d:0:b0:525:432a:90b0 with SMTP id m13-20020a4ad50d000000b00525432a90b0mr826260oos.1.1679350597071; Mon, 20 Mar 2023 15:16:37 -0700 (PDT) X-Google-Smtp-Source: AK7set+sFN8OAUwmdLsJ9ZBRkT2O9PURonEVDvf0kVHAlkwFMtWoYbZeUAmr9vMfEPdP9CsKmxVlEQ== X-Received: by 2002:a4a:d50d:0:b0:525:432a:90b0 with SMTP id m13-20020a4ad50d000000b00525432a90b0mr826216oos.1.1679350596785; Mon, 20 Mar 2023 15:16:36 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:16:36 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 01/12] dt-bindings: net: snps,dwmac: Update interrupt-names Date: Mon, 20 Mar 2023 17:16:06 -0500 Message-Id: <20230320221617.236323-2-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151810_615006_84E25393 X-CRM114-Status: GOOD ( 10.46 ) 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 From: Bhupesh Sharma As commit fc191af1bb0d ("net: stmmac: platform: Fix misleading interrupt error msg") noted, not every stmmac based platform makes use of the 'eth_wake_irq' or 'eth_lpi' interrupts. So, update the 'interrupt-names' inside 'snps,dwmac' YAML bindings to reflect the same. Signed-off-by: Bhupesh Sharma Signed-off-by: Andrew Halaney Reviewed-by: Krzysztof Kozlowski --- Changes since v1: * Dropped Krzysztof's Acked-by since changes requested * Changed interrupt-names items per Krzysztof Documentation/devicetree/bindings/net/snps,dwmac.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 16b7d2904696..df4c5d184446 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -105,7 +105,7 @@ properties: minItems: 1 items: - const: macirq - - const: eth_wake_irq + - enum: [eth_wake_irq, eth_lpi] - const: eth_lpi clocks: From patchwork Mon Mar 20 22:16:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181932 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 4AE0DC7619A for ; Mon, 20 Mar 2023 22:17:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MDDyZ1tQvsO243oVyXyyuZjEG5XgyA+lW7dKBv8eLz4=; b=v1hwTZj4od8/Uy LT1CxpgJ79fznY9Pyks5ni7hRvOF7DJM91aY4AJHW+0XYM8GbmsUSG902/HVM84UHeO+SN2Gx7Cl9 QRIx9a5MQWXgIUBaAWnBTGX//MLVqV6s/hcYVedMiTJ+pULncXsgmDQF86FJF5XmJPJeaX6RKrDi8 BtYLu1LfAQn45UQ7MVlCyEcJcQWGoEYtIV0aHAvv2Pm41jHbHePNq2/GIMIaK+K69aBFeSKXnuk0a H2uNLzGcVxzsDwovAnZN+H8aiJmyixlrx3nH1AkgnBspTqPrfEUoesN1FZwzojxKkXALKj4hvF7tq zHDDxI/whPMkBPwG8zYA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNo8-00AbyN-2c; Mon, 20 Mar 2023 22:16:48 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNo5-00AbxS-2B for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:16:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350604; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DO1JoA7rf1NN/v1DlyTM5EYQQrfJrSOpwTi6FaNOaeQ=; b=dg/6HvQ58tb620E0BM7TpFtAQs0sFbab2CHn4fKieughqwLi+mizXVUXQlrD1laf+S9ouJ OxtfaTlpozGECvuVKeJRtNx2BBDbWZggc/xhJxNlDXEMHKsNV55HxnOUASxoEcIgasjoF7 iVAnVYtpql0qkD5FEagj/8MXwEsD1f4= Received: from mail-oi1-f198.google.com (mail-oi1-f198.google.com [209.85.167.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-589-mz2t6LITPXuG1RQnrPBilg-1; Mon, 20 Mar 2023 18:16:43 -0400 X-MC-Unique: mz2t6LITPXuG1RQnrPBilg-1 Received: by mail-oi1-f198.google.com with SMTP id bi38-20020a05680818a600b0037b36626937so5713186oib.13 for ; Mon, 20 Mar 2023 15:16:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350602; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DO1JoA7rf1NN/v1DlyTM5EYQQrfJrSOpwTi6FaNOaeQ=; b=jcPjHs+QhUUsIwjqHQcmmWpUbu64JAR7W+Za4EkVkVz8frHF1gL8fBrwis2FNRFOlQ 2RpeiNAhmxv0Ee4qmrgv9xa9qacKsBMNpLz/x2Gb7zutUe/FLzOu6Oz6YlofxZ4uo4KV ndksBcOfaaO4uKcNjt760wI/TVPdNlVkfLxL2JwwqmMiqtJoHJ09tY5KJ01wL0k7areK 5o3Wy+YCMZtM5MqjE9SBo4OlmsPjHc5g6IVk4e6i+PLCHlNGvsy1pQN2OS2gpIFO3qrA yc1s3F/9KZ5BDaxGrf7x9d+Q52GrCm/qDAfOkfCVnyNbxCa5y+jh5i6dHexoEDSDFap0 f7Wg== X-Gm-Message-State: AO0yUKVh4OZQoVZ+szD0dKKtb+Q69DSviBuyN1L3mQLi6w5kLTVIPuXu fU4PlaTQfm6nzD4fSbFimlFGWghpw5ZxLs7MMJOUb2XXdoEkwtrelGwIs5kf1PjH/+hggeHLJm9 RZNsMcYK79aSiuXP+iAvH5T/PzgbTyxcTsfY= X-Received: by 2002:a05:6830:18da:b0:69f:3fd:d03e with SMTP id v26-20020a05683018da00b0069f03fdd03emr147162ote.12.1679350602146; Mon, 20 Mar 2023 15:16:42 -0700 (PDT) X-Google-Smtp-Source: AK7set+WqeyPEu+9Z1p1lpdrw7AyksGa+7Eo7VAfnk6kC1FQXbmvfF3G9lqNRW2EAEBEJNNTLjJb6w== X-Received: by 2002:a05:6830:18da:b0:69f:3fd:d03e with SMTP id v26-20020a05683018da00b0069f03fdd03emr147141ote.12.1679350601927; Mon, 20 Mar 2023 15:16:41 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:16:41 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Krzysztof Kozlowski , Andrew Halaney Subject: [PATCH net-next v2 02/12] dt-bindings: net: snps,dwmac: Add Qualcomm Ethernet ETHQOS compatibles Date: Mon, 20 Mar 2023 17:16:07 -0500 Message-Id: <20230320221617.236323-3-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151645_880466_9131D457 X-CRM114-Status: UNSURE ( 8.50 ) X-CRM114-Notice: Please train this message. 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 From: Bhupesh Sharma Add Qualcomm Ethernet ETHQOS compatible checks in snps,dwmac YAML binding document. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Bhupesh Sharma Signed-off-by: Andrew Halaney --- Changes since v1: * None Documentation/devicetree/bindings/net/snps,dwmac.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index df4c5d184446..154955718246 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -65,6 +65,8 @@ properties: - ingenic,x2000-mac - loongson,ls2k-dwmac - loongson,ls7a-dwmac + - qcom,qcs404-ethqos + - qcom,sm8150-ethqos - renesas,r9a06g032-gmac - renesas,rzn1-gmac - rockchip,px30-gmac @@ -625,6 +627,8 @@ allOf: - ingenic,x1600-mac - ingenic,x1830-mac - ingenic,x2000-mac + - qcom,qcs404-ethqos + - qcom,sm8150-ethqos - snps,dwmac-4.00 - snps,dwmac-4.10a - snps,dwmac-4.20a From patchwork Mon Mar 20 22:16:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181935 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 DF6ECC77B61 for ; Mon, 20 Mar 2023 22:17: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: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2e4OBesaqOuhMJDyn2i/sgaOqbdPEO95e7t8XesiHAY=; b=yuDySumC6UEr/+ z8eH0L59GrKv0DREfGhoYtuXgJ+D3wWpud6pp9JmtWboLFje0Mv1FXKcOtCbMudRJIYbkTBswD6cN N9wZoRM2p32+cGetxgaqeZ3Q9KxOBDLntDXZHq8KukMPovpApt6ZFJ3agrPW+DkjMgGPnzIRfXhcP PsEa4wg4+/Y4t2xYJT8uQewBJEbwPeq1MCN0kRXborWa3A0s/OGFTkeHexs4xNCs+s5SMk7PlhfiJ 2hfefKRgbA34eXYhs5zc9WmsjHli9JBms7Ohc6grSTJVmR01jNvHbx2mtJ4Xge65DkR7VAGgRAxux Q6EdtwVllIA5ZJDXRQEg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNoG-00Ac04-0T; Mon, 20 Mar 2023 22:16:56 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNo8-00Abxw-1C for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:16:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350607; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=r/ot2Xkf24qwnz9EhwTuiZDpTGu6kcZ/mFs+74oeWwI=; b=gPvqf/cadXL6a8/Fmuaxfj7G74SNgjDeFHYdpztVEGcLMklSa4UKwGBRB5WBfgjffz+4nR HEoYaflbuKm/3IFliscxLKmBlIURlG6o3IwJCk77XaiK6SrZ5ASDDWx/U5WQ2V0nzxo5eR mvec44UgvFO2lGy+ftE6BaPi15jEQow= Received: from mail-oa1-f71.google.com (mail-oa1-f71.google.com [209.85.160.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-214-XC9okBAiMKScTXs9vk62-A-1; Mon, 20 Mar 2023 18:16:46 -0400 X-MC-Unique: XC9okBAiMKScTXs9vk62-A-1 Received: by mail-oa1-f71.google.com with SMTP id 586e51a60fabf-17abb9d4b67so7667700fac.5 for ; Mon, 20 Mar 2023 15:16:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r/ot2Xkf24qwnz9EhwTuiZDpTGu6kcZ/mFs+74oeWwI=; b=YZgDlfPFojonofA15teayik7iTzAZe9ab65oeA7XyttJw2Nh7lRR0BWZhkLFFgQZZA kCvPjlrR+Ins79d+HWAVHiOIZHwAWNb21UfoL9leKCULxoir/ibBzDFjpOp8/mI0a+XR PvtJwWasZEH69d3xiwXDD/AawjOcsFDBe3y6rK9DiTtBmwiyg25u+etZ6qyWvkHWQeyb OYeA+isS32ByI82C41KA4qnxUFu3sKqPtzH47Qr2dzAgB6ikRkuPEWtRZuZR1Fz6fpiu PY9/WP+8qqISHioWeBo7hZ9TceFDeiMGS4TbPunlWSvJDMIwOcf9gmzP3RDdusaLKhwl 6dMA== X-Gm-Message-State: AO0yUKVfviLuoIliz4aOPtj+lgKSjHcnyymwFakXInc+Rib6Qvg0tITZ d6BCnlhGMKjxIPlNEB4DEN8S4V46f9BvYS+VzWEAJZrE/vnKJ8b9ybz13BksZwDnXWAe+s4tSIx 11at3SwyulE84S20/Mxsb9quNKi6FHR1g9Zg= X-Received: by 2002:a4a:4996:0:b0:538:cf7f:d5cb with SMTP id z144-20020a4a4996000000b00538cf7fd5cbmr651087ooa.1.1679350605753; Mon, 20 Mar 2023 15:16:45 -0700 (PDT) X-Google-Smtp-Source: AK7set9kDCvs/hMyA1H1VJAJG9MTn395Q+r3/RIKa2vypl2BUh9Ww+k7SvCxZsj/jYEtaffjpe2I2g== X-Received: by 2002:a4a:4996:0:b0:538:cf7f:d5cb with SMTP id z144-20020a4a4996000000b00538cf7fd5cbmr651082ooa.1.1679350605543; Mon, 20 Mar 2023 15:16:45 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:16:45 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 03/12] dt-bindings: net: qcom,ethqos: Convert bindings to yaml Date: Mon, 20 Mar 2023 17:16:08 -0500 Message-Id: <20230320221617.236323-4-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151648_486770_9A96296B X-CRM114-Status: GOOD ( 19.64 ) 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 From: Bhupesh Sharma Convert Qualcomm ETHQOS Ethernet devicetree binding to YAML. In doing so add a new property for iommus since newer platforms support using one, and without such make dtbs_check fails on them. While at it, also update the MAINTAINERS file to point to the yaml version of the bindings. Signed-off-by: Bhupesh Sharma [halaney: Remove duplicated properties, add MAINTAINERS and iommus] Signed-off-by: Andrew Halaney Reviewed-by: Krzysztof Kozlowski --- Changes since v1: * Drop redundant wording in binding description (Krzysztof) * Document iommus addition explicitly in commit message (Krzysztof) .../devicetree/bindings/net/qcom,ethqos.txt | 66 ----------- .../devicetree/bindings/net/qcom,ethqos.yaml | 110 ++++++++++++++++++ MAINTAINERS | 2 +- 3 files changed, 111 insertions(+), 67 deletions(-) delete mode 100644 Documentation/devicetree/bindings/net/qcom,ethqos.txt create mode 100644 Documentation/devicetree/bindings/net/qcom,ethqos.yaml diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.txt b/Documentation/devicetree/bindings/net/qcom,ethqos.txt deleted file mode 100644 index 1f5746849a71..000000000000 --- a/Documentation/devicetree/bindings/net/qcom,ethqos.txt +++ /dev/null @@ -1,66 +0,0 @@ -Qualcomm Ethernet ETHQOS device - -This documents dwmmac based ethernet device which supports Gigabit -ethernet for version v2.3.0 onwards. - -This device has following properties: - -Required properties: - -- compatible: Should be one of: - "qcom,qcs404-ethqos" - "qcom,sm8150-ethqos" - -- reg: Address and length of the register set for the device - -- reg-names: Should contain register names "stmmaceth", "rgmii" - -- clocks: Should contain phandle to clocks - -- clock-names: Should contain clock names "stmmaceth", "pclk", - "ptp_ref", "rgmii" - -- interrupts: Should contain phandle to interrupts - -- interrupt-names: Should contain interrupt names "macirq", "eth_lpi" - -Rest of the properties are defined in stmmac.txt file in same directory - - -Example: - -ethernet: ethernet@7a80000 { - compatible = "qcom,qcs404-ethqos"; - reg = <0x07a80000 0x10000>, - <0x07a96000 0x100>; - reg-names = "stmmaceth", "rgmii"; - clock-names = "stmmaceth", "pclk", "ptp_ref", "rgmii"; - clocks = <&gcc GCC_ETH_AXI_CLK>, - <&gcc GCC_ETH_SLAVE_AHB_CLK>, - <&gcc GCC_ETH_PTP_CLK>, - <&gcc GCC_ETH_RGMII_CLK>; - interrupts = , - ; - interrupt-names = "macirq", "eth_lpi"; - snps,reset-gpio = <&tlmm 60 GPIO_ACTIVE_LOW>; - snps,reset-active-low; - - snps,txpbl = <8>; - snps,rxpbl = <2>; - snps,aal; - snps,tso; - - phy-handle = <&phy1>; - phy-mode = "rgmii"; - - mdio { - #address-cells = <0x1>; - #size-cells = <0x0>; - compatible = "snps,dwmac-mdio"; - phy1: phy@4 { - device_type = "ethernet-phy"; - reg = <0x4>; - }; - }; - -}; diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml new file mode 100644 index 000000000000..88234a2010b1 --- /dev/null +++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml @@ -0,0 +1,110 @@ +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/qcom,ethqos.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Ethernet ETHQOS device + +maintainers: + - Bhupesh Sharma + +description: + dwmmac based Qualcomm ethernet devices which support Gigabit + ethernet (version v2.3.0 and onwards). + +allOf: + - $ref: snps,dwmac.yaml# + +properties: + compatible: + enum: + - qcom,qcs404-ethqos + - qcom,sm8150-ethqos + + reg: + maxItems: 2 + + reg-names: + items: + - const: stmmaceth + - const: rgmii + + interrupts: + items: + - description: Combined signal for various interrupt events + - description: The interrupt that occurs when Rx exits the LPI state + + interrupt-names: + items: + - const: macirq + - const: eth_lpi + + clocks: + maxItems: 4 + + clock-names: + items: + - const: stmmaceth + - const: pclk + - const: ptp_ref + - const: rgmii + + iommus: + maxItems: 1 + +required: + - compatible + - clocks + - clock-names + - reg-names + +unevaluatedProperties: false + +examples: + - | + #include + #include + #include + + ethernet: ethernet@7a80000 { + compatible = "qcom,qcs404-ethqos"; + reg = <0x07a80000 0x10000>, + <0x07a96000 0x100>; + reg-names = "stmmaceth", "rgmii"; + clock-names = "stmmaceth", "pclk", "ptp_ref", "rgmii"; + clocks = <&gcc GCC_ETH_AXI_CLK>, + <&gcc GCC_ETH_SLAVE_AHB_CLK>, + <&gcc GCC_ETH_PTP_CLK>, + <&gcc GCC_ETH_RGMII_CLK>; + interrupts = , + ; + interrupt-names = "macirq", "eth_lpi"; + + rx-fifo-depth = <4096>; + tx-fifo-depth = <4096>; + + snps,tso; + snps,reset-gpio = <&tlmm 60 GPIO_ACTIVE_LOW>; + snps,reset-active-low; + snps,reset-delays-us = <0 10000 10000>; + + pinctrl-names = "default"; + pinctrl-0 = <ðernet_defaults>; + + phy-handle = <&phy1>; + phy-mode = "rgmii"; + mdio { + #address-cells = <0x1>; + #size-cells = <0x0>; + + compatible = "snps,dwmac-mdio"; + phy1: phy@4 { + compatible = "ethernet-phy-ieee802.3-c22"; + device_type = "ethernet-phy"; + reg = <0x4>; + + #phy-cells = <0>; + }; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 30ca644d704f..a58b1d1d0626 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17282,7 +17282,7 @@ M: Vinod Koul R: Bhupesh Sharma L: netdev@vger.kernel.org S: Maintained -F: Documentation/devicetree/bindings/net/qcom,ethqos.txt +F: Documentation/devicetree/bindings/net/qcom,ethqos.yaml F: drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c QUALCOMM FASTRPC DRIVER From patchwork Mon Mar 20 22:16:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181934 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 867F6C77B62 for ; Mon, 20 Mar 2023 22:17: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: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8oFPOPiesXiMn2Wxdk5IFgZz1pTHcJDlO6NM5V8nkmo=; b=a8SlY7Sq1SepTC ls0qgy2c8sZRxVVAeiQk3XBrfhXcVAyWTl1aBMDXYB+RPrJjRh9Dd96pDgblp5imPGqANdWFVZ6I3 ch7DX9pmp1gmGSv1zh34bR5pYEf+YOom2mG10sy8qA6Z2FJxow/Eh3uLd4KEzx09ruQbjcQaGzf+V BUmx7SRmPuS4LMzxTvZ9Upv1ki4HdUPnNZmlObu5fvBXrMISs/ktOQZ9KejaUvXICZCDZQtzrA27w h2gsmB6O5FrUPebJnTIpZ/WcMFaTAobt0xNX0mnd00XfZiqiTM7fMSBb4pOJEnKcB/504cOJEUx2K 6kLb0CZUUTqNiMw0qjHg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNoH-00Ac0g-0l; Mon, 20 Mar 2023 22:16:57 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoD-00AbzH-00 for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:16:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m8h1yVtGIRYCv86TmWwnywGAFGMc0IfZHGCd5EFi+qY=; b=e4GE4GXcRGtJPNTJgz2IbDYstZXbhfZmCjvLxjCFasa4StjvOkgstUbdd7R2REnCS9tjeI I9LbVpjApbKfjhYXqguue1hXRfn9mNAPq+XZQ0VLOyhgosrpY83I/lVuHj+HYji3w+bZiQ /oXGglQ93RSZyRYMbgjuJ18WGPb8Tdc= Received: from mail-ot1-f70.google.com (mail-ot1-f70.google.com [209.85.210.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-222-rYngHhhRNDCSuCqEa7VoxQ-1; Mon, 20 Mar 2023 18:16:50 -0400 X-MC-Unique: rYngHhhRNDCSuCqEa7VoxQ-1 Received: by mail-ot1-f70.google.com with SMTP id y14-20020a056830208e00b006943ddbfb7eso6244945otq.5 for ; Mon, 20 Mar 2023 15:16:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350610; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m8h1yVtGIRYCv86TmWwnywGAFGMc0IfZHGCd5EFi+qY=; b=5XdJXVwszWp7bJFVJ07TJUJUZcpHKwM24tWu2Df8N1eoX9FkX/klueOB2iCBzXWnVr xxOMkFVes4QKfKHBLN2ejtRtv+WidvNko+zHa/pwmKZLiFwMTCWD49UndIqYPmkE9Boq efR0XTDxKJDXp9tCK+/Q07lXeLK/Jirl9WMifXA9BtvKL78GBhs3rpjdPfV8mFS5CEVV D2NsF56WTyfXfrMsyixG9Mc1TwTXufw2dIfmdMDMs6kn2POLVIrGR/A46WEDeYfOPOc1 2JpbWl+yv5sHp9KRw1Tfyq8aUTIB3JkpJkB47pK4g9xbExzZ1kYewihJCzpSPopjATdm d6lw== X-Gm-Message-State: AO0yUKVNrLS+j9RZIewEVwugO3Y35m7rHNDOv1sA/p1vFP7VKOXBCnzJ 21HPM0oGDULZBGToq+9XFl0w91YUhD2Fh9xyXGEcdnQMJPu8dosTFLbwPkLecQwYYFCESF9Fp5N FolTJDAplA1b4qpqApxWBq365fGIe0tgg7Jw= X-Received: by 2002:a4a:5542:0:b0:53a:155b:374d with SMTP id e63-20020a4a5542000000b0053a155b374dmr685654oob.8.1679350610066; Mon, 20 Mar 2023 15:16:50 -0700 (PDT) X-Google-Smtp-Source: AK7set80mYX1kNXjhJjOyvPX8zlLH3S+WOhJullh4gLdq4GbTimB670heulSoes4VBClqR4z4JvI2g== X-Received: by 2002:a4a:5542:0:b0:53a:155b:374d with SMTP id e63-20020a4a5542000000b0053a155b374dmr685637oob.8.1679350609842; Mon, 20 Mar 2023 15:16:49 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:16:49 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 04/12] dt-bindings: net: qcom,ethqos: Add Qualcomm sc8280xp compatibles Date: Mon, 20 Mar 2023 17:16:09 -0500 Message-Id: <20230320221617.236323-5-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151653_113355_61A9A2AB X-CRM114-Status: UNSURE ( 9.89 ) X-CRM114-Notice: Please train this message. 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 The sc8280xp has a new version of the ETHQOS hardware in it, EMAC v3. Add a compatible for this. Signed-off-by: Andrew Halaney --- Changes since v1: * Alphabetical sorting (Krzysztof) Documentation/devicetree/bindings/net/qcom,ethqos.yaml | 1 + Documentation/devicetree/bindings/net/snps,dwmac.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml index 88234a2010b1..c60248e17e5a 100644 --- a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml +++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml @@ -21,6 +21,7 @@ properties: enum: - qcom,qcs404-ethqos - qcom,sm8150-ethqos + - qcom,sc8280xp-ethqos reg: maxItems: 2 diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 154955718246..126552febe7e 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -66,6 +66,7 @@ properties: - loongson,ls2k-dwmac - loongson,ls7a-dwmac - qcom,qcs404-ethqos + - qcom,sc8280xp-ethqos - qcom,sm8150-ethqos - renesas,r9a06g032-gmac - renesas,rzn1-gmac @@ -574,6 +575,7 @@ allOf: - ingenic,x1600-mac - ingenic,x1830-mac - ingenic,x2000-mac + - qcom,sc8280xp-ethqos - snps,dwmac-3.50a - snps,dwmac-4.10a - snps,dwmac-4.20a @@ -628,6 +630,7 @@ allOf: - ingenic,x1830-mac - ingenic,x2000-mac - qcom,qcs404-ethqos + - qcom,sc8280xp-ethqos - qcom,sm8150-ethqos - snps,dwmac-4.00 - snps,dwmac-4.10a From patchwork Mon Mar 20 22:16:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181936 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 967F2C6FD1D for ; Mon, 20 Mar 2023 22:18:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xs0uNAkDmhaO9nL3X3mJCJj5MDqPeov7FACrURmLLV4=; b=z2w84NuP3FXejL 5Clm7k2+Yljen0Y6yr9+9Bjie7nYKnH4xxd1/8qzzOwub2lZPccBN49DhfZ1nvg1ekHOpGsejEpWM yBX+k2KA/h1jM7p9uU19lmHPVg2cvxME3xQAZ7uKtyx9vpMw3pMmvMqVXzjQLfAAoV/DYF5UZDt09 cGxBQ2OTnfq/Nqw1T3dUin9yzs3HKEvyTxkLhLDTjyRZKG3svWR8ya0D7TJrMZP4CIipNV0M0/aO5 VZ8E0zdhzOQatGBdxutCWl7tZVhz17TMzHImYWqnk4J1w4XOp5MNXue/AMOYQZm9nKJKgefY/uJRw MpDvrCOJFLap/XEXUWIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNoT-00Ac5E-28; Mon, 20 Mar 2023 22:17:09 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoG-00Ac05-2G for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:16:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350615; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UcZ24ZaYybRtPqLVIgPQFtW7rz0akj/SPyjHKg9YcJc=; b=cyy6B9fFgU03L1k2J/lRCld9vqTYcek+uPhIpCGueMkGF9FpKDbvFEWdh50q7R7goDbYda Li+C14/gR3vmkfDgVedFNyUSEshcNIm9PY3Tb6iq4U9i5kPOV/85cX8Ze4/a4yFz3w+w/v gyLjVahnTsKp9mmRJL1ZPFtciFzJR98= Received: from mail-oi1-f198.google.com (mail-oi1-f198.google.com [209.85.167.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-303-lOI63gr7M3e_X48PDVpSsw-1; Mon, 20 Mar 2023 18:16:54 -0400 X-MC-Unique: lOI63gr7M3e_X48PDVpSsw-1 Received: by mail-oi1-f198.google.com with SMTP id bg21-20020a056808179500b003869b702d75so5713164oib.17 for ; Mon, 20 Mar 2023 15:16:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350614; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UcZ24ZaYybRtPqLVIgPQFtW7rz0akj/SPyjHKg9YcJc=; b=5Bgzi806rTMdcxmeNmRNcbzogrUiSK1v2Df+6Vn3eGEX4RVh3PTts5DcrYplqKyLq8 D3vFvu7od5nMlZbZ+DtTlIGxvBi/G3XTbJAPfILgeTPKkEcmyuSop/fqZfYc6V01Nl0v 29MsybQgK5iTXFsDIkqgQ6mPpzFCsCkIWuURbxWb1dT277kEaHLuXjC6xs1hqaBMGfLs MfZFuKs688Pl4bSWVB0+uL/RsEHXJ/QGLu31tsnA2HNuXzmgq4yUlSRihUUf64CdBlQF 8x7ZeJUQqW6f8HHJxxAMkGCwXc/EVBaFDA4pXcpiBULyxadEZnARjSrggEpY8zauutdM FS8A== X-Gm-Message-State: AO0yUKU4+RBTofihzs6K0AOIf51BP+bzr7N2fGH7k81X3o00bM5+O2qF sB/wrm2CIBCGfdWounzFswNJligLb8IldS/6EQmaw19yucFLEgWZBvQfidTN/WsrIhtGrofHW3y SUAjWks+0G3QZElMFp4KgeWNNhwHND4RSjp4= X-Received: by 2002:a05:6830:1d67:b0:69f:7f2e:9474 with SMTP id l7-20020a0568301d6700b0069f7f2e9474mr152771oti.16.1679350613819; Mon, 20 Mar 2023 15:16:53 -0700 (PDT) X-Google-Smtp-Source: AK7set88qtZ4v8k1HOBLwE7ZvoHS8oAzo1vuNep16/9zREb9pfCiFyhvnnD5S69+nn+LVuujapH8tw== X-Received: by 2002:a05:6830:1d67:b0:69f:7f2e:9474 with SMTP id l7-20020a0568301d6700b0069f7f2e9474mr152732oti.16.1679350613600; Mon, 20 Mar 2023 15:16:53 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:16:53 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 05/12] clk: qcom: gcc-sc8280xp: Add EMAC GDSCs Date: Mon, 20 Mar 2023 17:16:10 -0500 Message-Id: <20230320221617.236323-6-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151656_832989_13E78325 X-CRM114-Status: GOOD ( 13.20 ) 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 the EMAC GDSCs to allow the EMAC hardware to be enabled. Acked-by: Stephen Boyd Signed-off-by: Andrew Halaney Reviewed-by: Konrad Dybcio --- I'm still unsure if Bjorn wants to take this patch or net-dev, and how I am supposed to indicate such other than commenting here (per Stephen's comment on v1): https://lore.kernel.org/netdev/e5cb46e8874b12dbe438be12ee0cf949.sboyd@kernel.org/#t Changes since v1: * Add Stephen's Acked-by * Explicitly tested on x13s laptop with no noticeable side effect (Konrad) drivers/clk/qcom/gcc-sc8280xp.c | 18 ++++++++++++++++++ include/dt-bindings/clock/qcom,gcc-sc8280xp.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c index b3198784e1c3..04a99dbaa57e 100644 --- a/drivers/clk/qcom/gcc-sc8280xp.c +++ b/drivers/clk/qcom/gcc-sc8280xp.c @@ -6873,6 +6873,22 @@ static struct gdsc usb30_sec_gdsc = { .pwrsts = PWRSTS_RET_ON, }; +static struct gdsc emac_0_gdsc = { + .gdscr = 0xaa004, + .pd = { + .name = "emac_0_gdsc", + }, + .pwrsts = PWRSTS_OFF_ON, +}; + +static struct gdsc emac_1_gdsc = { + .gdscr = 0xba004, + .pd = { + .name = "emac_1_gdsc", + }, + .pwrsts = PWRSTS_OFF_ON, +}; + static struct clk_regmap *gcc_sc8280xp_clocks[] = { [GCC_AGGRE_NOC_PCIE0_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie0_tunnel_axi_clk.clkr, [GCC_AGGRE_NOC_PCIE1_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie1_tunnel_axi_clk.clkr, @@ -7351,6 +7367,8 @@ static struct gdsc *gcc_sc8280xp_gdscs[] = { [USB30_MP_GDSC] = &usb30_mp_gdsc, [USB30_PRIM_GDSC] = &usb30_prim_gdsc, [USB30_SEC_GDSC] = &usb30_sec_gdsc, + [EMAC_0_GDSC] = &emac_0_gdsc, + [EMAC_1_GDSC] = &emac_1_gdsc, }; static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = { diff --git a/include/dt-bindings/clock/qcom,gcc-sc8280xp.h b/include/dt-bindings/clock/qcom,gcc-sc8280xp.h index cb2fb638825c..721105ea4fad 100644 --- a/include/dt-bindings/clock/qcom,gcc-sc8280xp.h +++ b/include/dt-bindings/clock/qcom,gcc-sc8280xp.h @@ -492,5 +492,7 @@ #define USB30_MP_GDSC 9 #define USB30_PRIM_GDSC 10 #define USB30_SEC_GDSC 11 +#define EMAC_0_GDSC 12 +#define EMAC_1_GDSC 13 #endif From patchwork Mon Mar 20 22:16:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181937 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 A10B5C6FD1D for ; Mon, 20 Mar 2023 22:18:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=KJTzouskIsHNAh0YiJHfEE3CAcRC0JkSrNgKe785im8=; b=IKs8G1pWk5dQ/C oRcFbSw2qSntPrX//iT6GfmvFsaiyhTAF9oRKg3h9aG4m72KLfrboBTM4taIKZBb6F9OoXySGvpex pucztq3Qi1rAAHcW0IG0U/gHAEDdHNnlr33YXaPZKaY98Bj94GcnKS8sBeNAesTbpO74JJ7ZCzk7C Iotk4vAtOiP7UPsjiq28XrYpwg/Z8XaTSlM4TIySlsIaEya9/kdNJaJTq5+DgyTvUGNa0gsh4VDtS LbaUwdvNxrLONz82XaL6MpiqHaVP8WNqx59o1XBRTt/O3GAOALw0TDL8xuSFQtaWnUWCdhBGboJxa gMsdYUIibF0TbJZ/HhQQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNoU-00Ac5w-2l; Mon, 20 Mar 2023 22:17:10 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoL-00Ac1m-02 for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350620; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=st1rjJ7aUc1T8Np6RFrdYsV7Bx3+UgNenWZwcLLRIAM=; b=c1W9AP1ZWncIqHd6wuZ1IMFrnaGu/fzH9p4va9bDalgg7S/eJobRRqGw3/QTJgJgo8kLow yWptREGmxrkADa/L8eZ6NujQaeZ+hgOXP2QTPu+KePmVHyfhxI4Ychozk9Lljk0Yz50e9C zgVSYIc6XHd0okxBQqafDjMZsVcQWYo= Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com [209.85.210.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-620-Xd8FbIMLOoKjR-gTHlLsZA-1; Mon, 20 Mar 2023 18:16:59 -0400 X-MC-Unique: Xd8FbIMLOoKjR-gTHlLsZA-1 Received: by mail-ot1-f71.google.com with SMTP id c2-20020a9d75c2000000b0069e5dd6ff38so4981503otl.16 for ; Mon, 20 Mar 2023 15:16:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350618; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=st1rjJ7aUc1T8Np6RFrdYsV7Bx3+UgNenWZwcLLRIAM=; b=PBndb1IMI6fJV8I7kgfbM4YNRvG5zN+BLrI1WqM7ctMEMIi5JdjinglZAH/mOy9+0J dXFvz6yjfCET8coMcz2sCgiNWg9scsnDb0hb0DpID3HSp5jOF9zVeAqq6/uGtYNpT3wo Bjubzk1gkZQp2UFAc2QA/K5lFMeNFbZ8giXHZpYmTUzSqmu6zqFh/fzyuxbJQjwt5GzG mq44h10VnMmp4zpSKuWfcx55KZ7L2S2tLoB2Xjtbyil/xw83tl+HreWUc3AgXbw3MvR2 PVfA3W9nQ/fv/QzxIhGNa0MLN0PxrKGXtq19hcDQXrLLW9QEucSJLxcFwffl/6rK84rj IkYQ== X-Gm-Message-State: AO0yUKW4JkT1Nc9snIozgyfTq+BBxj/I2je9t7q5Xv09WfOGpFxavcBj wZOHzA9fbrIoYsvK89C+6DiCRopivhr7F1AQBFHwCkj1fUl3oQ/jw/g0LQqvb7JJTzzQNy5GvKQ wSVnuzBCJ1L+pevbkdAcVfV/xFteeLETWXJY= X-Received: by 2002:a4a:5213:0:b0:51a:6ea9:5053 with SMTP id d19-20020a4a5213000000b0051a6ea95053mr552518oob.9.1679350618496; Mon, 20 Mar 2023 15:16:58 -0700 (PDT) X-Google-Smtp-Source: AK7set/I1dgh6ojXzLoG9TkOkq4yCA55YncbX2+E5PoAf4MDA49+HyT7Pkos0cAy5On/2t8jXt8KZw== X-Received: by 2002:a4a:5213:0:b0:51a:6ea9:5053 with SMTP id d19-20020a4a5213000000b0051a6ea95053mr552491oob.9.1679350618286; Mon, 20 Mar 2023 15:16:58 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:16:57 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 06/12] arm64: dts: qcom: sc8280xp: Add ethernet nodes Date: Mon, 20 Mar 2023 17:16:11 -0500 Message-Id: <20230320221617.236323-7-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151701_123156_DD5C1EDF X-CRM114-Status: UNSURE ( 9.13 ) X-CRM114-Notice: Please train this message. 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 This platform has 2 MACs integrated in it, go ahead and describe them. Signed-off-by: Andrew Halaney --- Changes since v1: * None arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 53 ++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi index 0d02599d8867..a63e8e81a8c4 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi @@ -761,6 +761,59 @@ soc: soc@0 { ranges = <0 0 0 0 0x10 0>; dma-ranges = <0 0 0 0 0x10 0>; + ethernet0: ethernet@20000 { + compatible = "qcom,sc8280xp-ethqos"; + reg = <0x0 0x00020000 0x0 0x10000>, + <0x0 0x00036000 0x0 0x100>; + reg-names = "stmmaceth", "rgmii"; + + clocks = <&gcc GCC_EMAC0_AXI_CLK>, + <&gcc GCC_EMAC0_SLV_AHB_CLK>, + <&gcc GCC_EMAC0_PTP_CLK>, + <&gcc GCC_EMAC0_RGMII_CLK>; + clock-names = "stmmaceth", "pclk", "ptp_ref", "rgmii"; + + interrupts = , + ; + interrupt-names = "macirq", "eth_lpi"; + iommus = <&apps_smmu 0x4c0 0xf>; + power-domains = <&gcc EMAC_0_GDSC>; + + snps,tso; + snps,pbl = <32>; + rx-fifo-depth = <4096>; + tx-fifo-depth = <4096>; + + status = "disabled"; + }; + + ethernet1: ethernet@23000000 { + compatible = "qcom,sc8280xp-ethqos"; + reg = <0x0 0x23000000 0x0 0x10000>, + <0x0 0x23016000 0x0 0x100>; + reg-names = "stmmaceth", "rgmii"; + + clocks = <&gcc GCC_EMAC1_AXI_CLK>, + <&gcc GCC_EMAC1_SLV_AHB_CLK>, + <&gcc GCC_EMAC1_PTP_CLK>, + <&gcc GCC_EMAC1_RGMII_CLK>; + clock-names = "stmmaceth", "pclk", "ptp_ref", "rgmii"; + + interrupts = , + ; + interrupt-names = "macirq", "eth_lpi"; + + iommus = <&apps_smmu 0x40 0xf>; + power-domains = <&gcc EMAC_1_GDSC>; + + snps,tso; + snps,pbl = <32>; + rx-fifo-depth = <4096>; + tx-fifo-depth = <4096>; + + status = "disabled"; + }; + gcc: clock-controller@100000 { compatible = "qcom,gcc-sc8280xp"; reg = <0x0 0x00100000 0x0 0x1f0000>; From patchwork Mon Mar 20 22:16:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181938 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 C8291C7619A for ; Mon, 20 Mar 2023 22:18:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8op3nT2LVQzt7Dh0q99aqcOlc1qFAuF+XEppDwzO8yw=; b=mrJs3uEAZrYuHb 43cOOdNVyEBn6dcXA1kpW/JmBKQXfcB1tiIPhiLGffov7avyBtztTPIjVR18q4O4qX67pjKXtpYo7 LpqgxGScn4S21QUVo5IBdx0Jo16PpoeTwW8iwDvAdHr9fpnyOg6lbtGWRV2DgXj09qz5ZHQFTaOvZ iAHAMvLg0EKT32ax3vBNqfrPQiwTiSe7pDf6VrtNm4qEK1mE4qd9A+3Hi+hd4yzlY7S48DvGYibTd o5guckgMdSq1I/wZ9hGzJC1nUS3mG2+28OXXjQ9v+t8ty/79Nbgjg3oPMDViPunLrG9+s1de71mYZ x9MPPpYFSwVTkWCvaqLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNoW-00Ac6u-12; Mon, 20 Mar 2023 22:17:12 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoO-00Ac37-2f for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350624; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=G3diaV/qntELGZ823vxrRn9vLXA3Ahnarug2JpMiyJo=; b=Ae+KsKb4urscr1/WFOdGJwAcY//gjRUT+i6ZZEAVobEYXWp1O/RPQa/Mt6A02aJANeZbei 7AH7MVhKIMFdUFu7aocukoAQLrSR1kKk1Rrp1K6hVvigzhO6RxHp1vnUJcsnTF2JJ2NXcV pRxff04D75ofi/lND4+XDabk51uTeyo= Received: from mail-oo1-f71.google.com (mail-oo1-f71.google.com [209.85.161.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-131-Hsxg0vWkMbie8qutJle3lg-1; Mon, 20 Mar 2023 18:17:02 -0400 X-MC-Unique: Hsxg0vWkMbie8qutJle3lg-1 Received: by mail-oo1-f71.google.com with SMTP id z20-20020a4ad594000000b00531ac1a175dso4067791oos.20 for ; Mon, 20 Mar 2023 15:17:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350622; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G3diaV/qntELGZ823vxrRn9vLXA3Ahnarug2JpMiyJo=; b=OZSwqduALG+HqL7fNI9dnOH4onA+AbtpJCc9k5erupv8y40Jk/o/wN/Vm7v56DBOXT SPpruhpK/bHYhWnBj/LBv+b/l6QYaGzKqPXy/uMknz7zPJqz3An3oW0p+tnWmShZl+8m Tn2rfoKCNmzHl0CulwsdFfBdOXVYbOIyeZsZawOYzzxlKzyD7hZoGI7pQqv+/hmcI/KJ HPdJZIcYt/i1UVS+tXgSU+k+9Fp9Ocg+RrfsolDVXTQWXwWDGInreNlSanudvDNQM3Nb 3t0mckJFGi30mmQEwA7eX5yY1Lo9jTHJr0lUNfovzaqj+vIRTlTCLYNiUwKXsnVbdsN5 6zcw== X-Gm-Message-State: AO0yUKV7XkF6e+N8DvR683ObHEoD+nI8tG+yG0a29knEOjS+1VQ6zIGp B/ziNKJu2HhBJEFRTgZW+BfNNQ4AV41IrU3LuVT+oh9yfaxeqshvcCB7PH1lV+MHFAoUgK8xXVC 1aLLIYpmyMaBsqpSvzg23XAlUaHtA84ob77k= X-Received: by 2002:a4a:5293:0:b0:525:29fa:a287 with SMTP id d141-20020a4a5293000000b0052529faa287mr595301oob.5.1679350621848; Mon, 20 Mar 2023 15:17:01 -0700 (PDT) X-Google-Smtp-Source: AK7set+lKWt5P4iyXda3ft4Vh3BH6Jt4rxJ7YszOgdHo4c2/OqbLuICyQp33x8Cph5fPIxboIt/mGw== X-Received: by 2002:a4a:5293:0:b0:525:29fa:a287 with SMTP id d141-20020a4a5293000000b0052529faa287mr595263oob.5.1679350621631; Mon, 20 Mar 2023 15:17:01 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.16.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:17:01 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 07/12] arm64: dts: qcom: sa8540p-ride: Add ethernet nodes Date: Mon, 20 Mar 2023 17:16:12 -0500 Message-Id: <20230320221617.236323-8-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151704_939606_20A7A53E X-CRM114-Status: GOOD ( 16.16 ) 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 Enable both the MACs found on the board. ethernet0 and ethernet1 both ultimately go to a series of on board switches which aren't managed by this processor. ethernet0 is connected to a Marvell 88EA1512 phy via RGMII. That goes to the series of switches via SGMII on the "media" side of the phy. RGMII_SGMII mode is enabled via devicetree register descriptions. The switch on the "media" side has auto-negotiation disabled, so configuration from userspace similar to: ethtool -s eth0 autoneg off speed 1000 duplex full is necessary to get traffic flowing on that interface. ethernet1 is in a mac2mac/fixed-link configuration going to the same series of switches directly via RGMII. Signed-off-by: Andrew Halaney --- Changes since v1: * None arch/arm64/boot/dts/qcom/sa8540p-ride.dts | 181 ++++++++++++++++++++++ 1 file changed, 181 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sa8540p-ride.dts b/arch/arm64/boot/dts/qcom/sa8540p-ride.dts index 8b7555f22528..b874f3909382 100644 --- a/arch/arm64/boot/dts/qcom/sa8540p-ride.dts +++ b/arch/arm64/boot/dts/qcom/sa8540p-ride.dts @@ -28,6 +28,65 @@ aliases { chosen { stdout-path = "serial0:115200n8"; }; + + mtl_rx_setup: rx-queues-config { + snps,rx-queues-to-use = <1>; + snps,rx-sched-sp; + + queue0 { + snps,dcb-algorithm; + snps,map-to-dma-channel = <0x0>; + snps,route-up; + snps,priority = <0x1>; + }; + + queue1 { + snps,dcb-algorithm; + snps,map-to-dma-channel = <0x1>; + snps,route-ptp; + }; + + queue2 { + snps,avb-algorithm; + snps,map-to-dma-channel = <0x2>; + snps,route-avcp; + }; + + queue3 { + snps,avb-algorithm; + snps,map-to-dma-channel = <0x3>; + snps,priority = <0xc>; + }; + }; + + mtl_tx_setup: tx-queues-config { + snps,tx-queues-to-use = <1>; + snps,tx-sched-sp; + + queue0 { + snps,dcb-algorithm; + }; + + queue1 { + snps,dcb-algorithm; + }; + + queue2 { + snps,avb-algorithm; + snps,send_slope = <0x1000>; + snps,idle_slope = <0x1000>; + snps,high_credit = <0x3e800>; + snps,low_credit = <0xffc18000>; + }; + + queue3 { + snps,avb-algorithm; + snps,send_slope = <0x1000>; + snps,idle_slope = <0x1000>; + snps,high_credit = <0x3e800>; + snps,low_credit = <0xffc18000>; + }; + }; }; &apps_rsc { @@ -151,6 +210,68 @@ vreg_l8g: ldo8 { }; }; +ðernet0 { + snps,mtl-rx-config = <&mtl_rx_setup>; + snps,mtl-tx-config = <&mtl_tx_setup>; + + max-speed = <1000>; + phy-handle = <&rgmii_phy>; + phy-mode = "rgmii-txid"; + + pinctrl-names = "default"; + pinctrl-0 = <ðernet0_default>; + + status = "okay"; + + mdio { + #address-cells = <0x1>; + #size-cells = <0x0>; + + compatible = "snps,dwmac-mdio"; + + /* Marvell 88EA1512 */ + rgmii_phy: phy@8 { + reg = <0x8>; + + interrupt-parent = <&tlmm>; + interrupts-extended = <&tlmm 127 IRQ_TYPE_EDGE_FALLING>; + + reset-gpios = <&pmm8540c_gpios 1 GPIO_ACTIVE_LOW>; + reset-assert-us = <11000>; + reset-deassert-us = <70000>; + + device_type = "ethernet-phy"; + + /* Set to RGMII_SGMII mode and soft reset. Turn off auto-negotiation + * from userspace to talk to the switch on the SGMII side of things + */ + marvell,reg-init = + /* Set MODE[2:0] to RGMII_SGMII */ + <0x12 0x14 0xfff8 0x4>, + /* Soft reset required after changing MODE[2:0] */ + <0x12 0x14 0x7fff 0x8000>; + }; + }; +}; + +ðernet1 { + snps,mtl-rx-config = <&mtl_rx_setup>; + snps,mtl-tx-config = <&mtl_tx_setup>; + + max-speed = <1000>; + phy-mode = "rgmii-txid"; + + pinctrl-names = "default"; + pinctrl-0 = <ðernet1_default>; + + status = "okay"; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + &i2c0 { pinctrl-names = "default"; pinctrl-0 = <&i2c0_default>; @@ -316,6 +437,66 @@ &xo_board_clk { /* PINCTRL */ &tlmm { + ethernet0_default: ethernet0-default-state { + mdc-pins { + pins = "gpio175"; + function = "rgmii_0"; + drive-strength = <16>; + bias-pull-up; + }; + + mdio-pins { + pins = "gpio176"; + function = "rgmii_0"; + drive-strength = <16>; + bias-pull-up; + }; + + rgmii-tx-pins { + pins = "gpio183", "gpio184", "gpio185", "gpio186", "gpio187", "gpio188"; + function = "rgmii_0"; + drive-strength = <16>; + bias-pull-up; + }; + + rgmii-rx-pins { + pins = "gpio177", "gpio178", "gpio179", "gpio180", "gpio181", "gpio182"; + function = "rgmii_0"; + drive-strength = <16>; + bias-disable; + }; + }; + + ethernet1_default: ethernet1-default-state { + mdc-pins { + pins = "gpio97"; + function = "rgmii_1"; + drive-strength = <16>; + bias-pull-up; + }; + + mdio-pins { + pins = "gpio98"; + function = "rgmii_1"; + drive-strength = <16>; + bias-pull-up; + }; + + rgmii-tx-pins { + pins = "gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110"; + function = "rgmii_1"; + drive-strength = <16>; + bias-pull-up; + }; + + rgmii-rx-pins { + pins = "gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104"; + function = "rgmii_1"; + drive-strength = <16>; + bias-disable; + }; + }; + i2c0_default: i2c0-default-state { /* To USB7002T-I/KDXVA0 USB hub (SIP1 only) */ pins = "gpio135", "gpio136"; From patchwork Mon Mar 20 22:16:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181939 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 B0D46C6FD1D for ; Mon, 20 Mar 2023 22:18:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=wT4jY7qV08kxBfg3ys71mBxnTh18bTMsguzZLI0JW50=; b=Xg/PSTfkmd6WAG RdDylu1zTf6VOncmo5ksnC3b2sq36kPqtfhIaxPLP78ogqYJBMF9HIkCvnZydVUu7H71Retvp9h13 5DSg+ZnyB8IsKD7CeGN6EDOkYc0OOVduFrCDxCWCHcTviumf2fNP6XfKnN8W4idd1hynzcNK2Z9Co DCwfIeWQLBz2MDcjDKQe4zgjVOPftzbzB54RnTLyPBcG0Djja2M5O6lMZsTw61BBa2gzQs/MF9WPL YTOyl9edXUzAYJfWWzloM4aYIeFyCpGkZisbszFz/TM6BjhZFouMVpBxBgBW5b77WuVbUfbyV21ow oaAPWo204bLZy64B10FQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNop-00AcHY-0v; Mon, 20 Mar 2023 22:17:31 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoR-00Ac4H-3D for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350627; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uADkhSDU3kNDzAhx/ALq71/R+qHbMHup0NfIf4oXRRk=; b=bAOQ/wnAPB2pqQp9ZW/9j3a0vAI1BaIGY68qGiGTGrBezsfYSS2r5j+YDSXlKwy8yyYRXD hPX7pnezb8OQl9ttmSgXydBO0msx/AYy4xyuY/raGUx4WZG98BBRREp8sjcKgnkyJAWbEy Z7+i+lbMF0i+taVBeKXQdbk0mNh9A9I= Received: from mail-oo1-f70.google.com (mail-oo1-f70.google.com [209.85.161.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-262-wy3HP9-8MWuVv_HqEdZK4g-1; Mon, 20 Mar 2023 18:17:05 -0400 X-MC-Unique: wy3HP9-8MWuVv_HqEdZK4g-1 Received: by mail-oo1-f70.google.com with SMTP id c83-20020a4a4f56000000b0053b4b212346so702296oob.10 for ; Mon, 20 Mar 2023 15:17:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350625; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uADkhSDU3kNDzAhx/ALq71/R+qHbMHup0NfIf4oXRRk=; b=vmxvQJcKhMkqPzAQiTQRKDD6Ec4RMxOM1bUT+O6hsKmdG848X4iN/sa6snwfBfmsNr gF4TmGyNV3HDMPHOLSwA/uGjTZt7s/BizJ7tInG/OYmMwU5SPpp8BxyUTX3HEVKPeGdo BKJZGaYCQr5Y1C2OYeYXV/zWYNk+igItT1CBf2NmMCJSblfWzmBuVKDTej04jJZmVHBF osJJ7HXKZdm4lLHgY+iWXOvdWuSVKz8BRGKbojD8tTQH3l1XPCFGsl/gTxI7P6sPJ5l8 icMpJm2jBFOrfBpWZZ+ICD1jhd4mtSDvTfLYjmDozt+hi5VTaz98n3yE1fTWGBkvzEcP yaZA== X-Gm-Message-State: AO0yUKU5XOkIzZUKU+leuV9k9p9Tr4/lA5lL1x3VVeTDsRMZNCEJ4DB4 cN8Q1Rft3IxN/3nJ36L1jcYN5AEtRgwABm8Soqn/YB4/4tvqz8SIgZXTDZBVx9T0cYADp+96/w9 1whVm7JTG5FxxELQKXNLypZXDzsRW4Vp2NbQ= X-Received: by 2002:a4a:d38e:0:b0:53b:1086:7a09 with SMTP id i14-20020a4ad38e000000b0053b10867a09mr949161oos.3.1679350625165; Mon, 20 Mar 2023 15:17:05 -0700 (PDT) X-Google-Smtp-Source: AK7set8HeXukDtyerKLEQLIGqNPkUK2wofZTtG54Dcrc14ovssGSEI09uY51mICdr2wdiRw2g7QDRw== X-Received: by 2002:a4a:d38e:0:b0:53b:1086:7a09 with SMTP id i14-20020a4ad38e000000b0053b10867a09mr949133oos.3.1679350624966; Mon, 20 Mar 2023 15:17:04 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.17.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:17:04 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 08/12] net: stmmac: Remove unnecessary if statement brackets Date: Mon, 20 Mar 2023 17:16:13 -0500 Message-Id: <20230320221617.236323-9-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151708_108830_15BE062A X-CRM114-Status: GOOD ( 12.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 The brackets are unnecessary, remove them to match the coding style used in the kernel. Signed-off-by: Andrew Halaney --- Changes since v1: * This patch is split from the next patch since it is a logically different change (Andrew Lunn) drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c index 21aaa2730ac8..6807c4c1a0a2 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -281,9 +281,8 @@ static int stmmac_mdio_read_c22(struct mii_bus *bus, int phyaddr, int phyreg) value |= (phyreg << priv->hw->mii.reg_shift) & priv->hw->mii.reg_mask; value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift) & priv->hw->mii.clk_csr_mask; - if (priv->plat->has_gmac4) { + if (priv->plat->has_gmac4) value |= MII_GMAC4_READ; - } data = stmmac_mdio_read(priv, data, value); From patchwork Mon Mar 20 22:16:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181966 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 B0AD9C6FD1D for ; Mon, 20 Mar 2023 22:18:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bVh6miLkHD/2xhbCL3miCZbCvGP9OStgd6ySQXFEU0k=; b=GYaWBHnQUuvU3Z xHmRmmYLmn6kcWDYIhx6m7Y8bRZD6bd1iktGkh9eXHO83o0shEemqDd0oQt8qCQJb86ORU4DHaPai i4P5RtEBsedld2GYrujHg8GdyV9m1OxXfOJ8d8RnA6UjpsY9P5Vy9nZfpecavcnLbR11lkgm1SM6j FHnnTaoPAeBXrjq5S1QcZmiM+X20+tXIYyJwKW890fd8hIbpoYk0SgAQ5Q39340s1bf09gksp8EJd m42TkQ8DaGLDm+DS62PtheDpyWFk1vT4JyQbqVyMwfgdAPqesx/Wss2GZrAZmkr92ItwAAKYn+2L5 6iMaP+nG5te6ihfPETnQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNoy-00AcMD-00; Mon, 20 Mar 2023 22:17:40 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoZ-00Ac8S-0Y for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350634; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zXHGaC/fnF0XPtoD7LwrCFO+J1UwzR1criyrXGcqJ9I=; b=iRZLNHh58tyr63bIATLf9dy7n0LopRUBcW+TqFxm85qPVW2/oXSIwiIc4i6ErUdco6Xklx hsvbuMrdh6KCBPYgYhcLVy6IDQgoJQeOf7dEapdvu4nGeen5cokA21kDILEuBPoox/QfSe Foe+CIPwP5LMDgmwT1lNJj/IY9aS5xM= Received: from mail-oo1-f69.google.com (mail-oo1-f69.google.com [209.85.161.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-292-d2Quc2X5N5GD0DYMglu9og-1; Mon, 20 Mar 2023 18:17:10 -0400 X-MC-Unique: d2Quc2X5N5GD0DYMglu9og-1 Received: by mail-oo1-f69.google.com with SMTP id w3-20020a4ae083000000b0052645d4a2dfso4058315oos.18 for ; Mon, 20 Mar 2023 15:17:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350630; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zXHGaC/fnF0XPtoD7LwrCFO+J1UwzR1criyrXGcqJ9I=; b=NgKy/p9AtBbqy7xPY1KMFN55zrUDo2YEkWWXT0bgh8GFnbpFI3UyfAmHL5CzxQdnfC utZa47rlU1v5IBYOjBNL1yJaPwqtsYX1uL33UBqzmMz98IAmMGGlveTHuipGDovvrhPS eNQAicgkHe7+Gl/zqlL2A2/tzWB8ZTFCW9Aw/ODFCZ/0FwtV0Z3kr7y/S920EqKXMMy5 ASPF0xXrp5Vd95l85+bqPGjXGGJfXllBCto91fRPzDfWCKPpC+BdhbfT1aiVk7mBapKZ E5bwQpPVC3VgDlMSs706/vYh4lef3VgWikuwkvPAZ2s5FAxCEFSdZtBpJAwylOx40I/S iRBQ== X-Gm-Message-State: AO0yUKWDu7oCGAe1cMkWIoTHWRXbq18uvfCdE8rDcUUetPzldiuqUt26 nA8COwR+K+6F6Oj9RCkARtq1AxoeU8BCYwHr7vjL0ywxqd+sGGP6O3ClSniNyxLhCAse9zHwkJe kokVq5Cwh7joCtP3Es7B+V6ai580q0S42nRw= X-Received: by 2002:a4a:55cc:0:b0:520:331d:9514 with SMTP id e195-20020a4a55cc000000b00520331d9514mr741050oob.1.1679350629342; Mon, 20 Mar 2023 15:17:09 -0700 (PDT) X-Google-Smtp-Source: AK7set+vAeV4TMZX28YS/QSy2Bwh49fwLySaPACq+7f7NeJnWdUmAZWJpVm6VzBGpy8EC9CswMyuXg== X-Received: by 2002:a4a:55cc:0:b0:520:331d:9514 with SMTP id e195-20020a4a55cc000000b00520331d9514mr741014oob.1.1679350628719; Mon, 20 Mar 2023 15:17:08 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.17.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:17:08 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 09/12] net: stmmac: Add EMAC3 variant of dwmac4 Date: Mon, 20 Mar 2023 17:16:14 -0500 Message-Id: <20230320221617.236323-10-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151715_447356_F4A837E5 X-CRM114-Status: GOOD ( 22.21 ) 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 From: Brian Masney EMAC3 is a Qualcomm variant of dwmac4 that functions the same, but has a different address space layout for MTL and DMA registers. This makes the patch a bit more complicated than we would like so let's explain why the current approach was used. The different address ranges between the two variants can be represented with 7 different sets of #ifdefs like the following: #if IS_ENABLED(CONFIG_DWMAC_QCOM_VER3) # define MTL_CHAN_BASE_ADDR 0x00008000 # define MTL_CHAN_BASE_OFFSET 0x1000 #else # define MTL_CHAN_BASE_ADDR 0x00000d00 # define MTL_CHAN_BASE_OFFSET 0x40 #endif This won't be acceptable for upstream inclusion since it would be nice to enable both variants simultaneously without recompiling. The next approach that was checked was to have a function pointer embedded inside a structure that does the appropriate conversion based on the variant that's in use. However, some of the function definitions are like the following: void emac3_set_rx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) We can't do a container_of() with an __iomem address. Changing these functions to pass in an extra regular structure had a cascading effect across the different variants, and the change was quickly becoming large. It would also be hard to test and review. So the approach that was decided to go with here is to take the existing dwmac4_XXX callbacks, rename it to do_XXX, and do the following: static void do_XXX(..., int addr_offset) { // Code from existing dwmac4 implementation. } static inline void emac3_XXX(...) { do_XXX(..., EMAC3_ADDR_OFFSET(...)); } static inline void dwmac4_XXX(...) { do_XXX(..., DWMAC4_ADDR_OFFSET(...)); } Prior to the introduction of this patch, dwmac4_dma_init_channel() and dwmac410_dma_init_channel() already had the problem of copy and paste with trivial changes made. While changes are being made here, this patch also fixes a bad comment that was in dwmac4_config_cbs (s/high/low). Signed-off-by: Brian Masney Co-developed-by: Andrew Halaney Signed-off-by: Andrew Halaney --- Changes since v1: * Clean up if statement bracket in its own (prior) patch (Andrew Lunn) * Remove unnecessary static inlines (Jakub) * Don't exceed 6 function arguments (use a struct instead) (Jakub) I think despite Russell's comments Jakub's insights on readability with respect to function arguments / structure usage / poor man's **kwargs are still valid for this particular context. Hopefully this is a bit more appealing looking. There was only one function that needed this, do_config_cbs, otherwise they were all at <= 6 function args. drivers/net/ethernet/stmicro/stmmac/dwmac4.h | 32 +- .../net/ethernet/stmicro/stmmac/dwmac4_core.c | 235 ++++++++++-- .../net/ethernet/stmicro/stmmac/dwmac4_dma.c | 334 ++++++++++++++---- .../net/ethernet/stmicro/stmmac/dwmac4_dma.h | 38 ++ .../net/ethernet/stmicro/stmmac/dwmac4_lib.c | 144 ++++++-- drivers/net/ethernet/stmicro/stmmac/hwif.c | 29 +- drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 + .../ethernet/stmicro/stmmac/stmmac_ethtool.c | 6 +- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 17 +- .../net/ethernet/stmicro/stmmac/stmmac_mdio.c | 8 +- .../net/ethernet/stmicro/stmmac/stmmac_ptp.c | 4 +- include/linux/stmmac.h | 1 + 12 files changed, 707 insertions(+), 143 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4.h b/drivers/net/ethernet/stmicro/stmmac/dwmac4.h index ccd49346d3b3..56355d65fa4b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4.h +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4.h @@ -333,7 +333,16 @@ enum power_event { #define MTL_RXQ_DMA_MAP1 0x00000c34 /* queue 4 to 7 */ #define MTL_RXQ_DMA_QXMDMACH_MASK(x) (0xf << 8 * (x)) #define MTL_RXQ_DMA_QXMDMACH(chan, q) ((chan) << (8 * (q))) - +#define EMAC3_MTL_CHAN_BASE_ADDR 0x00008000 +#define EMAC3_MTL_CHAN_BASE_OFFSET 0x1000 +#define EMAC3_MTL_CHANX_BASE_ADDR(x) (EMAC3_MTL_CHAN_BASE_ADDR + \ + ((x) * EMAC3_MTL_CHAN_BASE_OFFSET)) + +#define EMAC3_MTL_CHAN_TX_OP_MODE(x) EMAC3_MTL_CHANX_BASE_ADDR(x) +#define EMAC3_MTL_CHAN_TX_DEBUG(x) (EMAC3_MTL_CHANX_BASE_ADDR(x) + 0x8) +#define EMAC3_MTL_CHAN_INT_CTRL(x) (EMAC3_MTL_CHANX_BASE_ADDR(x) + 0x2c) +#define EMAC3_MTL_CHAN_RX_OP_MODE(x) (EMAC3_MTL_CHANX_BASE_ADDR(x) + 0x30) +#define EMAC3_MTL_CHAN_RX_DEBUG(x) (EMAC3_MTL_CHANX_BASE_ADDR(x) + 0x38) #define MTL_CHAN_BASE_ADDR 0x00000d00 #define MTL_CHAN_BASE_OFFSET 0x40 #define MTL_CHANX_BASE_ADDR(x) (MTL_CHAN_BASE_ADDR + \ @@ -386,6 +395,10 @@ enum power_event { #define MTL_OP_MODE_RTC_128 (3 << MTL_OP_MODE_RTC_SHIFT) /* MTL ETS Control register */ +#define EMAC3_MTL_ETS_CTRL_BASE_ADDR 0x00008010 +#define EMAC3_MTL_ETS_CTRL_BASE_OFFSET 0x1000 +#define EMAC3_MTL_ETSX_CTRL_BASE_ADDR(x) (EMAC3_MTL_ETS_CTRL_BASE_ADDR + \ + ((x) * EMAC3_MTL_ETS_CTRL_BASE_OFFSET)) #define MTL_ETS_CTRL_BASE_ADDR 0x00000d10 #define MTL_ETS_CTRL_BASE_OFFSET 0x40 #define MTL_ETSX_CTRL_BASE_ADDR(x) (MTL_ETS_CTRL_BASE_ADDR + \ @@ -395,6 +408,10 @@ enum power_event { #define MTL_ETS_CTRL_AVALG BIT(2) /* MTL Queue Quantum Weight */ +#define EMAC3_MTL_TXQ_WEIGHT_BASE_ADDR 0x00008018 +#define EMAC3_MTL_TXQ_WEIGHT_BASE_OFFSET 0x1000 +#define EMAC3_MTL_TXQX_WEIGHT_BASE_ADDR(x) (EMAC3_MTL_TXQ_WEIGHT_BASE_ADDR + \ + ((x) * EMAC3_MTL_TXQ_WEIGHT_BASE_OFFSET)) #define MTL_TXQ_WEIGHT_BASE_ADDR 0x00000d18 #define MTL_TXQ_WEIGHT_BASE_OFFSET 0x40 #define MTL_TXQX_WEIGHT_BASE_ADDR(x) (MTL_TXQ_WEIGHT_BASE_ADDR + \ @@ -402,6 +419,11 @@ enum power_event { #define MTL_TXQ_WEIGHT_ISCQW_MASK GENMASK(20, 0) /* MTL sendSlopeCredit register */ + +#define EMAC3_MTL_SEND_SLP_CRED_BASE_ADDR 0x0000801c +#define EMAC3_MTL_SEND_SLP_CRED_OFFSET 0x1000 +#define EMAC3_MTL_SEND_SLP_CREDX_BASE_ADDR(x) (EMAC3_MTL_SEND_SLP_CRED_BASE_ADDR + \ + ((x) * EMAC3_MTL_SEND_SLP_CRED_OFFSET)) #define MTL_SEND_SLP_CRED_BASE_ADDR 0x00000d1c #define MTL_SEND_SLP_CRED_OFFSET 0x40 #define MTL_SEND_SLP_CREDX_BASE_ADDR(x) (MTL_SEND_SLP_CRED_BASE_ADDR + \ @@ -410,6 +432,10 @@ enum power_event { #define MTL_SEND_SLP_CRED_SSC_MASK GENMASK(13, 0) /* MTL hiCredit register */ +#define EMAC3_MTL_HIGH_CRED_BASE_ADDR 0x00008020 +#define EMAC3_MTL_HIGH_CRED_OFFSET 0x1000 +#define EMAC3_MTL_HIGH_CREDX_BASE_ADDR(x) (EMAC3_MTL_HIGH_CRED_BASE_ADDR + \ + ((x) * EMAC3_MTL_HIGH_CRED_OFFSET)) #define MTL_HIGH_CRED_BASE_ADDR 0x00000d20 #define MTL_HIGH_CRED_OFFSET 0x40 #define MTL_HIGH_CREDX_BASE_ADDR(x) (MTL_HIGH_CRED_BASE_ADDR + \ @@ -418,6 +444,10 @@ enum power_event { #define MTL_HIGH_CRED_HC_MASK GENMASK(28, 0) /* MTL loCredit register */ +#define EMAC3_MTL_LOW_CRED_BASE_ADDR 0x00008024 +#define EMAC3_MTL_LOW_CRED_OFFSET 0x1000 +#define EMAC3_MTL_LOW_CREDX_BASE_ADDR(x) (EMAC3_MTL_LOW_CRED_BASE_ADDR + \ + ((x) * EMAC3_MTL_LOW_CRED_OFFSET)) #define MTL_LOW_CRED_BASE_ADDR 0x00000d24 #define MTL_LOW_CRED_OFFSET 0x40 #define MTL_LOW_CREDX_BASE_ADDR(x) (MTL_LOW_CRED_BASE_ADDR + \ diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c index 8c7a0b7c9952..83240f51506b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c @@ -198,15 +198,28 @@ static void dwmac4_prog_mtl_tx_algorithms(struct mac_device_info *hw, writel(value, ioaddr + MTL_OPERATION_MODE); } -static void dwmac4_set_mtl_tx_queue_weight(struct mac_device_info *hw, - u32 weight, u32 queue) +static void do_set_mtl_tx_queue_weight(struct mac_device_info *hw, + u32 addr_offset, u32 weight) { void __iomem *ioaddr = hw->pcsr; - u32 value = readl(ioaddr + MTL_TXQX_WEIGHT_BASE_ADDR(queue)); + u32 value = readl(ioaddr + addr_offset); value &= ~MTL_TXQ_WEIGHT_ISCQW_MASK; value |= weight & MTL_TXQ_WEIGHT_ISCQW_MASK; - writel(value, ioaddr + MTL_TXQX_WEIGHT_BASE_ADDR(queue)); + writel(value, ioaddr + addr_offset); +} + +static void emac3_set_mtl_tx_queue_weight(struct mac_device_info *hw, + u32 weight, u32 queue) +{ + do_set_mtl_tx_queue_weight(hw, EMAC3_MTL_TXQX_WEIGHT_BASE_ADDR(queue), + weight); +} + +static void dwmac4_set_mtl_tx_queue_weight(struct mac_device_info *hw, + u32 weight, u32 queue) +{ + do_set_mtl_tx_queue_weight(hw, MTL_TXQX_WEIGHT_BASE_ADDR(queue), weight); } static void dwmac4_map_mtl_dma(struct mac_device_info *hw, u32 queue, u32 chan) @@ -227,45 +240,100 @@ static void dwmac4_map_mtl_dma(struct mac_device_info *hw, u32 queue, u32 chan) } } -static void dwmac4_config_cbs(struct mac_device_info *hw, - u32 send_slope, u32 idle_slope, - u32 high_credit, u32 low_credit, u32 queue) +struct cbs_args { + struct mac_device_info *hw; + u32 send_slope; + u32 idle_slope; + u32 high_credit; + u32 low_credit; + u32 queue; + u32 etsx_ctrl_base_addr; + u32 send_slp_credx_base_addr; + u32 high_credx_base_addr; + u32 low_credx_base_addr; + void (*set_mtl_tx_queue_weight)(struct mac_device_info *hw, + u32 weight, u32 queue); +}; + +static void do_config_cbs(struct cbs_args args) { - void __iomem *ioaddr = hw->pcsr; + void __iomem *ioaddr = args.hw->pcsr; u32 value; - pr_debug("Queue %d configured as AVB. Parameters:\n", queue); - pr_debug("\tsend_slope: 0x%08x\n", send_slope); - pr_debug("\tidle_slope: 0x%08x\n", idle_slope); - pr_debug("\thigh_credit: 0x%08x\n", high_credit); - pr_debug("\tlow_credit: 0x%08x\n", low_credit); + pr_debug("Queue %d configured as AVB. Parameters:\n", args.queue); + pr_debug("\tsend_slope: 0x%08x\n", args.send_slope); + pr_debug("\tidle_slope: 0x%08x\n", args.idle_slope); + pr_debug("\thigh_credit: 0x%08x\n", args.high_credit); + pr_debug("\tlow_credit: 0x%08x\n", args.low_credit); /* enable AV algorithm */ - value = readl(ioaddr + MTL_ETSX_CTRL_BASE_ADDR(queue)); + value = readl(ioaddr + args.etsx_ctrl_base_addr); value |= MTL_ETS_CTRL_AVALG; value |= MTL_ETS_CTRL_CC; - writel(value, ioaddr + MTL_ETSX_CTRL_BASE_ADDR(queue)); + writel(value, ioaddr + args.etsx_ctrl_base_addr); /* configure send slope */ - value = readl(ioaddr + MTL_SEND_SLP_CREDX_BASE_ADDR(queue)); + value = readl(ioaddr + args.send_slp_credx_base_addr); value &= ~MTL_SEND_SLP_CRED_SSC_MASK; - value |= send_slope & MTL_SEND_SLP_CRED_SSC_MASK; - writel(value, ioaddr + MTL_SEND_SLP_CREDX_BASE_ADDR(queue)); + value |= args.send_slope & MTL_SEND_SLP_CRED_SSC_MASK; + writel(value, ioaddr + args.send_slp_credx_base_addr); /* configure idle slope (same register as tx weight) */ - dwmac4_set_mtl_tx_queue_weight(hw, idle_slope, queue); + args.set_mtl_tx_queue_weight(args.hw, args.idle_slope, args.queue); /* configure high credit */ - value = readl(ioaddr + MTL_HIGH_CREDX_BASE_ADDR(queue)); + value = readl(ioaddr + args.high_credx_base_addr); value &= ~MTL_HIGH_CRED_HC_MASK; - value |= high_credit & MTL_HIGH_CRED_HC_MASK; - writel(value, ioaddr + MTL_HIGH_CREDX_BASE_ADDR(queue)); + value |= args.high_credit & MTL_HIGH_CRED_HC_MASK; + writel(value, ioaddr + args.high_credx_base_addr); - /* configure high credit */ - value = readl(ioaddr + MTL_LOW_CREDX_BASE_ADDR(queue)); + /* configure low credit */ + value = readl(ioaddr + args.low_credx_base_addr); value &= ~MTL_HIGH_CRED_LC_MASK; - value |= low_credit & MTL_HIGH_CRED_LC_MASK; - writel(value, ioaddr + MTL_LOW_CREDX_BASE_ADDR(queue)); + value |= args.low_credit & MTL_HIGH_CRED_LC_MASK; + writel(value, ioaddr + args.low_credx_base_addr); +} + +static void emac3_config_cbs(struct mac_device_info *hw, u32 send_slope, + u32 idle_slope, u32 high_credit, + u32 low_credit, u32 queue) +{ + struct cbs_args args = { + .hw = hw, + .send_slope = send_slope, + .idle_slope = idle_slope, + .high_credit = high_credit, + .low_credit = low_credit, + .queue = queue, + .etsx_ctrl_base_addr = EMAC3_MTL_ETSX_CTRL_BASE_ADDR(queue), + .send_slp_credx_base_addr = EMAC3_MTL_SEND_SLP_CREDX_BASE_ADDR(queue), + .high_credx_base_addr = EMAC3_MTL_HIGH_CREDX_BASE_ADDR(queue), + .low_credx_base_addr = EMAC3_MTL_LOW_CREDX_BASE_ADDR(queue), + .set_mtl_tx_queue_weight = emac3_set_mtl_tx_queue_weight, + }; + + do_config_cbs(args); +} + +static void dwmac4_config_cbs(struct mac_device_info *hw, u32 send_slope, + u32 idle_slope, u32 high_credit, + u32 low_credit, u32 queue) +{ + struct cbs_args args = { + .hw = hw, + .send_slope = send_slope, + .idle_slope = idle_slope, + .high_credit = high_credit, + .low_credit = low_credit, + .queue = queue, + .etsx_ctrl_base_addr = MTL_ETSX_CTRL_BASE_ADDR(queue), + .send_slp_credx_base_addr = MTL_SEND_SLP_CREDX_BASE_ADDR(queue), + .high_credx_base_addr = MTL_HIGH_CREDX_BASE_ADDR(queue), + .low_credx_base_addr = MTL_LOW_CREDX_BASE_ADDR(queue), + .set_mtl_tx_queue_weight = dwmac4_set_mtl_tx_queue_weight, + }; + + do_config_cbs(args); } static void dwmac4_dump_regs(struct mac_device_info *hw, u32 *reg_space) @@ -814,7 +882,8 @@ static void dwmac4_phystatus(void __iomem *ioaddr, struct stmmac_extra_stats *x) } } -static int dwmac4_irq_mtl_status(struct mac_device_info *hw, u32 chan) +static int do_irq_mtl_status(struct mac_device_info *hw, u32 chan, + u32 addr_offset) { void __iomem *ioaddr = hw->pcsr; u32 mtl_int_qx_status; @@ -825,12 +894,12 @@ static int dwmac4_irq_mtl_status(struct mac_device_info *hw, u32 chan) /* Check MTL Interrupt */ if (mtl_int_qx_status & MTL_INT_QX(chan)) { /* read Queue x Interrupt status */ - u32 status = readl(ioaddr + MTL_CHAN_INT_CTRL(chan)); + u32 status = readl(ioaddr + addr_offset); if (status & MTL_RX_OVERFLOW_INT) { /* clear Interrupt */ writel(status | MTL_RX_OVERFLOW_INT, - ioaddr + MTL_CHAN_INT_CTRL(chan)); + ioaddr + addr_offset); ret = CORE_IRQ_MTL_RX_OVERFLOW; } } @@ -838,6 +907,16 @@ static int dwmac4_irq_mtl_status(struct mac_device_info *hw, u32 chan) return ret; } +static int emac3_irq_mtl_status(struct mac_device_info *hw, u32 chan) +{ + return do_irq_mtl_status(hw, chan, EMAC3_MTL_CHAN_INT_CTRL(chan)); +} + +static int dwmac4_irq_mtl_status(struct mac_device_info *hw, u32 chan) +{ + return do_irq_mtl_status(hw, chan, MTL_CHAN_INT_CTRL(chan)); +} + static int dwmac4_irq_status(struct mac_device_info *hw, struct stmmac_extra_stats *x) { @@ -888,14 +967,16 @@ static int dwmac4_irq_status(struct mac_device_info *hw, return ret; } -static void dwmac4_debug(void __iomem *ioaddr, struct stmmac_extra_stats *x, - u32 rx_queues, u32 tx_queues) +static void do_debug(void __iomem *ioaddr, struct stmmac_extra_stats *x, + u32 rx_queues, u32 tx_queues, + u32 (*rx_addr_offset)(u32 queue), + u32 (*tx_addr_offset)(u32 queue)) { u32 value; u32 queue; for (queue = 0; queue < tx_queues; queue++) { - value = readl(ioaddr + MTL_CHAN_TX_DEBUG(queue)); + value = readl(ioaddr + tx_addr_offset(queue)); if (value & MTL_DEBUG_TXSTSFSTS) x->mtl_tx_status_fifo_full++; @@ -920,7 +1001,7 @@ static void dwmac4_debug(void __iomem *ioaddr, struct stmmac_extra_stats *x, } for (queue = 0; queue < rx_queues; queue++) { - value = readl(ioaddr + MTL_CHAN_RX_DEBUG(queue)); + value = readl(ioaddr + rx_addr_offset(queue)); if (value & MTL_DEBUG_RXFSTS_MASK) { u32 rxfsts = (value & MTL_DEBUG_RXFSTS_MASK) @@ -977,6 +1058,42 @@ static void dwmac4_debug(void __iomem *ioaddr, struct stmmac_extra_stats *x, x->mac_gmii_rx_proto_engine++; } +static u32 emac3_debug_rx_addr_offset(u32 queue) +{ + return EMAC3_MTL_CHAN_RX_DEBUG(queue); +} + +static u32 emac3_debug_tx_addr_offset(u32 queue) +{ + return EMAC3_MTL_CHAN_TX_DEBUG(queue); +} + +static void emac3_debug(void __iomem *ioaddr, + struct stmmac_extra_stats *x, u32 rx_queues, + u32 tx_queues) +{ + do_debug(ioaddr, x, rx_queues, tx_queues, emac3_debug_rx_addr_offset, + emac3_debug_tx_addr_offset); +} + +static u32 dwmac4_debug_rx_addr_offset(u32 queue) +{ + return MTL_CHAN_RX_DEBUG(queue); +} + +static u32 dwmac4_debug_tx_addr_offset(u32 queue) +{ + return MTL_CHAN_TX_DEBUG(queue); +} + +static void dwmac4_debug(void __iomem *ioaddr, + struct stmmac_extra_stats *x, u32 rx_queues, + u32 tx_queues) +{ + do_debug(ioaddr, x, rx_queues, tx_queues, dwmac4_debug_rx_addr_offset, + dwmac4_debug_tx_addr_offset); +} + static void dwmac4_set_mac_loopback(void __iomem *ioaddr, bool enable) { u32 value = readl(ioaddr + GMAC_CONFIG); @@ -1309,6 +1426,58 @@ const struct stmmac_ops dwmac510_ops = { .restore_hw_vlan_rx_fltr = dwmac4_restore_hw_vlan_rx_fltr, }; +const struct stmmac_ops emac3_ops = { + .core_init = dwmac4_core_init, + .set_mac = stmmac_dwmac4_set_mac, + .rx_ipc = dwmac4_rx_ipc_enable, + .rx_queue_enable = dwmac4_rx_queue_enable, + .rx_queue_prio = dwmac4_rx_queue_priority, + .tx_queue_prio = dwmac4_tx_queue_priority, + .rx_queue_routing = dwmac4_rx_queue_routing, + .prog_mtl_rx_algorithms = dwmac4_prog_mtl_rx_algorithms, + .prog_mtl_tx_algorithms = dwmac4_prog_mtl_tx_algorithms, + .set_mtl_tx_queue_weight = emac3_set_mtl_tx_queue_weight, + .map_mtl_to_dma = dwmac4_map_mtl_dma, + .config_cbs = emac3_config_cbs, + .dump_regs = dwmac4_dump_regs, + .host_irq_status = dwmac4_irq_status, + .host_mtl_irq_status = emac3_irq_mtl_status, + .flow_ctrl = dwmac4_flow_ctrl, + .pmt = dwmac4_pmt, + .set_umac_addr = dwmac4_set_umac_addr, + .get_umac_addr = dwmac4_get_umac_addr, + .set_eee_mode = dwmac4_set_eee_mode, + .reset_eee_mode = dwmac4_reset_eee_mode, + .set_eee_lpi_entry_timer = dwmac4_set_eee_lpi_entry_timer, + .set_eee_timer = dwmac4_set_eee_timer, + .set_eee_pls = dwmac4_set_eee_pls, + .pcs_ctrl_ane = dwmac4_ctrl_ane, + .pcs_rane = dwmac4_rane, + .pcs_get_adv_lp = dwmac4_get_adv_lp, + .debug = emac3_debug, + .set_filter = dwmac4_set_filter, + .safety_feat_config = dwmac5_safety_feat_config, + .safety_feat_irq_status = dwmac5_safety_feat_irq_status, + .safety_feat_dump = dwmac5_safety_feat_dump, + .rxp_config = dwmac5_rxp_config, + .flex_pps_config = dwmac5_flex_pps_config, + .set_mac_loopback = dwmac4_set_mac_loopback, + .update_vlan_hash = dwmac4_update_vlan_hash, + .sarc_configure = dwmac4_sarc_configure, + .enable_vlan = dwmac4_enable_vlan, + .set_arp_offload = dwmac4_set_arp_offload, + .config_l3_filter = dwmac4_config_l3_filter, + .config_l4_filter = dwmac4_config_l4_filter, + .est_configure = dwmac5_est_configure, + .est_irq_status = dwmac5_est_irq_status, + .fpe_configure = dwmac5_fpe_configure, + .fpe_send_mpacket = dwmac5_fpe_send_mpacket, + .fpe_irq_status = dwmac5_fpe_irq_status, + .add_hw_vlan_rx_fltr = dwmac4_add_hw_vlan_rx_fltr, + .del_hw_vlan_rx_fltr = dwmac4_del_hw_vlan_rx_fltr, + .restore_hw_vlan_rx_fltr = dwmac4_restore_hw_vlan_rx_fltr, +}; + static u32 dwmac4_get_num_vlan(void __iomem *ioaddr) { u32 val, num_vlan; diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c index d99fa028c646..7d243c69c20e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c @@ -68,77 +68,127 @@ static void dwmac4_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi) writel(value, ioaddr + DMA_SYS_BUS_MODE); } -static void dwmac4_dma_init_rx_chan(void __iomem *ioaddr, - struct stmmac_dma_cfg *dma_cfg, - dma_addr_t dma_rx_phy, u32 chan) +static void do_dma_init_rx_chan(void __iomem *ioaddr, u32 rx_ctl_offset, + u32 rx_high_offset, u32 rx_base_offset, + struct stmmac_dma_cfg *dma_cfg, + dma_addr_t dma_rx_phy) { u32 value; u32 rxpbl = dma_cfg->rxpbl ?: dma_cfg->pbl; - value = readl(ioaddr + DMA_CHAN_RX_CONTROL(chan)); + value = readl(ioaddr + rx_ctl_offset); value = value | (rxpbl << DMA_BUS_MODE_RPBL_SHIFT); - writel(value, ioaddr + DMA_CHAN_RX_CONTROL(chan)); + writel(value, ioaddr + rx_ctl_offset); if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT) && likely(dma_cfg->eame)) - writel(upper_32_bits(dma_rx_phy), - ioaddr + DMA_CHAN_RX_BASE_ADDR_HI(chan)); + writel(upper_32_bits(dma_rx_phy), ioaddr + rx_high_offset); - writel(lower_32_bits(dma_rx_phy), ioaddr + DMA_CHAN_RX_BASE_ADDR(chan)); + writel(lower_32_bits(dma_rx_phy), ioaddr + rx_base_offset); } -static void dwmac4_dma_init_tx_chan(void __iomem *ioaddr, +static void emac3_dma_init_rx_chan(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, + dma_addr_t dma_rx_phy, u32 chan) +{ + do_dma_init_rx_chan(ioaddr, EMAC3_DMA_CHAN_RX_CONTROL(chan), + EMAC3_DMA_CHAN_RX_BASE_ADDR_HI(chan), + EMAC3_DMA_CHAN_RX_BASE_ADDR(chan), + dma_cfg, dma_rx_phy); +} + +static void dwmac4_dma_init_rx_chan(void __iomem *ioaddr, struct stmmac_dma_cfg *dma_cfg, - dma_addr_t dma_tx_phy, u32 chan) + dma_addr_t dma_rx_phy, u32 chan) +{ + do_dma_init_rx_chan(ioaddr, DMA_CHAN_RX_CONTROL(chan), + DMA_CHAN_RX_BASE_ADDR_HI(chan), + DMA_CHAN_RX_BASE_ADDR(chan), + dma_cfg, dma_rx_phy); +} + +static void do_dma_init_tx_chan(void __iomem *ioaddr, u32 tx_ctl_offset, + u32 tx_high_offset, u32 tx_base_offset, + struct stmmac_dma_cfg *dma_cfg, + dma_addr_t dma_tx_phy) { u32 value; u32 txpbl = dma_cfg->txpbl ?: dma_cfg->pbl; - value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)); + value = readl(ioaddr + tx_ctl_offset); value = value | (txpbl << DMA_BUS_MODE_PBL_SHIFT); /* Enable OSP to get best performance */ value |= DMA_CONTROL_OSP; - writel(value, ioaddr + DMA_CHAN_TX_CONTROL(chan)); + writel(value, ioaddr + tx_ctl_offset); if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT) && likely(dma_cfg->eame)) - writel(upper_32_bits(dma_tx_phy), - ioaddr + DMA_CHAN_TX_BASE_ADDR_HI(chan)); + writel(upper_32_bits(dma_tx_phy), ioaddr + tx_high_offset); - writel(lower_32_bits(dma_tx_phy), ioaddr + DMA_CHAN_TX_BASE_ADDR(chan)); + writel(lower_32_bits(dma_tx_phy), ioaddr + tx_base_offset); } -static void dwmac4_dma_init_channel(void __iomem *ioaddr, - struct stmmac_dma_cfg *dma_cfg, u32 chan) +static void emac3_dma_init_tx_chan(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, + dma_addr_t dma_tx_phy, u32 chan) +{ + do_dma_init_tx_chan(ioaddr, EMAC3_DMA_CHAN_TX_CONTROL(chan), + EMAC3_DMA_CHAN_TX_BASE_ADDR_HI(chan), + EMAC3_DMA_CHAN_TX_BASE_ADDR(chan), + dma_cfg, dma_tx_phy); +} + +static void dwmac4_dma_init_tx_chan(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, + dma_addr_t dma_tx_phy, u32 chan) +{ + do_dma_init_tx_chan(ioaddr, DMA_CHAN_TX_CONTROL(chan), + DMA_CHAN_TX_BASE_ADDR_HI(chan), + DMA_CHAN_TX_BASE_ADDR(chan), + dma_cfg, dma_tx_phy); +} + +static void do_dma_init_channel(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, + u32 addr_offset, u32 intr_addr_offset, + u32 intr_addr_mask) { u32 value; /* common channel control register config */ - value = readl(ioaddr + DMA_CHAN_CONTROL(chan)); + value = readl(ioaddr + addr_offset); if (dma_cfg->pblx8) value = value | DMA_BUS_MODE_PBL; - writel(value, ioaddr + DMA_CHAN_CONTROL(chan)); + writel(value, ioaddr + addr_offset); /* Mask interrupts by writing to CSR7 */ - writel(DMA_CHAN_INTR_DEFAULT_MASK, - ioaddr + DMA_CHAN_INTR_ENA(chan)); + writel(intr_addr_mask, ioaddr + intr_addr_offset); } -static void dwmac410_dma_init_channel(void __iomem *ioaddr, - struct stmmac_dma_cfg *dma_cfg, u32 chan) +static void emac3_dma_init_channel(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, + u32 chan) { - u32 value; - - /* common channel control register config */ - value = readl(ioaddr + DMA_CHAN_CONTROL(chan)); - if (dma_cfg->pblx8) - value = value | DMA_BUS_MODE_PBL; + do_dma_init_channel(ioaddr, dma_cfg, EMAC3_DMA_CHAN_CONTROL(chan), + EMAC3_DMA_CHAN_INTR_ENA(chan), + DMA_CHAN_INTR_DEFAULT_MASK_4_10); +} - writel(value, ioaddr + DMA_CHAN_CONTROL(chan)); +static void dwmac4_dma_init_channel(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, + u32 chan) +{ + do_dma_init_channel(ioaddr, dma_cfg, DMA_CHAN_CONTROL(chan), + DMA_CHAN_INTR_ENA(chan), + DMA_CHAN_INTR_DEFAULT_MASK); +} - /* Mask interrupts by writing to CSR7 */ - writel(DMA_CHAN_INTR_DEFAULT_MASK_4_10, - ioaddr + DMA_CHAN_INTR_ENA(chan)); +static void dwmac410_dma_init_channel(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, u32 chan) +{ + do_dma_init_channel(ioaddr, dma_cfg, DMA_CHAN_CONTROL(chan), + DMA_CHAN_INTR_ENA(chan), + DMA_CHAN_INTR_DEFAULT_MASK_4_10); } static void dwmac4_dma_init(void __iomem *ioaddr, @@ -176,6 +226,46 @@ static void dwmac4_dma_init(void __iomem *ioaddr, } +static void _emac3_dump_dma_regs(void __iomem *ioaddr, u32 channel, + u32 *reg_space) +{ + /* Use dwmac4's reg_space offsets to reuse common stmmac_ethtool code */ + reg_space[DMA_CHAN_CONTROL(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_CONTROL(channel)); + reg_space[DMA_CHAN_TX_CONTROL(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_TX_CONTROL(channel)); + reg_space[DMA_CHAN_RX_CONTROL(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_RX_CONTROL(channel)); + reg_space[DMA_CHAN_TX_BASE_ADDR(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_TX_BASE_ADDR(channel)); + reg_space[DMA_CHAN_RX_BASE_ADDR(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_RX_BASE_ADDR(channel)); + reg_space[DMA_CHAN_TX_END_ADDR(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_TX_END_ADDR(channel)); + reg_space[DMA_CHAN_RX_END_ADDR(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_RX_END_ADDR(channel)); + reg_space[DMA_CHAN_TX_RING_LEN(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_TX_RING_LEN(channel)); + reg_space[DMA_CHAN_RX_RING_LEN(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_RX_RING_LEN(channel)); + reg_space[DMA_CHAN_INTR_ENA(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_INTR_ENA(channel)); + reg_space[DMA_CHAN_RX_WATCHDOG(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_RX_WATCHDOG(channel)); + reg_space[DMA_CHAN_SLOT_CTRL_STATUS(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_SLOT_CTRL_STATUS(channel)); + reg_space[DMA_CHAN_CUR_TX_DESC(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_CUR_TX_DESC(channel)); + reg_space[DMA_CHAN_CUR_RX_DESC(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_CUR_RX_DESC(channel)); + reg_space[DMA_CHAN_CUR_TX_BUF_ADDR(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_CUR_TX_BUF_ADDR(channel)); + reg_space[DMA_CHAN_CUR_RX_BUF_ADDR(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_CUR_RX_BUF_ADDR(channel)); + reg_space[DMA_CHAN_STATUS(channel) / 4] = + readl(ioaddr + EMAC3_DMA_CHAN_STATUS(channel)); +} + static void _dwmac4_dump_dma_regs(void __iomem *ioaddr, u32 channel, u32 *reg_space) { @@ -215,6 +305,12 @@ static void _dwmac4_dump_dma_regs(void __iomem *ioaddr, u32 channel, readl(ioaddr + DMA_CHAN_STATUS(channel)); } +static void emac3_dump_dma_regs(void __iomem *ioaddr, u32 *reg_space) +{ + for (int i = 0; i < DMA_CHANNEL_NB_MAX; i++) + _emac3_dump_dma_regs(ioaddr, i, reg_space); +} + static void dwmac4_dump_dma_regs(void __iomem *ioaddr, u32 *reg_space) { int i; @@ -223,18 +319,23 @@ static void dwmac4_dump_dma_regs(void __iomem *ioaddr, u32 *reg_space) _dwmac4_dump_dma_regs(ioaddr, i, reg_space); } +static void emac3_rx_watchdog(void __iomem *ioaddr, u32 riwt, u32 queue) +{ + writel(riwt, ioaddr + EMAC3_DMA_CHAN_RX_WATCHDOG(queue)); +} + static void dwmac4_rx_watchdog(void __iomem *ioaddr, u32 riwt, u32 queue) { writel(riwt, ioaddr + DMA_CHAN_RX_WATCHDOG(queue)); } -static void dwmac4_dma_rx_chan_op_mode(void __iomem *ioaddr, int mode, - u32 channel, int fifosz, u8 qmode) +static void do_dma_rx_chan_op_mode(void __iomem *ioaddr, int mode, int fifosz, + u8 qmode, u32 addr_offset) { unsigned int rqs = fifosz / 256 - 1; u32 mtl_rx_op; - mtl_rx_op = readl(ioaddr + MTL_CHAN_RX_OP_MODE(channel)); + mtl_rx_op = readl(ioaddr + addr_offset); if (mode == SF_DMA_MODE) { pr_debug("GMAC: enable RX store and forward mode\n"); @@ -292,13 +393,27 @@ static void dwmac4_dma_rx_chan_op_mode(void __iomem *ioaddr, int mode, mtl_rx_op |= rfa << MTL_OP_MODE_RFA_SHIFT; } - writel(mtl_rx_op, ioaddr + MTL_CHAN_RX_OP_MODE(channel)); + writel(mtl_rx_op, ioaddr + addr_offset); } -static void dwmac4_dma_tx_chan_op_mode(void __iomem *ioaddr, int mode, +static void emac3_dma_rx_chan_op_mode(void __iomem *ioaddr, int mode, + u32 channel, int fifosz, u8 qmode) +{ + do_dma_rx_chan_op_mode(ioaddr, mode, fifosz, qmode, + EMAC3_MTL_CHAN_RX_OP_MODE(channel)); +} + +static void dwmac4_dma_rx_chan_op_mode(void __iomem *ioaddr, int mode, u32 channel, int fifosz, u8 qmode) { - u32 mtl_tx_op = readl(ioaddr + MTL_CHAN_TX_OP_MODE(channel)); + do_dma_rx_chan_op_mode(ioaddr, mode, fifosz, qmode, + MTL_CHAN_RX_OP_MODE(channel)); +} + +static void do_dma_tx_chan_op_mode(void __iomem *ioaddr, int mode, int fifosz, + u8 qmode, u32 addr_offset) +{ + u32 mtl_tx_op = readl(ioaddr + addr_offset); unsigned int tqs = fifosz / 256 - 1; if (mode == SF_DMA_MODE) { @@ -344,7 +459,21 @@ static void dwmac4_dma_tx_chan_op_mode(void __iomem *ioaddr, int mode, mtl_tx_op &= ~MTL_OP_MODE_TQS_MASK; mtl_tx_op |= tqs << MTL_OP_MODE_TQS_SHIFT; - writel(mtl_tx_op, ioaddr + MTL_CHAN_TX_OP_MODE(channel)); + writel(mtl_tx_op, ioaddr + addr_offset); +} + +static void emac3_dma_tx_chan_op_mode(void __iomem *ioaddr, int mode, + u32 channel, int fifosz, u8 qmode) +{ + do_dma_tx_chan_op_mode(ioaddr, mode, fifosz, qmode, + EMAC3_MTL_CHAN_TX_OP_MODE(channel)); +} + +static void dwmac4_dma_tx_chan_op_mode(void __iomem *ioaddr, int mode, + u32 channel, int fifosz, u8 qmode) +{ + do_dma_tx_chan_op_mode(ioaddr, mode, fifosz, qmode, + MTL_CHAN_TX_OP_MODE(channel)); } static int dwmac4_get_hw_feature(void __iomem *ioaddr, @@ -442,26 +571,29 @@ static int dwmac4_get_hw_feature(void __iomem *ioaddr, } /* Enable/disable TSO feature and set MSS */ -static void dwmac4_enable_tso(void __iomem *ioaddr, bool en, u32 chan) +static void do_enable_tso(void __iomem *ioaddr, bool en, u32 addr_offset) { - u32 value; + u32 value = readl(ioaddr + addr_offset); - if (en) { - /* enable TSO */ - value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)); - writel(value | DMA_CONTROL_TSE, - ioaddr + DMA_CHAN_TX_CONTROL(chan)); - } else { - /* enable TSO */ - value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)); - writel(value & ~DMA_CONTROL_TSE, - ioaddr + DMA_CHAN_TX_CONTROL(chan)); - } + if (en) + writel(value | DMA_CONTROL_TSE, ioaddr + addr_offset); + else + writel(value & ~DMA_CONTROL_TSE, ioaddr + addr_offset); } -static void dwmac4_qmode(void __iomem *ioaddr, u32 channel, u8 qmode) +static void emac3_enable_tso(void __iomem *ioaddr, bool en, u32 chan) { - u32 mtl_tx_op = readl(ioaddr + MTL_CHAN_TX_OP_MODE(channel)); + do_enable_tso(ioaddr, en, EMAC3_DMA_CHAN_TX_CONTROL(chan)); +} + +static void dwmac4_enable_tso(void __iomem *ioaddr, bool en, u32 chan) +{ + do_enable_tso(ioaddr, en, DMA_CHAN_TX_CONTROL(chan)); +} + +static void do_qmode(void __iomem *ioaddr, u8 qmode, u32 addr_offset) +{ + u32 mtl_tx_op = readl(ioaddr + addr_offset); mtl_tx_op &= ~MTL_OP_MODE_TXQEN_MASK; if (qmode != MTL_QUEUE_AVB) @@ -469,20 +601,40 @@ static void dwmac4_qmode(void __iomem *ioaddr, u32 channel, u8 qmode) else mtl_tx_op |= MTL_OP_MODE_TXQEN_AV; - writel(mtl_tx_op, ioaddr + MTL_CHAN_TX_OP_MODE(channel)); + writel(mtl_tx_op, ioaddr + addr_offset); } -static void dwmac4_set_bfsize(void __iomem *ioaddr, int bfsize, u32 chan) +static void emac3_qmode(void __iomem *ioaddr, u32 channel, u8 qmode) { - u32 value = readl(ioaddr + DMA_CHAN_RX_CONTROL(chan)); + do_qmode(ioaddr, qmode, EMAC3_MTL_CHAN_TX_OP_MODE(channel)); +} + +static void dwmac4_qmode(void __iomem *ioaddr, u32 channel, u8 qmode) +{ + do_qmode(ioaddr, qmode, MTL_CHAN_TX_OP_MODE(channel)); +} + +static void do_set_bfsize(void __iomem *ioaddr, int bfsize, u32 addr_offset) +{ + u32 value = readl(ioaddr + addr_offset); value &= ~DMA_RBSZ_MASK; value |= (bfsize << DMA_RBSZ_SHIFT) & DMA_RBSZ_MASK; - writel(value, ioaddr + DMA_CHAN_RX_CONTROL(chan)); + writel(value, ioaddr + addr_offset); } -static void dwmac4_enable_sph(void __iomem *ioaddr, bool en, u32 chan) +static void emac3_set_bfsize(void __iomem *ioaddr, int bfsize, u32 chan) +{ + do_set_bfsize(ioaddr, bfsize, EMAC3_DMA_CHAN_RX_CONTROL(chan)); +} + +static void dwmac4_set_bfsize(void __iomem *ioaddr, int bfsize, u32 chan) +{ + do_set_bfsize(ioaddr, bfsize, DMA_CHAN_RX_CONTROL(chan)); +} + +static void do_enable_sph(void __iomem *ioaddr, bool en, u32 addr_offset) { u32 value = readl(ioaddr + GMAC_EXT_CONFIG); @@ -490,26 +642,36 @@ static void dwmac4_enable_sph(void __iomem *ioaddr, bool en, u32 chan) value |= GMAC_CONFIG_HDSMS_256; /* Segment max 256 bytes */ writel(value, ioaddr + GMAC_EXT_CONFIG); - value = readl(ioaddr + DMA_CHAN_CONTROL(chan)); + value = readl(ioaddr + addr_offset); if (en) value |= DMA_CONTROL_SPH; else value &= ~DMA_CONTROL_SPH; - writel(value, ioaddr + DMA_CHAN_CONTROL(chan)); + writel(value, ioaddr + addr_offset); } -static int dwmac4_enable_tbs(void __iomem *ioaddr, bool en, u32 chan) +static void emac3_enable_sph(void __iomem *ioaddr, bool en, u32 chan) { - u32 value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)); + do_enable_sph(ioaddr, en, EMAC3_DMA_CHAN_CONTROL(chan)); +} + +static void dwmac4_enable_sph(void __iomem *ioaddr, bool en, u32 chan) +{ + do_enable_sph(ioaddr, en, DMA_CHAN_CONTROL(chan)); +} + +static int do_enable_tbs(void __iomem *ioaddr, bool en, u32 addr_offset) +{ + u32 value = readl(ioaddr + addr_offset); if (en) value |= DMA_CONTROL_EDSE; else value &= ~DMA_CONTROL_EDSE; - writel(value, ioaddr + DMA_CHAN_TX_CONTROL(chan)); + writel(value, ioaddr + addr_offset); - value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)) & DMA_CONTROL_EDSE; + value = readl(ioaddr + addr_offset) & DMA_CONTROL_EDSE; if (en && !value) return -EIO; @@ -517,6 +679,16 @@ static int dwmac4_enable_tbs(void __iomem *ioaddr, bool en, u32 chan) return 0; } +static int emac3_enable_tbs(void __iomem *ioaddr, bool en, u32 chan) +{ + return do_enable_tbs(ioaddr, en, EMAC3_DMA_CHAN_TX_CONTROL(chan)); +} + +static int dwmac4_enable_tbs(void __iomem *ioaddr, bool en, u32 chan) +{ + return do_enable_tbs(ioaddr, en, DMA_CHAN_TX_CONTROL(chan)); +} + const struct stmmac_dma_ops dwmac4_dma_ops = { .reset = dwmac4_dma_reset, .init = dwmac4_dma_init, @@ -575,3 +747,33 @@ const struct stmmac_dma_ops dwmac410_dma_ops = { .enable_sph = dwmac4_enable_sph, .enable_tbs = dwmac4_enable_tbs, }; + +const struct stmmac_dma_ops emac3_dma_ops = { + .reset = dwmac4_dma_reset, + .init = dwmac4_dma_init, + .init_chan = emac3_dma_init_channel, + .init_rx_chan = emac3_dma_init_rx_chan, + .init_tx_chan = emac3_dma_init_tx_chan, + .axi = dwmac4_dma_axi, + .dump_regs = emac3_dump_dma_regs, + .dma_rx_mode = emac3_dma_rx_chan_op_mode, + .dma_tx_mode = emac3_dma_tx_chan_op_mode, + .enable_dma_irq = emac3_enable_dma_irq, + .disable_dma_irq = emac3_disable_dma_irq, + .start_tx = emac3_dma_start_tx, + .stop_tx = emac3_dma_stop_tx, + .start_rx = emac3_dma_start_rx, + .stop_rx = emac3_dma_stop_rx, + .dma_interrupt = emac3_dma_interrupt, + .get_hw_feature = dwmac4_get_hw_feature, + .rx_watchdog = emac3_rx_watchdog, + .set_rx_ring_len = emac3_set_rx_ring_len, + .set_tx_ring_len = emac3_set_tx_ring_len, + .set_rx_tail_ptr = emac3_set_rx_tail_ptr, + .set_tx_tail_ptr = emac3_set_tx_tail_ptr, + .enable_tso = emac3_enable_tso, + .qmode = emac3_qmode, + .set_bfsize = emac3_set_bfsize, + .enable_sph = emac3_enable_sph, + .enable_tbs = emac3_enable_tbs, +}; diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h index 9321879b599c..c9899eefba6c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h @@ -93,8 +93,11 @@ #define DMA_TBS_DEF_FTOS (DMA_TBS_FTOS | DMA_TBS_FTOV) /* Following DMA defines are chanels oriented */ +#define EMAC3_DMA_CHAN_BASE_ADDR 0x00008100 +#define EMAC3_DMA_CHAN_BASE_OFFSET 0x1000 #define DMA_CHAN_BASE_ADDR 0x00001100 #define DMA_CHAN_BASE_OFFSET 0x80 + #define DMA_CHANX_BASE_ADDR(x) (DMA_CHAN_BASE_ADDR + \ (x * DMA_CHAN_BASE_OFFSET)) #define DMA_CHAN_REG_NUMBER 17 @@ -119,6 +122,29 @@ #define DMA_CHAN_CUR_RX_BUF_ADDR(x) (DMA_CHANX_BASE_ADDR(x) + 0x5c) #define DMA_CHAN_STATUS(x) (DMA_CHANX_BASE_ADDR(x) + 0x60) +#define EMAC3_DMA_CHANX_BASE_ADDR(x) (EMAC3_DMA_CHAN_BASE_ADDR + \ + ((x) * EMAC3_DMA_CHAN_BASE_OFFSET)) + +#define EMAC3_DMA_CHAN_CONTROL(x) EMAC3_DMA_CHANX_BASE_ADDR(x) +#define EMAC3_DMA_CHAN_TX_CONTROL(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x4) +#define EMAC3_DMA_CHAN_RX_CONTROL(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x8) +#define EMAC3_DMA_CHAN_TX_BASE_ADDR_HI(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x10) +#define EMAC3_DMA_CHAN_TX_BASE_ADDR(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x14) +#define EMAC3_DMA_CHAN_RX_BASE_ADDR_HI(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x18) +#define EMAC3_DMA_CHAN_RX_BASE_ADDR(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x1c) +#define EMAC3_DMA_CHAN_TX_END_ADDR(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x20) +#define EMAC3_DMA_CHAN_RX_END_ADDR(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x28) +#define EMAC3_DMA_CHAN_TX_RING_LEN(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x2c) +#define EMAC3_DMA_CHAN_RX_RING_LEN(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x30) +#define EMAC3_DMA_CHAN_INTR_ENA(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x34) +#define EMAC3_DMA_CHAN_RX_WATCHDOG(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x38) +#define EMAC3_DMA_CHAN_SLOT_CTRL_STATUS(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x3c) +#define EMAC3_DMA_CHAN_CUR_TX_DESC(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x44) +#define EMAC3_DMA_CHAN_CUR_RX_DESC(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x4c) +#define EMAC3_DMA_CHAN_CUR_TX_BUF_ADDR(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x54) +#define EMAC3_DMA_CHAN_CUR_RX_BUF_ADDR(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x5c) +#define EMAC3_DMA_CHAN_STATUS(x) (EMAC3_DMA_CHANX_BASE_ADDR(x) + 0x60) + /* DMA Control X */ #define DMA_CONTROL_SPH BIT(24) #define DMA_CONTROL_MSS_MASK GENMASK(13, 0) @@ -220,19 +246,31 @@ #define DMA_CHAN0_DBG_STAT_RPS_SHIFT 8 int dwmac4_dma_reset(void __iomem *ioaddr); +void emac3_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx); void dwmac4_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx); void dwmac410_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx); +void emac3_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx); void dwmac4_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx); void dwmac410_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx); +void emac3_dma_start_tx(void __iomem *ioaddr, u32 chan); void dwmac4_dma_start_tx(void __iomem *ioaddr, u32 chan); +void emac3_dma_stop_tx(void __iomem *ioaddr, u32 chan); void dwmac4_dma_stop_tx(void __iomem *ioaddr, u32 chan); +void emac3_dma_start_rx(void __iomem *ioaddr, u32 chan); void dwmac4_dma_start_rx(void __iomem *ioaddr, u32 chan); +void emac3_dma_stop_rx(void __iomem *ioaddr, u32 chan); void dwmac4_dma_stop_rx(void __iomem *ioaddr, u32 chan); +int emac3_dma_interrupt(void __iomem *ioaddr, struct stmmac_extra_stats *x, + u32 chan, u32 dir); int dwmac4_dma_interrupt(void __iomem *ioaddr, struct stmmac_extra_stats *x, u32 chan, u32 dir); +void emac3_set_rx_ring_len(void __iomem *ioaddr, u32 len, u32 chan); void dwmac4_set_rx_ring_len(void __iomem *ioaddr, u32 len, u32 chan); +void emac3_set_tx_ring_len(void __iomem *ioaddr, u32 len, u32 chan); void dwmac4_set_tx_ring_len(void __iomem *ioaddr, u32 len, u32 chan); +void emac3_set_rx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan); void dwmac4_set_rx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan); +void emac3_set_tx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan); void dwmac4_set_tx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan); #endif /* __DWMAC4_DMA_H__ */ diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c index d1c605777985..3cbcc595bdfc 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c @@ -25,55 +25,110 @@ int dwmac4_dma_reset(void __iomem *ioaddr) 10000, 1000000); } +void emac3_set_rx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan) +{ + writel(tail_ptr, ioaddr + EMAC3_DMA_CHAN_RX_END_ADDR(chan)); +} + void dwmac4_set_rx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan) { writel(tail_ptr, ioaddr + DMA_CHAN_RX_END_ADDR(chan)); } +void emac3_set_tx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan) +{ + writel(tail_ptr, ioaddr + EMAC3_DMA_CHAN_TX_END_ADDR(chan)); +} + void dwmac4_set_tx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan) { writel(tail_ptr, ioaddr + DMA_CHAN_TX_END_ADDR(chan)); } -void dwmac4_dma_start_tx(void __iomem *ioaddr, u32 chan) +static void do_dma_start_tx(void __iomem *ioaddr, u32 addr_offset) { - u32 value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)); + u32 value = readl(ioaddr + addr_offset); value |= DMA_CONTROL_ST; - writel(value, ioaddr + DMA_CHAN_TX_CONTROL(chan)); + writel(value, ioaddr + addr_offset); value = readl(ioaddr + GMAC_CONFIG); value |= GMAC_CONFIG_TE; writel(value, ioaddr + GMAC_CONFIG); } -void dwmac4_dma_stop_tx(void __iomem *ioaddr, u32 chan) +void emac3_dma_start_tx(void __iomem *ioaddr, u32 chan) +{ + do_dma_start_tx(ioaddr, EMAC3_DMA_CHAN_TX_CONTROL(chan)); +} + +void dwmac4_dma_start_tx(void __iomem *ioaddr, u32 chan) { - u32 value = readl(ioaddr + DMA_CHAN_TX_CONTROL(chan)); + do_dma_start_tx(ioaddr, DMA_CHAN_TX_CONTROL(chan)); +} + +static void do_dma_stop_tx(void __iomem *ioaddr, u32 addr_offset) +{ + u32 value = readl(ioaddr + addr_offset); value &= ~DMA_CONTROL_ST; - writel(value, ioaddr + DMA_CHAN_TX_CONTROL(chan)); + writel(value, ioaddr + addr_offset); } -void dwmac4_dma_start_rx(void __iomem *ioaddr, u32 chan) +void emac3_dma_stop_tx(void __iomem *ioaddr, u32 chan) { - u32 value = readl(ioaddr + DMA_CHAN_RX_CONTROL(chan)); + do_dma_stop_tx(ioaddr, EMAC3_DMA_CHAN_TX_CONTROL(chan)); +} + +void dwmac4_dma_stop_tx(void __iomem *ioaddr, u32 chan) +{ + do_dma_stop_tx(ioaddr, DMA_CHAN_TX_CONTROL(chan)); +} + +static void do_dma_start_rx(void __iomem *ioaddr, u32 addr_offset) +{ + u32 value = readl(ioaddr + addr_offset); value |= DMA_CONTROL_SR; - writel(value, ioaddr + DMA_CHAN_RX_CONTROL(chan)); + writel(value, ioaddr + addr_offset); value = readl(ioaddr + GMAC_CONFIG); value |= GMAC_CONFIG_RE; writel(value, ioaddr + GMAC_CONFIG); } -void dwmac4_dma_stop_rx(void __iomem *ioaddr, u32 chan) +void emac3_dma_start_rx(void __iomem *ioaddr, u32 chan) { - u32 value = readl(ioaddr + DMA_CHAN_RX_CONTROL(chan)); + do_dma_start_rx(ioaddr, EMAC3_DMA_CHAN_RX_CONTROL(chan)); +} + +void dwmac4_dma_start_rx(void __iomem *ioaddr, u32 chan) +{ + do_dma_start_rx(ioaddr, DMA_CHAN_RX_CONTROL(chan)); +} + +static void do_dma_stop_rx(void __iomem *ioaddr, u32 addr_offset) +{ + u32 value = readl(ioaddr + addr_offset); value &= ~DMA_CONTROL_SR; - writel(value, ioaddr + DMA_CHAN_RX_CONTROL(chan)); + writel(value, ioaddr + addr_offset); +} + +void emac3_dma_stop_rx(void __iomem *ioaddr, u32 chan) +{ + do_dma_stop_rx(ioaddr, EMAC3_DMA_CHAN_RX_CONTROL(chan)); +} + +void dwmac4_dma_stop_rx(void __iomem *ioaddr, u32 chan) +{ + do_dma_stop_rx(ioaddr, DMA_CHAN_RX_CONTROL(chan)); +} + +void emac3_set_tx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) +{ + writel(len, ioaddr + EMAC3_DMA_CHAN_TX_RING_LEN(chan)); } void dwmac4_set_tx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) @@ -81,6 +136,11 @@ void dwmac4_set_tx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) writel(len, ioaddr + DMA_CHAN_TX_RING_LEN(chan)); } +void emac3_set_rx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) +{ + writel(len, ioaddr + EMAC3_DMA_CHAN_RX_RING_LEN(chan)); +} + void dwmac4_set_rx_ring_len(void __iomem *ioaddr, u32 len, u32 chan) { writel(len, ioaddr + DMA_CHAN_RX_RING_LEN(chan)); @@ -98,16 +158,27 @@ void dwmac4_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) writel(value, ioaddr + DMA_CHAN_INTR_ENA(chan)); } -void dwmac410_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) +static void do_enable_dma_irq(void __iomem *ioaddr, bool rx, bool tx, + u32 addr_offset) { - u32 value = readl(ioaddr + DMA_CHAN_INTR_ENA(chan)); + u32 value = readl(ioaddr + addr_offset); if (rx) value |= DMA_CHAN_INTR_DEFAULT_RX_4_10; if (tx) value |= DMA_CHAN_INTR_DEFAULT_TX_4_10; - writel(value, ioaddr + DMA_CHAN_INTR_ENA(chan)); + writel(value, ioaddr + addr_offset); +} + +void emac3_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) +{ + do_enable_dma_irq(ioaddr, rx, tx, EMAC3_DMA_CHAN_INTR_ENA(chan)); +} + +void dwmac410_enable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) +{ + do_enable_dma_irq(ioaddr, rx, tx, DMA_CHAN_INTR_ENA(chan)); } void dwmac4_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) @@ -122,23 +193,35 @@ void dwmac4_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) writel(value, ioaddr + DMA_CHAN_INTR_ENA(chan)); } -void dwmac410_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) +static void do_disable_dma_irq(void __iomem *ioaddr, bool rx, bool tx, + u32 addr_offset) { - u32 value = readl(ioaddr + DMA_CHAN_INTR_ENA(chan)); + u32 value = readl(ioaddr + addr_offset); if (rx) value &= ~DMA_CHAN_INTR_DEFAULT_RX_4_10; if (tx) value &= ~DMA_CHAN_INTR_DEFAULT_TX_4_10; - writel(value, ioaddr + DMA_CHAN_INTR_ENA(chan)); + writel(value, ioaddr + addr_offset); } -int dwmac4_dma_interrupt(void __iomem *ioaddr, - struct stmmac_extra_stats *x, u32 chan, u32 dir) +void emac3_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) { - u32 intr_status = readl(ioaddr + DMA_CHAN_STATUS(chan)); - u32 intr_en = readl(ioaddr + DMA_CHAN_INTR_ENA(chan)); + do_disable_dma_irq(ioaddr, rx, tx, EMAC3_DMA_CHAN_INTR_ENA(chan)); +} + +void dwmac410_disable_dma_irq(void __iomem *ioaddr, u32 chan, bool rx, bool tx) +{ + do_disable_dma_irq(ioaddr, rx, tx, DMA_CHAN_INTR_ENA(chan)); +} + +static int do_dma_interrupt(void __iomem *ioaddr, struct stmmac_extra_stats *x, + u32 chan, u32 dir, u32 addr_offset, + u32 intr_addr_offset) +{ + u32 intr_status = readl(ioaddr + addr_offset); + u32 intr_en = readl(ioaddr + intr_addr_offset); int ret = 0; if (dir == DMA_DIR_RX) @@ -183,10 +266,25 @@ int dwmac4_dma_interrupt(void __iomem *ioaddr, if (unlikely(intr_status & DMA_CHAN_STATUS_ERI)) x->rx_early_irq++; - writel(intr_status & intr_en, ioaddr + DMA_CHAN_STATUS(chan)); + writel(intr_status & intr_en, ioaddr + addr_offset); return ret; } +int emac3_dma_interrupt(void __iomem *ioaddr, struct stmmac_extra_stats *x, + u32 chan, u32 dir) +{ + return do_dma_interrupt(ioaddr, x, chan, dir, + EMAC3_DMA_CHAN_STATUS(chan), + EMAC3_DMA_CHAN_INTR_ENA(chan)); +} + +int dwmac4_dma_interrupt(void __iomem *ioaddr, struct stmmac_extra_stats *x, + u32 chan, u32 dir) +{ + return do_dma_interrupt(ioaddr, x, chan, dir, DMA_CHAN_STATUS(chan), + DMA_CHAN_INTR_ENA(chan)); +} + void stmmac_dwmac4_set_mac_addr(void __iomem *ioaddr, const u8 addr[6], unsigned int high, unsigned int low) { diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.c b/drivers/net/ethernet/stmicro/stmmac/hwif.c index bb7114f970f8..7d8aa5e316cf 100644 --- a/drivers/net/ethernet/stmicro/stmmac/hwif.c +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.c @@ -91,6 +91,7 @@ static const struct stmmac_hwif_entry { bool gmac; bool gmac4; bool xgmac; + bool emac3; u32 min_id; u32 dev_id; const struct stmmac_regs_off regs; @@ -251,6 +252,25 @@ static const struct stmmac_hwif_entry { .mmc = &dwxgmac_mmc_ops, .setup = dwxlgmac2_setup, .quirks = stmmac_dwxlgmac_quirks, + }, { + .gmac = false, + .gmac4 = false, + .xgmac = false, + .emac3 = true, + .min_id = DWMAC_CORE_5_10, + .regs = { + .ptp_off = PTP_GMAC4_OFFSET, + .mmc_off = MMC_GMAC4_OFFSET, + }, + .desc = &dwmac4_desc_ops, + .dma = &emac3_dma_ops, + .mac = &emac3_ops, + .hwtimestamp = &stmmac_ptp, + .mode = &dwmac4_ring_mode_ops, + .tc = &dwmac510_tc_ops, + .mmc = &dwmac_mmc_ops, + .setup = dwmac4_setup, + .quirks = NULL, }, }; @@ -259,6 +279,7 @@ int stmmac_hwif_init(struct stmmac_priv *priv) bool needs_xgmac = priv->plat->has_xgmac; bool needs_gmac4 = priv->plat->has_gmac4; bool needs_gmac = priv->plat->has_gmac; + bool needs_emac3 = priv->plat->has_emac3; const struct stmmac_hwif_entry *entry; struct mac_device_info *mac; bool needs_setup = true; @@ -267,7 +288,7 @@ int stmmac_hwif_init(struct stmmac_priv *priv) if (needs_gmac) { id = stmmac_get_id(priv, GMAC_VERSION); - } else if (needs_gmac4 || needs_xgmac) { + } else if (needs_gmac4 || needs_xgmac || needs_emac3) { id = stmmac_get_id(priv, GMAC4_VERSION); if (needs_xgmac) dev_id = stmmac_get_dev_id(priv, GMAC4_VERSION); @@ -280,9 +301,9 @@ int stmmac_hwif_init(struct stmmac_priv *priv) /* Lets assume some safe values first */ priv->ptpaddr = priv->ioaddr + - (needs_gmac4 ? PTP_GMAC4_OFFSET : PTP_GMAC3_X_OFFSET); + ((needs_gmac4 || needs_emac3) ? PTP_GMAC4_OFFSET : PTP_GMAC3_X_OFFSET); priv->mmcaddr = priv->ioaddr + - (needs_gmac4 ? MMC_GMAC4_OFFSET : MMC_GMAC3_X_OFFSET); + ((needs_gmac4 || needs_emac3) ? MMC_GMAC4_OFFSET : MMC_GMAC3_X_OFFSET); /* Check for HW specific setup first */ if (priv->plat->setup) { @@ -305,6 +326,8 @@ int stmmac_hwif_init(struct stmmac_priv *priv) continue; if (needs_xgmac ^ entry->xgmac) continue; + if (needs_emac3 ^ entry->emac3) + continue; /* Use synopsys_id var because some setups can override this */ if (priv->synopsys_id < entry->min_id) continue; diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ethernet/stmicro/stmmac/hwif.h index 16a7421715cb..44d77ced27cc 100644 --- a/drivers/net/ethernet/stmicro/stmmac/hwif.h +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h @@ -620,6 +620,8 @@ struct stmmac_regs_off { u32 mmc_off; }; +extern const struct stmmac_ops emac3_ops; +extern const struct stmmac_dma_ops emac3_dma_ops; extern const struct stmmac_ops dwmac100_ops; extern const struct stmmac_dma_ops dwmac100_dma_ops; extern const struct stmmac_ops dwmac1000_ops; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c index 35c8dd92d369..0f62e5f85b60 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c @@ -286,7 +286,7 @@ static void stmmac_ethtool_getdrvinfo(struct net_device *dev, { struct stmmac_priv *priv = netdev_priv(dev); - if (priv->plat->has_gmac || priv->plat->has_gmac4) + if (priv->plat->has_gmac || priv->plat->has_gmac4 || priv->plat->has_emac3) strscpy(info->driver, GMAC_ETHTOOL_NAME, sizeof(info->driver)); else if (priv->plat->has_xgmac) strscpy(info->driver, XGMAC_ETHTOOL_NAME, sizeof(info->driver)); @@ -442,7 +442,7 @@ static int stmmac_ethtool_get_regs_len(struct net_device *dev) if (priv->plat->has_xgmac) return XGMAC_REGSIZE * 4; - else if (priv->plat->has_gmac4) + else if (priv->plat->has_gmac4 || priv->plat->has_emac3) return GMAC4_REG_SPACE_SIZE; return REG_SPACE_SIZE; } @@ -457,7 +457,7 @@ static void stmmac_ethtool_gregs(struct net_device *dev, stmmac_dump_dma_regs(priv, priv->ioaddr, reg_space); /* Copy DMA registers to where ethtool expects them */ - if (priv->plat->has_gmac4) { + if (priv->plat->has_gmac4 || priv->plat->has_emac3) { /* GMAC4 dumps its DMA registers at its DMA_CHAN_BASE_ADDR */ memcpy(®_space[ETHTOOL_DMA_OFFSET], ®_space[GMAC4_DMA_CHAN_BASE_ADDR / 4], diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 8f543c3ab5c5..d086fe811b67 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -509,7 +509,8 @@ bool stmmac_eee_init(struct stmmac_priv *priv) true); } - if (priv->plat->has_gmac4 && priv->tx_lpi_timer <= STMMAC_ET_MAX) { + if ((priv->plat->has_gmac4 || priv->plat->has_emac3) && + priv->tx_lpi_timer <= STMMAC_ET_MAX) { del_timer_sync(&priv->eee_ctrl_timer); priv->tx_path_in_lpi_mode = false; stmmac_lpi_entry_timer_config(priv, 1); @@ -585,7 +586,7 @@ static void stmmac_get_rx_hwtstamp(struct stmmac_priv *priv, struct dma_desc *p, if (!priv->hwts_rx_en) return; /* For GMAC4, the valid timestamp is from CTX next desc. */ - if (priv->plat->has_gmac4 || priv->plat->has_xgmac) + if (priv->plat->has_gmac4 || priv->plat->has_emac3 || priv->plat->has_xgmac) desc = np; /* Check if timestamp is available */ @@ -833,7 +834,7 @@ static int stmmac_hwtstamp_get(struct net_device *dev, struct ifreq *ifr) */ int stmmac_init_tstamp_counter(struct stmmac_priv *priv, u32 systime_flags) { - bool xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac; + bool xmac = priv->plat->has_gmac4 || priv->plat->has_emac3 || priv->plat->has_xgmac; struct timespec64 now; u32 sec_inc = 0; u64 temp = 0; @@ -881,7 +882,7 @@ EXPORT_SYMBOL_GPL(stmmac_init_tstamp_counter); */ static int stmmac_init_ptp(struct stmmac_priv *priv) { - bool xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac; + bool xmac = priv->plat->has_gmac4 || priv->plat->has_emac3 || priv->plat->has_xgmac; int ret; if (priv->plat->ptp_clk_freq_config) @@ -1207,7 +1208,7 @@ static int stmmac_phy_setup(struct stmmac_priv *priv) if (!max_speed || max_speed >= 1000) priv->phylink_config.mac_capabilities |= MAC_1000; - if (priv->plat->has_gmac4) { + if (priv->plat->has_gmac4 || priv->plat->has_emac3) { if (!max_speed || max_speed >= 2500) priv->phylink_config.mac_capabilities |= MAC_2500FD; } else if (priv->plat->has_xgmac) { @@ -4343,7 +4344,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) if (skb_is_gso(skb) && priv->tso) { if (gso & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) return stmmac_tso_xmit(skb, dev); - if (priv->plat->has_gmac4 && (gso & SKB_GSO_UDP_L4)) + if ((priv->plat->has_gmac4 || priv->plat->has_emac3) && (gso & SKB_GSO_UDP_L4)) return stmmac_tso_xmit(skb, dev); } @@ -5721,7 +5722,7 @@ static void stmmac_common_interrupt(struct stmmac_priv *priv) u32 queue; bool xmac; - xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac; + xmac = priv->plat->has_gmac4 || priv->plat->has_emac3 || priv->plat->has_xgmac; queues_count = (rx_cnt > tx_cnt) ? rx_cnt : tx_cnt; if (priv->irq_wake) @@ -7165,7 +7166,7 @@ int stmmac_dvr_probe(struct device *device, if ((priv->plat->tso_en) && (priv->dma_cap.tsoen)) { ndev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6; - if (priv->plat->has_gmac4) + if (priv->plat->has_gmac4 || priv->plat->has_emac3) ndev->hw_features |= NETIF_F_GSO_UDP_L4; priv->tso = true; dev_info(priv->device, "TSO feature enabled\n"); diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c index 6807c4c1a0a2..9e3d8e1202bd 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -281,7 +281,7 @@ static int stmmac_mdio_read_c22(struct mii_bus *bus, int phyaddr, int phyreg) value |= (phyreg << priv->hw->mii.reg_shift) & priv->hw->mii.reg_mask; value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift) & priv->hw->mii.clk_csr_mask; - if (priv->plat->has_gmac4) + if (priv->plat->has_gmac4 || priv->plat->has_emac3) value |= MII_GMAC4_READ; data = stmmac_mdio_read(priv, data, value); @@ -381,7 +381,7 @@ static int stmmac_mdio_write_c22(struct mii_bus *bus, int phyaddr, int phyreg, value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift) & priv->hw->mii.clk_csr_mask; - if (priv->plat->has_gmac4) + if (priv->plat->has_gmac4 || priv->plat->has_emac3) value |= MII_GMAC4_WRITE; else value |= MII_WRITE; @@ -482,7 +482,7 @@ int stmmac_mdio_reset(struct mii_bus *bus) * on MDC, so perform a dummy mdio read. To be updated for GMAC4 * if needed. */ - if (!priv->plat->has_gmac4) + if (!priv->plat->has_gmac4 && !priv->plat->has_emac3) writel(0, priv->ioaddr + mii_address); #endif return 0; @@ -568,7 +568,7 @@ int stmmac_mdio_register(struct net_device *ndev) } else { new_bus->read = &stmmac_mdio_read_c22; new_bus->write = &stmmac_mdio_write_c22; - if (priv->plat->has_gmac4) { + if (priv->plat->has_gmac4 || priv->plat->has_emac3) { new_bus->read_c45 = &stmmac_mdio_read_c45; new_bus->write_c45 = &stmmac_mdio_write_c45; } diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c index b4388ca8d211..9a8f9630d6af 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c @@ -56,7 +56,7 @@ static int stmmac_adjust_time(struct ptp_clock_info *ptp, s64 delta) bool xmac, est_rst = false; int ret; - xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac; + xmac = priv->plat->has_gmac4 || priv->plat->has_emac3 || priv->plat->has_xgmac; if (delta < 0) { neg_adj = 1; @@ -292,7 +292,7 @@ void stmmac_ptp_register(struct stmmac_priv *priv) /* Calculate the clock domain crossing (CDC) error if necessary */ priv->plat->cdc_error_adj = 0; - if (priv->plat->has_gmac4 && priv->plat->clk_ptp_rate) + if ((priv->plat->has_gmac4 || priv->plat->has_emac3) && priv->plat->clk_ptp_rate) priv->plat->cdc_error_adj = (2 * NSEC_PER_SEC) / priv->plat->clk_ptp_rate; stmmac_ptp_clock_ops.n_per_out = priv->dma_cap.pps_out_num; diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index a152678b82b7..de2d0a8693c8 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -248,6 +248,7 @@ struct plat_stmmacenet_data { struct stmmac_axi *axi; int has_gmac4; bool has_sun8i; + bool has_emac3; bool tso_en; int rss_en; int mac_port_sel_speed; From patchwork Mon Mar 20 22:16:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181940 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 6F9D1C6FD1C for ; Mon, 20 Mar 2023 22:18:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EoPalzCUixt9bBt9sh1S4iEBQ4RYNV8vBP8NkvtgchU=; b=uIxLuNYYhUDcgU EKP2YA0HZ8P8zRcYnQyMnwlUSLTHOrbhgz/0ZtkbXwTZY20VkQQZL0clPx+P9uLLBUiUfAdUwW3Fb wnAfpswsenp6NBVdmG7YMruet61uF1vNmn0Inu6FOcuieRG1OE04f8ObLYA3B6IUovM/xDVwjl4xC 9zFz/G55gP2ipq6e76yg2vqgwesbM2ru//6zjaQnfFSn41qzKwMdNEQobhOBciiJOLo++7zCU0eLB ea6haQs6ExIQ8uQFjjUvOhVhVEWaVV9dWQIPXFcN/p4O74JNqMhOI6FAkjewoS5g/tRon1MnqXzB0 cbCdXdc4iI4lw6GsVucw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNos-00AcJH-0k; Mon, 20 Mar 2023 22:17:34 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoZ-00Ac8x-2X for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350635; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pge60lbtNXyjhIC7xM2HbTt6URs0YcanlV/EtqaeLXQ=; b=HGYwMmhnM3SHEJxYxDmEP4vQCru8EXJRIDPww3rNiCayL3T6TfEE8gJh+rclZB9iJgnKW4 2y9OYP3r95ka08AJvYrboQKszKgqiF/d8N17z/ih0h93RUgW6WorwAOg8r80qj4zaK0VH0 t0zIxBFl3uy4op5SmEbP+8+r0Bpkt8g= Received: from mail-oi1-f200.google.com (mail-oi1-f200.google.com [209.85.167.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-316-ILwdNWrcNeyttSfXPVjeiw-1; Mon, 20 Mar 2023 18:17:13 -0400 X-MC-Unique: ILwdNWrcNeyttSfXPVjeiw-1 Received: by mail-oi1-f200.google.com with SMTP id r133-20020acaf38b000000b00386b94ef384so5701149oih.16 for ; Mon, 20 Mar 2023 15:17:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350633; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pge60lbtNXyjhIC7xM2HbTt6URs0YcanlV/EtqaeLXQ=; b=KOc389uL8oa6qw9GYyki8h8pvAnwg5/lUoBaV1adn6YRR8nxC7WNAsxJDWWU5pYZLd KNZdxoxG3eMpuBGgJyUnlxb4quWEvsLVzBUDheeXy7Iri8qs1fCBrZlclkxg6dya9tBs lPjW1j3RbZDIoZu215sto0BxyM6ZQbNGh0/LJH08s9/472zHxfnuPVO9gKh9+S8rvad9 bMIJKapX7P/vyt1kQ9gCIBk1jTI9Sl1FjnvNpdDmAiPtIx8BQh2ee/jVMhmtXLcmzYLR nz6H6DByKGhB9Xl4qn6c+0ayrcXNeHfECEryVcMiRZShaBKO6vROMAZ7/45S5yUlJ6Gj 2MtQ== X-Gm-Message-State: AO0yUKXwmmr0aRpPdQDPYujzQx56P8dUt/mPW/bNZBwE1otZ7dXmv78c JDddBTMhfyQV6BW3YkcPIYQt47Qkuq03WP4Qf3bH9dil+7VcmDAyPxGbMwMbnRQWnwVqu3TOp+5 l/v34Bjde173Lr3I+XCehN86QnkvSZdA2Alg= X-Received: by 2002:a4a:4942:0:b0:536:584c:eb1f with SMTP id z63-20020a4a4942000000b00536584ceb1fmr679563ooa.2.1679350632838; Mon, 20 Mar 2023 15:17:12 -0700 (PDT) X-Google-Smtp-Source: AK7set+Tggwv6X8YXBBYlPzxDeaPL/yXFE5Kx8UTm2ESFLzqErgx22ScqfI1N/KEIqaxjClaqy3gqw== X-Received: by 2002:a4a:4942:0:b0:536:584c:eb1f with SMTP id z63-20020a4a4942000000b00536584ceb1fmr679529ooa.2.1679350632616; Mon, 20 Mar 2023 15:17:12 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.17.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:17:12 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 10/12] net: stmmac: dwmac-qcom-ethqos: Respect phy-mode and TX delay Date: Mon, 20 Mar 2023 17:16:15 -0500 Message-Id: <20230320221617.236323-11-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151715_899278_70BF4A87 X-CRM114-Status: GOOD ( 12.24 ) 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 The driver currently sets a MAC TX delay of 2 ns no matter what the phy-mode is. If the phy-mode indicates the phy is in charge of the TX delay (rgmii-txid, rgmii-id), don't do it in the MAC. Signed-off-by: Andrew Halaney --- Changes since v1: * Use a consistent subject prefix with other stmmac changes in series (myself) .../stmicro/stmmac/dwmac-qcom-ethqos.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index 32763566c214..e89937916741 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -279,6 +279,16 @@ static int ethqos_dll_configure(struct qcom_ethqos *ethqos) static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) { + int phy_mode; + int phase_shift; + + /* Determine if the PHY adds a 2 ns TX delay or the MAC handles it */ + phy_mode = device_get_phy_mode(ðqos->pdev->dev); + if (phy_mode == PHY_INTERFACE_MODE_RGMII_ID || phy_mode == PHY_INTERFACE_MODE_RGMII_TXID) + phase_shift = 0; + else + phase_shift = RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN; + /* Disable loopback mode */ rgmii_updatel(ethqos, RGMII_CONFIG2_TX_TO_RX_LOOPBACK_EN, 0, RGMII_IO_MACRO_CONFIG2); @@ -300,9 +310,9 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) RGMII_CONFIG_PROG_SWAP, RGMII_IO_MACRO_CONFIG); rgmii_updatel(ethqos, RGMII_CONFIG2_DATA_DIVIDE_CLK_SEL, 0, RGMII_IO_MACRO_CONFIG2); + rgmii_updatel(ethqos, RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN, - RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN, - RGMII_IO_MACRO_CONFIG2); + phase_shift, RGMII_IO_MACRO_CONFIG2); rgmii_updatel(ethqos, RGMII_CONFIG2_RSVD_CONFIG15, 0, RGMII_IO_MACRO_CONFIG2); rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, @@ -336,8 +346,7 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, RGMII_CONFIG2_DATA_DIVIDE_CLK_SEL, 0, RGMII_IO_MACRO_CONFIG2); rgmii_updatel(ethqos, RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN, - RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN, - RGMII_IO_MACRO_CONFIG2); + phase_shift, RGMII_IO_MACRO_CONFIG2); rgmii_updatel(ethqos, RGMII_CONFIG_MAX_SPD_PRG_2, BIT(6), RGMII_IO_MACRO_CONFIG); rgmii_updatel(ethqos, RGMII_CONFIG2_RSVD_CONFIG15, @@ -375,7 +384,7 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, RGMII_CONFIG2_DATA_DIVIDE_CLK_SEL, 0, RGMII_IO_MACRO_CONFIG2); rgmii_updatel(ethqos, RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN, - 0, RGMII_IO_MACRO_CONFIG2); + phase_shift, RGMII_IO_MACRO_CONFIG2); rgmii_updatel(ethqos, RGMII_CONFIG_MAX_SPD_PRG_9, BIT(12) | GENMASK(9, 8), RGMII_IO_MACRO_CONFIG); From patchwork Mon Mar 20 22:16:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181964 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 4DDDCC6FD1D for ; Mon, 20 Mar 2023 22:18:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2KMuGNuUiGcYK7X7nhVxR/Wzs87P/ELH3lSOSAEBxYk=; b=sCOT85+kwr7s8j TUwf1i0wjA99L18GMfZmm+Hmd4e46V/YeGTTdqnOWhC45+uE9xlLd56iT0oY4eQtY2JO0gcZBQ6LS +d3u+9YBs05Q2TyaAmTtXFX6GMvRUkljiLA1e3Uide8QnKy0nlLQs/X2bDLtmaaDDAVgdtFrwlRTl YiaT6cAJU3j1mOHGD6U/C+hTEu4ZGDX3W+yyuUyEEjIahmIL1jD/IVU6pg3ICCGHu13TN5H+tQpD0 hRmcleuK446y18HeZ0PxMUGVMwctybGrLxeewxfh48U+yqV/906SHH9YR+z5XPNIpsFxkSxTOpdyc 2XhT8dTU6klbO2gzd8Qg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNpA-00AcUc-0I; Mon, 20 Mar 2023 22:17:52 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNog-00AcBw-0M for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350641; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MuxRwUN7QuGJgCb1sgNXeyD5mGPP+IwVPMi41UhPJrI=; b=WvfgQCka3VQZx333fY0PTgI4KjTy0k1Tuo+Y7NGodOeG7ktlhe0JcYVtqdgN3CqyS/2ZwL /JayEiEF5A2mWHYRA9y4OUd41pnjYY/SiqqIAHTLV4qHABw0azkVlbuM/I3/8qjzhVOq/r umiPK3AFTBiP8eN9Jf6F1x0FjW3D7DM= Received: from mail-oo1-f72.google.com (mail-oo1-f72.google.com [209.85.161.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-627-THwwzFwQMfuFVJOZsiqENQ-1; Mon, 20 Mar 2023 18:17:17 -0400 X-MC-Unique: THwwzFwQMfuFVJOZsiqENQ-1 Received: by mail-oo1-f72.google.com with SMTP id w3-20020a4ae083000000b0052645d4a2dfso4058414oos.18 for ; Mon, 20 Mar 2023 15:17:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350637; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MuxRwUN7QuGJgCb1sgNXeyD5mGPP+IwVPMi41UhPJrI=; b=rzSsVhZoeMifTUOjcpGL6PlrsbGQqWPkd2PObtWmAxB3z8821VQu6Xd6r3COCdJvhG pp30P2eMKCE6OywyneXp5xM0v3xwgchSAWgQS6aDxzXvBTW9cJ6QBARUgBbhgcYMuXF2 iNw2Q9Tn3O+XeYqAjom2c9wfumr3xXGSGk64I+4LKj5uWfZdgF5WqdI98ew/BX8EBP/T dzmMCfw6F34BElhA4OeND2L5bOyZ8BnqK7WDEg16opfCQSE1lK+0AbE9FB3QaQMIPkxJ 9gdH9U50SHoXp55wN2BKbO52Nkpx/spcZqP0xZVkfr6Io0Vy8p7MmfmXgbeQsfJb4fHh WMlQ== X-Gm-Message-State: AO0yUKVfY7H00eWYV/wlbFe/RghTwbpavlyuiayqdMR7HvtQKzKJT4zJ HluC637edYYyjHo9fLRlGK9X3oL4gCk0aY9yUk33TaWz3WCpVHWsyKHenOC8ATW8VqlxQi8jUec /t0sGXPiHT6u0scZs8nXO3FnEcDQQ6SxrFGY= X-Received: by 2002:a9d:7315:0:b0:693:c9f9:64ab with SMTP id e21-20020a9d7315000000b00693c9f964abmr160611otk.3.1679350637058; Mon, 20 Mar 2023 15:17:17 -0700 (PDT) X-Google-Smtp-Source: AK7set98Og6GyTgodqKCDDtTyRzUmO/nuo0gcym2TARwdc/GXk398TERm6JpLQcmViXh/KUjabkepA== X-Received: by 2002:a9d:7315:0:b0:693:c9f9:64ab with SMTP id e21-20020a9d7315000000b00693c9f964abmr160571otk.3.1679350636869; Mon, 20 Mar 2023 15:17:16 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.17.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:17:16 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 11/12] net: stmmac: dwmac-qcom-ethqos: Use loopback_en for all speeds Date: Mon, 20 Mar 2023 17:16:16 -0500 Message-Id: <20230320221617.236323-12-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151722_286586_856BC431 X-CRM114-Status: GOOD ( 17.46 ) 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 It seems that this variable should be used for all speeds, not just 1000/100. While at it refactor it slightly to be more readable, including fixing the typo in the variable name. Signed-off-by: Andrew Halaney --- Changes since v1: * Use a consistent subject prefix with other stmmac changes in series (myself) .../stmicro/stmmac/dwmac-qcom-ethqos.c | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index e89937916741..41e6f4fa92f3 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -78,7 +78,7 @@ struct ethqos_emac_por { struct ethqos_emac_driver_data { const struct ethqos_emac_por *por; unsigned int num_por; - bool rgmii_config_looback_en; + bool rgmii_config_loopback_en; }; struct qcom_ethqos { @@ -91,7 +91,7 @@ struct qcom_ethqos { const struct ethqos_emac_por *por; unsigned int num_por; - bool rgmii_config_looback_en; + bool rgmii_config_loopback_en; }; static int rgmii_readl(struct qcom_ethqos *ethqos, unsigned int offset) @@ -183,7 +183,7 @@ static const struct ethqos_emac_por emac_v2_3_0_por[] = { static const struct ethqos_emac_driver_data emac_v2_3_0_data = { .por = emac_v2_3_0_por, .num_por = ARRAY_SIZE(emac_v2_3_0_por), - .rgmii_config_looback_en = true, + .rgmii_config_loopback_en = true, }; static const struct ethqos_emac_por emac_v2_1_0_por[] = { @@ -198,7 +198,7 @@ static const struct ethqos_emac_por emac_v2_1_0_por[] = { static const struct ethqos_emac_driver_data emac_v2_1_0_data = { .por = emac_v2_1_0_por, .num_por = ARRAY_SIZE(emac_v2_1_0_por), - .rgmii_config_looback_en = false, + .rgmii_config_loopback_en = false, }; static int ethqos_dll_configure(struct qcom_ethqos *ethqos) @@ -281,6 +281,7 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) { int phy_mode; int phase_shift; + int loopback; /* Determine if the PHY adds a 2 ns TX delay or the MAC handles it */ phy_mode = device_get_phy_mode(ðqos->pdev->dev); @@ -293,6 +294,12 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, RGMII_CONFIG2_TX_TO_RX_LOOPBACK_EN, 0, RGMII_IO_MACRO_CONFIG2); + /* Determine if this platform wants loopback enabled after programming */ + if (ethqos->rgmii_config_loopback_en) + loopback = RGMII_CONFIG_LOOPBACK_EN; + else + loopback = 0; + /* Select RGMII, write 0 to interface select */ rgmii_updatel(ethqos, RGMII_CONFIG_INTF_SEL, 0, RGMII_IO_MACRO_CONFIG); @@ -325,12 +332,8 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, SDCC_DDR_CONFIG_PRG_DLY_EN, SDCC_DDR_CONFIG_PRG_DLY_EN, SDCC_HC_REG_DDR_CONFIG); - if (ethqos->rgmii_config_looback_en) - rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, - RGMII_CONFIG_LOOPBACK_EN, RGMII_IO_MACRO_CONFIG); - else - rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, - 0, RGMII_IO_MACRO_CONFIG); + rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, + loopback, RGMII_IO_MACRO_CONFIG); break; case SPEED_100: @@ -362,13 +365,8 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_EN, SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_EN, SDCC_HC_REG_DDR_CONFIG); - if (ethqos->rgmii_config_looback_en) - rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, - RGMII_CONFIG_LOOPBACK_EN, RGMII_IO_MACRO_CONFIG); - else - rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, - 0, RGMII_IO_MACRO_CONFIG); - + rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, + loopback, RGMII_IO_MACRO_CONFIG); break; case SPEED_10: @@ -402,7 +400,7 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_EN, SDCC_HC_REG_DDR_CONFIG); rgmii_updatel(ethqos, RGMII_CONFIG_LOOPBACK_EN, - RGMII_CONFIG_LOOPBACK_EN, RGMII_IO_MACRO_CONFIG); + loopback, RGMII_IO_MACRO_CONFIG); break; default: dev_err(ðqos->pdev->dev, @@ -547,7 +545,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev) data = of_device_get_match_data(&pdev->dev); ethqos->por = data->por; ethqos->num_por = data->num_por; - ethqos->rgmii_config_looback_en = data->rgmii_config_looback_en; + ethqos->rgmii_config_loopback_en = data->rgmii_config_loopback_en; ethqos->rgmii_clk = devm_clk_get(&pdev->dev, "rgmii"); if (IS_ERR(ethqos->rgmii_clk)) { From patchwork Mon Mar 20 22:16:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Halaney X-Patchwork-Id: 13181965 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 47900C6FD1C for ; Mon, 20 Mar 2023 22:18: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: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LD43v40vFf3QEolCNtLCbKEIIiLcA9wly7DcJtlwsOU=; b=MvHzD2T2VBYR/W SPJAnKjwM9Ks4iWbuTPFK7AbiBsDKxURX5prYLC7Xt5Vm+JsZKTuLxtoLsi02+jDfmOxRhjxpbc0x S9sbJsCfwynONxuMOYo7ebe8CcSm4pz12uR1jMDBm697mzl6xJzoCaV3KiE9DJEjMMZdC0nh4q6XC AyKVLd6ThdJJmvyZsBdSHDe8eDhb7iTR2d0IDoPGhBhqk4ql6C6VzlgnK6vTlEnhKtQSb0n5slP6n f4jNDp7q8yquv84KoVpVNjzHqM5bkBZ3dvnDHilogUrTFUdAMWaZ9ugTjYjy+uLkvFBM+ziGrb1IH crxpOcRoxPMZdFYa+Fpw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peNpE-00AcYj-0u; Mon, 20 Mar 2023 22:17:56 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peNoi-00AcDj-2M for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 22:17:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679350643; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6mAYxo5czKjIWVyAG97r5+Dwem7hjuC7SmdROQurOmg=; b=a0LpVzAkfC5Ms0SMNBest8SSME37UjRazCM4RqkFL+2O3rSDRkZLZkj/vOFqbuHUupkPz3 s+yt0LKCCnlqGqtty5ZUXel/lXjiiaLvUJ/CyrvryWMRq8X6U7B7c+o7ENoHwRGUCCotP0 6k9DlQU7WZKXmKm34K+ZdQliN5/CYkA= Received: from mail-ot1-f70.google.com (mail-ot1-f70.google.com [209.85.210.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-i3rVcRC2MeeFcmXDDzFJbw-1; Mon, 20 Mar 2023 18:17:22 -0400 X-MC-Unique: i3rVcRC2MeeFcmXDDzFJbw-1 Received: by mail-ot1-f70.google.com with SMTP id d14-20020a0568301b6e00b0069f3c72187cso1594777ote.10 for ; Mon, 20 Mar 2023 15:17:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679350642; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6mAYxo5czKjIWVyAG97r5+Dwem7hjuC7SmdROQurOmg=; b=Dd2LvYlNMJ+kyh29feJfsBcV/fne/in4oewWNYkZYXbVeCSxPLE+t+Kjo3rJJm67A1 sa4fcjM7UmPlvzTe0o9NpsftFwaz5yf+HouyF9KfmRTUhTdD1SdTsehQxHv9zSxZ49oh DcODOH2boMZsUZRG6mPa4/dINJrs44797KOoSSzl5WNPyoTcqkOojhmaDikmoV3v8FDA z5sjidhKPkW1i/g6k4rYj/4QV4FYxdDNvj8Q/4xwS//XYB6uxFIQVnJ8Z9TqW+SReUoX d9MB7HXyvsJ3ouOQ3BsLeJbC0+EgEE+FlqJh0uPvpbJgbo+6QdwO9m4VyMVrC2W/4zu5 j8Rg== X-Gm-Message-State: AO0yUKVRjikTGyX5nn5NxvfGyUUOe62WX4R+3S25mdO8HS3bPGm4Z/yd RU7sJqwJZNVeYl0VvjrDFkvlUg/WNJP3xtE+haggq5DhAeQ9YpbPCfnLHso88HzRL4jORRluc/b u+Nh/4TFLapJxMPhkN/VLPqwrTXBRX/+Pu2w= X-Received: by 2002:a05:6808:1455:b0:386:cbb7:fd34 with SMTP id x21-20020a056808145500b00386cbb7fd34mr907304oiv.57.1679350641893; Mon, 20 Mar 2023 15:17:21 -0700 (PDT) X-Google-Smtp-Source: AK7set/RPMw/4dqYIQwLU8hOZP75EGO+7zdFukaYHz8sVO/zWvrU5i4JX8duj3sLervZuK2KiyF5Eg== X-Received: by 2002:a05:6808:1455:b0:386:cbb7:fd34 with SMTP id x21-20020a056808145500b00386cbb7fd34mr907277oiv.57.1679350641625; Mon, 20 Mar 2023 15:17:21 -0700 (PDT) Received: from halaney-x13s.redhat.com (104-53-165-62.lightspeed.stlsmo.sbcglobal.net. [104.53.165.62]) by smtp.gmail.com with ESMTPSA id q204-20020a4a33d5000000b0053853156b5csm4092465ooq.8.2023.03.20.15.17.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 15:17:21 -0700 (PDT) From: Andrew Halaney To: linux-kernel@vger.kernel.org Cc: agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, bhupesh.sharma@linaro.org, mturquette@baylibre.com, sboyd@kernel.org, peppe.cavallaro@st.com, alexandre.torgue@foss.st.com, joabreu@synopsys.com, mcoquelin.stm32@gmail.com, richardcochran@gmail.com, linux@armlinux.org.uk, veekhee@apple.com, tee.min.tan@linux.intel.com, mohammad.athari.ismail@intel.com, jonathanh@nvidia.com, ruppala@nvidia.com, bmasney@redhat.com, andrey.konovalov@linaro.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, ncai@quicinc.com, jsuraj@qti.qualcomm.com, hisunil@quicinc.com, echanude@redhat.com, Andrew Halaney Subject: [PATCH net-next v2 12/12] net: stmmac: dwmac-qcom-ethqos: Add EMAC3 support Date: Mon, 20 Mar 2023 17:16:17 -0500 Message-Id: <20230320221617.236323-13-ahalaney@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320221617.236323-1-ahalaney@redhat.com> References: <20230320221617.236323-1-ahalaney@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_151724_865384_D28AC48F X-CRM114-Status: GOOD ( 18.00 ) 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 the new programming sequence needed for EMAC3 based platforms such as the sc8280xp family. Signed-off-by: Andrew Halaney --- Changes since v1: * None .../stmicro/stmmac/dwmac-qcom-ethqos.c | 106 ++++++++++++++---- 1 file changed, 84 insertions(+), 22 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index 41e6f4fa92f3..1fe8563b9c0d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -11,6 +11,7 @@ #define RGMII_IO_MACRO_CONFIG 0x0 #define SDCC_HC_REG_DLL_CONFIG 0x4 +#define SDCC_TEST_CTL 0x8 #define SDCC_HC_REG_DDR_CONFIG 0xC #define SDCC_HC_REG_DLL_CONFIG2 0x10 #define SDC4_STATUS 0x14 @@ -49,6 +50,7 @@ #define SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY GENMASK(26, 21) #define SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_CODE GENMASK(29, 27) #define SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_EN BIT(30) +#define SDCC_DDR_CONFIG_TCXO_CYCLES_CNT GENMASK(11, 9) #define SDCC_DDR_CONFIG_PRG_RCLK_DLY GENMASK(8, 0) /* SDCC_HC_REG_DLL_CONFIG2 fields */ @@ -79,6 +81,7 @@ struct ethqos_emac_driver_data { const struct ethqos_emac_por *por; unsigned int num_por; bool rgmii_config_loopback_en; + bool has_emac3; }; struct qcom_ethqos { @@ -92,6 +95,7 @@ struct qcom_ethqos { const struct ethqos_emac_por *por; unsigned int num_por; bool rgmii_config_loopback_en; + bool has_emac3; }; static int rgmii_readl(struct qcom_ethqos *ethqos, unsigned int offset) @@ -184,6 +188,7 @@ static const struct ethqos_emac_driver_data emac_v2_3_0_data = { .por = emac_v2_3_0_por, .num_por = ARRAY_SIZE(emac_v2_3_0_por), .rgmii_config_loopback_en = true, + .has_emac3 = false, }; static const struct ethqos_emac_por emac_v2_1_0_por[] = { @@ -199,6 +204,23 @@ static const struct ethqos_emac_driver_data emac_v2_1_0_data = { .por = emac_v2_1_0_por, .num_por = ARRAY_SIZE(emac_v2_1_0_por), .rgmii_config_loopback_en = false, + .has_emac3 = false, +}; + +static const struct ethqos_emac_por emac_v3_0_0_por[] = { + { .offset = RGMII_IO_MACRO_CONFIG, .value = 0x40c01343 }, + { .offset = SDCC_HC_REG_DLL_CONFIG, .value = 0x2004642c }, + { .offset = SDCC_HC_REG_DDR_CONFIG, .value = 0x80040800 }, + { .offset = SDCC_HC_REG_DLL_CONFIG2, .value = 0x00200000 }, + { .offset = SDCC_USR_CTL, .value = 0x00010800 }, + { .offset = RGMII_IO_MACRO_CONFIG2, .value = 0x00002060 }, +}; + +static const struct ethqos_emac_driver_data emac_v3_0_0_data = { + .por = emac_v3_0_0_por, + .num_por = ARRAY_SIZE(emac_v3_0_0_por), + .rgmii_config_loopback_en = false, + .has_emac3 = true, }; static int ethqos_dll_configure(struct qcom_ethqos *ethqos) @@ -222,11 +244,13 @@ static int ethqos_dll_configure(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, SDCC_DLL_CONFIG_DLL_EN, SDCC_DLL_CONFIG_DLL_EN, SDCC_HC_REG_DLL_CONFIG); - rgmii_updatel(ethqos, SDCC_DLL_MCLK_GATING_EN, - 0, SDCC_HC_REG_DLL_CONFIG); + if (!ethqos->has_emac3) { + rgmii_updatel(ethqos, SDCC_DLL_MCLK_GATING_EN, + 0, SDCC_HC_REG_DLL_CONFIG); - rgmii_updatel(ethqos, SDCC_DLL_CDR_FINE_PHASE, - 0, SDCC_HC_REG_DLL_CONFIG); + rgmii_updatel(ethqos, SDCC_DLL_CDR_FINE_PHASE, + 0, SDCC_HC_REG_DLL_CONFIG); + } /* Wait for CK_OUT_EN clear */ do { @@ -261,18 +285,20 @@ static int ethqos_dll_configure(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DDR_CAL_EN, SDCC_DLL_CONFIG2_DDR_CAL_EN, SDCC_HC_REG_DLL_CONFIG2); - rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DLL_CLOCK_DIS, - 0, SDCC_HC_REG_DLL_CONFIG2); + if (!ethqos->has_emac3) { + rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DLL_CLOCK_DIS, + 0, SDCC_HC_REG_DLL_CONFIG2); - rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_MCLK_FREQ_CALC, - 0x1A << 10, SDCC_HC_REG_DLL_CONFIG2); + rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_MCLK_FREQ_CALC, + 0x1A << 10, SDCC_HC_REG_DLL_CONFIG2); - rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DDR_TRAFFIC_INIT_SEL, - BIT(2), SDCC_HC_REG_DLL_CONFIG2); + rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DDR_TRAFFIC_INIT_SEL, + BIT(2), SDCC_HC_REG_DLL_CONFIG2); - rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DDR_TRAFFIC_INIT_SW, - SDCC_DLL_CONFIG2_DDR_TRAFFIC_INIT_SW, - SDCC_HC_REG_DLL_CONFIG2); + rgmii_updatel(ethqos, SDCC_DLL_CONFIG2_DDR_TRAFFIC_INIT_SW, + SDCC_DLL_CONFIG2_DDR_TRAFFIC_INIT_SW, + SDCC_HC_REG_DLL_CONFIG2); + } return 0; } @@ -326,9 +352,17 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) RGMII_CONFIG2_RX_PROG_SWAP, RGMII_IO_MACRO_CONFIG2); - /* Set PRG_RCLK_DLY to 57 for 1.8 ns delay */ - rgmii_updatel(ethqos, SDCC_DDR_CONFIG_PRG_RCLK_DLY, - 57, SDCC_HC_REG_DDR_CONFIG); + /* PRG_RCLK_DLY = TCXO period * TCXO_CYCLES_CNT / 2 * RX delay ns, + * in practice this becomes PRG_RCLK_DLY = 52 * 4 / 2 * RX delay ns + */ + if (ethqos->has_emac3) + /* 0.9 ns */ + rgmii_updatel(ethqos, SDCC_DDR_CONFIG_PRG_RCLK_DLY, + 115, SDCC_HC_REG_DDR_CONFIG); + else + /* 1.8 ns */ + rgmii_updatel(ethqos, SDCC_DDR_CONFIG_PRG_RCLK_DLY, + 57, SDCC_HC_REG_DDR_CONFIG); rgmii_updatel(ethqos, SDCC_DDR_CONFIG_PRG_DLY_EN, SDCC_DDR_CONFIG_PRG_DLY_EN, SDCC_HC_REG_DDR_CONFIG); @@ -354,8 +388,15 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) BIT(6), RGMII_IO_MACRO_CONFIG); rgmii_updatel(ethqos, RGMII_CONFIG2_RSVD_CONFIG15, 0, RGMII_IO_MACRO_CONFIG2); - rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, - 0, RGMII_IO_MACRO_CONFIG2); + + if (ethqos->has_emac3) + rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, + RGMII_CONFIG2_RX_PROG_SWAP, + RGMII_IO_MACRO_CONFIG2); + else + rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, + 0, RGMII_IO_MACRO_CONFIG2); + /* Write 0x5 to PRG_RCLK_DLY_CODE */ rgmii_updatel(ethqos, SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_CODE, (BIT(29) | BIT(27)), SDCC_HC_REG_DDR_CONFIG); @@ -388,8 +429,13 @@ static int ethqos_rgmii_macro_init(struct qcom_ethqos *ethqos) RGMII_IO_MACRO_CONFIG); rgmii_updatel(ethqos, RGMII_CONFIG2_RSVD_CONFIG15, 0, RGMII_IO_MACRO_CONFIG2); - rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, - 0, RGMII_IO_MACRO_CONFIG2); + if (ethqos->has_emac3) + rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, + RGMII_CONFIG2_RX_PROG_SWAP, + RGMII_IO_MACRO_CONFIG2); + else + rgmii_updatel(ethqos, RGMII_CONFIG2_RX_PROG_SWAP, + 0, RGMII_IO_MACRO_CONFIG2); /* Write 0x5 to PRG_RCLK_DLY_CODE */ rgmii_updatel(ethqos, SDCC_DDR_CONFIG_EXT_PRG_RCLK_DLY_CODE, (BIT(29) | BIT(27)), SDCC_HC_REG_DDR_CONFIG); @@ -432,6 +478,17 @@ static int ethqos_configure(struct qcom_ethqos *ethqos) rgmii_updatel(ethqos, SDCC_DLL_CONFIG_PDN, SDCC_DLL_CONFIG_PDN, SDCC_HC_REG_DLL_CONFIG); + if (ethqos->has_emac3) { + if (ethqos->speed == SPEED_1000) { + rgmii_writel(ethqos, 0x1800000, SDCC_TEST_CTL); + rgmii_writel(ethqos, 0x2C010800, SDCC_USR_CTL); + rgmii_writel(ethqos, 0xA001, SDCC_HC_REG_DLL_CONFIG2); + } else { + rgmii_writel(ethqos, 0x40010800, SDCC_USR_CTL); + rgmii_writel(ethqos, 0xA001, SDCC_HC_REG_DLL_CONFIG2); + } + } + /* Clear DLL_RST */ rgmii_updatel(ethqos, SDCC_DLL_CONFIG_DLL_RST, 0, SDCC_HC_REG_DLL_CONFIG); @@ -451,7 +508,9 @@ static int ethqos_configure(struct qcom_ethqos *ethqos) SDCC_HC_REG_DLL_CONFIG); /* Set USR_CTL bit 26 with mask of 3 bits */ - rgmii_updatel(ethqos, GENMASK(26, 24), BIT(26), SDCC_USR_CTL); + if (!ethqos->has_emac3) + rgmii_updatel(ethqos, GENMASK(26, 24), BIT(26), + SDCC_USR_CTL); /* wait for DLL LOCK */ do { @@ -546,6 +605,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev) ethqos->por = data->por; ethqos->num_por = data->num_por; ethqos->rgmii_config_loopback_en = data->rgmii_config_loopback_en; + ethqos->has_emac3 = data->has_emac3; ethqos->rgmii_clk = devm_clk_get(&pdev->dev, "rgmii"); if (IS_ERR(ethqos->rgmii_clk)) { @@ -564,7 +624,8 @@ static int qcom_ethqos_probe(struct platform_device *pdev) plat_dat->bsp_priv = ethqos; plat_dat->fix_mac_speed = ethqos_fix_mac_speed; plat_dat->dump_debug_regs = rgmii_dump; - plat_dat->has_gmac4 = 1; + plat_dat->has_gmac4 = !data->has_emac3; + plat_dat->has_emac3 = data->has_emac3; plat_dat->pmt = 1; plat_dat->tso_en = of_property_read_bool(np, "snps,tso"); if (of_device_is_compatible(np, "qcom,qcs404-ethqos")) @@ -603,6 +664,7 @@ static int qcom_ethqos_remove(struct platform_device *pdev) static const struct of_device_id qcom_ethqos_match[] = { { .compatible = "qcom,qcs404-ethqos", .data = &emac_v2_3_0_data}, { .compatible = "qcom,sm8150-ethqos", .data = &emac_v2_1_0_data}, + { .compatible = "qcom,sc8280xp-ethqos", &emac_v3_0_0_data}, { } }; MODULE_DEVICE_TABLE(of, qcom_ethqos_match);