Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp64531ybv; Thu, 6 Feb 2020 18:06:49 -0800 (PST) X-Google-Smtp-Source: APXvYqziQ6ooLN+AoBv42R54TGhiuE+9Dkc7ph7GvGH77hy7hTs8v4cdCmVk5emH/R2XlQhX+09s X-Received: by 2002:a9d:6e14:: with SMTP id e20mr903667otr.283.1581041209245; Thu, 06 Feb 2020 18:06:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581041209; cv=none; d=google.com; s=arc-20160816; b=c4Lbb3XUTqp2VErPRHPXIX3PwjNKTNkommSd29xgFHynb2IGVjcg7yFSfITbX6Ih5d vNvt0RqlhcUWAGyKRAbQSqS/hgmYw97tE/FslHcNDcEPbXF/9xg5cAJ4fipvy57EzZB2 dgznBtwx0XG9MsBW4QILFpPQWlAfzGsSHH1W/osWyQkPdLR+cg0tSIu/9nk9um9t4/4n vtPgF2dfHws2hbvfwzCYtva+e2KVA9t19CoTrJkgD4O+WEiPI4Qm0Wtfa0iNCn6tbzvR B5kxPVyGg7DuXK843BF5vTjPBe8Tm9vvUu7Guu2hE1zlJFbi9tHHQGCSg9oTnWqbMtyH TF8g== 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:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=xQNdH8HSEiIzxaho14u/BEs8wUQb+GjAw81SGUP7GdU=; b=S+APsCLG44B4MU5PJK9MVdGKIsK1EFrYAMSXxOe6ZjCCgXvCNS9FOSsuUxxtqaLCgn XSGmRcCSXmF6zItYbknm8jVeTdgH3jDftUJhXkh+CTu1UuopJNE6u5jC2Hj8/11LFFED Y3m1V/eNTN7L6x7VuryWQ7goy6O1Tm/pficzbmGKvamkzA2qn00oyQwrUQuZ1N1DsrRN Ry9COjMZrQxOo2adYX0Wb0CIKldZ8dxYFqPCXVwjI1IJPAWze0VYwbvbkXFgGsyUfsvR wLkuzVH73L4uWAGqu/qypJLosZ0XK8BP56IqdoNsViq3HhPzahymGXkfAh62Rx+F7kyU u4Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="DRN9eI/n"; 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=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l11si868955otn.189.2020.02.06.18.06.37; Thu, 06 Feb 2020 18:06:49 -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=@chromium.org header.s=google header.b="DRN9eI/n"; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727466AbgBGCEu (ORCPT + 99 others); Thu, 6 Feb 2020 21:04:50 -0500 Received: from mail-qk1-f195.google.com ([209.85.222.195]:37287 "EHLO mail-qk1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727387AbgBGCEu (ORCPT ); Thu, 6 Feb 2020 21:04:50 -0500 Received: by mail-qk1-f195.google.com with SMTP id 21so765641qky.4 for ; Thu, 06 Feb 2020 18:04:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xQNdH8HSEiIzxaho14u/BEs8wUQb+GjAw81SGUP7GdU=; b=DRN9eI/n8c0Gcre3b5rd94tWww0SnkeFdjPCVRH56fDZ+ZMERq0Hh3FJ+fV3s0LvHW h4PA2j0WNkLvGAVkenJcVRH867RrT/K+yBxCm/rKUFacSo/t5jTnaJrDpwqeRb/l3vVi oX2RtZTG+BPEjvKnpzEhYgSreKrlzX82vQ8i0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xQNdH8HSEiIzxaho14u/BEs8wUQb+GjAw81SGUP7GdU=; b=p5JuJHnGIJfcjO75j+L+x2osnTZm+EjOGr0BwhLIQM+ZWE57PC71ahAE2I56Mu/vTp LRW/+IWR55G0YO9O7NCCw+eQz+q2Wsq7ScUzzMWL8LNYsvalHy8PKZpN+dv2h27e39sF c+tfylOQTCvG+eeHxaSnOMuLHpJ+y7c1ONxT954nTUU6/+SaOFTv4WYoBPAilkC1UmsJ Sg7pE7kKQ6o1vsZ6Io15nS6HjBtMeB1NN7afWWfFCCYCaimYLjNFiz36pyMavo0jhSwP CjOUuRncwVkCdDqdN899jGgVhV+vkVq109co5ikDjtL9GLRNVlEsFJUI1k6ESh01dDqk 0eag== X-Gm-Message-State: APjAAAWPHcOIwoZgYrkpohv8fc5THM/0CP+YD1bxI8nhUJai8xnuG0EC NxgHPRatpRcDj1orfl5rYw4753MbTBi5WDd8f8Rtrg== X-Received: by 2002:ae9:ebd8:: with SMTP id b207mr5472135qkg.353.1581041088699; Thu, 06 Feb 2020 18:04:48 -0800 (PST) MIME-Version: 1.0 References: <20200108052337.65916-1-drinkcat@chromium.org> <20200108052337.65916-6-drinkcat@chromium.org> In-Reply-To: From: Nicolas Boichat Date: Fri, 7 Feb 2020 10:04:37 +0800 Message-ID: Subject: Re: [PATCH v2 5/7] drm/panfrost: Add support for multiple power domain support To: Ulf Hansson Cc: Steven Price , Rob Herring , Mark Rutland , Devicetree List , Tomeu Vizoso , David Airlie , lkml , Liam Girdwood , dri-devel , Mark Brown , "moderated list:ARM/Mediatek SoC support" , Alyssa Rosenzweig , Hsin-Yi Wang , Matthias Brugger , linux-arm Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 7, 2020 at 10:04 AM Nicolas Boichat wro= te: > > Hi Ulf, > > On Mon, Jan 27, 2020 at 3:55 PM Ulf Hansson wrot= e: > > > > On Fri, 10 Jan 2020 at 02:53, Nicolas Boichat w= rote: > > > > > > +Ulf to keep me honest on the power domains > > > > > > On Thu, Jan 9, 2020 at 10:08 PM Steven Price w= rote: > > > > > > > > On 08/01/2020 05:23, Nicolas Boichat wrote: > > > > > When there is a single power domain per device, the core will > > > > > ensure the power domains are all switched on. > > > > > > > > > > However, when there are multiple ones, as in MT8183 Bifrost GPU, > > > > > we need to handle them in driver code. > > > > > > > > > > > > > > > Signed-off-by: Nicolas Boichat > > > > > --- > > > > > > > > > > The downstream driver we use on chromeos-4.19 currently uses 2 > > > > > additional devices in device tree to accomodate for this [1], but > > > > > I believe this solution is cleaner. > > > > > > > > I'm not sure what is best, but it seems odd to encode this into the= Panfrost driver itself - it doesn't have any knowledge of what to do with = these power domains. The naming of the domains looks suspiciously like some= one thought that e.g. only half of the cores could be powered, but it doesn= 't look like that was implemented in the chromeos driver linked and anyway = that is *meant* to be automatic in the hardware! (I.e. if you only power up= one cores in one core stack then the PDC should only enable the power doma= in for that set of cores). > > > > > > This is actually implemented in the Chrome OS driver [1]. IMHO power > > > domains are a bit confusing [2]: > > > i. If there's only 1 power domain in the device, then the core takes > > > care of power on the domain (based on pm_runtime) > > > ii. If there's more than 1 power domain, then the device needs to > > > link the domains manually. > > > > > > So the Chrome OS [1] driver takes approach (i), by creating 3 devices= , > > > each with 1 power domain that is switched on/off automatically using > > > pm_runtime. > > > > > > This patch takes approach (ii) with device links to handle the extra = domains. > > > > > > I believe the latter is more upstream-friendly, but, as always, > > > suggestions welcome. > > > > Apologies for the late reply. A few comments below. > > No worries, than for the helpful reply! (s/than/thanks/... ,-P) > > > If the device is partitioned across multiple PM domains (it may need > > several power rails), then that should be described with the "multi PM > > domain" approach in the DTS. As in (ii). > > > > Using "device links" is however optional, as it may depend on the use > > case. If all multiple PM domains needs to be powered on/off together, > > then it's certainly recommended to use device links. > > That's the case here, there's no support for turning on/off the > domains individually. > > > However, if the PM domains can be powered on/off independently (one > > can be on while another is off), then it's probably easier to operate > > directly with runtime PM, on the returned struct *device from > > dev_pm_domain_attach_by_id(). > > > > Also note, there is dev_pm_domain_attach_by_name(), which allows us to > > specify a name for the PM domain in the DTS, rather than using an > > index. This may be more future proof to use. > > Agree, probably better to have actual names than just "counting" the > number of domains like I do, especially as we have a compatible struct > anyway. I'll update the patch. > > > [...] > > > > Hope this helps. > > > > Kind regards > > Uffe