Received: by 10.223.185.116 with SMTP id b49csp5091042wrg; Tue, 27 Feb 2018 07:39:52 -0800 (PST) X-Google-Smtp-Source: AG47ELuJti4OMhcjJ/vPvYIBrQb3Y7cwR2qXbTgwheE6ORIYkg5W/Eo0FpbWN5ijdxSUdDq1j47n X-Received: by 2002:a17:902:407:: with SMTP id 7-v6mr1875619ple.9.1519745991948; Tue, 27 Feb 2018 07:39:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519745991; cv=none; d=google.com; s=arc-20160816; b=aG0RMidmim8AVlTgGqiNnpXOWPCAriDzaEku9QhXuG/i9T/HwXnM9TgEGl4GO86NB8 /n5JErfJKVES4dfXKQmvrF6cNJu50YVbz4B6Vy02gjXvQlhi8F+rhXSGpDpdIzJj9ubk 01C0J9XdK5ue3NSB3cxj5fHGBXdOsBpdNSV5ApjtLHixrl5Rx4GcZwWbRNbeJRWA7cTx FG1O0CKfzqaN8BnY/xRWIAM4gCXxhZw41467DsLIe/actMnMkuDOiRfaDisWiovHEiK1 xsdd1z6MTarMX60iL9sJ0OC8SIqX5pqppuzLfQRvCip7u5Mpwq3uc/kiU/mMz1k6ZY2P U7VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=8tqacxJ13tUxGbkMu2UT2/r9ejwQMC1+1GG+JYnjjaw=; b=05cMfh36YRZX//mZ2ZEuxnuLplUpmkA7ITSBM0nZ+D4TIEGL4aKNmZflb/FEDMCSZn 4HUfUPH59LeH7xasJYJsvEUKok1E6ewImPAxUsNNv9O37YI23GmhGHyRXabtk+gAeUH4 iI/ImZR+I1dNL56Wi4cOM7a9xMKCw3dLNy13T+XYGHZQnXxSE+5RCuZvePaGzkSoJdXY Z6x6c0AumF8LIy7ai7Wh7PEkw23wwOvixxUfFy2JDlNpuesODBWtB8mhT1WUyQoMZ5+k DsuN5/N6ko6yU/njf9g53qArrxi5UhaasTguOOTDde5gAJAv9uP32D64jO9QLozoDwV3 oJJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XihwI+34; 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 u36si7186603pgn.702.2018.02.27.07.39.37; Tue, 27 Feb 2018 07:39:51 -0800 (PST) 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=XihwI+34; 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 S1753961AbeB0PiX (ORCPT + 99 others); Tue, 27 Feb 2018 10:38:23 -0500 Received: from mail-wr0-f195.google.com ([209.85.128.195]:43202 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753881AbeB0PiS (ORCPT ); Tue, 27 Feb 2018 10:38:18 -0500 Received: by mail-wr0-f195.google.com with SMTP id u49so25298109wrc.10 for ; Tue, 27 Feb 2018 07:38:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=8tqacxJ13tUxGbkMu2UT2/r9ejwQMC1+1GG+JYnjjaw=; b=XihwI+34DI9XYRoGDT1VnqHuRPo8yaZxySB62+OfHoAp8+Q/iC+5uQzrAjm4oqMIpe GbfzmXtsj4jmT135iBKiTpPttmW2EOTyLEl3PIjqWmr7Xx6MX3sJpyYWsV0X25vZPOT8 FG92svapz7KY0Ch0CxnsbjfmNWh1qmartzwqQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=8tqacxJ13tUxGbkMu2UT2/r9ejwQMC1+1GG+JYnjjaw=; b=AerD9jCeIy6VBmdQtP3Cxol4yMjzHjga927zOQ/BcM5moz9jcaBI9Gj7NIzFvZ+9Qd OKcRnWj8k6NkIJIM2XaHb/7pXAkjQrepFtbWCR2BsgDnmvVq6BlX7gBCSc+7KNwTqwst 4mISsTeAIJsKWN4F2lo4tvJ1rMEsUBnZcc7nIhPhDwLC0nahzyr8x+2h0eirO7C03uLy QWeM2TZ0j8CHbvaappg55ZkaqTHeNsBX5NLlcqyjFMglB4mYMCkcDZtDgZYhhj5R6zBr W6HlMF5Dd7t8FrRkDDUUjFypVigOjiYDc8lA4CpdCnLNKv4N6Xc86WxNGx14zuMz/ndl IOyQ== X-Gm-Message-State: APf1xPBwIntDJBV2KBuueynCXpbghsRwlb295q9ejJzjAWbJG0cF6XiY 6rlsyLLMbbyTw7mmJKFCxlI1QA== X-Received: by 10.223.200.140 with SMTP id k12mr13028870wrh.191.1519745897226; Tue, 27 Feb 2018 07:38:17 -0800 (PST) Received: from oak.lan (cpc141214-aztw34-2-0-cust773.18-1.cable.virginm.net. [86.9.19.6]) by smtp.gmail.com with ESMTPSA id g7sm11015261wrb.78.2018.02.27.07.38.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 27 Feb 2018 07:38:16 -0800 (PST) Date: Tue, 27 Feb 2018 15:38:12 +0000 From: Daniel Thompson To: Claudiu Beznea Cc: Jani Nikula , thierry.reding@gmail.com, shc_work@mail.ru, kgene@kernel.org, krzk@kernel.org, linux@armlinux.org.uk, mturquette@baylibre.com, sboyd@codeaurora.org, joonas.lahtinen@linux.intel.com, rodrigo.vivi@intel.com, airlied@linux.ie, kamil@wypas.org, b.zolnierkie@samsung.com, jdelvare@suse.com, linux@roeck-us.net, dmitry.torokhov@gmail.com, rpurdie@rpsys.net, jacek.anaszewski@gmail.com, pavel@ucw.cz, mchehab@kernel.org, sean@mess.org, lee.jones@linaro.org, jingoohan1@gmail.com, milo.kim@ti.com, robh+dt@kernel.org, mark.rutland@arm.com, corbet@lwn.net, nicolas.ferre@microchip.com, alexandre.belloni@free-electrons.com, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-hwmon@vger.kernel.org, linux-input@vger.kernel.org, linux-leds@vger.kernel.org, linux-media@vger.kernel.org, linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, linux-doc@vger.kernel.org Subject: Re: [PATCH v3 05/10] pwm: add PWM mode to pwm_config() Message-ID: <20180227153812.txt2vsdygfnobo33@oak.lan> References: <1519300881-8136-1-git-send-email-claudiu.beznea@microchip.com> <1519300881-8136-6-git-send-email-claudiu.beznea@microchip.com> <20180222123308.mypx2r7n6o63mj5z@oak.lan> <87po4s2hve.fsf@intel.com> <3a70b89c-b470-3723-760c-5294d0a75230@microchip.com> <20180227105444.lo4pee7vh4we3foq@oak.lan> <8e1d3b30-3543-56fd-7be6-7fe6edcb40d9@microchip.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8e1d3b30-3543-56fd-7be6-7fe6edcb40d9@microchip.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 27, 2018 at 01:40:58PM +0200, Claudiu Beznea wrote: > On 27.02.2018 12:54, Daniel Thompson wrote: > > On Mon, Feb 26, 2018 at 04:24:15PM +0200, Claudiu Beznea wrote: > >> On 26.02.2018 11:57, Jani Nikula wrote: > >>> On Thu, 22 Feb 2018, Daniel Thompson wrote: > >>>> On Thu, Feb 22, 2018 at 02:01:16PM +0200, Claudiu Beznea wrote: > >>>>> Add PWM mode to pwm_config() function. The drivers which uses pwm_config() > >>>>> were adapted to this change. > >>>>> > >>>>> Signed-off-by: Claudiu Beznea > >>>>> --- > >>>>> arch/arm/mach-s3c24xx/mach-rx1950.c | 11 +++++++++-- > >>>>> drivers/bus/ts-nbus.c | 2 +- > >>>>> drivers/clk/clk-pwm.c | 3 ++- > >>>>> drivers/gpu/drm/i915/intel_panel.c | 17 ++++++++++++++--- > >>>>> drivers/hwmon/pwm-fan.c | 2 +- > >>>>> drivers/input/misc/max77693-haptic.c | 2 +- > >>>>> drivers/input/misc/max8997_haptic.c | 6 +++++- > >>>>> drivers/leds/leds-pwm.c | 5 ++++- > >>>>> drivers/media/rc/ir-rx51.c | 5 ++++- > >>>>> drivers/media/rc/pwm-ir-tx.c | 5 ++++- > >>>>> drivers/video/backlight/lm3630a_bl.c | 4 +++- > >>>>> drivers/video/backlight/lp855x_bl.c | 4 +++- > >>>>> drivers/video/backlight/lp8788_bl.c | 5 ++++- > >>>>> drivers/video/backlight/pwm_bl.c | 11 +++++++++-- > >>>>> drivers/video/fbdev/ssd1307fb.c | 3 ++- > >>>>> include/linux/pwm.h | 6 ++++-- > >>>>> 16 files changed, 70 insertions(+), 21 deletions(-) > >>>>> > >>>>> diff --git a/drivers/video/backlight/lm3630a_bl.c b/drivers/video/backlight/lm3630a_bl.c > >>>>> index 2030a6b77a09..696fa25dafd2 100644 > >>>>> --- a/drivers/video/backlight/lm3630a_bl.c > >>>>> +++ b/drivers/video/backlight/lm3630a_bl.c > >>>>> @@ -165,8 +165,10 @@ static void lm3630a_pwm_ctrl(struct lm3630a_chip *pchip, int br, int br_max) > >>>>> { > >>>>> unsigned int period = pchip->pdata->pwm_period; > >>>>> unsigned int duty = br * period / br_max; > >>>>> + struct pwm_caps caps = { }; > >>>>> > >>>>> - pwm_config(pchip->pwmd, duty, period); > >>>>> + pwm_get_caps(pchip->pwmd->chip, pchip->pwmd, &caps); > >>>>> + pwm_config(pchip->pwmd, duty, period, BIT(ffs(caps.modes) - 1)); > >>>> > >>>> Well... I admit I've only really looked at the patches that impact > >>>> backlight but dispersing this really odd looking bit twiddling > >>>> throughout the kernel doesn't strike me a great API design. > >>>> > >>>> IMHO callers should not be required to find the first set bit in > >>>> some specially crafted set of capability bits simply to get sane > >>>> default behaviour. > >>> > >>> Agreed. IMHO the regular use case becomes rather tedious, ugly, and > >>> error prone. > >> > >> Using simply PWM_MODE(NORMAL) instead of BIT(ffs(caps.modes) - 1) would be OK > >> from your side? > >> > >> Or, what about using a function like pwm_mode_first() to get the first supported > >> mode by PWM channel? > >> > >> Or, would you prefer to solve this inside pwm_config() function, let's say, in > >> case an invalid mode is passed as argument, to let pwm_config() to choose the > >> first available PWM mode for PWM channel passed as argument? > > > > What is it that actually needs solving? > > > > If a driver requests normal mode and the PWM driver cannot support it > > why not just return an error an move on. > Because, simply, I wasn't aware of what these PWM client drivers needs for. I'm afraid you have confused me here. Didn't you just *add* the whole concept of PWM caps with your patches? How could any existing call site expect anything except normal mode. Until now there has been no possiblity to request anything else. > > Put another way, what is the use case for secretly adopting a mode the > > caller didn't want? Under what circumstances is this a good thing? > No one... But I wasn't aware of what the PWM clients needs for from their PWM > controllers. At this moment having BIT(ffs(caps.modes)) instead of > PWM_MODE(NORMAL) is mostly the same since all the driver that has not explicitly > registered PWM caps will use PWM normal mode. > > I will use PWM_MODE(NORMAL) instead of this in all the cases if this is OK from > your side. > > Thank you, > Claudiu Beznea > > > > > > Daniel. > >