Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751984AbbEDHzM (ORCPT ); Mon, 4 May 2015 03:55:12 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:34137 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750832AbbEDHzE (ORCPT ); Mon, 4 May 2015 03:55:04 -0400 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8; format=flowed X-AuditID: cbfec7f4-f79c56d0000012ee-f9-554725d5edd3 Content-transfer-encoding: 8BIT Message-id: <554725D4.7090805@samsung.com> Date: Mon, 04 May 2015 09:55:00 +0200 From: Jacek Anaszewski User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130804 Thunderbird/17.0.8 To: Stas Sergeev Cc: linux-leds@vger.kernel.org, Linux kernel , Stas Sergeev Subject: Re: [PATCH v2 0/3] leds: blink resolution improvements References: <553E6CF5.4030601@list.ru> <553F4B60.20204@samsung.com> <553F5CFF.9090601@list.ru> <553F83DC.8080701@samsung.com> <5542624D.70701@list.ru> In-reply-to: <5542624D.70701@list.ru> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrALMWRmVeSWpSXmKPExsVy+t/xK7pXVd1DDY5eErO4vGsOm8XWN+sY LVo3NTBbdPZNY3Fg8bi35TKzR9OpdlaPz5vkApijuGxSUnMyy1KL9O0SuDJmrz7EUnBdqOLx 3E/MDYxr+boYOTkkBEwkfn9cxQRhi0lcuLeeDcQWEljKKPHjkjGIzSsgKPFj8j2WLkYODmYB eYkjl7JBwswCZhKPWtYxdzFyAZU/Y5R4+/wzK0S9lsTdeevAZrIIqEocm3eMHcRmEzCU+Pni NVhcVCBC4s/pfawgM0WAZm5oLIOYWSHx+/MpRhBbWMBeYvP+FVDzZzFKzNh4mgUkwQk08/7u B6wTGIGiCOfNQjhvFpLzFjAyr2IUTS1NLihOSs811CtOzC0uzUvXS87P3cQICdcvOxgXH7M6 xCjAwajEw7tA1j1UiDWxrLgy9xCjBAezkgjvk49uoUK8KYmVValF+fFFpTmpxYcYpTlYlMR5 5+56HyIkkJ5YkpqdmlqQWgSTZeLglGpg9Dh85029tM2xoG1CnnY+z5iFtFTjoy7vmbyaL3M5 28SV8QzaIruEZ+hbRlgvXeHSsDJPk+3dsg3f/ibmNPQ+j7y81MR1TUfW1M9LFj8w+n36fLWb jnuTwq/caYfOFT1hiCyquWSgeoPt0c21J2ZYqvw8vN9NbtfTX1yfP3PW7xFqVpzsM+HxRiWW 4oxEQy3mouJEAGXJ6slTAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2572 Lines: 69 On 04/30/2015 07:11 PM, Stas Sergeev wrote: > 28.04.2015 15:58, Jacek Anaszewski пишет: >>>> I tried it with Samsung M0 board and >>>> my leds-aat1290 driver. It didn't work well. And for small delay >>>> intervals it will not have a chance to work reliably with all drivers, >>>> especially the ones which use mutex in their brightness_set op, >>>> since mutex can sleep. >>> OK, I can remove the nsec resolution. >> >> usec also didn't work, please look at my use case and warning: >> >> echo "timer" > trigger >> echo 1 > delay_on >> echo 1 > delay_off >> echo usec > delay_unit >> [ 178.584433] hrtimer: interrupt took 300747 ns >> >> Only some time later I realized that for AAT1290 brightness is set >> through ASCwire pulse protocol, which takes few ms. >> >> Please note that with this approach users would have to wonder why >> they are getting the warnings and why they can't get their LEDs to work >> with given settings. > I've now found that the drivers itself use a work queue > when needed. And some drivers, like leds_gpio, even do this: > --- > if (led_dat->can_sleep) { > led_dat->new_level = level; > schedule_work(&led_dat->work); > } else { > set_brightness_now(); > } > --- This is to handle GPIO expander chips, for which gpio set/get functions must sleep while waiting for I2C or SPI transfer completion. > So it seems the problem is already solved on the per-driver > basis. I don't have leds-aat1290 driver, it is probably not > in the kernel. It is currently on linux-next/master branch. > It is likely forgetting to use the work-queue > the way all other drivers do. So I think my patch is good for > the in-kernel drivers. > > There is also a led_cdev->set_brightness_work, and it looks > unused. I could use it for my patch, but for what, if the > drivers already use the work queue when needed? It is used in led_set_brightness function. I think that using work queues would compromise the whole idea of introducing intervals less than 1ms. After the task is delegated to work queue we are losing the control over the moment when it will get executed. I am becoming reluctant towards the whole idea, as we will be unable to guarantee the stability of a delay interval. -- Best Regards, Jacek Anaszewski -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/