From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 1/6] drm/vc4: Fix ->clock_select setting for the VEC encoder Date: Tue, 29 Nov 2016 10:41:57 -0800 Message-ID: <20161129184202.10640-2-eric@anholt.net> References: <20161129184202.10640-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 1BA066E50B for ; Tue, 29 Nov 2016 18:42:10 +0000 (UTC) In-Reply-To: <20161129184202.10640-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AZnJlZS1lbGVjdHJvbnMuY29t PgoKUFZfQ09OVFJPTF9DTEtfU0VMRUNUX1ZFQyBpcyBhY3R1YWxseSAyIGFuZCBub3QgMC4gRml4 IHRoZSBkZWZpbml0aW9uIGFuZApyZXdvcmsgdGhlIHZjNF9zZXRfY3J0Y19wb3NzaWJsZV9tYXNr cygpIHRvIGNvdmVyIHRoZSBmdWxsIHJhbmdlIG9mIHRoZQpQVl9DT05UUk9MX0NMS19TRUxFQ1Qg ZmllbGQuCgpTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBm cmVlLWVsZWN0cm9ucy5jb20+ClNpZ25lZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9s dC5uZXQ+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5jIHwgMzggKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Ry di5oICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaCB8ICAzICsrLQogMyBm aWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9jcnRjLmMKaW5kZXggN2YwOGQ2ODFhNzRiLi5jMzE3ZTkxMDNmOWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9jcnRjLmMKQEAgLTgzLDggKzgzLDcgQEAgc3RydWN0IHZjNF9jcnRjX2RhdGEgewogCS8q IFdoaWNoIGNoYW5uZWwgb2YgdGhlIEhWUyB0aGlzIHBpeGVsdmFsdmUgc291cmNlcyBmcm9tLiAq LwogCWludCBodnNfY2hhbm5lbDsKIAotCWVudW0gdmM0X2VuY29kZXJfdHlwZSBlbmNvZGVyMF90 eXBlOwotCWVudW0gdmM0X2VuY29kZXJfdHlwZSBlbmNvZGVyMV90eXBlOworCWVudW0gdmM0X2Vu Y29kZXJfdHlwZSBlbmNvZGVyX3R5cGVzWzRdOwogfTsKIAogI2RlZmluZSBDUlRDX1dSSVRFKG9m ZnNldCwgdmFsKSB3cml0ZWwodmFsLCB2YzRfY3J0Yy0+cmVncyArIChvZmZzZXQpKQpAQCAtODU5 LDIwICs4NTgsMjYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3Mg dmM0X2NydGNfaGVscGVyX2Z1bmNzID0gewogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZjNF9jcnRj X2RhdGEgcHYwX2RhdGEgPSB7CiAJLmh2c19jaGFubmVsID0gMCwKLQkuZW5jb2RlcjBfdHlwZSA9 IFZDNF9FTkNPREVSX1RZUEVfRFNJMCwKLQkuZW5jb2RlcjFfdHlwZSA9IFZDNF9FTkNPREVSX1RZ UEVfRFBJLAorCS5lbmNvZGVyX3R5cGVzID0geworCQlbUFZfQ09OVFJPTF9DTEtfU0VMRUNUX0RT SV0gPSBWQzRfRU5DT0RFUl9UWVBFX0RTSTAsCisJCVtQVl9DT05UUk9MX0NMS19TRUxFQ1RfRFBJ X1NNSV9IRE1JXSA9IFZDNF9FTkNPREVSX1RZUEVfRFBJLAorCX0sCiB9OwogCiBzdGF0aWMgY29u c3Qgc3RydWN0IHZjNF9jcnRjX2RhdGEgcHYxX2RhdGEgPSB7CiAJLmh2c19jaGFubmVsID0gMiwK LQkuZW5jb2RlcjBfdHlwZSA9IFZDNF9FTkNPREVSX1RZUEVfRFNJMSwKLQkuZW5jb2RlcjFfdHlw ZSA9IFZDNF9FTkNPREVSX1RZUEVfU01JLAorCS5lbmNvZGVyX3R5cGVzID0geworCQlbUFZfQ09O VFJPTF9DTEtfU0VMRUNUX0RTSV0gPSBWQzRfRU5DT0RFUl9UWVBFX0RTSTEsCisJCVtQVl9DT05U Uk9MX0NMS19TRUxFQ1RfRFBJX1NNSV9IRE1JXSA9IFZDNF9FTkNPREVSX1RZUEVfU01JLAorCX0s CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZjNF9jcnRjX2RhdGEgcHYyX2RhdGEgPSB7CiAJ Lmh2c19jaGFubmVsID0gMSwKLQkuZW5jb2RlcjBfdHlwZSA9IFZDNF9FTkNPREVSX1RZUEVfVkVD LAotCS5lbmNvZGVyMV90eXBlID0gVkM0X0VOQ09ERVJfVFlQRV9IRE1JLAorCS5lbmNvZGVyX3R5 cGVzID0geworCQlbUFZfQ09OVFJPTF9DTEtfU0VMRUNUX0RQSV9TTUlfSERNSV0gPSBWQzRfRU5D T0RFUl9UWVBFX0hETUksCisJCVtQVl9DT05UUk9MX0NMS19TRUxFQ1RfVkVDXSA9IFZDNF9FTkNP REVSX1RZUEVfVkVDLAorCX0sCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCB2YzRfY3J0Y19kdF9tYXRjaFtdID0gewpAQCAtODg2LDE3ICs4OTEsMjAgQEAgc3RhdGljIHZv aWQgdmM0X3NldF9jcnRjX3Bvc3NpYmxlX21hc2tzKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJ CQkJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgdmM0X2NydGMgKnZjNF9jcnRj ID0gdG9fdmM0X2NydGMoY3J0Yyk7CisJY29uc3Qgc3RydWN0IHZjNF9jcnRjX2RhdGEgKmNydGNf ZGF0YSA9IHZjNF9jcnRjLT5kYXRhOworCWNvbnN0IGVudW0gdmM0X2VuY29kZXJfdHlwZSAqZW5j b2Rlcl90eXBlcyA9IGNydGNfZGF0YS0+ZW5jb2Rlcl90eXBlczsKIAlzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXI7CiAKIAlkcm1fZm9yX2VhY2hfZW5jb2RlcihlbmNvZGVyLCBkcm0pIHsKIAkJ c3RydWN0IHZjNF9lbmNvZGVyICp2YzRfZW5jb2RlciA9IHRvX3ZjNF9lbmNvZGVyKGVuY29kZXIp OwotCi0JCWlmICh2YzRfZW5jb2Rlci0+dHlwZSA9PSB2YzRfY3J0Yy0+ZGF0YS0+ZW5jb2RlcjBf dHlwZSkgewotCQkJdmM0X2VuY29kZXItPmNsb2NrX3NlbGVjdCA9IDA7Ci0JCQllbmNvZGVyLT5w b3NzaWJsZV9jcnRjcyB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOwotCQl9IGVsc2UgaWYgKHZjNF9l bmNvZGVyLT50eXBlID09IHZjNF9jcnRjLT5kYXRhLT5lbmNvZGVyMV90eXBlKSB7Ci0JCQl2YzRf ZW5jb2Rlci0+Y2xvY2tfc2VsZWN0ID0gMTsKLQkJCWVuY29kZXItPnBvc3NpYmxlX2NydGNzIHw9 IGRybV9jcnRjX21hc2soY3J0Yyk7CisJCWludCBpOworCisJCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGNydGNfZGF0YS0+ZW5jb2Rlcl90eXBlcyk7IGkrKykgeworCQkJaWYgKHZjNF9lbmNv ZGVyLT50eXBlID09IGVuY29kZXJfdHlwZXNbaV0pIHsKKwkJCQl2YzRfZW5jb2Rlci0+Y2xvY2tf c2VsZWN0ID0gaTsKKwkJCQllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyB8PSBkcm1fY3J0Y19tYXNr KGNydGMpOworCQkJCWJyZWFrOworCQkJfQogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaApp bmRleCBmZWYxNzI4MDQzNDUuLmI2MDQ5Y2MyNTY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKQEAg LTE5NCw2ICsxOTQsNyBAQCB0b192YzRfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB9 CiAKIGVudW0gdmM0X2VuY29kZXJfdHlwZSB7CisJVkM0X0VOQ09ERVJfVFlQRV9OT05FLAogCVZD NF9FTkNPREVSX1RZUEVfSERNSSwKIAlWQzRfRU5DT0RFUl9UWVBFX1ZFQywKIAlWQzRfRU5DT0RF Ul9UWVBFX0RTSTAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgKaW5kZXggMWFhNDRjMmRiNTU2Li4zOWY2 ODg2YjI0MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgKQEAgLTE3Nyw4ICsxNzcsOSBAQAogIyBk ZWZpbmUgUFZfQ09OVFJPTF9XQUlUX0hTVEFSVAkJCUJJVCgxMikKICMgZGVmaW5lIFBWX0NPTlRS T0xfUElYRUxfUkVQX01BU0sJCVZDNF9NQVNLKDUsIDQpCiAjIGRlZmluZSBQVl9DT05UUk9MX1BJ WEVMX1JFUF9TSElGVAkJNAotIyBkZWZpbmUgUFZfQ09OVFJPTF9DTEtfU0VMRUNUX0RTSV9WRUMJ CTAKKyMgZGVmaW5lIFBWX0NPTlRST0xfQ0xLX1NFTEVDVF9EU0kJCTAKICMgZGVmaW5lIFBWX0NP TlRST0xfQ0xLX1NFTEVDVF9EUElfU01JX0hETUkJMQorIyBkZWZpbmUgUFZfQ09OVFJPTF9DTEtf U0VMRUNUX1ZFQwkJMgogIyBkZWZpbmUgUFZfQ09OVFJPTF9DTEtfU0VMRUNUX01BU0sJCVZDNF9N QVNLKDMsIDIpCiAjIGRlZmluZSBQVl9DT05UUk9MX0NMS19TRUxFQ1RfU0hJRlQJCTIKICMgZGVm aW5lIFBWX0NPTlRST0xfRklGT19DTFIJCQlCSVQoMSkKLS0gCjIuMTAuMgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932457AbcK2SnL (ORCPT ); Tue, 29 Nov 2016 13:43:11 -0500 Received: from anholt.net ([50.246.234.109]:46146 "EHLO anholt.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755265AbcK2SmK (ORCPT ); Tue, 29 Nov 2016 13:42:10 -0500 From: Eric Anholt To: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Boris Brezillon , Eric Anholt Subject: [PATCH 1/6] drm/vc4: Fix ->clock_select setting for the VEC encoder Date: Tue, 29 Nov 2016 10:41:57 -0800 Message-Id: <20161129184202.10640-2-eric@anholt.net> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20161129184202.10640-1-eric@anholt.net> References: <20161129184202.10640-1-eric@anholt.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Boris Brezillon PV_CONTROL_CLK_SELECT_VEC is actually 2 and not 0. Fix the definition and rework the vc4_set_crtc_possible_masks() to cover the full range of the PV_CONTROL_CLK_SELECT field. Signed-off-by: Boris Brezillon Signed-off-by: Eric Anholt --- drivers/gpu/drm/vc4/vc4_crtc.c | 38 +++++++++++++++++++++++--------------- drivers/gpu/drm/vc4/vc4_drv.h | 1 + drivers/gpu/drm/vc4/vc4_regs.h | 3 ++- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c index 7f08d681a74b..c317e9103f9b 100644 --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -83,8 +83,7 @@ struct vc4_crtc_data { /* Which channel of the HVS this pixelvalve sources from. */ int hvs_channel; - enum vc4_encoder_type encoder0_type; - enum vc4_encoder_type encoder1_type; + enum vc4_encoder_type encoder_types[4]; }; #define CRTC_WRITE(offset, val) writel(val, vc4_crtc->regs + (offset)) @@ -859,20 +858,26 @@ static const struct drm_crtc_helper_funcs vc4_crtc_helper_funcs = { static const struct vc4_crtc_data pv0_data = { .hvs_channel = 0, - .encoder0_type = VC4_ENCODER_TYPE_DSI0, - .encoder1_type = VC4_ENCODER_TYPE_DPI, + .encoder_types = { + [PV_CONTROL_CLK_SELECT_DSI] = VC4_ENCODER_TYPE_DSI0, + [PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_DPI, + }, }; static const struct vc4_crtc_data pv1_data = { .hvs_channel = 2, - .encoder0_type = VC4_ENCODER_TYPE_DSI1, - .encoder1_type = VC4_ENCODER_TYPE_SMI, + .encoder_types = { + [PV_CONTROL_CLK_SELECT_DSI] = VC4_ENCODER_TYPE_DSI1, + [PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_SMI, + }, }; static const struct vc4_crtc_data pv2_data = { .hvs_channel = 1, - .encoder0_type = VC4_ENCODER_TYPE_VEC, - .encoder1_type = VC4_ENCODER_TYPE_HDMI, + .encoder_types = { + [PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_HDMI, + [PV_CONTROL_CLK_SELECT_VEC] = VC4_ENCODER_TYPE_VEC, + }, }; static const struct of_device_id vc4_crtc_dt_match[] = { @@ -886,17 +891,20 @@ static void vc4_set_crtc_possible_masks(struct drm_device *drm, struct drm_crtc *crtc) { struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); + const struct vc4_crtc_data *crtc_data = vc4_crtc->data; + const enum vc4_encoder_type *encoder_types = crtc_data->encoder_types; struct drm_encoder *encoder; drm_for_each_encoder(encoder, drm) { struct vc4_encoder *vc4_encoder = to_vc4_encoder(encoder); - - if (vc4_encoder->type == vc4_crtc->data->encoder0_type) { - vc4_encoder->clock_select = 0; - encoder->possible_crtcs |= drm_crtc_mask(crtc); - } else if (vc4_encoder->type == vc4_crtc->data->encoder1_type) { - vc4_encoder->clock_select = 1; - encoder->possible_crtcs |= drm_crtc_mask(crtc); + int i; + + for (i = 0; i < ARRAY_SIZE(crtc_data->encoder_types); i++) { + if (vc4_encoder->type == encoder_types[i]) { + vc4_encoder->clock_select = i; + encoder->possible_crtcs |= drm_crtc_mask(crtc); + break; + } } } } diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h index fef172804345..b6049cc25675 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h @@ -194,6 +194,7 @@ to_vc4_plane(struct drm_plane *plane) } enum vc4_encoder_type { + VC4_ENCODER_TYPE_NONE, VC4_ENCODER_TYPE_HDMI, VC4_ENCODER_TYPE_VEC, VC4_ENCODER_TYPE_DSI0, diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h index 1aa44c2db556..39f6886b2410 100644 --- a/drivers/gpu/drm/vc4/vc4_regs.h +++ b/drivers/gpu/drm/vc4/vc4_regs.h @@ -177,8 +177,9 @@ # define PV_CONTROL_WAIT_HSTART BIT(12) # define PV_CONTROL_PIXEL_REP_MASK VC4_MASK(5, 4) # define PV_CONTROL_PIXEL_REP_SHIFT 4 -# define PV_CONTROL_CLK_SELECT_DSI_VEC 0 +# define PV_CONTROL_CLK_SELECT_DSI 0 # define PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI 1 +# define PV_CONTROL_CLK_SELECT_VEC 2 # define PV_CONTROL_CLK_SELECT_MASK VC4_MASK(3, 2) # define PV_CONTROL_CLK_SELECT_SHIFT 2 # define PV_CONTROL_FIFO_CLR BIT(1) -- 2.10.2