From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.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 2716A339375 for ; Sun, 23 Aug 2026 11:07:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787483251; cv=none; b=CXwfgquhhO8kVxfpNopiEOhmCSS8w61EN/d7k4mwJe2j+IIqh77LzZ0CkmMKQOe4Xf+BTTql7PKlcTlABnH+jUPtkKC9LN76WlmT6SIWpY42fxzKXWHeUsD/Qv8bo6Bc0PI6vZJF3z1mhgzKc5WCwAUExwrdXRfdhxX9vU/u2lY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787483251; c=relaxed/simple; bh=a4s2lrW1+8Eqk8+YHkDNoira6cknP3N1yXhpUmLSJwo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XA9Yj0CK/FtJp62T9VsW8peazpJ+Vvu8mY1s2l0J30cyj6GlGMd6dp+qXF1JnuFpFk+3qTwhQ5oKcVzZ63k1jhyj1uGTm2rgQ3bIBBWUnH69LUfOliOVAueeigxnPXW03ThswZI0vp+Kv65WDfgRiEmzJ/teE2K8tFAz/DccC8g= 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=FbSlMTpq; arc=none smtp.client-ip=209.85.208.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="FbSlMTpq" Received: by mail-lj1-f177.google.com with SMTP id 38308e7fff4ca-39c74722e27so36461321fa.0 for ; Sun, 23 Aug 2026 04:07:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787483248; x=1788088048; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eeSk+EAhWojYnT5x4iIQpR2MeE2lPHzUfwVXBPxnCYQ=; b=FbSlMTpqMYoBkYQ+ccDNB9sNQGgltl5C4he/ad7AXNK7pRJNP6sF+cpYeVaK3mX4DP JCR2MlIvGASaq5YrUqCDL0RvaIOL8EKIF/0gB6XWzxaYw6cDJ3RsiQp/aApqDzFPsa42 PgI0B79FJnt/+/rIUBlviTDfXznNBVhOwRuBykBBEA4DZIgOWtcp5mqZWO+gXsjxnDzT +9gtshs4R6q0jdDEP8laRAs93/MEGUnuFkBpws03EUlVdIq5GYM3O/gEEDXz/bJprgIZ +qOcPUjpI90qO/fjEYRwKm8AbIx44N/m9jJwPxf5Z0XcPoFRgo/b7JE8h0Wux4Rkq4LV u0qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787483248; x=1788088048; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=eeSk+EAhWojYnT5x4iIQpR2MeE2lPHzUfwVXBPxnCYQ=; b=pS/4lI4idKL0zVJGbWhl+zcXFB/h/s1dnQ9hrPmDeyOef8xi+KL8REJqMKQpiGMkcl FltUMG/GVh/qdN5kug0YeGXXz7pPP8FSGAOL8QD9DRzE+OVlIiZq27v+hjEe5puoJWpe 1qsryoPrTrdzo/Qer+TLeyrlS+P2E8kxWyhx4iq75+lW52mMSlIaa2qFr1lJJFlD8eyc hB3+f3SxzhC4q8kNttsJJs0eOOr6OPNpnRkGBMLBLb51b46VNyio892D+rVd3VGvpMQB KifSKhD6yuYJ0cw3i5gawaiLnu4Y6pfi4wJWf3gf5VkdHZ6p3l9oVE/G+KNNScMAvTeC 1Szw== X-Forwarded-Encrypted: i=1; AHgh+RpP5/W2gpz6fadM55aciumfh8YIKU8ExRb7gmt7FItpsAYuOT+STah5RFphdkQdFH2+z/7cXf4Ff5+kt80=@vger.kernel.org X-Gm-Message-State: AFuF++khgxwRkEXP4Y+b0zgM09WjAFckQaN84mWzCv3T5qZ8ycul7SEW wPPt9KPFT20uke+D+uCrnrM6PVrRHCf1K4zCKO9QvuUXJ/QiSC5NUCs= X-Gm-Gg: AR+sD11WRuIEoE6kZu/DXbfgx1AjIMiYEwBEU3+oM4AyvUZ8XM89+lNdOZYHQMmxpM6 AQO9+XsVQXSQIvG2ZYlvEDNxLOIZWYL7gDyTdNJFfUb2vQjzn/jUp3TTO5qBKuAZ5nB90KItQNp 0CydO+FHvpHmnyfIvKQ2KlPpdbdoTWea8wTxjbIaohCb0p8rJBe/FE71OrHSZgv2KiY+MU04638 IQYjt9g7I7bLPumnB4rAG1SMq9BvqF6ZLJimLxbKMJoDgLX8FD9gLamay83j8w+oWjQv8ZfE1gV NyBZppFVYWoJOU6CvUcRr0RZApd4GLkKO2y7j5EMiyqt0GrFuVS8xPzY7dJlgeG8VHkhtCZXfeQ 2iJHFeS9BLqUWIx5fBLMFOwRB5NiGGEvTH55OHZxhy0DpK3VWizpypn1o0FS8zCd9bN7vZn2AEE +Ze/4k7661uOw0knDu7v4jtVdY+Pe+l+7vftT+0ymAmhEKsiZ07t4= X-Received: by 2002:a2e:ad85:0:b0:3a1:4530:fb2 with SMTP id 38308e7fff4ca-3a196a59b6dmr42000161fa.5.1787483247917; Sun, 23 Aug 2026 04:07:27 -0700 (PDT) Received: from fedora ([46.8.219.5]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b48cda2627sm964748e87.19.2026.08.23.04.07.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Aug 2026 04:07:27 -0700 (PDT) From: Vitaliy Sochnev To: netdev@vger.kernel.org Cc: Vitaliy Sochnev , Mikhail Zhilkin , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Eric Woudstra , linux-kernel@vger.kernel.org (open list) Subject: [PATCH 1/2] net: phy: air_en8811h: move LED GPIO configuration to config_init Date: Sun, 23 Aug 2026 14:06:36 +0100 Message-ID: <20260823130638.1166453-2-sochnev.v.74@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260823130638.1166453-1-sochnev.v.74@gmail.com> References: <20260823130638.1166453-1-sochnev.v.74@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The LED GPIO pins (GPIO3/4/5, mapped to LED2/LED1/LED0) are only ever configured as outputs once, in .probe(). But .config_init() restarts the MD32 MCU via en8811h_restart_mcu() on every call after the first (priv->mcu_needs_restart), and that restart resets buckpbus-mapped MCU state, including EN8811H_GPIO_OUTPUT. As a result the LED GPIOs fall back to inputs after the first event that re-triggers .config_init() (link renegotiation, ifdown/ifup, resume), and the PHY's LEDs stop reflecting link/activity state even though they worked right after probe. Move the GPIO-as-output configuration from .probe() to the end of .config_init(), so it is reapplied every time the MCU may have been restarted. Fixes: 71e79430117d ("net: phy: air_en8811h: Add the Airoha EN8811H PHY driver") Suggested-by: Mikhail Zhilkin Signed-off-by: Vitaliy Sochnev --- drivers/net/phy/air_en8811h.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/net/phy/air_en8811h.c b/drivers/net/phy/air_en8811h.c index edd49c193e47..0eeb7b9a4e26 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; - /* Configure led gpio pins as output */ - ret = air_phy_buckpbus_reg_modify(phydev, EN8811H_GPIO_OUTPUT, - EN8811H_GPIO_OUTPUT_345, - EN8811H_GPIO_OUTPUT_345); - if (ret < 0) - return ret; - return 0; } @@ -1324,6 +1317,17 @@ static int en8811h_config_init(struct phy_device *phydev) return ret; } + /* Configure led gpio pins as output. Must be redone on every + * .config_init(), not just once in .probe(): en8811h_restart_mcu() + * resets buckpbus-mapped MCU state (incl. this register) on every + * call after the first, e.g. on link renegotiation or ifup/ifdown. + */ + ret = air_phy_buckpbus_reg_modify(phydev, EN8811H_GPIO_OUTPUT, + EN8811H_GPIO_OUTPUT_345, + EN8811H_GPIO_OUTPUT_345); + if (ret < 0) + return ret; + return 0; } -- 2.55.0