From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: Re: [PATCH v2 5/7] drm/rockchip: dw_hdmi: add hclk_vio Date: Sun, 10 Dec 2017 18:08:45 +0100 Message-ID: <4016321.4tnllylE8d@phil> References: <1506735912-152263-1-git-send-email-algea.cao@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1506735912-152263-1-git-send-email-algea.cao@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-rockchip@lists.infradead.org Cc: Algea Cao , airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, kever.yang@rock-chips.com, daniel.vetter@intel.com, yang.zheng@rock-chips.com, mark.yao@rock-chips.com List-Id: linux-rockchip.vger.kernel.org SGkgQWxnZWEsCgpBbSBTYW1zdGFnLCAzMC4gU2VwdGVtYmVyIDIwMTcsIDA5OjQ1OjEyIENFVCBz Y2hyaWViIEFsZ2VhIENhbzoKPiBBZGQgY2xrIGhjbGtfdmlvIGFuZCBlbmFibGUgaXQgd2hlbiBo ZG1pIGJpbmQuCgpDb3VsZCB5b3UgZXhwbGFpbiB3aGF0IHRoZSBoY2xrX3ZpbyByZWZlcmVuY2Ug aXMgbmVlZGVkIGZvciBwbGVhc2U/CgpCZWNhdXNlIGZyb20gZnJvbSB3aGF0IEkgdHJhY2tlZCBk b3duIGluIHRoZSBUUk0gYW5kIGNvZGUsIHRoaXMgaGNsa192aW8KaXMgZGVmaW5lZCB3cm9uZyBp biB0aGUgY2xvY2stZHJpdmVyLgoKQWNjb3JkaW5nIHRvIHRoZSBUUk0sIHRoYXQgaGNsa192aW8g KGdhdGUyMlsxXSkgaXMgYWN0dWFsbHkgaGNsa192aW9fbml1IGFuZApoZW5jZSB0aGUgY2xvY2sg Zm9yIHRoZSBpbnRlcmNvbm5lY3QgPC0+IGhkbWkgIGNvbm5lY3Rpb24uCkFzIHRoaXMgY2xvY2sg aXMgYSBwcm9wZXJ0eSBvZiB0aGUgaW50ZXJjb25uZWN0LCB3aGljaCB3ZSBkb24ndCBtb2RlbCBz byBmYXIsCmFsbCBuaXUgY2xvY2tzIGFyZSBzaW1wbHkgZGVmaW5lZCBhcyBjcml0aWNhbCBpbiB0 aGUgY2xvY2sgZHJpdmVyIGl0c2VsZiwgYXMgY2FuCmJlIHNlZW4gaW4gbW9zdCBjbG9jayBkcml2 ZXJzLgoKU28gSSdkIHN1Z2dlc3QgZml4aW5nIHRoZSBjbG9jay1kcml2ZXIgYWNjb3JkaW5nbHkg YW5kIGRyb3BwaW5nIHRoaXMgcGF0Y2guCgoKSGVpa28KCgo+IFNpZ25lZC1vZmYtYnk6IEFsZ2Vh IENhbyA8YWxnZWEuY2FvQHJvY2stY2hpcHMuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCj4g IDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmMgYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5jCj4gaW5kZXggNzY1OGIyZi4uZTFhOTk0MSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3X2hkbWktcm9ja2NoaXAuYwo+IEBAIC02 MSw2ICs2MSw3IEBAIHN0cnVjdCByb2NrY2hpcF9oZG1pIHsKPiAgCWVudW0gZHdfaGRtaV9kZXZ0 eXBlIGRldl90eXBlOwo+ICAJc3RydWN0IGNsayAqdnBsbF9jbGs7Cj4gIAlzdHJ1Y3QgY2xrICpn cmZfY2xrOwo+ICsJc3RydWN0IGNsayAqaGNsa192aW87Cj4gIAlzdHJ1Y3QgcGh5ICpwaHk7Cj4g IH07Cj4gIAo+IEBAIC0yNzcsMTIgKzI3OCwyNyBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2hkbWlf cGFyc2VfZHQoc3RydWN0IHJvY2tjaGlwX2hkbWkgKmhkbWkpCj4gIAkJcmV0dXJuIFBUUl9FUlIo aGRtaS0+Z3JmX2Nsayk7Cj4gIAl9Cj4gIAo+ICsJaGRtaS0+aGNsa192aW8gPSBkZXZtX2Nsa19n ZXQoaGRtaS0+ZGV2LCAiaGNsa192aW8iKTsKPiArCWlmIChQVFJfRVJSKGhkbWktPmhjbGtfdmlv KSA9PSAtRU5PRU5UKSB7Cj4gKwkJaGRtaS0+aGNsa192aW8gPSBOVUxMOwo+ICsJfSBlbHNlIGlm IChQVFJfRVJSKGhkbWktPmhjbGtfdmlvKSA9PSAtRVBST0JFX0RFRkVSKSB7Cj4gKwkJcmV0dXJu IC1FUFJPQkVfREVGRVI7Cj4gKwl9IGVsc2UgaWYgKElTX0VSUihoZG1pLT5oY2xrX3ZpbykpIHsK PiArCQlkZXZfZGJnKGhkbWktPmRldiwgImZhaWxlZCB0byBnZXQgaGNsa192aW8gY2xvY2tcbiIp Owo+ICsJCXJldHVybiBQVFJfRVJSKGhkbWktPmhjbGtfdmlvKTsKPiArCX0KPiAgCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShoZG1pLT52cGxsX2Nsayk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJZGV2 X2VycihoZG1pLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIEhETUkgdnBsbDogJWRcbiIsIHJldCk7 Cj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUo aGRtaS0+aGNsa192aW8pOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9kYmcoaGRtaS0+ZGV2LCAi RmFpbGVkIHRvIGVhbmJsZSBIRE1JIGhjbGtfdmlvOiAlZFxuIiwKPiArCQkJcmV0KTsKPiArCQly ZXR1cm4gcmV0Owo+ICsJfQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTUwNiw2ICs1MjIs MTEgQEAgc3RhdGljIGludCBkd19oZG1pX3JvY2tjaGlwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4gIHN0YXRpYyB2b2lkIGR3X2hkbWlfcm9ja2NoaXBf dW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+ICAJCQkJ ICAgIHZvaWQgKmRhdGEpCj4gIHsKPiArCXN0cnVjdCByb2NrY2hpcF9oZG1pICpoZG1pID0gY29u dGFpbmVyX29mKCZkZXYsIHN0cnVjdCByb2NrY2hpcF9oZG1pLAo+ICsJCQkJCQkgIGRldik7Cj4g Kwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhkbWktPmhjbGtfdmlvKTsKPiArCj4gIAlyZXR1 cm4gZHdfaGRtaV91bmJpbmQoZGV2KTsKPiAgfQo+ICAKPiAKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752358AbdLJRJL (ORCPT ); Sun, 10 Dec 2017 12:09:11 -0500 Received: from gloria.sntech.de ([95.129.55.99]:34192 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751988AbdLJRJK (ORCPT ); Sun, 10 Dec 2017 12:09:10 -0500 From: Heiko Stuebner To: linux-rockchip@lists.infradead.org Cc: Algea Cao , daniel.vetter@intel.com, jani.nikula@linux.intel.com, seanpaul@chromium.org, airlied@linux.ie, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, yang.zheng@rock-chips.com, kever.yang@rock-chips.com, mark.yao@rock-chips.com Subject: Re: [PATCH v2 5/7] drm/rockchip: dw_hdmi: add hclk_vio Date: Sun, 10 Dec 2017 18:08:45 +0100 Message-ID: <4016321.4tnllylE8d@phil> User-Agent: KMail/5.2.3 (Linux/4.13.0-1-amd64; KDE/5.37.0; x86_64; ; ) In-Reply-To: <1506735912-152263-1-git-send-email-algea.cao@rock-chips.com> References: <1506735912-152263-1-git-send-email-algea.cao@rock-chips.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Algea, Am Samstag, 30. September 2017, 09:45:12 CET schrieb Algea Cao: > Add clk hclk_vio and enable it when hdmi bind. Could you explain what the hclk_vio reference is needed for please? Because from from what I tracked down in the TRM and code, this hclk_vio is defined wrong in the clock-driver. According to the TRM, that hclk_vio (gate22[1]) is actually hclk_vio_niu and hence the clock for the interconnect <-> hdmi connection. As this clock is a property of the interconnect, which we don't model so far, all niu clocks are simply defined as critical in the clock driver itself, as can be seen in most clock drivers. So I'd suggest fixing the clock-driver accordingly and dropping this patch. Heiko > Signed-off-by: Algea Cao > --- > drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > index 7658b2f..e1a9941 100644 > --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > @@ -61,6 +61,7 @@ struct rockchip_hdmi { > enum dw_hdmi_devtype dev_type; > struct clk *vpll_clk; > struct clk *grf_clk; > + struct clk *hclk_vio; > struct phy *phy; > }; > > @@ -277,12 +278,27 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) > return PTR_ERR(hdmi->grf_clk); > } > > + hdmi->hclk_vio = devm_clk_get(hdmi->dev, "hclk_vio"); > + if (PTR_ERR(hdmi->hclk_vio) == -ENOENT) { > + hdmi->hclk_vio = NULL; > + } else if (PTR_ERR(hdmi->hclk_vio) == -EPROBE_DEFER) { > + return -EPROBE_DEFER; > + } else if (IS_ERR(hdmi->hclk_vio)) { > + dev_dbg(hdmi->dev, "failed to get hclk_vio clock\n"); > + return PTR_ERR(hdmi->hclk_vio); > + } > ret = clk_prepare_enable(hdmi->vpll_clk); > if (ret) { > dev_err(hdmi->dev, "Failed to enable HDMI vpll: %d\n", ret); > return ret; > } > > + ret = clk_prepare_enable(hdmi->hclk_vio); > + if (ret) { > + dev_dbg(hdmi->dev, "Failed to eanble HDMI hclk_vio: %d\n", > + ret); > + return ret; > + } > return 0; > } > > @@ -506,6 +522,11 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, > static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *master, > void *data) > { > + struct rockchip_hdmi *hdmi = container_of(&dev, struct rockchip_hdmi, > + dev); > + > + clk_disable_unprepare(hdmi->hclk_vio); > + > return dw_hdmi_unbind(dev); > } > >