From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 BC1AE3E5ECB for ; Wed, 20 May 2026 13:57:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779285455; cv=none; b=aQuL00gbKID7rmMsPXDU+hiB0T/q2+jEDoJfghrSTT7ygCq6lQ0dN8Lgr+hnGcF0t9LzbyqHGYlMZTavJ2c3bXEVTzb/r58sr9tH1g4itSLZJxKfBGqolrMICBK/Vz1FfWfMINlsjD/RNyQH6k+EksT3+KEj581Q0nor7Ym4h60= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779285455; c=relaxed/simple; bh=7XjhlBWu4XXe0BsTVCSVyXR2X3GDDIaeGLbqNNSVFeQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KTkKeVV31zDRWHR6Ky9gHj4z+fpa+1xVgd1YaS7AgcOxOXMyBvXMs6gYNh2uYhWpzVwYWOwg35FdxMOJFDLCeEGpmpMRTjYptVa27d4yGLyQvjqwOyHTbWQgLCKmMeEt5plppb7mIgR1b0QeeHmrwf6XbagTnZ4IpSO3KQwnjZM= 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=WOaL2KKT; arc=none smtp.client-ip=209.85.216.42 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="WOaL2KKT" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-36936dcf19dso2270355a91.0 for ; Wed, 20 May 2026 06:57:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779285453; x=1779890253; 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; bh=qrfdgV6HPj/62pzariFhyLS7uZIzNERwa95bI27/Uww=; b=WOaL2KKTDIPe+NfVguycnQHkUnVjRQenF1jkZ2h5BbLrm8j0htL9NjUktjAtV6jKNH 8Yl+JIKLLsXP0ZcQSsGhflJih6UVmE3+UlclECnAz5kQr0hgJj3y3R3zc5DuKfkYDY9z 31TAxXRgmIANt+1G5MNuPbN3OeKnZCie86MZJI4tjkIFBTz0/nmqfP8Jszt5rk4uJEvj T0ZM0StYymgkNJjRwve2LIOL0GtqwatpKZA0QtAYdXPOwBD3rDJ0PXOHnFpp7YadBZR5 X1kjgPiUMhqtbSNOPTc+m/5V2UGpCaenhqemxR0AO0mdi2XW1lWqO/+An4Cew/CRPfke nCEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779285453; x=1779890253; 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; bh=qrfdgV6HPj/62pzariFhyLS7uZIzNERwa95bI27/Uww=; b=dzLERAypJBfDX6JPio0y3PsT3t8DFwVlDV7NddTRVSXTA/o7gJeHGT/EfAftcYuSLA V/AUmecXDE7OnODknowlXTOgcfpIGKyNtZv9W6GRWHLK49zs+eG/VLItN8rKbYAC32gP KiH8a4s3FvbEkEDt8i7Jhn7EuBHYCcaiTrSwq8KqR3W9q/svm+fEmy0R0Tnz9tZs7j6Y R1K+sW0toZAFoNtl1cW/xYRIEQ4PYyq2OSlCu92ijGiwp0YvMcrBNdYmiXcJbwzxdnS8 7BYuHOOeMNPK/D7qa2FoHekgCd/OaateIGRe9QI4a600dDwVAqG3bZvicHeAFJA1kmqC IgYw== X-Gm-Message-State: AOJu0YzcVf/uaGpFfmO4ImdgNpmcSRFSemAu0HploAPDtESdD4yzRadU tBjud5LMTOb8Cvk7vqqZ+vkVU0WYgrYL5lh9OC9dj0Nh62ufYQwROGMxaEHjxvjO X-Gm-Gg: Acq92OH/bDhsnOO0IUEmCNqIoEYsDZrHlPShfFPq6vuJfV2SbmhUf6AzGwMTHDwwM/f Dy94LtLO6TE4kpJvdaJwjWIJy9DDTvyiRHd0px4wAzNyR4xtWiu6rUWmyWP/TEa8XF32x1r8vzU B4JDGY6m+1U0TPqMV/DHtaqEIWlENXn6a2VAcnbrNui8aWdMt7Zz/wRnRhnQJgBjJDrLVqJBaUc 35Z6NyRppmnDeV7ulVd4+S7n6MECnV5vQlDu93zuA6YTx2O6Ax9migrHUPvsEONcOq1RhGuJgwY S4PAWuvN4XSQs+8ottxnqTrSV0I6hrJjB/d8XN4QYKGh3BjCrpwShZVxbKd89UmSFSiumbrD1Rq TijwRdgXWMUeIZCLn5nrjjxNKnOXstu6I52ERi1tF3GPIaqrjTgK32IMcnDEzxDCMC5F2+EcIFh upe+J7mvw+Dyw2Saf8J7kLk+xz7MQbg42b4M/PXPk= X-Received: by 2002:a17:90b:58c4:b0:367:b9ed:665f with SMTP id 98e67ed59e1d1-36951a6cdf4mr22271562a91.13.1779285453029; Wed, 20 May 2026 06:57:33 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a52:5b11:a58f:5208:2fa7:bba5]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-369572e1007sm7480867a91.6.2026.05.20.06.57.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 06:57:32 -0700 (PDT) From: Jun Yan To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-leds@vger.kernel.org Cc: lee@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, luccafachinetti@gmail.com, pzalewski@thegoodpenguin.co.uk, daniel@zonque.org, Jun Yan Subject: [PATCH v7 4/6] leds: is31fl32xx: Add powerdown pin for hardware shutdown mode Date: Wed, 20 May 2026 21:56:57 +0800 Message-ID: <20260520135659.1430008-5-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260520135659.1430008-1-jerrysteve1101@gmail.com> References: <20260520135659.1430008-1-jerrysteve1101@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 IS31FL32XX series features an SDB shutdown pin. Driving it low (active low) places the chip into hardware shutdown mode for power saving, while all register contents are preserved and registers are not reset. Deassert/assert the pin accordingly during probe() and remove() to manage hardware shutdown mode. Signed-off-by: Jun Yan --- drivers/leds/leds-is31fl32xx.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/leds/leds-is31fl32xx.c b/drivers/leds/leds-is31fl32xx.c index fe07acbb103a..5b9ed5a1818f 100644 --- a/drivers/leds/leds-is31fl32xx.c +++ b/drivers/leds/leds-is31fl32xx.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include @@ -60,6 +61,7 @@ struct is31fl32xx_led_data { struct is31fl32xx_priv { const struct is31fl32xx_chipdef *cdef; struct i2c_client *client; + struct gpio_desc *powerdown_gpio; unsigned int num_leds; struct is31fl32xx_led_data leds[]; }; @@ -421,6 +423,14 @@ static int is31fl32xx_parse_dt(struct device *dev, const struct is31fl32xx_chipdef *cdef = priv->cdef; int ret = 0; + /* Driving this GPIO line low takes the chip out of shutdown, + * as it is flagged as GPIO_ACTIVE_LOW in provider (such as the device tree). + */ + priv->powerdown_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_LOW); + if (IS_ERR(priv->powerdown_gpio)) + return dev_err_probe(dev, PTR_ERR(priv->powerdown_gpio), + "Failed to get powerdown gpio\n"); + if ((cdef->output_frequency_setting_reg != IS31FL32XX_REG_NONE) && of_property_read_bool(dev_of_node(dev), "issi,22khz-pwm")) { @@ -609,6 +619,9 @@ static void is31fl32xx_remove(struct i2c_client *client) if (ret) dev_err(&client->dev, "Failed to reset registers on removal (%pe)\n", ERR_PTR(ret)); + + if (priv->powerdown_gpio) + gpiod_set_value(priv->powerdown_gpio, 1); } /* -- 2.54.0