Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp4043292img; Tue, 26 Mar 2019 01:39:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqzm3VBEytLaP5tDRBjTuLA9Z2kNW85UFE+Ix471aGlFYM/ICg2NFyNRQw1FTIsv+VbmE9lk X-Received: by 2002:a63:6883:: with SMTP id d125mr27966788pgc.324.1553589598572; Tue, 26 Mar 2019 01:39:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553589598; cv=none; d=google.com; s=arc-20160816; b=RTtVDGpCemxchj79NFf9FPm4tuE2BdjOtblkaG8SqMSSNP5egLp1AU6F4AS2+0oKvu IVPFd2I1QiALUYFQsrHjpyBS1Y4YThR5a2gaFAPcp6VWeQ562xiq8mFUeYdD9S6HsOJ3 ZOn2HAysv4aYb3yyX4kePmnsgHRA4BPgP7qiHXWybwDo+c0Pg9Lxf2AkCJ6IwEUJTMeG ACkxz2XUvi9mCngZL5p38jf1A01kndZcd06JN+vwcDIugvWoQd265zwnwO1zMJY2h4qS K14XRQC3hVW2+LyfXDQSmJ1DnJ5HvAypnBGnvLJ3Nr+/2RRPSu1gNE2bANQUfKa7pg2e fCiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=mWH5TE9ngb/T4SFljDRth3c31ZtSkwBldxnRgk3wmtk=; b=oPFRBFsn/LPbT3n5NEPcEJmYXTct8QBJtK/Fnzm0yJY8NuIYQAjaNAwyeTh4IId2ti Za/GoVOkwf45HNLhHnDMnFyDpxGe2rFez9DnQFv458w6XWmNdjI5lmHVA9Zg11le/1Zp fOugP5U2ZuDf5IafzOMvSihm/kgQRStBlZSe2JbKwTHUW+KwnW9DGFphdPwyf9I/eI8r /RCF7iH+SsGWjj10hzMZz8znvhzBQ5L9c6HbDnefMT+rSjQKArbrNpaDfzDbJTS7f0kk bXYzd4+NenY+TybtoPcXHTkHzveWtIf4GcKPwVZ12u1BONMUWi7nIeMNc1Oyjsyvzb/C Pg+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=jbtSZaEf; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j16si15087234pfa.197.2019.03.26.01.39.43; Tue, 26 Mar 2019 01:39:58 -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=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=jbtSZaEf; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730827AbfCZIhT (ORCPT + 99 others); Tue, 26 Mar 2019 04:37:19 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:40257 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726042AbfCZIhT (ORCPT ); Tue, 26 Mar 2019 04:37:19 -0400 Received: by mail-wm1-f68.google.com with SMTP id z24so8608738wmi.5 for ; Tue, 26 Mar 2019 01:37:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=mWH5TE9ngb/T4SFljDRth3c31ZtSkwBldxnRgk3wmtk=; b=jbtSZaEfdEFa/HjT4oKknl08ZaL8XyuvijT0P3HwKBvbNRMvOiYTbE7I/jMCdYeGSd zJ2HSVE4J3Pr0zsh05yXt+vx1HQwAvyw9LefX5HaooZa+HCQXzFJ7snWN6knKxWEcmzl Gr692g5/UpfiDsdlOlEppVvr5JWwUvkgTTkq1oLOb9sz48to6evj60jSVphaK2x6eDeU dngzk1yavdhuwfVbIPzaN3nV+vQJaq81GAra9siG8rbLjJzV819rQxpRtIqvpr6U+3GS AqRGE8JLpFFjkzd034YgUwszNS2G9nWvZwXaYRsS/tJp7fYNxyPnDeAfEyrZ/D9dsecG MIFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=mWH5TE9ngb/T4SFljDRth3c31ZtSkwBldxnRgk3wmtk=; b=VoIXJkIsZgaKITA0vvyi++zHsdJv7dMGh5TkiS+uPD8agxwgn0XVXx8NVH2KuJnSU7 tl56bAc2QVXVrjR90UpsBRpmkxyBHcKr2uYgrleSYC+TZJ8tg3p1svu2DCpt+qvAs/Xw Mb6d0DDtgv9EalGei3Rx7X02+3jqCdRESzx5eiVbbrSNCXWpKqafBi3YR15nVCvMSNA2 CxYWiQ+QilkP3bcYtKOaoC5W5vkt0wN/R6bRVSGEalxz9z9oHu6tvgzkAVEZZF6YnNgk P2bb/gJoS2G4lJ/TXLZTBl8ZDi7NpCI4gFv9wvL0x3BZbwx867fswRtrUTkitlkLM0GY +WYg== X-Gm-Message-State: APjAAAVV1A4zRZZ1g5sX0u8mR+gxNWTYBRorL9rgB1Rt+bg8daloXXj2 G8BW81bb6zHlufn/4/xz0sWPjg== X-Received: by 2002:a1c:6587:: with SMTP id z129mr13661182wmb.84.1553589435679; Tue, 26 Mar 2019 01:37:15 -0700 (PDT) Received: from boomer.lan (cag06-3-82-243-161-21.fbx.proxad.net. [82.243.161.21]) by smtp.gmail.com with ESMTPSA id b134sm37945007wmd.26.2019.03.26.01.37.14 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 26 Mar 2019 01:37:14 -0700 (PDT) Message-ID: <88a731b0f1c2ce18d2cf7aff6e2ffc24a395a067.camel@baylibre.com> Subject: Re: [PATCH 0/1] pwm: meson: fix scheduling while atomic issue From: Jerome Brunet To: Martin Blumenstingl , Kevin Hilman Cc: thierry.reding@gmail.com, Neil Armstrong , linux-pwm@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Tue, 26 Mar 2019 09:37:12 +0100 In-Reply-To: References: <20190324220217.15813-1-martin.blumenstingl@googlemail.com> <47e944da1c3b0a11cf46fc5ad5678ba961b9f9d3.camel@baylibre.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.30.5 (3.30.5-1.fc29) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2019-03-25 at 19:04 +0100, Martin Blumenstingl wrote: > > Thanks for fixing this Martin. > you're welcome! > > > As for the future enhancement, I'd like to know what you have in mind. > > As I have told you previously, I think the clock bindings of this driver are > > not great. > > > > The global name of the input clocks are hard coded in this driver and it > > sucks. CCF is evolving to rely less on these global names. > I fully agree with you on the clock setup, but I'm not sure if we have > to break the dt-bindings for it. > > the datasheet notes: "Each PWM is driven by a programmable divider > driven by a 4:1 clock selector". > In my own words this means that each PWM controller has up to 8 clock inputs: > - up to 4 inputs for the first channel (PWM_A) > - up to 4 inputs for the second channel (PWM_B) Not from the pwm device POV. there is one device (PWM_AB) with 4 (max) input clocks. Those are consumed by two internal muxes. There would be 8 if the input was different between path A and B. > > the current pwm-meson driver assumes that both the inputs for both > channels are identical. > the "clock trees" section of the public S912 datasheet (page 65) > clearly documents the clock inputs per PWM channel, not per PWM > controller. > > Thus I believe we should name our clock-names (the inputs to the PWM > controller) "pwm-a-clkin0", "pwm-a-clkin1", "pwm-b-clkin0", ... > That way we don't have a conflict with the existing bindings (which > already reserve "clkin0" and "clkin1"). I think this is overkill an inaccurate. The experience of all the soc we have seen so far (meson8, gxbb, gxl, gxm, axg and g12) confirms the sources the are the same input clock for both path. The documentation just shows the clock src of each pwm. That just how the the table is presented. That does not change the fact the pwms are organized in modules (pairs) and the that the clock source are the same for each pwm of the module. IOW, there is only 4 lines of clocks getting to the IP, not 8. Feel free to ask amlogic if you want to make sure. The name clash is not really my point. The purpose of the clock binding would be different (from stating a setting to describing hw connection) > > > In addition, the 'clock' binding should be used to refer to the clock > > 'consumed' by the device, not to define a setting (as done now). 'assigned- > > clock' binding can be used for that. > using the assigned-clock* properties requires self-referencing the PWM > controller (which I'm not used to), for example: > &pwm_ab { > #clock-cells = <1>; > assigned-clocks = <&pwm_ab 0>, <&pwm_ab 1>; /* references itself */ > assigned-clock-parents = <&xtal>, <&clkc CLKID_FCLK_DIV5>; > }; > > if we want to auto-detect the parent clock (like you suggested below) > we need to consider if we can detect whether a .dts-author assigned a > specific parent. I (personally) don't want to keep supporting the manual assignment of the parent. If the driver can guarantee than it will pick the most appropriate parent, there is no reason to have that. > I know that it's easy to detect this when the clock is passed in the > "clocks" property, but I'm not sure if it's easy to parse it from the > assigned-clocks/assigned-clock-parents properties. Assigned parent is the poor man solution and not necessarily easier to implement (the pwm device would have to export its own clocks) ... I have just mentioned it to make the point that current method is not ideal > > [...] > > Last, instead of specifying the parent to be used, I think we should come up > > with some code to let the driver pick the most appropriate parent for the period/duty requested. > that will make it easier for .dts authors. > I would like to postpone this until we have solved the other topics though. I much prefer this last solution. Since the algorithm and the bindings would change, I think it would be easier (in DT) to just make v2 driver with a new compatible, progressively transition dts to it and finally remove the old driver.