From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: Re: [PATCH 4/4] drm/mediatek: adjust VENCPLL clock for 4K HDMI output
Date: Wed, 20 Jul 2016 11:55:05 +0200
Message-ID: <1469008505.5809.41.camel@pengutronix.de>
References: <1468987385-37353-1-git-send-email-bibby.hsieh@mediatek.com>
<1468987385-37353-5-git-send-email-bibby.hsieh@mediatek.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
In-Reply-To: <1468987385-37353-5-git-send-email-bibby.hsieh@mediatek.com>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: Bibby Hsieh
Cc: linux-kernel@vger.kernel.org, Daniel Vetter , Cawa Cheng , dri-devel@lists.freedesktop.org, Mao Huang , linux-mediatek@lists.infradead.org, Sascha Hauer , Matthias Brugger , Yingjoe Chen , linux-arm-kernel@lists.infradead.org
List-Id: linux-mediatek@lists.infradead.org
SGkgQmliYnksCgpBbSBNaXR0d29jaCwgZGVuIDIwLjA3LjIwMTYsIDEyOjAzICswODAwIHNjaHJp
ZWIgQmliYnkgSHNpZWg6Cj4gaWYgTVQ4MTczIGRpc3BsYXkgbW9kdWxlIGNhbiBzdXBwb3J0IDRL
IEhETUkgb3V0cHV0LAo+IHdlIGhhdmUgdG8gYWRqdXN0IFZFTkNQTEwgY2xvY2sgZnJvbSBkZWZh
dWx0IDY2ME1Iego+IHRvIDgwME1Iei4KCklzIHZlbmNwbGwoX2QyKSB0aGUgYWN0aXZlIHNvdXJj
ZSBmb3IgdGhlIG1tX3NlbCBtdXg/IElmIHNvLCBpdCBzZWVtcyB0bwptZSB0aGF0IG1tX3NlbCBv
ciByYXRoZXIgb25lIG9mIGl0cyBjaGlsZHJlbiBzaG91bGQgYmUgc2V0IHRvIDgwMCBNSHosCmFu
ZCB0aGUgY2xvY2sgZnJhbWV3b3JrIHNob3VsZCBwcm9wYWdhdGUgaXQgdXAgdG8gdmVuY3BsbC4g
SSBzdXBwb3NlIHRoZQpyZXF1aXJlbWVudCBpcyB0aGF0IHRoZSBpbnB1dCBjbG9ja3MgdG8gYWxs
IHRoZSBkaXNwbGF5IHVuaXRzIChvdmwsCnJkbWEsIGFuZCBzbyBvbikgbmVlZCB0byBiZSBzdWZm
aWNpZW50bHkgYWJvdmUgdGhlIHBpeGVsIGNsb2NrLgoKQWxzbywgdGhpcyByZWFkcyBhcyBpZiB3
ZSB3YW50IHRvIGtlZXAgdGhlIGNsb2NrIGF0IDY2MCBNSHogaWYgNEsgaXMgbm90CnN1cHBvcnRl
ZCBhdCBhbGwgKGZvciBleGFtcGxlIGJlY2F1c2Ugb2YgYSBicmlkZ2UgY29ubmVjdGVkIGF0IHRo
ZQpvdXRzaWRlKS4KQWN0dWFsbHksIHdvdWxkIGl0IGJlIGRlc2lyYWJsZSB0byBzd2l0Y2ggdmVu
Y3BsbCB0byA2NjAgTUh6IGV2ZW4gb24gNEsKY2FwYWJsZSBkZXZpY2VzIGFzIGxvbmcgYXMgb25s
eSBsb3dlciBwaXhlbCBjbG9ja3MgYXJlIGFjdGl2ZT8KCnJlZ2FyZHMKUGhpbGlwcAoKPiBTaWdu
ZWQtb2ZmLWJ5OiBCaWJieSBIc2llaCA8YmliYnkuaHNpZWhAbWVkaWF0ZWsuY29tPgo+IC0tLQo+
ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyB8ICAgIDkgKysrKysrKysr
Cj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oIHwgICAgMSArCj4gIDIg
ZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz
L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl
ay9tdGtfZHJtX2Rydi5jCj4gaW5kZXggYjEyMjNkNS4uZjE1OTE4OSAxMDA2NDQKPiAtLS0gYS9k
cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1
L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4gQEAgLTIzLDYgKzIzLDcgQEAKPiAgI2luY2x1
ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+
Cj4gICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsu
aD4KPiAgCj4gICNpbmNsdWRlICJtdGtfZHJtX2NydGMuaCIKPiAgI2luY2x1ZGUgIm10a19kcm1f
ZGRwLmgiCj4gQEAgLTM2Myw2ICszNjQsMTQgQEAgc3RhdGljIGludCBtdGtfZHJtX3Byb2JlKHN0
cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4g
Kwlwcml2YXRlLT52ZW5jcGxsX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJ2ZW5jcGxsIik7Cj4g
KwlpZiAoSVNfRVJSKHByaXZhdGUtPnZlbmNwbGxfY2xrKSkgewo+ICsJCXJldCA9IFBUUl9FUlIo
cHJpdmF0ZS0+dmVuY3BsbF9jbGspOwo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCB2
ZW5jcGxsIGNsb2NrOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJY2xr
X3NldF9yYXRlKHByaXZhdGUtPnZlbmNwbGxfY2xrLCA4MDAwMDAwMDApOwo+ICsKPiAgCS8qIEl0
ZXJhdGUgb3ZlciBzaWJsaW5nIERJU1AgZnVuY3Rpb24gYmxvY2tzICovCj4gIAlmb3JfZWFjaF9j
aGlsZF9vZl9ub2RlKGRldi0+b2Zfbm9kZS0+cGFyZW50LCBub2RlKSB7Cj4gIAkJY29uc3Qgc3Ry
dWN0IG9mX2RldmljZV9pZCAqb2ZfaWQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t
ZWRpYXRlay9tdGtfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f
ZHJ2LmgKPiBpbmRleCBhYTkzODk0Li4yNzNhZDAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1
L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh
dGVrL210a19kcm1fZHJ2LmgKPiBAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgbXRrX2RybV9wcml2
YXRlIHsKPiAgCXZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3M7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25v
ZGUgKmNvbXBfbm9kZVtERFBfQ09NUE9ORU5UX0lEX01BWF07Cj4gIAlzdHJ1Y3QgbXRrX2RkcF9j
b21wICpkZHBfY29tcFtERFBfQ09NUE9ORU5UX0lEX01BWF07Cj4gKwlzdHJ1Y3QgY2xrICp2ZW5j
cGxsX2NsazsKPiAgCj4gIAlzdHJ1Y3Qgewo+ICAJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz
dGF0ZTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy
aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw
czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=
From mboxrd@z Thu Jan 1 00:00:00 1970
From: p.zabel@pengutronix.de (Philipp Zabel)
Date: Wed, 20 Jul 2016 11:55:05 +0200
Subject: [PATCH 4/4] drm/mediatek: adjust VENCPLL clock for 4K HDMI output
In-Reply-To: <1468987385-37353-5-git-send-email-bibby.hsieh@mediatek.com>
References: <1468987385-37353-1-git-send-email-bibby.hsieh@mediatek.com>
<1468987385-37353-5-git-send-email-bibby.hsieh@mediatek.com>
Message-ID: <1469008505.5809.41.camel@pengutronix.de>
To: linux-arm-kernel@lists.infradead.org
List-Id: linux-arm-kernel.lists.infradead.org
Hi Bibby,
Am Mittwoch, den 20.07.2016, 12:03 +0800 schrieb Bibby Hsieh:
> if MT8173 display module can support 4K HDMI output,
> we have to adjust VENCPLL clock from default 660MHz
> to 800MHz.
Is vencpll(_d2) the active source for the mm_sel mux? If so, it seems to
me that mm_sel or rather one of its children should be set to 800 MHz,
and the clock framework should propagate it up to vencpll. I suppose the
requirement is that the input clocks to all the display units (ovl,
rdma, and so on) need to be sufficiently above the pixel clock.
Also, this reads as if we want to keep the clock at 660 MHz if 4K is not
supported at all (for example because of a bridge connected at the
outside).
Actually, would it be desirable to switch vencpll to 660 MHz even on 4K
capable devices as long as only lower pixel clocks are active?
regards
Philipp
> Signed-off-by: Bibby Hsieh
> ---
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 9 +++++++++
> drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 +
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index b1223d5..f159189 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -23,6 +23,7 @@
> #include
> #include
> #include
> +#include
>
> #include "mtk_drm_crtc.h"
> #include "mtk_drm_ddp.h"
> @@ -363,6 +364,14 @@ static int mtk_drm_probe(struct platform_device *pdev)
> return ret;
> }
>
> + private->vencpll_clk = devm_clk_get(dev, "vencpll");
> + if (IS_ERR(private->vencpll_clk)) {
> + ret = PTR_ERR(private->vencpll_clk);
> + dev_err(dev, "Failed to get vencpll clock: %d\n", ret);
> + return ret;
> + }
> + clk_set_rate(private->vencpll_clk, 800000000);
> +
> /* Iterate over sibling DISP function blocks */
> for_each_child_of_node(dev->of_node->parent, node) {
> const struct of_device_id *of_id;
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> index aa93894..273ad02 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> @@ -40,6 +40,7 @@ struct mtk_drm_private {
> void __iomem *config_regs;
> struct device_node *comp_node[DDP_COMPONENT_ID_MAX];
> struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX];
> + struct clk *vencpll_clk;
>
> struct {
> struct drm_atomic_state *state;
From mboxrd@z Thu Jan 1 00:00:00 1970
Return-Path:
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
id S1753810AbcGTJzp (ORCPT );
Wed, 20 Jul 2016 05:55:45 -0400
Received: from metis.ext.4.pengutronix.de ([92.198.50.35]:34047 "EHLO
metis.ext.4.pengutronix.de" rhost-flags-OK-OK-OK-OK)
by vger.kernel.org with ESMTP id S1753172AbcGTJzn convert rfc822-to-8bit
(ORCPT );
Wed, 20 Jul 2016 05:55:43 -0400
Message-ID: <1469008505.5809.41.camel@pengutronix.de>
Subject: Re: [PATCH 4/4] drm/mediatek: adjust VENCPLL clock for 4K HDMI
output
From: Philipp Zabel
To: Bibby Hsieh
Cc: David Airlie , Matthias Brugger ,
Daniel Vetter ,
dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org,
Yingjoe Chen ,
Cawa Cheng ,
Daniel Kurtz , YT Shen ,
Thierry Reding , CK Hu ,
Mao Huang ,
linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org,
Sascha Hauer
Date: Wed, 20 Jul 2016 11:55:05 +0200
In-Reply-To: <1468987385-37353-5-git-send-email-bibby.hsieh@mediatek.com>
References: <1468987385-37353-1-git-send-email-bibby.hsieh@mediatek.com>
<1468987385-37353-5-git-send-email-bibby.hsieh@mediatek.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8BIT
X-Mailer: Evolution 3.12.9-1+b1
Mime-Version: 1.0
X-SA-Exim-Connect-IP: 2001:67c:670:100:96de:80ff:fec2:9969
X-SA-Exim-Mail-From: p.zabel@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false
X-PTX-Original-Recipient: linux-kernel@vger.kernel.org
Sender: linux-kernel-owner@vger.kernel.org
List-ID:
X-Mailing-List: linux-kernel@vger.kernel.org
Hi Bibby,
Am Mittwoch, den 20.07.2016, 12:03 +0800 schrieb Bibby Hsieh:
> if MT8173 display module can support 4K HDMI output,
> we have to adjust VENCPLL clock from default 660MHz
> to 800MHz.
Is vencpll(_d2) the active source for the mm_sel mux? If so, it seems to
me that mm_sel or rather one of its children should be set to 800 MHz,
and the clock framework should propagate it up to vencpll. I suppose the
requirement is that the input clocks to all the display units (ovl,
rdma, and so on) need to be sufficiently above the pixel clock.
Also, this reads as if we want to keep the clock at 660 MHz if 4K is not
supported at all (for example because of a bridge connected at the
outside).
Actually, would it be desirable to switch vencpll to 660 MHz even on 4K
capable devices as long as only lower pixel clocks are active?
regards
Philipp
> Signed-off-by: Bibby Hsieh
> ---
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 9 +++++++++
> drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 +
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index b1223d5..f159189 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -23,6 +23,7 @@
> #include
> #include
> #include
> +#include
>
> #include "mtk_drm_crtc.h"
> #include "mtk_drm_ddp.h"
> @@ -363,6 +364,14 @@ static int mtk_drm_probe(struct platform_device *pdev)
> return ret;
> }
>
> + private->vencpll_clk = devm_clk_get(dev, "vencpll");
> + if (IS_ERR(private->vencpll_clk)) {
> + ret = PTR_ERR(private->vencpll_clk);
> + dev_err(dev, "Failed to get vencpll clock: %d\n", ret);
> + return ret;
> + }
> + clk_set_rate(private->vencpll_clk, 800000000);
> +
> /* Iterate over sibling DISP function blocks */
> for_each_child_of_node(dev->of_node->parent, node) {
> const struct of_device_id *of_id;
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> index aa93894..273ad02 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> @@ -40,6 +40,7 @@ struct mtk_drm_private {
> void __iomem *config_regs;
> struct device_node *comp_node[DDP_COMPONENT_ID_MAX];
> struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX];
> + struct clk *vencpll_clk;
>
> struct {
> struct drm_atomic_state *state;