From nobody Mon Sep 28 15:34:23 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 BAE10446C06 for ; Thu, 20 Aug 2026 14:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787235075; cv=none; b=kxxgzyy3CdkoHI3i5mEBbXy3EiOmPZUOUXtvAALLnfM6d3c4sK0DG/kmF+DcZN0b0aoxPq70abTqRBIKgsqYgUzKVboFuRG51yXJ88LspyERnvZ3rxkaPwc7jyAPJ5Wv8Hc12H0XKolaIsOmxz9+E0dTsf0uOPBnqRdxLi3O55A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787235075; c=relaxed/simple; bh=metf2ewWaWZ0KpVLK8I17SpTkIQoS2trLjNMVLBctbE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=I+rAooF8qxrOpLHx19yX0noz0pCalyOyBMFSIsvPDjSZehXWmgNyNJ7bOsplSpFysllviNZ0CUSYok/9SbGJRKWneLVwzD1RNQi4iCWj+BEakkos85Mwf/aiCvSG/BA0d2EfXKHcHlXoegisZUcJQJT68THUtyFH26wQ1L/fLh4= 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=ffRgwING; arc=none smtp.client-ip=209.85.214.177 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="ffRgwING" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2cace91f112so22278315ad.0 for ; Thu, 20 Aug 2026 07:11:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787235073; x=1787839873; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=1hpIbb+DTG55eyPgd22Z6RIQxrSuxt17lMHiQN1C9mU=; b=ffRgwINGaoTDX2gKAu2OVZHYTsnpRE2EgJFlViCahOSeI+sPuYGNzzf08TStoW9nBO 4BbF/gTcb8BfJpdDoeqyCsoycplY3KxYIq7VRAXoGg4aa9/wtYzNCsEyymG+F6eMkBMS kNbpXjG/OQj6G8r7Ycf0e1x2ToHfvRBkRASpJQI5RkPa3fJAZv30iM7zEzDBzEbho138 8vi8qNXhNsLbhXZTWOnA5Qzr/iKRS5ChdT8WceXHxT9aKNk7mVZbjH2vf14sRZdXJBR/ aWywkd0TRP0CEBJ3BYh7bM8TJXiEQ8Yi9pr2BwCHX98jHUq//XYJMlMdrT25Ks5zFIrl S4NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787235073; x=1787839873; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1hpIbb+DTG55eyPgd22Z6RIQxrSuxt17lMHiQN1C9mU=; b=atQTUYMkJdMo8nAazm/4v6aF0FAu2+1F3cqMDp9mNFFffwmzCFvIg9WxUUet2d3OA2 /4lFSqTaeprhOsfhOlCSJjllbz9RHYX1ut9RgdNcJkwFk9aUP77S2QpajxBvuSiWt67j hZuUpc8nqCgAULcuxI7FFqcVcwpkg4NXADk5aDWbCkX0BKfIZA50wzXbxUHcHG1O+uXx jQPX95H+ujFNrYGXi10bNgr0eg33qtZCvuuj71SqTUrWt1NumGrEGLiOHxYvM05ARfu0 GIYsDpZrwUsrbJE/1LlibQcmzEc1dRrEF9GAmMHWc0as6b0aVgpJQRCpqcL3WwU17Ckp lGgw== X-Forwarded-Encrypted: i=1; AHgh+RqXd+FdufwXj8C7569ScdgNZ2GwySiIamkkecjQxBtCQokazRSZ1stNH3xln5+/9KWM681fwEdaF2hskJc=@vger.kernel.org X-Gm-Message-State: AFuF++msp7PT4LCeTiKSP5PJ7EIwVKZx5cV3eQAbaOavro+O3ztRSQ+1 PhQU4jLduYgr39qTtYMGPQm1Ak0paPwXD9vgnv/lgCq9odZdAcsvAyvY X-Gm-Gg: AR+sD107w8Uy7Y4/QfwICKTB+9e7cR2WaK81Ln+gwn6qBJ1+lyUO/bY61uGID/ToJIS /U6gxbYU9nEbt4PgKW9PvVPOK+4tZKe0MLUbHxJlkWxlrRnrqCgiAw5FiQgtMGLK0K5G4DyuybA X2bBz1YlU/6mlulONdGFXmYY3OXMioQamKUYpLXsGJx3MheS65e1obvJnMwLe5f+HsA56HWatJH CX7FHTqo187ZaOMoUuLqPhqJbGwZcl6E/W+Qh2BnNjbT9fPJbdaU2Ao6nTDDUeee2tNGetpRa4A FX3Q5lqUZ+bOb3/BmjhiWx1xh9bKdVAi8dDkmLGLwdc5VbsSKAUzhd2Nx8C9ZszilG5flVClO8l K9SCaW7ptpr4d/td7WZnlQSUUkkR2g//jsWL5U99p59DlFRvtIW3127Yui45leY+YVIRsLA7JP8 tVnTROwtWY20jlbscTAvsYE6FkNCCswwCPWcHtkZr5gLaJmUupchS+GDXkprdzE+DIa0Sr/ASJu dE0q1tQXg== X-Received: by 2002:a17:902:ef43:b0:2c9:b8b7:5d27 with SMTP id d9443c01a7336-2d5fd5ff363mr253093705ad.1.1787235072883; Thu, 20 Aug 2026 07:11:12 -0700 (PDT) Received: from DESKTOP-FD9BUFI.lan ([240e:3a1:925d:9350:d471:c081:b8c9:1eec]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d62d58a811sm7801075ad.25.2026.08.20.07.11.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 07:11:11 -0700 (PDT) From: Ziyou Xu To: netdev@vger.kernel.org Cc: Ziyou Xu , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Eric Woudstra , linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net] net: phy: air_en8811h: restore LED GPIO output after MCU restart Date: Thu, 20 Aug 2026 22:10:34 +0800 Message-ID: <20260820141034.1400439-1-xuziyougm@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" en8811h_probe() enables the GPIO3/4/5 output bits after loading the MD32 firmware, but a subsequent config_init() restarts the MCU, which clears EN8811H_GPIO_OUTPUT[5:3]. The LED event registers survive the restart, so the LEDs work during early boot and then go dark after the MCU is restarted. Move the GPIO output setup into config_init() so it is reapplied after every MCU restart. Tested with warm reboot, cold boot and cable unplug/replug. The failure was confirmed by reading EN8811H_GPIO_OUTPUT as 0x00; setting only EN8811H_GPIO_OUTPUT_345 was sufficient to restore the LEDs. Fixes: 71e79430117d ("net: phy: air_en8811h: Add the Airoha EN8811H PHY dri= ver") Cc: stable@vger.kernel.org Signed-off-by: Ziyou Xu --- drivers/net/phy/air_en8811h.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/net/phy/air_en8811h.c b/drivers/net/phy/air_en8811h.c index edd49c193..fbd87fc71 100644 --- a/drivers/net/phy/air_en8811h.c +++ b/drivers/net/phy/air_en8811h.c @@ -1173,13 +1173,6 @@ static int en8811h_probe(struct phy_device *phydev) if (ret) return ret; =20 - /* Configure led gpio pins as output */ - ret =3D air_phy_buckpbus_reg_modify(phydev, EN8811H_GPIO_OUTPUT, - EN8811H_GPIO_OUTPUT_345, - EN8811H_GPIO_OUTPUT_345); - if (ret < 0) - return ret; - return 0; } =20 @@ -1317,6 +1310,16 @@ static int en8811h_config_init(struct phy_device *ph= ydev) if (ret < 0) return ret; =20 + /* + * Restarting MD32 clears the GPIO3/4/5 output enable bits. Restore + * them after every restart, before enabling the corresponding LEDs. + */ + ret =3D air_phy_buckpbus_reg_modify(phydev, EN8811H_GPIO_OUTPUT, + EN8811H_GPIO_OUTPUT_345, + EN8811H_GPIO_OUTPUT_345); + if (ret < 0) + return ret; + ret =3D air_leds_init(phydev, EN8811H_LED_COUNT, AIR_PHY_LED_DUR, AIR_LED_MODE_USER_DEFINE); if (ret < 0) { base-commit: 564973a259ec76f2dad0853420e7034cc43994c4 --=20 2.43.0