Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp4763372imm; Tue, 9 Oct 2018 05:03:15 -0700 (PDT) X-Google-Smtp-Source: ACcGV60SsY+VUtz4GcB5rhjdCZ7gopaC71MWL/plZqyw+sLOvig5mPrp/6HVgxvEijlWklguY3jy X-Received: by 2002:a63:dc41:: with SMTP id f1-v6mr24954798pgj.214.1539086595647; Tue, 09 Oct 2018 05:03:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539086595; cv=none; d=google.com; s=arc-20160816; b=RItdB+IRnjjY5RdZtyDVyl0CHabzsli+MuvOg1J9/Zv7plyVD2h3eSm2oITovSDH6j 6pJL2pJudzK14Pkuf9x8s9vQmX9AMBA5bgdQ334Cw3mCUGDKlXt/WbtwT5H+bL6TElg3 wIazb/2z3MPpW7EAjVjwqfOnmS7Tk7bLD55qemHiFQFJqX4XHfcmxcRfYDJnWfZLYElz jehg1HKCqm+Phrc8zEMUDV/ybQlsO1QqDpmo8IjzjW79jKQD6PX/1AwF7fuLJYEKgtpg QWCYHwlW/T8xDidGSdqw0SmhmSi5XF/5RH8SDUGn37EMqEclD4auWKvqghKHCivZJ55H e1qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature; bh=lvN3sTRHEppqfONG1n7U8DUFvZgN/Kn2ayvjVnh+Nzg=; b=A1/anfHuxkbBI1j2plVYSImscX/fB8CEZGVdvOs2g73gQSHU1BC0DCTF0Cjsp5U7QU mO2R8W5ddV4ABfygIIXYngKBJhCvU2aWwOSQ15Wnr7l+ayX8UidGu2Fn7GuZmt06svSk jdvvWJi7zRgwgKjew/docDvAU5dLYav/0OTnnm18t/Zdkbr65fKtJSlXrsFDFxFM9HOG yegNlUylhlPKAQindyyAtWqEtq4Qn61Plg9JqYvyEP7992zjUweole1WhOxdfi+iGPLC mac22mk1hpgMxkQKNWFl6BX8oCFynTzbQF4tbgk1X2sdgBSw3gFJjymyvYRGS9zaFk+3 MGQA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="LcNj/92q"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c8-v6si19995421pgh.418.2018.10.09.05.02.59; Tue, 09 Oct 2018 05:03:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="LcNj/92q"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726925AbeJITR7 (ORCPT + 99 others); Tue, 9 Oct 2018 15:17:59 -0400 Received: from mail-lf1-f68.google.com ([209.85.167.68]:46402 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726485AbeJITR7 (ORCPT ); Tue, 9 Oct 2018 15:17:59 -0400 Received: by mail-lf1-f68.google.com with SMTP id z144-v6so989634lff.13 for ; Tue, 09 Oct 2018 05:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=lvN3sTRHEppqfONG1n7U8DUFvZgN/Kn2ayvjVnh+Nzg=; b=LcNj/92qd8NBzhkR5levH6BrsbGLGF6e8obefmuCOM5pPPpn2aA1o4INnfRfC1XaZ5 ro+RLNmWWBl4grBKU1IyRDzLXkPlmfGiRaNwl49Xo6se83g/8lyycg6aFuzkg0c1yiD/ hMY70V1AQ+mcITaLl2kZOb2mCnHw+lYSsXcy8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=lvN3sTRHEppqfONG1n7U8DUFvZgN/Kn2ayvjVnh+Nzg=; b=Irw5wuWG5vUW4hJD6yYrJ9cj3+KtXLcCNqFSDnrxrhaczKScdcl3rglLdDgy2Inviy a0y/hmgM8z5Our3cyYNuKWGpItQCdwGOxGnEbM0eiOIo1X5I3llW/ZvyXa06R/zZ3pI+ OCT1VIo7B60hHq1YH7ZezrQJaD7Fdm3O90rtLob4+YVzcDeM2q63diUOfAapLcaiOR6P uUgql7HA60UYpUP7hz5RH8eXoapndaLrpOU+5+tckEYDStvfXJs+1D76g3AupSB9p9jp qwxAcilMIm62AH07FC1KunoNSJVT2Ovp6/cxtIUFplmbK9pI8BxLiPj/0Xw4tPiho1Ia +NSA== X-Gm-Message-State: ABuFfoinv2fpuRLKdAVaY1ZvQDwJX+26fpDVlZcinhOsdXR+IQhDIWxs GwT6ZMsC2Sx/DsQG1Vs1Sf8UhWrckjzwIP/r7dVd/w== X-Received: by 2002:a19:1941:: with SMTP id 62-v6mr13649347lfz.99.1539086479903; Tue, 09 Oct 2018 05:01:19 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a2e:95d7:0:0:0:0:0 with HTTP; Tue, 9 Oct 2018 05:01:19 -0700 (PDT) In-Reply-To: <7051613e-f2db-260f-85d7-d40278fd11cb@gmail.com> References: <9bf6236e-83af-7156-b26b-7d88ece2d81e@gmail.com> <7051613e-f2db-260f-85d7-d40278fd11cb@gmail.com> From: Baolin Wang Date: Tue, 9 Oct 2018 20:01:19 +0800 Message-ID: Subject: Re: [PATCH v14 1/2] leds: core: Introduce LED pattern trigger To: Jacek Anaszewski Cc: Pavel Machek , rteysseyre@gmail.com, Bjorn Andersson , Mark Brown , Linux LED Subsystem , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jacek and Pavel, On 5 October 2018 at 04:00, Jacek Anaszewski wrote: > Hi Baolin, > > On 10/03/2018 03:21 AM, Baolin Wang wrote: >> Hi Jacek, >> >> On 3 October 2018 at 04:25, Jacek Anaszewski wrote: >>> Hi Baolin, >>> >>> Thank you for the v14. We'll probably need v15, though :-) >>> >>> I added the comments in the code below. >>> >>> On 10/02/2018 05:43 PM, Baolin Wang wrote: >>>> This patch adds one new led trigger that LED device can configure >>>> the software or hardware pattern and trigger it. >>>> >>>> Consumers can write 'pattern' file to enable the software pattern >>>> which alters the brightness for the specified duration with one >>>> software timer. >>>> >>>> Moreover consumers can write 'hw_pattern' file to enable the hardware >>>> pattern for some LED controllers which can autonomously control >>>> brightness over time, according to some preprogrammed hardware >>>> patterns. >>>> >>>> Signed-off-by: Raphael Teysseyre >>>> Signed-off-by: Baolin Wang >>>> --- >>>> Changes from v13: >>>> - Add duration validation for gradual dimming. >>>> - Coding style optimization. >>>> >>>> Changes from v12: >>>> - Add gradual dimming support for software pattern. >>>> >>>> Changes from v11: >>>> - Change -1 means repeat indefinitely. >>>> >>>> Changes from v10: >>>> - Change 'int' to 'u32' for delta_t field. >>>> >>>> Changes from v9: >>>> - None. >>>> >>>> Changes from v8: >>>> - None. >>>> >>>> Changes from v7: >>>> - Move the SC27XX hardware patterns description into its own ABI file. >>>> >>>> Changes from v6: >>>> - Improve commit message. >>>> - Optimize the description of the hw_pattern file. >>>> - Simplify some logics. >>>> >>>> Changes from v5: >>>> - Add one 'hw_pattern' file for hardware patterns. >>>> >>>> Changes from v4: >>>> - Change the repeat file to return the originally written number. >>>> - Improve comments. >>>> - Fix some build warnings. >>>> >>>> Changes from v3: >>>> - Reset pattern number to 0 if user provides incorrect pattern string. >>>> - Support one pattern. >>>> >>>> Changes from v2: >>>> - Remove hardware_pattern boolen. >>>> - Chnage the pattern string format. >>>> >>>> Changes from v1: >>>> - Use ATTRIBUTE_GROUPS() to define attributes. >>>> - Introduce hardware_pattern flag to determine if software pattern >>>> or hardware pattern. >>>> - Re-implement pattern_trig_store_pattern() function. >>>> - Remove pattern_get() interface. >>>> - Improve comments. >>>> - Other small optimization. >>>> --- >>>> .../ABI/testing/sysfs-class-led-trigger-pattern | 76 ++++ >>>> drivers/leds/trigger/Kconfig | 7 + >>>> drivers/leds/trigger/Makefile | 1 + >>>> drivers/leds/trigger/ledtrig-pattern.c | 431 +++++++++++++++++++++ >>>> include/linux/leds.h | 15 + >>>> 5 files changed, 530 insertions(+) >>>> create mode 100644 Documentation/ABI/testing/sysfs-class-led-trigger-pattern >>>> create mode 100644 drivers/leds/trigger/ledtrig-pattern.c >>>> >>>> diff --git a/Documentation/ABI/testing/sysfs-class-led-trigger-pattern b/Documentation/ABI/testing/sysfs-class-led-trigger-pattern >>>> new file mode 100644 >>>> index 0000000..22d7af7 >>>> --- /dev/null >>>> +++ b/Documentation/ABI/testing/sysfs-class-led-trigger-pattern >>>> @@ -0,0 +1,76 @@ >>>> +What: /sys/class/leds//pattern >>>> +Date: September 2018 >>>> +KernelVersion: 4.20 >>>> +Description: >>>> + Specify a software pattern for the LED, that supports altering >>>> + the brightness for the specified duration with one software >>>> + timer. It can do gradual dimming and constant brightness. >>>> + >>>> + The pattern is given by a series of tuples, of brightness and >>>> + duration (ms). The LED is expected to traverse the series and >>>> + each brightness value for the specified duration. Duration of >>>> + 0 means brightness should immediately change to new value. >>>> + >>>> + 1. When doing gradual dimming, the led brightness will be updated >>>> + every 50 milliseconds, so the duration of each step should not >>>> + less than 50 milliseconds. >>> >>> I'd like to avoid this constraint. Lowest supported delta_t should be 1. >>> >>> We should only prevent entering dimming mode if current delta_t >>> is lower than UPDATE_INTERVAL. >> >> I do not think so. If the pattern format is used for dimming and the >> delta_t is lower than UPDATE_INTERVAL, we should return errors. Since >> in this case, we can not change to constant mode. > > I'll play with the code at weekend and will let you know my findings. Thanks Jacek. Do you have any more suggestion? BTW, we have not get a consensus about adding one 'dimming_interval' file to set the dimming interval instead of fixed 50 ms. Pavel, I want to hear your suggestion before I submit new patch set? Thanks. -- Baolin Wang Best Regards