From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [RFC 3/4] drm/msm/mdp5: add config for writeback pipes Date: Fri, 23 Feb 2018 08:17:53 -0500 Message-ID: <20180223131758.18362-4-robdclark@gmail.com> References: <20180223131758.18362-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180223131758.18362-1-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Archit Taneja , Neil Armstrong , David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Liviu Dudau , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Rob Clark , Sean Paul , Daniel Vetter , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Brian Starkey , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= List-Id: linux-arm-msm@vger.kernel.org Tm90ZSB0aGVyZSBzZWVtcyB0byBiZSBhIHNsaWdodCBkaXNhZ3JlZW1lbnQgYmV0d2VlbiBwdWJs aWMgOHgxNiBIUkQKKHdoaWNoIGNsYWltcyBXQjIgaGFzIG9mZnNldCBvZiAweDY1MDAwLCByZWxh dGl2ZSB0byBzdGFydCBvZiBNRFApLCBhbmQKcmVhbGl0eSAod2hpY2ggY2xhaW1zIFdCMiBoYXMg b2Zmc2V0IG9mIDB4NjQ4MDApLiAgSSBzaWRlZCB3aXRoIHJlYWxpdHkuCgpUaGVyZSBzaG91bGQg YWxzbyBiZSBhIFdCMCBhdHRhY2hlZCB0byBMTTAgKHdoaWNoIHJvdXRlcyB0byBEU0kKaW50ZXJm YWNlKS4gIEl0IGlzbid0IGNsZWFyIGlmIHRoaXMgY2FuIGJlIHVzZWQgYXQgdGhlIHNhbWUgdGlt ZSBhcwpvdXRwdXQgdG8gRFNJLCB3aGljaCB3b3VsZCBiZSBodWdlbHkgdXNlZnVsLiAgSSB3YXMg dW5hYmxlIHRvIGdldCB0aGlzCnRvIHdvcmsgKHdpdGggSERNSSBicmlkZ2UgY2hpcCBvbiBkYjQx MGMsIHNvIERTSSBpbiB2aWRlbyBtb2RlKS4KClRoaXMgd2lsbCBiZSBuZWVkZWQgdG8gaW1wbGVt ZW50IHdyaXRlYmFjayBzdXBwb3J0LCBidXQgYWxzbyB1c2VmdWwKdG8gcmVtb3ZlIGEgbWFudWFs IGhhY2sgdG8gdGhlIGdlbmVyYXRlZCBoZWFkZXJzIChzaW5jZSBybm5kYiByZWdpc3Rlcgpkb2Nz IGZvciBXQiBoYWQgYmVlbiBtZXJnZWQgbG9uZyBhZ28pLgoKQWxzbyBmaXhlcyBMTTMgb2Zmc2V0 LgoKU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDUueG1sLmggfCAgMiAtLQogZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jZmcuYyB8IDE3ICsrKysrKysrKysrLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2NmZy5oIHwgMTEgKysrKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmMgfCAgMSArCiA0IGZpbGVz IGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNS54bWwuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9tZHA1L21kcDUueG1sLmgKaW5kZXggZDljMTBlMDJlZTQxLi5iZWJjYmFiYjFm ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDUueG1sLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNS54bWwuaApAQCAtMTM5MSwx MyArMTM5MSwxMSBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJFR19NRFA1X1BQX0ZCQ19MT1NT WV9NT0RFKHVpbnQzMl90IGkwKSB7IHJldHVybiAweDAwMDAwMAogc3RhdGljIGlubGluZSB1aW50 MzJfdCBfX29mZnNldF9XQih1aW50MzJfdCBpZHgpCiB7CiAJc3dpdGNoIChpZHgpIHsKLSNpZiAw ICAvKiBURU1QT1JBUlkgdW50aWwgcGF0Y2ggdGhhdCBhZGRzIHdiLmJhc2VbXSBpcyBtZXJnZWQg Ki8KIAkJY2FzZSAwOiByZXR1cm4gKG1kcDVfY2ZnLT53Yi5iYXNlWzBdKTsKIAkJY2FzZSAxOiBy ZXR1cm4gKG1kcDVfY2ZnLT53Yi5iYXNlWzFdKTsKIAkJY2FzZSAyOiByZXR1cm4gKG1kcDVfY2Zn LT53Yi5iYXNlWzJdKTsKIAkJY2FzZSAzOiByZXR1cm4gKG1kcDVfY2ZnLT53Yi5iYXNlWzNdKTsK IAkJY2FzZSA0OiByZXR1cm4gKG1kcDVfY2ZnLT53Yi5iYXNlWzRdKTsKLSNlbmRpZgogCQlkZWZh dWx0OiByZXR1cm4gSU5WQUxJRF9JRFgoaWR4KTsKIAl9CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2NmZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL21kcDUvbWRwNV9jZmcuYwppbmRleCA4MjQwNjdkMmQ0MjcuLmY5MmU2OGNkZWVlZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jZmcuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2NmZy5jCkBAIC0zMDAsOCArMzAwLDgg QEAgY29uc3Qgc3RydWN0IG1kcDVfY2ZnX2h3IG1zbTh4MTZfY29uZmlnID0gewogCQl9LAogCX0s CiAJLmN0bCA9IHsKLQkJLmNvdW50ID0gNSwKLQkJLmJhc2UgPSB7IDB4MDEwMDAsIDB4MDEyMDAs IDB4MDE0MDAsIDB4MDE2MDAsIDB4MDE4MDAgfSwKKwkJLmNvdW50ID0gMywKKwkJLmJhc2UgPSB7 IDB4MDEwMDAsIDB4MDEyMDAsIDB4MDE0MDAgfSwKIAkJLmZsdXNoX2h3X21hc2sgPSAweDQwMDNm ZmZmLAogCX0sCiAJLnBpcGVfdmlnID0gewpAQCAtMzI0LDcgKzMyNCw3IEBAIGNvbnN0IHN0cnVj dCBtZHA1X2NmZ19odyBtc204eDE2X2NvbmZpZyA9IHsKIAl9LAogCS5sbSA9IHsKIAkJLmNvdW50 ID0gMiwgLyogTE0wIGFuZCBMTTMgKi8KLQkJLmJhc2UgPSB7IDB4NDQwMDAsIDB4NDcwMDAgfSwK KwkJLmJhc2UgPSB7IFswXSA9IDB4NDQwMDAsIFszXSA9IDB4NDcwMDAgfSwKIAkJLmluc3RhbmNl cyA9IHsKIAkJCQl7IC5pZCA9IDAsIC5wcCA9IDAsIC5kc3BwID0gMCwKIAkJCQkgIC5jYXBzID0g TURQX0xNX0NBUF9ESVNQTEFZLCB9LApAQCAtMzM4LDEyICszMzgsMTcgQEAgY29uc3Qgc3RydWN0 IG1kcDVfY2ZnX2h3IG1zbTh4MTZfY29uZmlnID0gewogCS5kc3BwID0gewogCQkuY291bnQgPSAx LAogCQkuYmFzZSA9IHsgMHg1NDAwMCB9LAotCisJfSwKKwkud2IgPSB7CisJCS5jb3VudCA9IDEs CisJCS5iYXNlID0geyBbMF0gPSAweDY0MDAwLCBbMl0gPSAweDY0ODAwIH0sCisJCS5pbnN0YW5j ZXMgPSB7CisJCQl7IC5pZCA9IDIsIC5sbSA9IDMgfSwKKwkJfSwKIAl9LAogCS5pbnRmID0gewot CQkuYmFzZSA9IHsgMHgwMDAwMCwgMHg2YTgwMCB9LAorCQkuYmFzZSA9IHsgMHg2YTAwMCwgMHg2 YTgwMCwgMHg2YjAwMCwgMHg2YjgwMCB9LAogCQkuY29ubmVjdCA9IHsKLQkJCVswXSA9IElOVEZf RElTQUJMRUQsCiAJCQlbMV0gPSBJTlRGX0RTSSwKIAkJfSwKIAl9LApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jZmcuaCBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfY2ZnLmgKaW5kZXggNzU5MTBkMGYyZjRjLi4yZTUyOWZiMmY5ZWUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY2ZnLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jZmcuaApAQCAtNzcsNiArNzcs MTYgQEAgc3RydWN0IG1kcDVfbWRwX2Jsb2NrIHsKIAl1aW50MzJfdCBjYXBzOwkJCS8qIE1EUCBj YXBhYmlsaXRpZXM6IE1EUF9DQVBfeHh4IGJpdHMgKi8KIH07CiAKK3N0cnVjdCBtZHA1X3diX2lu c3RhbmNlIHsKKwlpbnQgaWQ7CisJaW50IGxtOworfTsKKworc3RydWN0IG1kcDVfd2JfYmxvY2sg eworCU1EUDVfU1VCX0JMT0NLX0RFRklOSVRJT047CisJc3RydWN0IG1kcDVfd2JfaW5zdGFuY2Ug aW5zdGFuY2VzW01BWF9CQVNFU107Cit9OworCiAjZGVmaW5lIE1EUDVfSU5URl9OVU1fTUFYCTUK IAogc3RydWN0IG1kcDVfaW50Zl9ibG9jayB7CkBAIC0xMDAsNiArMTEwLDcgQEAgc3RydWN0IG1k cDVfY2ZnX2h3IHsKIAlzdHJ1Y3QgbWRwNV9zdWJfYmxvY2sgcHA7CiAJc3RydWN0IG1kcDVfc3Vi X2Jsb2NrIGRzYzsKIAlzdHJ1Y3QgbWRwNV9zdWJfYmxvY2sgY2RtOworCXN0cnVjdCBtZHA1X3di X2Jsb2NrIHdiOwogCXN0cnVjdCBtZHA1X2ludGZfYmxvY2sgaW50ZjsKIAogCXVpbnQzMl90IG1h eF9jbGs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2tt cy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9rbXMuYwppbmRleCA2ZDhl M2E5YTZmYzAuLjFmNDRkOGYxNWNlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL21kcDUvbWRwNV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9t ZHA1X2ttcy5jCkBAIC02NTIsNiArNjUyLDcgQEAgc3RydWN0IG1zbV9rbXMgKm1kcDVfa21zX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlwbV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5k ZXYpOwogCWZvciAoaSA9IDA7IGkgPCBNRFA1X0lOVEZfTlVNX01BWDsgaSsrKSB7CiAJCWlmICht ZHA1X2NmZ19pbnRmX2lzX3ZpcnR1YWwoY29uZmlnLT5ody0+aW50Zi5jb25uZWN0W2ldKSB8fAor CQkgICAgKGNvbmZpZy0+aHctPmludGYuY29ubmVjdFtpXSA9PSBJTlRGX0RJU0FCTEVEKSB8fAog CQkgICAgIWNvbmZpZy0+aHctPmludGYuYmFzZVtpXSkKIAkJCWNvbnRpbnVlOwogCQltZHA1X3dy aXRlKG1kcDVfa21zLCBSRUdfTURQNV9JTlRGX1RJTUlOR19FTkdJTkVfRU4oaSksIDApOwotLSAK Mi4xNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpG cmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751816AbeBWNUQ (ORCPT ); Fri, 23 Feb 2018 08:20:16 -0500 Received: from mail-qk0-f194.google.com ([209.85.220.194]:39620 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751724AbeBWNUM (ORCPT ); Fri, 23 Feb 2018 08:20:12 -0500 X-Google-Smtp-Source: AG47ELsQV7o7MqjYVk0MxHuYTQQX1ijTbI+K1/ZOEAq+u1sODQOlMtZSMpGaOcNwxAhROipctg0L1Q== From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, Brian Starkey , Liviu Dudau , Rob Clark , David Airlie , Sean Paul , Archit Taneja , Daniel Vetter , Neil Armstrong , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , linux-kernel@vger.kernel.org Subject: [RFC 3/4] drm/msm/mdp5: add config for writeback pipes Date: Fri, 23 Feb 2018 08:17:53 -0500 Message-Id: <20180223131758.18362-4-robdclark@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180223131758.18362-1-robdclark@gmail.com> References: <20180223131758.18362-1-robdclark@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Note there seems to be a slight disagreement between public 8x16 HRD (which claims WB2 has offset of 0x65000, relative to start of MDP), and reality (which claims WB2 has offset of 0x64800). I sided with reality. There should also be a WB0 attached to LM0 (which routes to DSI interface). It isn't clear if this can be used at the same time as output to DSI, which would be hugely useful. I was unable to get this to work (with HDMI bridge chip on db410c, so DSI in video mode). This will be needed to implement writeback support, but also useful to remove a manual hack to the generated headers (since rnndb register docs for WB had been merged long ago). Also fixes LM3 offset. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/disp/mdp5/mdp5.xml.h | 2 -- drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 17 +++++++++++------ drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h | 11 +++++++++++ drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 1 + 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5.xml.h b/drivers/gpu/drm/msm/disp/mdp5/mdp5.xml.h index d9c10e02ee41..bebcbabb1fe4 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5.xml.h +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5.xml.h @@ -1391,13 +1391,11 @@ static inline uint32_t REG_MDP5_PP_FBC_LOSSY_MODE(uint32_t i0) { return 0x000000 static inline uint32_t __offset_WB(uint32_t idx) { switch (idx) { -#if 0 /* TEMPORARY until patch that adds wb.base[] is merged */ case 0: return (mdp5_cfg->wb.base[0]); case 1: return (mdp5_cfg->wb.base[1]); case 2: return (mdp5_cfg->wb.base[2]); case 3: return (mdp5_cfg->wb.base[3]); case 4: return (mdp5_cfg->wb.base[4]); -#endif default: return INVALID_IDX(idx); } } diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c index 824067d2d427..f92e68cdeeef 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c @@ -300,8 +300,8 @@ const struct mdp5_cfg_hw msm8x16_config = { }, }, .ctl = { - .count = 5, - .base = { 0x01000, 0x01200, 0x01400, 0x01600, 0x01800 }, + .count = 3, + .base = { 0x01000, 0x01200, 0x01400 }, .flush_hw_mask = 0x4003ffff, }, .pipe_vig = { @@ -324,7 +324,7 @@ const struct mdp5_cfg_hw msm8x16_config = { }, .lm = { .count = 2, /* LM0 and LM3 */ - .base = { 0x44000, 0x47000 }, + .base = { [0] = 0x44000, [3] = 0x47000 }, .instances = { { .id = 0, .pp = 0, .dspp = 0, .caps = MDP_LM_CAP_DISPLAY, }, @@ -338,12 +338,17 @@ const struct mdp5_cfg_hw msm8x16_config = { .dspp = { .count = 1, .base = { 0x54000 }, - + }, + .wb = { + .count = 1, + .base = { [0] = 0x64000, [2] = 0x64800 }, + .instances = { + { .id = 2, .lm = 3 }, + }, }, .intf = { - .base = { 0x00000, 0x6a800 }, + .base = { 0x6a000, 0x6a800, 0x6b000, 0x6b800 }, .connect = { - [0] = INTF_DISABLED, [1] = INTF_DSI, }, }, diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h index 75910d0f2f4c..2e529fb2f9ee 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h @@ -77,6 +77,16 @@ struct mdp5_mdp_block { uint32_t caps; /* MDP capabilities: MDP_CAP_xxx bits */ }; +struct mdp5_wb_instance { + int id; + int lm; +}; + +struct mdp5_wb_block { + MDP5_SUB_BLOCK_DEFINITION; + struct mdp5_wb_instance instances[MAX_BASES]; +}; + #define MDP5_INTF_NUM_MAX 5 struct mdp5_intf_block { @@ -100,6 +110,7 @@ struct mdp5_cfg_hw { struct mdp5_sub_block pp; struct mdp5_sub_block dsc; struct mdp5_sub_block cdm; + struct mdp5_wb_block wb; struct mdp5_intf_block intf; uint32_t max_clk; diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c index 6d8e3a9a6fc0..1f44d8f15ce1 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -652,6 +652,7 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev) pm_runtime_get_sync(&pdev->dev); for (i = 0; i < MDP5_INTF_NUM_MAX; i++) { if (mdp5_cfg_intf_is_virtual(config->hw->intf.connect[i]) || + (config->hw->intf.connect[i] == INTF_DISABLED) || !config->hw->intf.base[i]) continue; mdp5_write(mdp5_kms, REG_MDP5_INTF_TIMING_ENGINE_EN(i), 0); -- 2.14.3