From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B471AC5B57E for ; Sun, 30 Jun 2019 15:02:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7F5E420673 for ; Sun, 30 Jun 2019 15:02:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ANB4+oPV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726513AbfF3PCk (ORCPT ); Sun, 30 Jun 2019 11:02:40 -0400 Received: from mail-qk1-f194.google.com ([209.85.222.194]:46369 "EHLO mail-qk1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726500AbfF3PCk (ORCPT ); Sun, 30 Jun 2019 11:02:40 -0400 Received: by mail-qk1-f194.google.com with SMTP id x18so9001857qkn.13; Sun, 30 Jun 2019 08:02:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5lx5bobu9/exdQA9ScehUUIHniGcpbQg/3rhLERFmFU=; b=ANB4+oPVTXKbrn3gwLwrInQVorEEVfLz1AenzOULMh5ogimvvH9zfX7OdX182mzQ14 tzwUwmvm6i8aaFAGWYQALivl8JJagQhUD+79zEg01qNPAO+CP7qjaR77XAKnBDiYGuLi 9G9oxkOQqa2OELtJ/vkpKDlLCDmpdcuCLhLl4aPi5ilzmEVkoxLQZ02Q5jn5OehSfuBf XHGvi1mOvTmCFWCWiXTqWluvIthT9jInjrzzVk6Fn4pp7cstTRq0oDod3kldzK/xoJer OA+dHSMHIangPMRQabPVmwlVFpoSfRW1u2EFeeDdZ8jeFVRJqASdOE56yzeqJfF/cohL naxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5lx5bobu9/exdQA9ScehUUIHniGcpbQg/3rhLERFmFU=; b=hyBukGSpefq1C4EouOaKUL8yhhjSihegNn4Nit14u6jHnKCQKaa/lZAHA3mhJfYfgR lAKuXGcqJ5kElGXN1oBEb6CzMtjHJNXPbGqVuB/eYUnKhdLkZ6nrH3sWQLCQglKcM+2s buu7bkdzHQK0vDQb32jbsO38WOD9PKoZf1qTd9MNUapeYACI1QKjHsbzs3QG6dp4V9N9 mW7PmX0mu70bGxSLj/agAfTdEK4BmvInNZIyyoOLbioWxDz823PkRgYV5+O7x5tsVVd8 uI/8gkd4hSrJwTFDiglB4FE/iY/o5WnjK/TJatjRY998UmaGG13huOJCrQirUnUN2JLj pM5A== X-Gm-Message-State: APjAAAWC7gOtIUsnRoJuGI1Q+cyVGvF2y3uEsr/nVIdZL7JULbuWJAXe UA0N8TOPQw35qS9sBr3zs2U= X-Google-Smtp-Source: APXvYqwpXAyQFSxCpHHjU7XY2qL+Bo4Tffb/HW97wxtLTMlnaORSn5dfNhcRe9Ku9lyC4TNU2Y+Tng== X-Received: by 2002:a37:9cf:: with SMTP id 198mr16688485qkj.351.1561906959260; Sun, 30 Jun 2019 08:02:39 -0700 (PDT) Received: from localhost ([2601:184:4780:7861:5010:5849:d76d:b714]) by smtp.gmail.com with ESMTPSA id y3sm3956962qtj.46.2019.06.30.08.02.37 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sun, 30 Jun 2019 08:02:38 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: freedreno@lists.freedesktop.org, aarch64-laptops@lists.linaro.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Rob Clark Subject: [PATCH 0/5] drm+clk+genpd: support for bootloader enabled display Date: Sun, 30 Jun 2019 08:01:38 -0700 Message-Id: <20190630150230.7878-1-robdclark@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org From: Rob Clark The aarch64 laptops which ship with windows, have the display by the bootloader, and efifb (yah!). But unlike x86 laptops, device power management isn't handled via ACPI[1]. Currently the CCF and genpd frameworks will turn off power domains and clocks that they think are unused. This is rather unfortunate, as it kills efifb scanout before getting to userspace and getting to the point where we can try to probe the real display driver. Also it has a few side-effects in that we can't set rate on running clocks (in many cases). The first two patches let us flag clocks and power domains which might have been enabled by the bootloader, so we know not to disable them in late_initcall. The next two update drm/msm to cleanly shut down clocks which might already be running. *Eventually* we'll want to detect that scanout is already running, and readback the hw state, to avoid briefly disabling the screen while the driver loads. But that is a big pile of (mostly) drm/msm work. (Windows also seems to have this problem, it appears to do a modeset during boot.. so I guess the first step is to at least not suck more than windows ;-)) The last patch updates the bridge driver to handle the case where display is already active. (AFAICT it is the same bridge chip used so far on all the aarch64 laptops.) Because the bridge driver can be probed before the drm driver, and in fact you might end up with a bridge driver but no drm driver, care must be taken to not disable the bridge until the drm driver is ready to go, so: * Request enable gpio ASIS to avoid pulling down the enable gpio * Defer enabling runpm in the case that the bridge is already running until bridge->attach(). This is a point where we know the drm driver is ready to do a modeset. (There are a couple related cleanups in drm/msm to avoid touching the hw until we are past the point where we might -EPROBE_DEFER[2] which I sent seperately as they are probably interesting to fewer people.) This has been tested on a lenovo yoga c630. I've a wip/c630 branch[3] with this and various other work-in-progress stuff for this laptop. Next step, figuring out how to pick the proper panel driver, from the two or three possibilites that ship on this laptop ;-) [1] On windows, they use a "Platform Extension Plugin" (PEP) driver [2] https://patchwork.freedesktop.org/series/62999/ [3] https://github.com/freedreno/kernel-msm/commits/wip/c630 Rob Clark (5): clk: inherit clocks enabled by bootloader genpd/gdsc: inherit display powerdomain from bootloader drm/msm/dsi: split clk rate setting and enable drm/msm/dsi: get the clocks into OFF state at init drm/bridge: ti-sn65dsi86: support booloader enabled display drivers/base/power/domain.c | 10 ++++ drivers/clk/clk.c | 48 +++++++++++++++++++ drivers/clk/qcom/common.c | 25 ++++++++++ drivers/clk/qcom/dispcc-sdm845.c | 24 +++++----- drivers/clk/qcom/gcc-sdm845.c | 3 +- drivers/clk/qcom/gdsc.c | 5 ++ drivers/clk/qcom/gdsc.h | 1 + drivers/gpu/drm/bridge/ti-sn65dsi86.c | 12 ++++- drivers/gpu/drm/msm/dsi/dsi.h | 2 + drivers/gpu/drm/msm/dsi/dsi_cfg.c | 3 ++ drivers/gpu/drm/msm/dsi/dsi_cfg.h | 1 + drivers/gpu/drm/msm/dsi/dsi_host.c | 56 +++++++++++++++++----- drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c | 1 + include/linux/clk-provider.h | 10 ++++ include/linux/pm_domain.h | 4 ++ 15 files changed, 178 insertions(+), 27 deletions(-) -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 0/5] drm+clk+genpd: support for bootloader enabled display Date: Sun, 30 Jun 2019 08:01:38 -0700 Message-ID: <20190630150230.7878-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: Rob Clark , aarch64-laptops@lists.linaro.org, freedreno@lists.freedesktop.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogUm9iIENsYXJrIDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgoKVGhlIGFhcmNoNjQgbGFw dG9wcyB3aGljaCBzaGlwIHdpdGggd2luZG93cywgaGF2ZSB0aGUgZGlzcGxheSBieSB0aGUKYm9v dGxvYWRlciwgYW5kIGVmaWZiICh5YWghKS4gIEJ1dCB1bmxpa2UgeDg2IGxhcHRvcHMsIGRldmlj ZSBwb3dlcgptYW5hZ2VtZW50IGlzbid0IGhhbmRsZWQgdmlhIEFDUElbMV0uICBDdXJyZW50bHkg dGhlIENDRiBhbmQgZ2VucGQKZnJhbWV3b3JrcyB3aWxsIHR1cm4gb2ZmIHBvd2VyIGRvbWFpbnMg YW5kIGNsb2NrcyB0aGF0IHRoZXkgdGhpbmsgYXJlCnVudXNlZC4gIFRoaXMgaXMgcmF0aGVyIHVu Zm9ydHVuYXRlLCBhcyBpdCBraWxscyBlZmlmYiBzY2Fub3V0IGJlZm9yZQpnZXR0aW5nIHRvIHVz ZXJzcGFjZSBhbmQgZ2V0dGluZyB0byB0aGUgcG9pbnQgd2hlcmUgd2UgY2FuIHRyeSB0bwpwcm9i ZSB0aGUgcmVhbCBkaXNwbGF5IGRyaXZlci4KCkFsc28gaXQgaGFzIGEgZmV3IHNpZGUtZWZmZWN0 cyBpbiB0aGF0IHdlIGNhbid0IHNldCByYXRlIG9uIHJ1bm5pbmcKY2xvY2tzIChpbiBtYW55IGNh c2VzKS4KClRoZSBmaXJzdCB0d28gcGF0Y2hlcyBsZXQgdXMgZmxhZyBjbG9ja3MgYW5kIHBvd2Vy IGRvbWFpbnMgd2hpY2gKbWlnaHQgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgdGhlIGJvb3Rsb2FkZXIs IHNvIHdlIGtub3cgbm90IHRvIGRpc2FibGUKdGhlbSBpbiBsYXRlX2luaXRjYWxsLgoKVGhlIG5l eHQgdHdvIHVwZGF0ZSBkcm0vbXNtIHRvIGNsZWFubHkgc2h1dCBkb3duIGNsb2NrcyB3aGljaCBt aWdodAphbHJlYWR5IGJlIHJ1bm5pbmcuICAqRXZlbnR1YWxseSogd2UnbGwgd2FudCB0byBkZXRl Y3QgdGhhdCBzY2Fub3V0CmlzIGFscmVhZHkgcnVubmluZywgYW5kIHJlYWRiYWNrIHRoZSBodyBz dGF0ZSwgdG8gYXZvaWQgYnJpZWZseQpkaXNhYmxpbmcgdGhlIHNjcmVlbiB3aGlsZSB0aGUgZHJp dmVyIGxvYWRzLiAgQnV0IHRoYXQgaXMgYSBiaWcgcGlsZQpvZiAobW9zdGx5KSBkcm0vbXNtIHdv cmsuICAoV2luZG93cyBhbHNvIHNlZW1zIHRvIGhhdmUgdGhpcyBwcm9ibGVtLAppdCBhcHBlYXJz IHRvIGRvIGEgbW9kZXNldCBkdXJpbmcgYm9vdC4uIHNvIEkgZ3Vlc3MgdGhlIGZpcnN0IHN0ZXAK aXMgdG8gYXQgbGVhc3Qgbm90IHN1Y2sgbW9yZSB0aGFuIHdpbmRvd3MgOy0pKQoKVGhlIGxhc3Qg cGF0Y2ggdXBkYXRlcyB0aGUgYnJpZGdlIGRyaXZlciB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUK ZGlzcGxheSBpcyBhbHJlYWR5IGFjdGl2ZS4gIChBRkFJQ1QgaXQgaXMgdGhlIHNhbWUgYnJpZGdl IGNoaXAgdXNlZApzbyBmYXIgb24gYWxsIHRoZSBhYXJjaDY0IGxhcHRvcHMuKSAgQmVjYXVzZSB0 aGUgYnJpZGdlIGRyaXZlciBjYW4KYmUgcHJvYmVkIGJlZm9yZSB0aGUgZHJtIGRyaXZlciwgYW5k IGluIGZhY3QgeW91IG1pZ2h0IGVuZCB1cCB3aXRoCmEgYnJpZGdlIGRyaXZlciBidXQgbm8gZHJt IGRyaXZlciwgY2FyZSBtdXN0IGJlIHRha2VuIHRvIG5vdCBkaXNhYmxlCnRoZSBicmlkZ2UgdW50 aWwgdGhlIGRybSBkcml2ZXIgaXMgcmVhZHkgdG8gZ28sIHNvOgoKICAqIFJlcXVlc3QgZW5hYmxl IGdwaW8gQVNJUyB0byBhdm9pZCBwdWxsaW5nIGRvd24gdGhlIGVuYWJsZQogICAgZ3BpbwoKICAq IERlZmVyIGVuYWJsaW5nIHJ1bnBtIGluIHRoZSBjYXNlIHRoYXQgdGhlIGJyaWRnZSBpcyBhbHJl YWR5CiAgICBydW5uaW5nIHVudGlsIGJyaWRnZS0+YXR0YWNoKCkuICBUaGlzIGlzIGEgcG9pbnQg d2hlcmUgd2UKICAgIGtub3cgdGhlIGRybSBkcml2ZXIgaXMgcmVhZHkgdG8gZG8gYSBtb2Rlc2V0 LgoKKFRoZXJlIGFyZSBhIGNvdXBsZSByZWxhdGVkIGNsZWFudXBzIGluIGRybS9tc20gdG8gYXZv aWQgdG91Y2hpbmcKdGhlIGh3IHVudGlsIHdlIGFyZSBwYXN0IHRoZSBwb2ludCB3aGVyZSB3ZSBt aWdodCAtRVBST0JFX0RFRkVSWzJdCndoaWNoIEkgc2VudCBzZXBlcmF0ZWx5IGFzIHRoZXkgYXJl IHByb2JhYmx5IGludGVyZXN0aW5nIHRvIGZld2VyCnBlb3BsZS4pCgpUaGlzIGhhcyBiZWVuIHRl c3RlZCBvbiBhIGxlbm92byB5b2dhIGM2MzAuICBJJ3ZlIGEgd2lwL2M2MzAgYnJhbmNoWzNdCndp dGggdGhpcyBhbmQgdmFyaW91cyBvdGhlciB3b3JrLWluLXByb2dyZXNzIHN0dWZmIGZvciB0aGlz IGxhcHRvcC4KTmV4dCBzdGVwLCBmaWd1cmluZyBvdXQgaG93IHRvIHBpY2sgdGhlIHByb3BlciBw YW5lbCBkcml2ZXIsIGZyb20KdGhlIHR3byBvciB0aHJlZSBwb3NzaWJpbGl0ZXMgdGhhdCBzaGlw IG9uIHRoaXMgbGFwdG9wIDstKQoKWzFdIE9uIHdpbmRvd3MsIHRoZXkgdXNlIGEgIlBsYXRmb3Jt IEV4dGVuc2lvbiBQbHVnaW4iIChQRVApIGRyaXZlcgpbMl0gaHR0cHM6Ly9wYXRjaHdvcmsuZnJl ZWRlc2t0b3Aub3JnL3Nlcmllcy82Mjk5OS8KWzNdIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVlZHJl bm8va2VybmVsLW1zbS9jb21taXRzL3dpcC9jNjMwCgpSb2IgQ2xhcmsgKDUpOgogIGNsazogaW5o ZXJpdCBjbG9ja3MgZW5hYmxlZCBieSBib290bG9hZGVyCiAgZ2VucGQvZ2RzYzogaW5oZXJpdCBk aXNwbGF5IHBvd2VyZG9tYWluIGZyb20gYm9vdGxvYWRlcgogIGRybS9tc20vZHNpOiBzcGxpdCBj bGsgcmF0ZSBzZXR0aW5nIGFuZCBlbmFibGUKICBkcm0vbXNtL2RzaTogZ2V0IHRoZSBjbG9ja3Mg aW50byBPRkYgc3RhdGUgYXQgaW5pdAogIGRybS9icmlkZ2U6IHRpLXNuNjVkc2k4Njogc3VwcG9y dCBib29sb2FkZXIgZW5hYmxlZCBkaXNwbGF5CgogZHJpdmVycy9iYXNlL3Bvd2VyL2RvbWFpbi5j ICAgICAgICAgICAgICAgIHwgMTAgKysrKwogZHJpdmVycy9jbGsvY2xrLmMgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9jbGsvcWNvbS9j b21tb24uYyAgICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKwogZHJpdmVycy9jbGsvcWNv bS9kaXNwY2Mtc2RtODQ1LmMgICAgICAgICAgIHwgMjQgKysrKystLS0tLQogZHJpdmVycy9jbGsv cWNvbS9nY2Mtc2RtODQ1LmMgICAgICAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvY2xrL3Fjb20v Z2RzYy5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsrCiBkcml2ZXJzL2Nsay9xY29tL2dkc2Mu aCAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNu NjVkc2k4Ni5jICAgICAgfCAxMiArKysrLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgg ICAgICAgICAgICAgIHwgIDIgKwogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jICAg ICAgICAgIHwgIDMgKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcuaCAgICAgICAg ICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgICAgICAgICB8IDU2 ICsrKysrKysrKysrKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BsbC9kc2lf cGxsXzEwbm0uYyB8ICAxICsKIGluY2x1ZGUvbGludXgvY2xrLXByb3ZpZGVyLmggICAgICAgICAg ICAgICB8IDEwICsrKysKIGluY2x1ZGUvbGludXgvcG1fZG9tYWluLmggICAgICAgICAgICAgICAg ICB8ICA0ICsrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRp b25zKC0pCgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWw=