From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 1F43D1F3BA2 for ; Mon, 4 May 2026 19:33:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777923231; cv=none; b=DPAVQ1LOuTvwrq7YxQcEaCFRlnlTEKcPA9GK3hpKe9DB81QFiHxF4Ppl/bFXIfHAzsL9j3pZybfC8C+aIxczbmZ2Ukj+wTYoV+rS08NVrYigwn/CC0LRIeqEbWnQ6h/8seIlevVmsRB8fBto1CRz9M2S8OTT22I6hTcLAfeGBJo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777923231; c=relaxed/simple; bh=5WyRL87onO1XJCtyrIXJ2QnKJSXvw8KDL3SttCQ6cl4=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=j0gzbx7tOV1+7lTkO22JB0mDFlF9fhMWXQcRZnkIrFaGMAv5+v4blAGFOUTOAz0Oq951eEaXvRtI9QA+Ge1Lj33MQWzN2W7PjqPCoCOf6zDiSSPLjG/AtA76T5BVVrvwJOqoxBtwrjl0nOjAi8DIGN3bMsk7S5NWvjSpcjNOFTc= 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=Ug2Kv2/5; arc=none smtp.client-ip=209.85.208.50 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="Ug2Kv2/5" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-66b2d49ffb0so6002361a12.3 for ; Mon, 04 May 2026 12:33:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777923228; x=1778528028; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=IQ9C7d4LuBV4MAX9CZ/HitKy1k918s0TWggFmSPxal4=; b=Ug2Kv2/5uhO90u0fS1e3kMa+6Rp3ulwEvI+IAdrmanNKkk1UmBrdiNxCcanh13BNcD /sqqIQxUr+IPKrC5YF/gmIamHZWUb4CQ0pxd0zm5bHSiqiEdfVTQBHIy1rX0FVBr7Okm wZ6TxYf22TFugNZlMM0PmHEto2UxN8kfy6i25rP6PBWp+QzPgS/CahXl+G26Iorz5UxZ 5egJ3XYYaZpDMHjGIyKhBVoQosIntqUzNfA8SlewrHQs+car8mwnY7Z/kcrEOXVfROob OmVTclmA9J4k72Ycv3w8oepJmxvjhV9D+stF+DcDgkPONedbYboUZj1I3cGguqP7cyMD /MEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777923228; x=1778528028; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IQ9C7d4LuBV4MAX9CZ/HitKy1k918s0TWggFmSPxal4=; b=VmDiCKASFnTnzjUfyzCGkI1S+ma7HALWAM0FgUU9mOvC93gffUwr6Lx6qzXBg4pbLJ 3iDEfaYJ15Y0Lmf56ccU1pdPbtbVlfk31EldJXqqAjdiRvRE1IC7pguuLGg5NjiU9dSz OcBUlSnTTC5TYO8tWZo9p6YF9nCsP16AVat2dU0LEWz/5WP1keACBorDG7zrpDdeDDe9 Soqmt2FT9abQpPNgQOdjCKm+osfGPSBApR5j+Vv4ntPKSCIBQUrlAyVizXQe8VXb3WSG mxqIjA57dDNQkDNFn+/DZWeI8vOlVcDV/+KQp6vZQ8crjjuQOXXqhGBjMMZLR6pM15Yb MyjQ== X-Forwarded-Encrypted: i=1; AFNElJ8qiKEX04aQMrJa4A9n3FDR4AmjVS56gXXwzgKlDRQoLOAHRLn5w8VbdFfbudRCswhnYSompIJbSP1MIgA=@vger.kernel.org X-Gm-Message-State: AOJu0Yxx3EZ92DDnAE+6+RfhQeLLEjyZ5DQaHcDnoajo6qKbmCzEqc6g Uq52QlFmIx21tBLLPomC+Q9PIIFFxNZuQKtTtpnofw0WhoDWcvp/X0Ua X-Gm-Gg: AeBDiet2JkyEKSiL1HjrRg0XdMrBDtvQ6HF9KMcCPJvdopz8gEnSvLX6W99LCGVCj9g bGgHQr86EgyoTaA48F2rA2EIMgDReff+JxFAlUWl4woXjXrchi/GDXOXotoIcYUPCsUqyWohI1j ZFjkJo4d0qUF1niVpLiDxAgMPRrMNAWvVNx2Wr5yr5cHpJg2CI9f8JlKhCFmUlMgexDBcXtyswf 3wFtLk9zYLRihROWOOhbi0zf3yrJrTCEJiMkNtkldyzriIAWLwPiL+K1q+g6fIk6BzFM2IhfuZd HC6oJ2zFER5iI4O+7N0LIop3nYgssf5bDTnaYIOi+ayfCjpmYh5YViVH8gIqEVQrE7ds5i5q7jn jSSUnJtBBn6wQGHaFwscTI6OkJyVpoPKNHl0Zf9o0a0YvXyFrHcHqEdGd6xwxmbX8s6lbLNwgWa oLsfWMJcTeVoQJp0Mum7onelXh6GpA2/BMXaXyYx1wlwxuog== X-Received: by 2002:aa7:d319:0:b0:677:866c:6bb2 with SMTP id 4fb4d7f45d1cf-67c1a2e5f85mr3533539a12.16.1777923228085; Mon, 04 May 2026 12:33:48 -0700 (PDT) Received: from [192.168.0.193] ([194.183.54.57]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-67cc90aecc6sm13310a12.26.2026.05.04.12.33.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 04 May 2026 12:33:46 -0700 (PDT) Message-ID: <1b418b30-7b28-4559-9808-7a68132c273a@gmail.com> Date: Mon, 4 May 2026 21:33:45 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9] leds: add support for TI LP5860 LED driver chip To: Steffen Trumtrar Cc: Nam Tran , Lee Jones , Pavel Machek , linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org References: <20260424-v6-14-topic-ti-lp5860-v9-1-b44d7025d741@pengutronix.de> <87zf2gqrsv.fsf@pengutronix.de> Content-Language: en-US From: Jacek Anaszewski In-Reply-To: <87zf2gqrsv.fsf@pengutronix.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 5/3/26 8:19 PM, Steffen Trumtrar wrote: > On 2026-04-26 at 14:41 +02, Jacek Anaszewski > wrote: > > Hi, > >> Hi Steffen, >> >> On 4/24/26 3:28 PM, Steffen Trumtrar wrote: >> > Add support for the Texas Instruments LP5860 LED driver chip >> > via SPI interfaces. >> > The LP5860 is an LED matrix driver for up to 196 LEDs, which supports >> > short and open detection of the individual channel select lines. >> > It can be connected to SPI or I2C bus. For now add support for SPI >> only. >> > Signed-off-by: Steffen Trumtrar >> > --- >> [...] >> > diff --git a/drivers/leds/rgb/leds-lp5860-core.c b/drivers/leds/rgb/ >> leds-lp5860-core.c >> > new file mode 100644 >> > index 0000000000000..648bf168f94bf >> > --- /dev/null >> > +++ b/drivers/leds/rgb/leds-lp5860-core.c >> > @@ -0,0 +1,231 @@ >> > +// SPDX-License-Identifier: GPL-2.0-only >> > +/* >> > + * Copyright (c) 2025 Pengutronix >> > + * >> > + * Author: Steffen Trumtrar >> > + */ >> > + >> > +#include >> > +#include >> > +#include >> > +#include >> > +#include >> > + >> > +#include "leds-lp5860.h" >> > + >> > +static struct lp5860_led *mcled_cdev_to_led(struct led_classdev_mc >> *mc_cdev) >> > +{ >> > +    return container_of(mc_cdev, struct lp5860_led, mc_cdev); >> > +} >> > + >> > +static int lp5860_set_dot_onoff(struct lp5860_led *led, unsigned >> int dot, bool enable) >> > +{ >> > +    unsigned int offset = dot / LP5860_MAX_DOT_ONOFF_GROUP_NUM; >> > +    unsigned int mask = BIT(dot % LP5860_MAX_DOT_ONOFF_GROUP_NUM); >> > + >> > +    if (dot > LP5860_MAX_LED) >> > +        return -EINVAL; >> > + >> > +    return regmap_update_bits(led->chip->regmap, >> > +                  LP5860_REG_DOT_ONOFF_START + offset, mask, >> > +                  enable ? LP5860_DOT_ALL_ON : LP5860_DOT_ALL_OFF); >> > +} >> > + >> > +static int lp5860_set_mc_brightness(struct led_classdev *cdev, >> > +                    enum led_brightness brightness) >> > +{ >> > +    struct led_classdev_mc *mc_cdev = lcdev_to_mccdev(cdev); >> > +    struct lp5860_led *led = mcled_cdev_to_led(mc_cdev); >> >> You need mutex locking while accessing hw to avoid leaving the >> device in an inconsistent state in case of two parallel requests from >> different processes. >> > > The hw is only accessed via regmap. It handles locking AFAIK or do I > misunderstand you? You're calling regmap_write() per subLED, so internal regmap locking has nothing to do with synchronizing the state of multicolor LED. It is possible that another Process2 jumps in while Process1 has already written two subLEDs. Let's say that there are two parallel calls, where Process2 has greater priority: Process1: echo "10 20 30" > multi_intensity Process2: echo "40 50 60" > multi_intensity Process1: regmap_write subLED 1 10 regmap_write subLED 2 20 Process2: regmap_write subLED 1 40 regmap_write subLED 2 50 regmap_write subLED 3 60 Process1: regmap_write subLED 3 30 Which leaves the multicolor LED registers in the state: subLED1: 40 subLED2: 50 subLED3: 30 -- Best regards, Jacek Anaszewski