From nobody Sat Feb 7 15:10:47 2026 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (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 99DAB328616 for ; Mon, 5 Jan 2026 08:51:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767603106; cv=none; b=Q74CfLSrZ+KhsA1t8OOUUTGoUEYc3oPJ0Ng5jpWXrSkrEcGrUggywx1fI892D4+GEEM/D1KdjXyZqaE36XHRUS+/6Fq9yCcJgz/O25QAFCqcap2cIiC5jpqLFSpPyYBbLTPA5XZKurZ1VttGe2wGk1NJTPJTStPsIB5LHdq7WqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767603106; c=relaxed/simple; bh=SVJlcDayOcdOuFmlxFZIJno8JEUkvS2rwI28zFq/GdM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Pcl83J5RkCMPe2w4/8P7lkkG1kpElT2t7xUFhNXREKrYpVryGC6Bw1q19FJnsbxXfyBMZ6FSmsv7v7D5oe8w4KRAhOHoe4KtLy2VIY9V94nCu7mbSeyHLlnHuxX8vbqDXtZ0OqHKz0GUD3KaM6VwGuM/8XvW5shq3p+dZQ341dQ= 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=dtiUjjqX; arc=none smtp.client-ip=209.85.210.182 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="dtiUjjqX" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-7b852bb31d9so15931100b3a.0 for ; Mon, 05 Jan 2026 00:51:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767603098; x=1768207898; 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=jSJakbOsK6HuPfvndjr4pklixI6V6EaaZEWI2YnlWqA=; b=dtiUjjqXbW5jdbL8VOlxiuTtQUfEyMJBuZMuwbZ5AP9HI++LewDfGeIciBkMo97qLV k0p15eG5aY9g1rbscY7h0juJw7cKsewiUL58yWyB0wh/r+uJIFC0luGbgIXBnJst9bXm kcqMiCHDatExkU3ZQwDIj+2wRdBuXPmxPxxLW7IHyWcQeLIvCk0A025Qz2SIVy+vBGr4 XMswSvZMCJPmUoJK4o2H+WZ8YbfLfvSvongu1fX4RdUdKorVROsOei/2kvlEclnG9cmb 4QsTQ5fPWxFV5vFztXowIYQtjU41uFmoSXpJi/okhjDnYd7QFqqyfj+7pYuZyMyK6x8d mxGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767603098; x=1768207898; 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=jSJakbOsK6HuPfvndjr4pklixI6V6EaaZEWI2YnlWqA=; b=rHTauTOOam2m4wQTRaQKSfq7iqCP4SM1uxTUKE14YQ/AjjR3gNWlgPan6a9LibIHWF xMzfA4qYe3g9sd32LnsQU9UEKlF4WKGmRKPSUnHxif73YiNGgbJwN/bwoqwP06JDjP0Q BsbR5hpOyhXyVysoCXg/lBhIUGDATO68OnmtsQAML79NeZcQXpQK8WP77L39uDILfPd3 Pt6mwrMDrDV20Ivqyt4CfIrcQkN7wmtLGCGHAtjUEygOyJU60w8UveoUEkVWBONALaXG LIK/cVrwa0L+FzTLBZjJxqLzfxqu9pTGadANfvRHWKaxBfl1rCWozez8k76pnU669BAS JpVA== X-Forwarded-Encrypted: i=1; AJvYcCWRkhaCi+2Re2Uvh//vzZ7K+HQoTQvkFaSCgu+BZq2Zh5Gm1xs35ulhgU1hLBWcnNpqzEPARkRUNU2euA0=@vger.kernel.org X-Gm-Message-State: AOJu0YwyAc9FAzzjpj2m5ZVGau8BJXnb2BQ8L7cq3Rd8y/KMeZy1DDDQ tyuQYip9WJ1Z5k2Lh8fFSwV4u03plM1+I9MUnZaBdpdIw9kljmYDNQ9/ X-Gm-Gg: AY/fxX7nysfTVv7r0w+/+TQK3+yjKLs2XhnSAZ3TCU6Hp9/5xvsFhB19zX84z31XvuJ +igk3JhjNTA/+1sIYDIdXLp/5fhrLfptMDhfsBA2CfGD7viOFttVuB/GEBT0lpAXniWibsyFKdO OdU0W8GwHMPQ8fr2/Cj3edUkBWB0BGrJsMr0VbeE6KuM+mCnLml4Q1KBCGfoVryywIiJfywyDRx kyEa4ZN4snH3fSP3vD5ScA5vcCRtEv4SqCc8f6exie98Dru0d3Z1oQJCVOV/ahF9AsMhE6SQeEN z0VaaIJoDxNBcf2a9SsaM+u57P8Xi5s2zKaT1JuQ333hiOyv9uzZOdCo5XTcFBQPQqpKrfvM5eZ wRLxRMl86WG0pRRYuRsmxym+oPtzykjHfHtw0RJ+PRsX8GVkIQ8IYZV8cDbbdPEC1e5xFciSbrd M8hBE89apEz10zIaVuJz+8hKuaTnYDp1sH5sf/ X-Google-Smtp-Source: AGHT+IGdSTNTsFlnHGoKbBjCGcgH0vsgwPkGV6SlKLkkpRQlPt3vpratMO2N1qpXOb9AsWAQeM28kw== X-Received: by 2002:a05:6a20:3d06:b0:350:7238:7e2b with SMTP id adf61e73a8af0-376a81dc150mr42017932637.16.1767603097900; Mon, 05 Jan 2026 00:51:37 -0800 (PST) Received: from test-HP-Desktop-Pro-G3.. ([103.218.174.23]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34f476fab12sm5631951a91.5.2026.01.05.00.51.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:51:37 -0800 (PST) From: Sudarshan Shetty To: lee@kernel.org, danielt@kernel.org, jingoohan1@gmail.com Cc: deller@gmx.de, pavel@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Sudarshan Shetty Subject: [PATCH v1 1/2] dt-bindings: backlight: gpio-backlight: allow multiple GPIOs Date: Mon, 5 Jan 2026 14:21:19 +0530 Message-Id: <20260105085120.230862-2-tessolveupstream@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260105085120.230862-1-tessolveupstream@gmail.com> References: <20260105085120.230862-1-tessolveupstream@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: quoted-printable Content-Type: text/plain; charset="utf-8" Update the gpio-backlight binding to support configurations that require more than one GPIO for enabling/disabling the backlight. Signed-off-by: Sudarshan Shetty --- .../bindings/leds/backlight/gpio-backlight.yaml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/leds/backlight/gpio-backligh= t.yaml b/Documentation/devicetree/bindings/leds/backlight/gpio-backlight.ya= ml index 584030b6b0b9..1483ce4a3480 100644 --- a/Documentation/devicetree/bindings/leds/backlight/gpio-backlight.yaml +++ b/Documentation/devicetree/bindings/leds/backlight/gpio-backlight.yaml @@ -17,7 +17,8 @@ properties: =20 gpios: description: The gpio that is used for enabling/disabling the backligh= t. - maxItems: 1 + minItems: 1 + maxItems: 2 =20 default-on: description: enable the backlight at boot. @@ -38,4 +39,13 @@ examples: default-on; }; =20 + - | + #include + backlight { + compatible =3D "gpio-backlight"; + gpios =3D <&gpio3 4 GPIO_ACTIVE_HIGH>, + <&gpio3 5 GPIO_ACTIVE_HIGH>; + default-on; + }; + ... --=20 2.34.1 From nobody Sat Feb 7 15:10:47 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 7CAA932860B for ; Mon, 5 Jan 2026 08:51:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767603110; cv=none; b=ZhsOINQusLwB+5+OOKgpTKgx+nmnvW0houKuMv/aW/u0mvILCrBhCySCrbs9GQSI88YhfpVPqcusdvoSZTLNI9cQ0uIKL4NPt4S4/TPeF4wTsMGAWrDwR34dC2cchEjk8tuH9ps/Suv8LGY78xjj9h8eh202j0X3uXFngDQmV/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767603110; c=relaxed/simple; bh=ZQ6Y7IFZTaEd6ktsVoxdPOs72CPIs+7PsUG1QLPNjHU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qmnFjjXCg2eGD60w1RFs5cUZT5HZ6EEZPtqdjuxbm+51xto1oQjjsDidihFP0xbARdE2z8hmXXwUZibq2Kj+rzMHR6a9f1oKsOOqKQFrkZazN/UQkZaQxUP0ou3eGZejQOPoA76owF0A7POnLJKaqfmEjmx7q2VrWr5LB0zhKdE= 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=fVKa/TFv; arc=none smtp.client-ip=209.85.216.53 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="fVKa/TFv" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-34c3259da34so14542965a91.2 for ; Mon, 05 Jan 2026 00:51:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767603104; x=1768207904; 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=bFt+oA/6TnGUcf1mQLhvyTPCz7K2SXMiNJhoCpH+0PQ=; b=fVKa/TFvf8XIfjlirfLhfwDttkkYRLbl0EB2WfX0NiEgjrgaMKeUci0BORuosejzsW v4AXvruwrwxC5Bi1VpHCv/B2VswHBLIa4YYYvVDXUYqcADYjqUkLvtrVM73RLhh9WygU CgBNmGEjTF2R4Zs+VnjT17r/4Ho6gWCukz3bbOPmtio0Vkqp1sE34w8ElpkagVKeKKkX cqfJ+kMW0hwzDViK0RNQVHGOADhuHeZve/cDTzI3zSYgvxDs+2EwSbBGONCRqnpONzj1 x/ceBlTCPwdtjxVGhbwg1sso0UNuLevOceR9akSqgLBScHnAMVjI74ywOxCEjQsl8kUD U3LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767603104; x=1768207904; 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=bFt+oA/6TnGUcf1mQLhvyTPCz7K2SXMiNJhoCpH+0PQ=; b=Bgj/E30To7KdCeeinnKTlwlChFpqWtaK2BeZR0+sEOT7smfLfKa07ffDq5w1CXSJFX Wm7GTFlOBe270peewPQwv8mj7r36lagbzNOdr4qQfH5WWzQYwbLFZgcDSc1ZlX/65SAL O/iExKMfcMJ8S0W5yGWiUN4KZPDRTG+wlyuk/WXzPove74kdaV1byzf3Fv6ov5nujOt6 sasw83fGja5VObjSg1FGOkWUWAqPApXnl7I095+FluLHzDZSgdmM4yJr4MAuBqR+LFJe 3lVXFv//sQNGuleuNQ42EWSjI0FdvbARjotd2+/4/cBNGOQEPSgSd3+Gm/aocpnOxnio A+9A== X-Forwarded-Encrypted: i=1; AJvYcCUD8fgjNF2bsbzk8uF+YEQOb6rR6aPB9z45uzdc5kl+UEIIgzXS/OGJ6wrwXH46e1L+W65OGuO5lMI5FRI=@vger.kernel.org X-Gm-Message-State: AOJu0YytOQ0oQE5kC8Xg+OJq4vbLuOk+yA0XhsZCTlzFfUpVmYNaEGFi Hw7sHdmzXbc7pdOyju4/ZUTvKm9dbNQX/G3AYM4YE6mbyBAjUcYIaAddyolLHQ== X-Gm-Gg: AY/fxX6/H0xGUZT0A2dJZdkH9pUrL3Xbs7FXlCqXsGPo0+qDtE8wj7gL91Rp+95S5hK lWf0f+e077SzmlVX/yl8P5MIFFbqhl677d75pnpo5dPV5/26kNZ6owcsM5QQki2ifpaUAJ0eP70 sjG6xikP9qmhEn0KjDJHAAVJM+P1O1riyMgFPWpxTIFxlK08BdDo4kuDs2BjVP0BHqTYFuOeVCG Vy6Hi9T+wohEiyhbPsPH+NUP3bmCuHjKbD1yheiyi2Ywkq2KUDwkMfbD+GM1KlJ/MR3sjsOV8vR YHb+B1QLZF3GnBGkgSqsYF5v6t7m40dlMKmDro7jwz574QSsN3WL+RDyxlb32xvxSDr4NR0F1SO q2YCES1l4LbnB8zmecLrKJ8iHtXYoX9a2axHPkdmmhGn/RqGALKmvflWwuj75abGMqHAajrPiV5 7IxEhjyXVdtRbkS+qA/obDdX70fzFmcVtSeIbJ X-Google-Smtp-Source: AGHT+IE9h/a5pga/RcO3GaC9CZMJm/hBktjxAoM256+iS35FTfAipE1WuhDdgjBTuxYdSkDNtweQhg== X-Received: by 2002:a17:90a:d60c:b0:34c:4c6d:ad0f with SMTP id 98e67ed59e1d1-34e921f0e35mr38658346a91.37.1767603103621; Mon, 05 Jan 2026 00:51:43 -0800 (PST) Received: from test-HP-Desktop-Pro-G3.. ([103.218.174.23]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34f476fab12sm5631951a91.5.2026.01.05.00.51.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:51:43 -0800 (PST) From: Sudarshan Shetty To: lee@kernel.org, danielt@kernel.org, jingoohan1@gmail.com Cc: deller@gmx.de, pavel@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Sudarshan Shetty Subject: [PATCH v1 2/2] backlight: gpio: add support for multiple GPIOs for backlight control Date: Mon, 5 Jan 2026 14:21:20 +0530 Message-Id: <20260105085120.230862-3-tessolveupstream@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260105085120.230862-1-tessolveupstream@gmail.com> References: <20260105085120.230862-1-tessolveupstream@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: quoted-printable Content-Type: text/plain; charset="utf-8" Extend the gpio-backlight driver to handle multiple GPIOs instead of a single one. This allows panels that require driving several enable pins to be controlled by the backlight framework. Signed-off-by: Sudarshan Shetty --- drivers/video/backlight/gpio_backlight.c | 61 +++++++++++++++++------- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backl= ight/gpio_backlight.c index 728a546904b0..037e1c111e48 100644 --- a/drivers/video/backlight/gpio_backlight.c +++ b/drivers/video/backlight/gpio_backlight.c @@ -17,14 +17,18 @@ =20 struct gpio_backlight { struct device *dev; - struct gpio_desc *gpiod; + struct gpio_desc **gpiods; + unsigned int num_gpios; }; =20 static int gpio_backlight_update_status(struct backlight_device *bl) { struct gpio_backlight *gbl =3D bl_get_data(bl); + unsigned int i; + int br =3D backlight_get_brightness(bl); =20 - gpiod_set_value_cansleep(gbl->gpiod, backlight_get_brightness(bl)); + for (i =3D 0; i < gbl->num_gpios; i++) + gpiod_set_value_cansleep(gbl->gpiods[i], br); =20 return 0; } @@ -52,6 +56,7 @@ static int gpio_backlight_probe(struct platform_device *p= dev) struct backlight_device *bl; struct gpio_backlight *gbl; int ret, init_brightness, def_value; + unsigned int i; =20 gbl =3D devm_kzalloc(dev, sizeof(*gbl), GFP_KERNEL); if (gbl =3D=3D NULL) @@ -62,10 +67,22 @@ static int gpio_backlight_probe(struct platform_device = *pdev) =20 def_value =3D device_property_read_bool(dev, "default-on"); =20 - gbl->gpiod =3D devm_gpiod_get(dev, NULL, GPIOD_ASIS); - if (IS_ERR(gbl->gpiod)) - return dev_err_probe(dev, PTR_ERR(gbl->gpiod), - "The gpios parameter is missing or invalid\n"); + gbl->num_gpios =3D gpiod_count(dev, NULL); + if (gbl->num_gpios =3D=3D 0) + return dev_err_probe(dev, -EINVAL, + "The gpios parameter is missing or invalid\n"); + gbl->gpiods =3D devm_kcalloc(dev, gbl->num_gpios, sizeof(*gbl->gpiods), + GFP_KERNEL); + if (!gbl->gpiods) + return -ENOMEM; + + for (i =3D 0; i < gbl->num_gpios; i++) { + gbl->gpiods[i] =3D + devm_gpiod_get_index(dev, NULL, i, GPIOD_ASIS); + if (IS_ERR(gbl->gpiods[i])) + return dev_err_probe(dev, PTR_ERR(gbl->gpiods[i]), + "Failed to get GPIO at index %u\n", i); + } =20 memset(&props, 0, sizeof(props)); props.type =3D BACKLIGHT_RAW; @@ -78,22 +95,34 @@ static int gpio_backlight_probe(struct platform_device = *pdev) } =20 /* Set the initial power state */ - if (!of_node || !of_node->phandle) + if (!of_node || !of_node->phandle) { /* Not booted with device tree or no phandle link to the node */ bl->props.power =3D def_value ? BACKLIGHT_POWER_ON - : BACKLIGHT_POWER_OFF; - else if (gpiod_get_value_cansleep(gbl->gpiod) =3D=3D 0) - bl->props.power =3D BACKLIGHT_POWER_OFF; - else - bl->props.power =3D BACKLIGHT_POWER_ON; + : BACKLIGHT_POWER_OFF; + } else { + bool all_high =3D true; + + for (i =3D 0; i < gbl->num_gpios; i++) { + if (gpiod_get_value_cansleep(gbl->gpiods[i]) !=3D 0) { + all_high =3D false; + break; + } + } + + bl->props.power =3D + all_high ? BACKLIGHT_POWER_ON : BACKLIGHT_POWER_OFF; + } =20 bl->props.brightness =3D 1; =20 init_brightness =3D backlight_get_brightness(bl); - ret =3D gpiod_direction_output(gbl->gpiod, init_brightness); - if (ret) { - dev_err(dev, "failed to set initial brightness\n"); - return ret; + + for (i =3D 0; i < gbl->num_gpios; i++) { + ret =3D gpiod_direction_output(gbl->gpiods[i], init_brightness); + if (ret) + return dev_err_probe(dev, ret, + "failed to set gpio %u direction\n", + i); } =20 platform_set_drvdata(pdev, bl); --=20 2.34.1