From nobody Tue Dec 2 01:51:19 2025 Received: from mail-oa1-f48.google.com (mail-oa1-f48.google.com [209.85.160.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A8DD3644D4 for ; Thu, 20 Nov 2025 16:23:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763655784; cv=none; b=W/XIOmJxSeypWgYT4Hr9hIUaHH132WCCqsRKOPzFYJpIsra4PciMP+PETisOQc37+qqX7AHVXv1Eo5TCKSjGafppihKR/orzMiE+MGRjej/j4qiUfPSEpSj527sa/Cd2dUSnhfmib8mD+pRErGl2GWZBRUvM6XuMI43TFEMn2KE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763655784; c=relaxed/simple; bh=I5DRp9GCbJVM21gv/C/FhaowG/g9St4qT1k2xEXxtJ8=; h=From:To:Cc:Subject:Date:Message-Id; b=rSWQNdgGTiaVq05x2zjq9FzFxqrT16XcEQ/1MvM6fidABR6wbfEuNZwXd9VOReHGRfqz4t8508r+LJtf357kd0RoSJCdjlgUFhPfh68QiTSrWmzS3Js1T8d2/pHZxvzoyx2ieise5XaZvQWB1PC3wKyGxUcN2fsyIB1XSi4IAtM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=atzGGabg; arc=none smtp.client-ip=209.85.160.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="atzGGabg" Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-3d70c5bb455so374820fac.1 for ; Thu, 20 Nov 2025 08:23:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763655781; x=1764260581; darn=vger.kernel.org; h=message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=d0tdadcaOllwZN0zF3sys/aIhLtv2I4tkzaAzDlX5eE=; b=atzGGabgzDRk1WA/kZtzqm9PLTxrhZBDiaZJwZnJys0b4baSMkdMaUFj251rbM2BGx pbW3YYBtbD0BvogIxUsA0cPMAWqj5+mJFvrlEPMcjLAFpHTqHRsmQpZxP7i8OcFMSD76 iiFRDxWERkKSbBatpx/JCKYY9jLsNaf6xjF3XUAjMWDKxT1mkBngHmR4gcTdn9FNdfEB aaDIRe3CTcjOZueIoW0LJs1LN9zSuzFfEYQ+OqNM52pkT1Wy5D11ZXOmYrhOylWQf5EO J//U9rRFrG4rNtPjxYFLjxuCw92mEW3YionC3q65QyVZiyJuRJBIX1/r7k5yG++yM6CR OHSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763655781; x=1764260581; h=message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=d0tdadcaOllwZN0zF3sys/aIhLtv2I4tkzaAzDlX5eE=; b=DVidZxDJpl1MZPrHS4Lgm9xghbcmt6/6LAktb7OxdtsEDjMF0sBiEq6p6pSEMpkmVT Sgev2Ex3mVe00ePkw3UlOnt4dq6GseSb/rmwZ9VyLw1enQVb+cx3zxCcPsqvCQolMNtM CcxvfkrF91M65J2LGtjqhZZwZ1sGaxtBqjU5q5pEWwGJ8sGlrdDPh86HiE444c3O4NKX SbnI7DTZ3FwNpNzaTwTCcLctUX+uBcPEhdvVrcDam/v7WRFH6uW8x3x4ajf+489h8xPa x0fa5RZNbRk050xyGeSDf73zdOz4vGKpEYXsE2EAuoRiOdQ5r5waB4Kiq1xBq96LE0fK 7fCg== X-Gm-Message-State: AOJu0Yx0M5H70X8B1rk5m+7hzHAZ6/i3+0u8NLxK3oXS0VM5RGN+9M8i cPk64elL4Bh/cLeBy6a+8/+ezi94d20Y+icpmi0v0xz86rTLKo+JYfRU X-Gm-Gg: ASbGncufz8gDJYCNJH8e0kOL5sO/BVAiWHx7LaucJzwSVToeIqP1xKzJBQF3JzwZB+l uQJnHpT6RtpVBPPhM3vaqA9PK0bh9ARYltjw0lPdY7S2g5NzeVU733jlagajJ7Aa2dKGFtGzAZb HEa3tqU6FKF07LxizWHIY4Wtwl+aHkDv3wMOT99Xjg81d/ZB96KM+tuLoaPkBWSXfQ4nM6SRfzb IKKSUg4de2MyvmuXm9K4JPiWjEOVXvbkgGcDNFtOB8veRVpwoaXjKeEdHGLW36CpT1CYXgsZyec +XOeFYUxzOd6l3B2TV6pxDlb2Ot3saA5KPNf144txB51cl3eRQJ/kbWt/t4MEsXFgRmvGFtvUIs TAtTmo5IK/GJs2rLRnXo2LkJwqDJjkTVMEL9nCa+WX8BAOP81M0f9CthFySoraGWaaE1+0QgF6f I6gO1Qx1LfhTV78XU= X-Google-Smtp-Source: AGHT+IF7ftfalNRw8ZNUBYR+5ucJXrX7efoW1K3ADp3krYp2GnXALht8+9gG/fjl1hp4DrgVDHKMJg== X-Received: by 2002:a05:6808:1b26:b0:44d:a0ec:712f with SMTP id 5614622812f47-4510ee8ea7fmr71818b6e.17.1763655781076; Thu, 20 Nov 2025 08:23:01 -0800 (PST) Received: from SC-GAME.lan ([172.245.56.104]) by smtp.gmail.com with ESMTPSA id 5614622812f47-450fffbf1fbsm766947b6e.19.2025.11.20.08.22.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 08:23:00 -0800 (PST) From: Chen Minqiang To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , "Chester A. Unal" , Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, Chen Minqiang Subject: [PATCH] ARM64: dts: mediatek: fix MT7531 reset polarity and reset sequence Date: Fri, 21 Nov 2025 00:22:24 +0800 Message-Id: <20251120162225.13993-1-ptpt52@gmail.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The MT7531 reset pin is active-low, but multiple MediaTek boards describe the reset-gpios property without GPIO_ACTIVE_LOW or incorrectly mark it as active-high. With an active-low GPIO, gpiod_set_value(1) drives the line low (assert reset) and gpiod_set_value(0) drives it high (deassert). Update all affected DTS files to explicitly use GPIO_ACTIVE_LOW so that the reset polarity matches the hardware design. Additionally, adjust the mt7530 driver reset sequence to correctly assert reset by driving the GPIO low first, wait for the reset interval, and then deassert reset by driving the GPIO high. Boards fixed: - mt7622-bananapi-bpi-r64 - mt7622-rfb1 - mt7986a-bananapi-bpi-r3 - mt7986a-rfb - mt7986b-rfb This ensures the MT7531 receives a proper low-to-high active-low reset pulse and initializes reliably. Signed-off-by: Chen Minqiang --- arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | 2 +- arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | 2 +- arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts | 2 +- arch/arm64/boot/dts/mediatek/mt7986a-rfb.dts | 2 +- arch/arm64/boot/dts/mediatek/mt7986b-rfb.dts | 2 +- drivers/net/dsa/mt7530.c | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts b/arc= h/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts index 9f100b18a676..6f29ce828fdb 100644 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts @@ -155,7 +155,7 @@ interrupt-controller; #interrupt-cells =3D <1>; interrupts-extended =3D <&pio 53 IRQ_TYPE_LEVEL_HIGH>; - reset-gpios =3D <&pio 54 0>; + reset-gpios =3D <&pio 54 GPIO_ACTIVE_LOW>; =20 ports { #address-cells =3D <1>; diff --git a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts b/arch/arm64/boot= /dts/mediatek/mt7622-rfb1.dts index 8c3e2e2578bc..6600f06ccebf 100644 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts @@ -137,7 +137,7 @@ switch@0 { compatible =3D "mediatek,mt7531"; reg =3D <0>; - reset-gpios =3D <&pio 54 0>; + reset-gpios =3D <&pio 54 GPIO_ACTIVE_LOW>; =20 ports { #address-cells =3D <1>; diff --git a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts b/arc= h/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts index e7654dc9a1c9..8ec2ec78ee46 100644 --- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts +++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts @@ -203,7 +203,7 @@ interrupt-parent =3D <&pio>; interrupts =3D <66 IRQ_TYPE_LEVEL_HIGH>; #interrupt-cells =3D <1>; - reset-gpios =3D <&pio 5 GPIO_ACTIVE_HIGH>; + reset-gpios =3D <&pio 5 GPIO_ACTIVE_LOW>; }; }; =20 diff --git a/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dts b/arch/arm64/boot= /dts/mediatek/mt7986a-rfb.dts index 5d8e3d3f6c20..732dc4f5244f 100644 --- a/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dts +++ b/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dts @@ -87,7 +87,7 @@ switch: switch@0 { compatible =3D "mediatek,mt7531"; reg =3D <31>; - reset-gpios =3D <&pio 5 0>; + reset-gpios =3D <&pio 5 GPIO_ACTIVE_LOW>; }; }; =20 diff --git a/arch/arm64/boot/dts/mediatek/mt7986b-rfb.dts b/arch/arm64/boot= /dts/mediatek/mt7986b-rfb.dts index 58f77d932429..91809cdb4499 100644 --- a/arch/arm64/boot/dts/mediatek/mt7986b-rfb.dts +++ b/arch/arm64/boot/dts/mediatek/mt7986b-rfb.dts @@ -64,7 +64,7 @@ switch@0 { compatible =3D "mediatek,mt7531"; reg =3D <31>; - reset-gpios =3D <&pio 5 0>; + reset-gpios =3D <&pio 5 GPIO_ACTIVE_LOW>; =20 ports { #address-cells =3D <1>; diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 548b85befbf4..e4caedc3eee5 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -2405,9 +2405,9 @@ mt7530_setup(struct dsa_switch *ds) usleep_range(5000, 5100); reset_control_deassert(priv->rstc); } else { - gpiod_set_value_cansleep(priv->reset, 0); - usleep_range(5000, 5100); gpiod_set_value_cansleep(priv->reset, 1); + usleep_range(5000, 5100); + gpiod_set_value_cansleep(priv->reset, 0); } =20 /* Waiting for MT7530 got to stable */ --=20 2.17.1