From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754306AbcG0Ibu (ORCPT ); Wed, 27 Jul 2016 04:31:50 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:37562 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1753991AbcG0Ibl (ORCPT ); Wed, 27 Jul 2016 04:31:41 -0400 From: Bibby Hsieh To: David Airlie , Matthias Brugger , Daniel Vetter , , CC: Yingjoe Chen , Cawa Cheng , Daniel Kurtz , Bibby Hsieh , Philipp Zabel , YT Shen , Thierry Reding , CK Hu , Mao Huang , , , Sascha Hauer , Junzhi Zhao Subject: [PATCH v2 2/3] drm/mediatek: enhance the HDMI driving current Date: Wed, 27 Jul 2016 16:31:31 +0800 Message-ID: <1469608292-6106-3-git-send-email-bibby.hsieh@mediatek.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1469608292-6106-1-git-send-email-bibby.hsieh@mediatek.com> References: <1469608292-6106-1-git-send-email-bibby.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Junzhi Zhao In order to improve 4K resolution performance, we have to enhance the HDMI driving currend when clock rate is greater than 165MHz. Signed-off-by: Junzhi Zhao Signed-off-by: Bibby Hsieh --- drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c | 42 +++++++++++++++++------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c index 8a24754..51cb9cf 100644 --- a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c +++ b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c @@ -265,6 +265,9 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate, struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw); unsigned int pre_div; unsigned int div; + unsigned int pre_ibias; + unsigned int hdmi_ibias; + unsigned int imp_en; dev_dbg(hdmi_phy->dev, "%s: %lu Hz, parent: %lu Hz\n", __func__, rate, parent_rate); @@ -298,18 +301,31 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate, (0x1 << PLL_BR_SHIFT), RG_HDMITX_PLL_BP | RG_HDMITX_PLL_BC | RG_HDMITX_PLL_BR); - mtk_hdmi_phy_clear_bits(hdmi_phy, HDMI_CON3, RG_HDMITX_PRD_IMP_EN); + if (rate < 165000000) { + mtk_hdmi_phy_clear_bits(hdmi_phy, HDMI_CON3, + RG_HDMITX_PRD_IMP_EN); + pre_ibias = 0x3; + imp_en = 0x0; + hdmi_ibias = hdmi_phy->ibias; + } else { + mtk_hdmi_phy_set_bits(hdmi_phy, HDMI_CON3, + RG_HDMITX_PRD_IMP_EN); + pre_ibias = 0x6; + imp_en = 0xf; + hdmi_ibias = hdmi_phy->ibias_up; + } mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON4, - (0x3 << PRD_IBIAS_CLK_SHIFT) | - (0x3 << PRD_IBIAS_D2_SHIFT) | - (0x3 << PRD_IBIAS_D1_SHIFT) | - (0x3 << PRD_IBIAS_D0_SHIFT), + (pre_ibias << PRD_IBIAS_CLK_SHIFT) | + (pre_ibias << PRD_IBIAS_D2_SHIFT) | + (pre_ibias << PRD_IBIAS_D1_SHIFT) | + (pre_ibias << PRD_IBIAS_D0_SHIFT), RG_HDMITX_PRD_IBIAS_CLK | RG_HDMITX_PRD_IBIAS_D2 | RG_HDMITX_PRD_IBIAS_D1 | RG_HDMITX_PRD_IBIAS_D0); mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON3, - (0x0 << DRV_IMP_EN_SHIFT), RG_HDMITX_DRV_IMP_EN); + (imp_en << DRV_IMP_EN_SHIFT), + RG_HDMITX_DRV_IMP_EN); mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (hdmi_phy->drv_imp_clk << DRV_IMP_CLK_SHIFT) | (hdmi_phy->drv_imp_d2 << DRV_IMP_D2_SHIFT) | @@ -318,12 +334,14 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate, RG_HDMITX_DRV_IMP_CLK | RG_HDMITX_DRV_IMP_D2 | RG_HDMITX_DRV_IMP_D1 | RG_HDMITX_DRV_IMP_D0); mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON5, - (hdmi_phy->ibias << DRV_IBIAS_CLK_SHIFT) | - (hdmi_phy->ibias << DRV_IBIAS_D2_SHIFT) | - (hdmi_phy->ibias << DRV_IBIAS_D1_SHIFT) | - (hdmi_phy->ibias << DRV_IBIAS_D0_SHIFT), - RG_HDMITX_DRV_IBIAS_CLK | RG_HDMITX_DRV_IBIAS_D2 | - RG_HDMITX_DRV_IBIAS_D1 | RG_HDMITX_DRV_IBIAS_D0); + (hdmi_ibias << DRV_IBIAS_CLK_SHIFT) | + (hdmi_ibias << DRV_IBIAS_D2_SHIFT) | + (hdmi_ibias << DRV_IBIAS_D1_SHIFT) | + (hdmi_ibias << DRV_IBIAS_D0_SHIFT), + RG_HDMITX_DRV_IBIAS_CLK | + RG_HDMITX_DRV_IBIAS_D2 | + RG_HDMITX_DRV_IBIAS_D1 | + RG_HDMITX_DRV_IBIAS_D0); return 0; } -- 1.7.9.5 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bibby Hsieh Subject: [PATCH v2 2/3] drm/mediatek: enhance the HDMI driving current Date: Wed, 27 Jul 2016 16:31:31 +0800 Message-ID: <1469608292-6106-3-git-send-email-bibby.hsieh@mediatek.com> References: <1469608292-6106-1-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: <1469608292-6106-1-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: David Airlie , Matthias Brugger , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org Cc: Junzhi Zhao , linux-kernel@vger.kernel.org, Cawa Cheng , Mao Huang , Yingjoe Chen , Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org RnJvbTogSnVuemhpIFpoYW8gPGp1bnpoaS56aGFvQG1lZGlhdGVrLmNvbT4KCkluIG9yZGVyIHRv IGltcHJvdmUgNEsgcmVzb2x1dGlvbiBwZXJmb3JtYW5jZSwKd2UgaGF2ZSB0byBlbmhhbmNlIHRo ZSBIRE1JIGRyaXZpbmcgY3VycmVuZAp3aGVuIGNsb2NrIHJhdGUgaXMgZ3JlYXRlciB0aGFuIDE2 NU1Iei4KClNpZ25lZC1vZmYtYnk6IEp1bnpoaSBaaGFvIDxqdW56aGkuemhhb0BtZWRpYXRlay5j b20+ClNpZ25lZC1vZmYtYnk6IEJpYmJ5IEhzaWVoIDxiaWJieS5oc2llaEBtZWRpYXRlay5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHkuYyB8ICAg NDIgKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9u cygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19tdDgxNzNfaGRtaV9waHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf bXQ4MTczX2hkbWlfcGh5LmMKaW5kZXggOGEyNDc1NC4uNTFjYjljZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19oZG1pX3BoeS5jCkBAIC0yNjUsNiArMjY1LDkg QEAgc3RhdGljIGludCBtdGtfaGRtaV9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVu c2lnbmVkIGxvbmcgcmF0ZSwKIAlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210 a19oZG1pX3BoeShodyk7CiAJdW5zaWduZWQgaW50IHByZV9kaXY7CiAJdW5zaWduZWQgaW50IGRp djsKKwl1bnNpZ25lZCBpbnQgcHJlX2liaWFzOworCXVuc2lnbmVkIGludCBoZG1pX2liaWFzOwor CXVuc2lnbmVkIGludCBpbXBfZW47CiAKIAlkZXZfZGJnKGhkbWlfcGh5LT5kZXYsICIlczogJWx1 IEh6LCBwYXJlbnQ6ICVsdSBIelxuIiwgX19mdW5jX18sCiAJCXJhdGUsIHBhcmVudF9yYXRlKTsK QEAgLTI5OCwxOCArMzAxLDMxIEBAIHN0YXRpYyBpbnQgbXRrX2hkbWlfcGxsX3NldF9yYXRlKHN0 cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCiAJCQkgICgweDEgPDwgUExMX0JS X1NISUZUKSwKIAkJCSAgUkdfSERNSVRYX1BMTF9CUCB8IFJHX0hETUlUWF9QTExfQkMgfAogCQkJ ICBSR19IRE1JVFhfUExMX0JSKTsKLQltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwg SERNSV9DT04zLCBSR19IRE1JVFhfUFJEX0lNUF9FTik7CisJaWYgKHJhdGUgPCAxNjUwMDAwMDAp IHsKKwkJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMywKKwkJCQkJ UkdfSERNSVRYX1BSRF9JTVBfRU4pOworCQlwcmVfaWJpYXMgPSAweDM7CisJCWltcF9lbiA9IDB4 MDsKKwkJaGRtaV9pYmlhcyA9IGhkbWlfcGh5LT5pYmlhczsKKwl9IGVsc2UgeworCQltdGtfaGRt aV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMywKKwkJCQkgICAgICBSR19IRE1JVFhf UFJEX0lNUF9FTik7CisJCXByZV9pYmlhcyA9IDB4NjsKKwkJaW1wX2VuID0gMHhmOworCQloZG1p X2liaWFzID0gaGRtaV9waHktPmliaWFzX3VwOworCX0KIAltdGtfaGRtaV9waHlfbWFzayhoZG1p X3BoeSwgSERNSV9DT040LAotCQkJICAoMHgzIDw8IFBSRF9JQklBU19DTEtfU0hJRlQpIHwKLQkJ CSAgKDB4MyA8PCBQUkRfSUJJQVNfRDJfU0hJRlQpIHwKLQkJCSAgKDB4MyA8PCBQUkRfSUJJQVNf RDFfU0hJRlQpIHwKLQkJCSAgKDB4MyA8PCBQUkRfSUJJQVNfRDBfU0hJRlQpLAorCQkJICAocHJl X2liaWFzIDw8IFBSRF9JQklBU19DTEtfU0hJRlQpIHwKKwkJCSAgKHByZV9pYmlhcyA8PCBQUkRf SUJJQVNfRDJfU0hJRlQpIHwKKwkJCSAgKHByZV9pYmlhcyA8PCBQUkRfSUJJQVNfRDFfU0hJRlQp IHwKKwkJCSAgKHByZV9pYmlhcyA8PCBQUkRfSUJJQVNfRDBfU0hJRlQpLAogCQkJICBSR19IRE1J VFhfUFJEX0lCSUFTX0NMSyB8CiAJCQkgIFJHX0hETUlUWF9QUkRfSUJJQVNfRDIgfAogCQkJICBS R19IRE1JVFhfUFJEX0lCSUFTX0QxIHwKIAkJCSAgUkdfSERNSVRYX1BSRF9JQklBU19EMCk7CiAJ bXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMywKLQkJCSAgKDB4MCA8PCBEUlZf SU1QX0VOX1NISUZUKSwgUkdfSERNSVRYX0RSVl9JTVBfRU4pOworCQkJICAoaW1wX2VuIDw8IERS Vl9JTVBfRU5fU0hJRlQpLAorCQkJICBSR19IRE1JVFhfRFJWX0lNUF9FTik7CiAJbXRrX2hkbWlf cGh5X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwKIAkJCSAgKGhkbWlfcGh5LT5kcnZfaW1wX2Ns ayA8PCBEUlZfSU1QX0NMS19TSElGVCkgfAogCQkJICAoaGRtaV9waHktPmRydl9pbXBfZDIgPDwg RFJWX0lNUF9EMl9TSElGVCkgfApAQCAtMzE4LDEyICszMzQsMTQgQEAgc3RhdGljIGludCBtdGtf aGRtaV9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwK IAkJCSAgUkdfSERNSVRYX0RSVl9JTVBfQ0xLIHwgUkdfSERNSVRYX0RSVl9JTVBfRDIgfAogCQkJ ICBSR19IRE1JVFhfRFJWX0lNUF9EMSB8IFJHX0hETUlUWF9EUlZfSU1QX0QwKTsKIAltdGtfaGRt aV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT041LAotCQkJICAoaGRtaV9waHktPmliaWFzIDw8 IERSVl9JQklBU19DTEtfU0hJRlQpIHwKLQkJCSAgKGhkbWlfcGh5LT5pYmlhcyA8PCBEUlZfSUJJ QVNfRDJfU0hJRlQpIHwKLQkJCSAgKGhkbWlfcGh5LT5pYmlhcyA8PCBEUlZfSUJJQVNfRDFfU0hJ RlQpIHwKLQkJCSAgKGhkbWlfcGh5LT5pYmlhcyA8PCBEUlZfSUJJQVNfRDBfU0hJRlQpLAotCQkJ ICBSR19IRE1JVFhfRFJWX0lCSUFTX0NMSyB8IFJHX0hETUlUWF9EUlZfSUJJQVNfRDIgfAotCQkJ ICBSR19IRE1JVFhfRFJWX0lCSUFTX0QxIHwgUkdfSERNSVRYX0RSVl9JQklBU19EMCk7CisJCQkg IChoZG1pX2liaWFzIDw8IERSVl9JQklBU19DTEtfU0hJRlQpIHwKKwkJCSAgKGhkbWlfaWJpYXMg PDwgRFJWX0lCSUFTX0QyX1NISUZUKSB8CisJCQkgIChoZG1pX2liaWFzIDw8IERSVl9JQklBU19E MV9TSElGVCkgfAorCQkJICAoaGRtaV9pYmlhcyA8PCBEUlZfSUJJQVNfRDBfU0hJRlQpLAorCQkJ ICBSR19IRE1JVFhfRFJWX0lCSUFTX0NMSyB8CisJCQkgIFJHX0hETUlUWF9EUlZfSUJJQVNfRDIg fAorCQkJICBSR19IRE1JVFhfRFJWX0lCSUFTX0QxIHwKKwkJCSAgUkdfSERNSVRYX0RSVl9JQklB U19EMCk7CiAJcmV0dXJuIDA7CiB9CiAKLS0gCjEuNy45LjUKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: bibby.hsieh@mediatek.com (Bibby Hsieh) Date: Wed, 27 Jul 2016 16:31:31 +0800 Subject: [PATCH v2 2/3] drm/mediatek: enhance the HDMI driving current In-Reply-To: <1469608292-6106-1-git-send-email-bibby.hsieh@mediatek.com> References: <1469608292-6106-1-git-send-email-bibby.hsieh@mediatek.com> Message-ID: <1469608292-6106-3-git-send-email-bibby.hsieh@mediatek.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org From: Junzhi Zhao In order to improve 4K resolution performance, we have to enhance the HDMI driving currend when clock rate is greater than 165MHz. Signed-off-by: Junzhi Zhao Signed-off-by: Bibby Hsieh --- drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c | 42 +++++++++++++++++------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c index 8a24754..51cb9cf 100644 --- a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c +++ b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c @@ -265,6 +265,9 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate, struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw); unsigned int pre_div; unsigned int div; + unsigned int pre_ibias; + unsigned int hdmi_ibias; + unsigned int imp_en; dev_dbg(hdmi_phy->dev, "%s: %lu Hz, parent: %lu Hz\n", __func__, rate, parent_rate); @@ -298,18 +301,31 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate, (0x1 << PLL_BR_SHIFT), RG_HDMITX_PLL_BP | RG_HDMITX_PLL_BC | RG_HDMITX_PLL_BR); - mtk_hdmi_phy_clear_bits(hdmi_phy, HDMI_CON3, RG_HDMITX_PRD_IMP_EN); + if (rate < 165000000) { + mtk_hdmi_phy_clear_bits(hdmi_phy, HDMI_CON3, + RG_HDMITX_PRD_IMP_EN); + pre_ibias = 0x3; + imp_en = 0x0; + hdmi_ibias = hdmi_phy->ibias; + } else { + mtk_hdmi_phy_set_bits(hdmi_phy, HDMI_CON3, + RG_HDMITX_PRD_IMP_EN); + pre_ibias = 0x6; + imp_en = 0xf; + hdmi_ibias = hdmi_phy->ibias_up; + } mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON4, - (0x3 << PRD_IBIAS_CLK_SHIFT) | - (0x3 << PRD_IBIAS_D2_SHIFT) | - (0x3 << PRD_IBIAS_D1_SHIFT) | - (0x3 << PRD_IBIAS_D0_SHIFT), + (pre_ibias << PRD_IBIAS_CLK_SHIFT) | + (pre_ibias << PRD_IBIAS_D2_SHIFT) | + (pre_ibias << PRD_IBIAS_D1_SHIFT) | + (pre_ibias << PRD_IBIAS_D0_SHIFT), RG_HDMITX_PRD_IBIAS_CLK | RG_HDMITX_PRD_IBIAS_D2 | RG_HDMITX_PRD_IBIAS_D1 | RG_HDMITX_PRD_IBIAS_D0); mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON3, - (0x0 << DRV_IMP_EN_SHIFT), RG_HDMITX_DRV_IMP_EN); + (imp_en << DRV_IMP_EN_SHIFT), + RG_HDMITX_DRV_IMP_EN); mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (hdmi_phy->drv_imp_clk << DRV_IMP_CLK_SHIFT) | (hdmi_phy->drv_imp_d2 << DRV_IMP_D2_SHIFT) | @@ -318,12 +334,14 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate, RG_HDMITX_DRV_IMP_CLK | RG_HDMITX_DRV_IMP_D2 | RG_HDMITX_DRV_IMP_D1 | RG_HDMITX_DRV_IMP_D0); mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON5, - (hdmi_phy->ibias << DRV_IBIAS_CLK_SHIFT) | - (hdmi_phy->ibias << DRV_IBIAS_D2_SHIFT) | - (hdmi_phy->ibias << DRV_IBIAS_D1_SHIFT) | - (hdmi_phy->ibias << DRV_IBIAS_D0_SHIFT), - RG_HDMITX_DRV_IBIAS_CLK | RG_HDMITX_DRV_IBIAS_D2 | - RG_HDMITX_DRV_IBIAS_D1 | RG_HDMITX_DRV_IBIAS_D0); + (hdmi_ibias << DRV_IBIAS_CLK_SHIFT) | + (hdmi_ibias << DRV_IBIAS_D2_SHIFT) | + (hdmi_ibias << DRV_IBIAS_D1_SHIFT) | + (hdmi_ibias << DRV_IBIAS_D0_SHIFT), + RG_HDMITX_DRV_IBIAS_CLK | + RG_HDMITX_DRV_IBIAS_D2 | + RG_HDMITX_DRV_IBIAS_D1 | + RG_HDMITX_DRV_IBIAS_D0); return 0; } -- 1.7.9.5