From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932093AbcF2JQ1 (ORCPT ); Wed, 29 Jun 2016 05:16:27 -0400 Received: from lucky1.263xmail.com ([211.157.147.134]:53334 "EHLO lucky1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752351AbcF2JQU (ORCPT ); Wed, 29 Jun 2016 05:16:20 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 1 X-MAIL-DELIVERY: 0 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: ykk@rock-chips.com X-FST-TO: yzq@rock-chips.com X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: ykk@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 From: Yakir Yang To: Mark Yao , Inki Dae , Jingoo Han , Heiko Stuebner Cc: Javier Martinez Canillas , =?UTF-8?q?St=C3=A9phane=20Marchesin?= , Sean Paul , Tomasz Figa , David Airlie , daniel.vetter@ffwll.ch, Thierry Reding , dianders@chromium.org, Krzysztof Kozlowski , emil.l.velikov@gmail.com, Dan Carpenter , Yakir Yang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org Subject: [PATCH v4 10/11] drm/rockchip: analogix_dp: introduce the pclk for grf Date: Wed, 29 Jun 2016 17:16:05 +0800 Message-Id: <1467191765-17523-1-git-send-email-ykk@rock-chips.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1467191657-16941-1-git-send-email-ykk@rock-chips.com> References: <1467191657-16941-1-git-send-email-ykk@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For RK3399's GRF module, if we want to operate the graphic related grf registers, we need to enable the pclk_vio_grf which supply power for VIO GRF IOs, so it's better to introduce an optional grf clock in driver. Signed-off-by: Yakir Yang Reviewed-by: Douglas Anderson Reviewed-by: Tomasz Figa --- Changes in v4: - Add reviewed flag from Doug. - Add reviewed flag from Tomasz. - Fix compiled error, sorry. "dp->cgfclk" --> 'dp->grfclk' - Check the the error code properly, 'EPROBE_DEFER' should be returned, 'ENOENT' should assign a NULL point to grfclk, other errors should be regarded as failed. (Tomasz, Doug, reviewed at Google Gerrit) [https://chromium-review.googlesource.com/#/c/351821/20/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c@249] - Add the document about optional 'grf' clock (Tomasz, Doug, reviewed at Google Gerrit) [https://chromium-review.googlesource.com/#/c/351821/] Changes in v3: - Add this patch in v3 .../display/rockchip/analogix_dp-rockchip.txt | 6 ++++++ drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 23 +++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt index 726c945..0b39256 100644 --- a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt +++ b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt @@ -28,6 +28,12 @@ Required properties: Port 0: contained 2 endpoints, connecting to the output of vop. Port 1: contained 1 endpoint, connecting to the input of panel. +Optional property for different chips: +- clocks: from common clock binding: handle to grf_vio clock. + +- clock-names: from common clock binding: + Required elements: "grf" + For the below properties, please refer to Analogix DP binding document: * Documentation/devicetree/bindings/drm/bridge/analogix_dp.txt - phys (required) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 850edc4..e81e19a 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -64,6 +64,7 @@ struct rockchip_dp_device { struct drm_display_mode mode; struct clk *pclk; + struct clk *grfclk; struct regmap *grf; struct reset_control *rst; @@ -160,11 +161,17 @@ static void rockchip_dp_drm_encoder_enable(struct drm_encoder *encoder) dev_dbg(dp->dev, "vop %s output to dp\n", (ret) ? "LIT" : "BIG"); - ret = regmap_write(dp->grf, dp->data->lcdsel_grf_reg, val); - if (ret != 0) { - dev_err(dp->dev, "Could not write to GRF: %d\n", ret); + ret = clk_prepare_enable(dp->grfclk); + if (ret < 0) { + dev_err(dp->dev, "failed to enable grfclk %d\n", ret); return; } + + ret = regmap_write(dp->grf, dp->data->lcdsel_grf_reg, val); + if (ret != 0) + dev_err(dp->dev, "Could not write to GRF: %d\n", ret); + + clk_disable_unprepare(dp->grfclk); } static void rockchip_dp_drm_encoder_nop(struct drm_encoder *encoder) @@ -234,6 +241,16 @@ static int rockchip_dp_init(struct rockchip_dp_device *dp) return PTR_ERR(dp->grf); } + dp->grfclk = devm_clk_get(dev, "grf"); + if (PTR_ERR(dp->grfclk) == -ENOENT) { + dp->grfclk = NULL; + } else if (PTR_ERR(dp->grfclk) == -EPROBE_DEFER) { + return -EPROBE_DEFER; + } else if (IS_ERR(dp->grfclk)) { + dev_err(dev, "failed to get grf clock\n"); + return PTR_ERR(dp->grfclk); + } + dp->pclk = devm_clk_get(dev, "pclk"); if (IS_ERR(dp->pclk)) { dev_err(dev, "failed to get pclk property\n"); -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: [PATCH v4 10/11] drm/rockchip: analogix_dp: introduce the pclk for grf Date: Wed, 29 Jun 2016 17:16:05 +0800 Message-ID: <1467191765-17523-1-git-send-email-ykk@rock-chips.com> References: <1467191657-16941-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467191657-16941-1-git-send-email-ykk@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: Mark Yao , Inki Dae , Jingoo Han , Heiko Stuebner Cc: Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, daniel.vetter@ffwll.ch, emil.l.velikov@gmail.com, dianders@chromium.org, dri-devel@lists.freedesktop.org, Tomasz Figa , Javier Martinez Canillas , =?UTF-8?q?St=C3=A9phane=20Marchesin?= , Thierry Reding , Dan Carpenter List-Id: linux-samsung-soc@vger.kernel.org Rm9yIFJLMzM5OSdzIEdSRiBtb2R1bGUsIGlmIHdlIHdhbnQgdG8gb3BlcmF0ZSB0aGUgZ3JhcGhp YyByZWxhdGVkIGdyZgpyZWdpc3RlcnMsIHdlIG5lZWQgdG8gZW5hYmxlIHRoZSBwY2xrX3Zpb19n cmYgd2hpY2ggc3VwcGx5IHBvd2VyIGZvciBWSU8KR1JGIElPcywgc28gaXQncyBiZXR0ZXIgdG8g aW50cm9kdWNlIGFuIG9wdGlvbmFsIGdyZiBjbG9jayBpbiBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5 OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+ClJldmlld2VkLWJ5OiBEb3VnbGFzIEFu ZGVyc29uIDxkaWFuZGVyc0BjaHJvbWl1bS5vcmc+ClJldmlld2VkLWJ5OiBUb21hc3ogRmlnYSA8 dG9tYXN6LmZpZ2FAY2hyb21pdW0uY29tPgotLS0KQ2hhbmdlcyBpbiB2NDoKLSBBZGQgcmV2aWV3 ZWQgZmxhZyBmcm9tIERvdWcuCi0gQWRkIHJldmlld2VkIGZsYWcgZnJvbSBUb21hc3ouCi0gRml4 IGNvbXBpbGVkIGVycm9yLCBzb3JyeS4KICAiZHAtPmNnZmNsayIgIC0tPiAgJ2RwLT5ncmZjbGsn Ci0gQ2hlY2sgdGhlIHRoZSBlcnJvciBjb2RlIHByb3Blcmx5LCAnRVBST0JFX0RFRkVSJyBzaG91 bGQgYmUgcmV0dXJuZWQsCiAgJ0VOT0VOVCcgc2hvdWxkIGFzc2lnbiBhIE5VTEwgcG9pbnQgdG8g Z3JmY2xrLCBvdGhlciBlcnJvcnMgc2hvdWxkIGJlCiAgcmVnYXJkZWQgYXMgZmFpbGVkLiAoVG9t YXN6LCBEb3VnLCByZXZpZXdlZCBhdCBHb29nbGUgR2Vycml0KQogICAgW2h0dHBzOi8vY2hyb21p dW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vIy9jLzM1MTgyMS8yMC9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAuY0AyNDldCi0gQWRkIHRoZSBkb2N1bWVudCBh Ym91dCBvcHRpb25hbCAnZ3JmJyBjbG9jayAoVG9tYXN6LCBEb3VnLCByZXZpZXdlZCBhdCBHb29n bGUgR2Vycml0KQogICAgW2h0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20v Iy9jLzM1MTgyMS9dCgpDaGFuZ2VzIGluIHYzOgotIEFkZCB0aGlzIHBhdGNoIGluIHYzCgogLi4u L2Rpc3BsYXkvcm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAudHh0ICAgICAgfCAgNiArKysr KysKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jICAgIHwg MjMgKysrKysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLnR4dCBiL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL2FuYWxvZ2l4 X2RwLXJvY2tjaGlwLnR4dAppbmRleCA3MjZjOTQ1Li4wYjM5MjU2IDEwMDY0NAotLS0gYS9Eb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yb2NrY2hpcC9hbmFsb2dpeF9k cC1yb2NrY2hpcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rp c3BsYXkvcm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAudHh0CkBAIC0yOCw2ICsyOCwxMiBA QCBSZXF1aXJlZCBwcm9wZXJ0aWVzOgogICAgIFBvcnQgMDogY29udGFpbmVkIDIgZW5kcG9pbnRz LCBjb25uZWN0aW5nIHRvIHRoZSBvdXRwdXQgb2Ygdm9wLgogICAgIFBvcnQgMTogY29udGFpbmVk IDEgZW5kcG9pbnQsIGNvbm5lY3RpbmcgdG8gdGhlIGlucHV0IG9mIHBhbmVsLgogCitPcHRpb25h bCBwcm9wZXJ0eSBmb3IgZGlmZmVyZW50IGNoaXBzOgorLSBjbG9ja3M6IGZyb20gY29tbW9uIGNs b2NrIGJpbmRpbmc6IGhhbmRsZSB0byBncmZfdmlvIGNsb2NrLgorCistIGNsb2NrLW5hbWVzOiBm cm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOgorCSAgICAgICBSZXF1aXJlZCBlbGVtZW50czogImdy ZiIKKwogRm9yIHRoZSBiZWxvdyBwcm9wZXJ0aWVzLCBwbGVhc2UgcmVmZXIgdG8gQW5hbG9naXgg RFAgYmluZGluZyBkb2N1bWVudDoKICAqIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9kcm0vYnJpZGdlL2FuYWxvZ2l4X2RwLnR4dAogLSBwaHlzIChyZXF1aXJlZCkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jIGIvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLmMKaW5kZXggODUwZWRj NC4uZTgxZTE5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4 X2RwLXJvY2tjaGlwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2Rw LXJvY2tjaGlwLmMKQEAgLTY0LDYgKzY0LDcgQEAgc3RydWN0IHJvY2tjaGlwX2RwX2RldmljZSB7 CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgIG1vZGU7CiAKIAlzdHJ1Y3QgY2xrICAgICAgICAg ICAgICAgKnBjbGs7CisJc3RydWN0IGNsayAgICAgICAgICAgICAgICpncmZjbGs7CiAJc3RydWN0 IHJlZ21hcCAgICAgICAgICAgICpncmY7CiAJc3RydWN0IHJlc2V0X2NvbnRyb2wgICAgICpyc3Q7 CiAKQEAgLTE2MCwxMSArMTYxLDE3IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2RwX2RybV9lbmNv ZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAKIAlkZXZfZGJnKGRwLT5k ZXYsICJ2b3AgJXMgb3V0cHV0IHRvIGRwXG4iLCAocmV0KSA/ICJMSVQiIDogIkJJRyIpOwogCi0J cmV0ID0gcmVnbWFwX3dyaXRlKGRwLT5ncmYsIGRwLT5kYXRhLT5sY2RzZWxfZ3JmX3JlZywgdmFs KTsKLQlpZiAocmV0ICE9IDApIHsKLQkJZGV2X2VycihkcC0+ZGV2LCAiQ291bGQgbm90IHdyaXRl IHRvIEdSRjogJWRcbiIsIHJldCk7CisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRwLT5ncmZj bGspOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZHAtPmRldiwgImZhaWxlZCB0byBlbmFi bGUgZ3JmY2xrICVkXG4iLCByZXQpOwogCQlyZXR1cm47CiAJfQorCisJcmV0ID0gcmVnbWFwX3dy aXRlKGRwLT5ncmYsIGRwLT5kYXRhLT5sY2RzZWxfZ3JmX3JlZywgdmFsKTsKKwlpZiAocmV0ICE9 IDApCisJCWRldl9lcnIoZHAtPmRldiwgIkNvdWxkIG5vdCB3cml0ZSB0byBHUkY6ICVkXG4iLCBy ZXQpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwLT5ncmZjbGspOwogfQogCiBzdGF0aWMg dm9pZCByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9ub3Aoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQpAQCAtMjM0LDYgKzI0MSwxNiBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX2luaXQoc3Ry dWN0IHJvY2tjaGlwX2RwX2RldmljZSAqZHApCiAJCXJldHVybiBQVFJfRVJSKGRwLT5ncmYpOwog CX0KIAorCWRwLT5ncmZjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZ3JmIik7CisJaWYgKFBUUl9F UlIoZHAtPmdyZmNsaykgPT0gLUVOT0VOVCkgeworCQlkcC0+Z3JmY2xrID0gTlVMTDsKKwl9IGVs c2UgaWYgKFBUUl9FUlIoZHAtPmdyZmNsaykgPT0gLUVQUk9CRV9ERUZFUikgeworCQlyZXR1cm4g LUVQUk9CRV9ERUZFUjsKKwl9IGVsc2UgaWYgKElTX0VSUihkcC0+Z3JmY2xrKSkgeworCQlkZXZf ZXJyKGRldiwgImZhaWxlZCB0byBnZXQgZ3JmIGNsb2NrXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIo ZHAtPmdyZmNsayk7CisJfQorCiAJZHAtPnBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGNsayIp OwogCWlmIChJU19FUlIoZHAtPnBjbGspKSB7CiAJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdl dCBwY2xrIHByb3BlcnR5XG4iKTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==