From patchwork Fri Jun 16 09:57:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Jacques Hiblot X-Patchwork-Id: 10885 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1224320vqr; Fri, 16 Jun 2023 03:16:47 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4Tssu+ZU66lvka/+U7QjdbINn5KqGWJuhoQvgQhKgHvf/OpGE77xPq/N8vic49C/s4laZV X-Received: by 2002:a17:902:ea08:b0:1b1:80ba:39d2 with SMTP id s8-20020a170902ea0800b001b180ba39d2mr1425602plg.58.1686910606720; Fri, 16 Jun 2023 03:16:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686910606; cv=none; d=google.com; s=arc-20160816; b=s8650jbhuFAVNckfkumeqUl69MyB8XSJzDBvv97eySWrZqY9VTJo1PJXKdhXWks12z LsUVPhlPm82ef0RuP8p/V4M9nXUig4Tc0uRNWPgTI0g7xMW5IFBsI5S5sVBaCbathw59 9YgLzc5TpxODloiIrU88q8hmK5riWJ5PXcBsw5z7neoxOCG/M379RiivWBnpBqAXepsy lt3LoIEn2HL8emTC4LiHC35PWTBsxL2mFoXVGxYHjgSyElSw9tObi0b9zz6qongmAdC0 CIgDnxsWyrY8aEDyA3sbaXBgg1xB+ge2A64rRm9fuZ/d9oKrEMS94bFETIVfGgqGEiC5 Alsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=VtG0EbYagKW5/AxsoUWsIuybt+n7Sg7eSgw1agTFMOA=; b=wwshK9gwZle7uYD8fPRCsvQ+vptFsiF6xJwX2E8PIfgS+6igRgOxH6xEHF0g6MFLAq Ewq4ymUKV+q67tZiySy49F6ZG7yuCstWJxFCvpd3uRDOPo4lG5+Ay3OvoLfpBMcMPDFa GZeqo4ccQ/ifB3mnJe5eydimQkRkr0UBI4GMcDjfK+FyZTkTD8uTL5rSDaNCmsGwyYhR bZ546w4CsF3XVVRz13aa9LapBWzdccOO2FVRTQdm4aE2sVhvHWtJo0/wiIK4bZAZ6K+O O3mZSs5oE+otkAKX8/Q5VZCXtMe4zecGXajwc1pYcmuB4zDnFrp37ztxwI8wkuGE50y4 ++wQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y15-20020a17090322cf00b001b055bd62f6si15414797plg.431.2023.06.16.03.16.32; Fri, 16 Jun 2023 03:16:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245644AbjFPKHV (ORCPT + 99 others); Fri, 16 Jun 2023 06:07:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244797AbjFPKGu (ORCPT ); Fri, 16 Jun 2023 06:06:50 -0400 X-Greylist: delayed 499 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Fri, 16 Jun 2023 03:06:16 PDT Received: from 8.mo563.mail-out.ovh.net (8.mo563.mail-out.ovh.net [46.105.60.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D68C4217 for ; Fri, 16 Jun 2023 03:06:16 -0700 (PDT) Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net [51.68.80.175]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 114C523948; Fri, 16 Jun 2023 09:57:55 +0000 (UTC) Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net. [127.0.0.1]) by director1.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for ; Fri, 16 Jun 2023 09:57:54 +0000 (UTC) Received: from pro2.mail.ovh.net (unknown [10.108.20.117]) by director1.derp.mail-out.ovh.net (Postfix) with ESMTPS id AC5FE1FA441; Fri, 16 Jun 2023 09:57:54 +0000 (UTC) Received: from traphandler.com (88.161.25.233) by DAG1EX1.emp2.local (172.16.2.1) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Fri, 16 Jun 2023 11:57:54 +0200 From: Jean-Jacques Hiblot To: , , , , CC: , , , Jean-Jacques Hiblot Subject: [PATCH v9 0/5] Add a multicolor LED driver for groups of monochromatic LEDs Date: Fri, 16 Jun 2023 11:57:41 +0200 Message-ID: <20230616095746.872220-1-jjhiblot@traphandler.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Originating-IP: [88.161.25.233] X-ClientProxiedBy: CAS3.emp2.local (172.16.1.3) To DAG1EX1.emp2.local (172.16.2.1) X-Ovh-Tracer-Id: 3612449853141236187 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedvhedrgedvgedgvddvucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffoggfgtghisehtkeertdertddtnecuhfhrohhmpeflvggrnhdqlfgrtghquhgvshcujfhisghlohhtuceojhhjhhhisghlohhtsehtrhgrphhhrghnughlvghrrdgtohhmqeenucggtffrrghtthgvrhhnpeejuefhkeelgffhlefhtefhgeektdevvdfgkeeltdehgeeujeeutdehkeeuhffftdenucfkpheptddrtddrtddrtddpkeekrdduiedurddvhedrvdeffeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhhouggvpehsmhhtphhouhhtpdhhvghlohepughirhgvtghtohhruddruggvrhhprdhmrghilhdqohhuthdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomhepjhhjhhhisghlohhtsehtrhgrphhhrghnughlvghrrdgtohhmpdhnsggprhgtphhtthhopedupdhrtghpthhtoheplhhinhhugidqlhgvughssehvghgvrhdrkhgvrhhnvghlrdhorhhgpdfovfetjfhoshhtpehmohehieef X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768853976147798379?= X-GMAIL-MSGID: =?utf-8?q?1768853976147798379?= Some HW design implement multicolor LEDs with several monochromatic LEDs. Grouping the monochromatic LEDs allows to configure them in sync and use the triggers. The PWM multicolor LED driver implements such grouping but only for PWM-based LEDs. As this feature is also desirable for the other types of LEDs, this series implements it for any kind of LED device. changes v8->v9: - rebased on top of lee-leds/for-leds-next - updated kernel version and date for /sys/class/leds//color in Documentation/ABI/testing/sysfs-class-led - dropped patch "leds: class: simplify the implementation of devm_of_led_get()" because __devm_led_get() is now used by devm_led_get() changes v7->v8: - consistently use "LEDs group multicolor" throughout the code. - rename some variables with more explicit names. - improve comments. - use the 100-characters per line limit. changes v6->v7: - in led_mcg_probe() increment the counter at the end of the loop for clarity. changes v5->v6: - restore sysfs access to the leds when the device is removed changes v4->v5: - Use "depends on COMPILE_TEST || OF" in Kconfig to indicate that OF is a functional requirement, not just a requirement for the compilation. - in led_mcg_probe() check if devm_of_led_get_optional() returns an error before testing for the end of the list. - use sysfs_emit() instead of sprintf() in color_show(). - some grammar fixes in the comments and the commit logs. changes v2->v3, only minor changes: - rephrased the Kconfig descritpion - make the sysfs interface of underlying LEDs read-only only if the probe is successful. - sanitize the header files - removed the useless call to dev_set_drvdata() - use dev_fwnode() to get the fwnode to the device. changes v1->v2: - Followed Rob Herrings's suggestion to make the dt binding much simpler. - Added a patch to store the color property of a LED in its class structure (struct led_classdev). Jean-Jacques Hiblot (5): devres: provide devm_krealloc_array() leds: provide devm_of_led_get_optional() leds: class: store the color index in struct led_classdev dt-bindings: leds: Add binding for a multicolor group of LEDs leds: Add a multicolor LED driver to group monochromatic LEDs Documentation/ABI/testing/sysfs-class-led | 9 + .../bindings/leds/leds-group-multicolor.yaml | 64 +++++++ drivers/leds/led-class.c | 45 +++++ drivers/leds/rgb/Kconfig | 13 ++ drivers/leds/rgb/Makefile | 1 + drivers/leds/rgb/leds-group-multicolor.c | 164 ++++++++++++++++++ include/linux/device.h | 13 ++ include/linux/leds.h | 3 + 8 files changed, 312 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml create mode 100644 drivers/leds/rgb/leds-group-multicolor.c