From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephan Gerhold Subject: [PATCH 5/7] drm/mcde: dsi: Fix duplicated DSI connector Date: Wed, 6 Nov 2019 17:58:33 +0100 Message-ID: <20191106165835.2863-6-stephan@gerhold.net> References: <20191106165835.2863-1-stephan@gerhold.net> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20191106165835.2863-1-stephan@gerhold.net> Sender: linux-kernel-owner@vger.kernel.org To: Linus Walleij Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Stephan Gerhold List-Id: dri-devel@lists.freedesktop.org Using a (single) DSI display with MCDE currently results in two "connected" connectors: Connector: DSI-1 id : 34 encoder id : 0 conn : connected size : 0x0 (mm) count_modes : 0 count_props : 5 props : 1 2 5 6 4 count_encoders : 1 encoders : 33 Connector: DSI-2 id : 35 encoder id : 33 conn : connected size : 53x89 (mm) count_modes : 1 count_props : 5 props : 1 2 5 6 4 count_encoders : 1 encoders : 33 Mode: "480x800" 480x800 60 Although both show up as connected, the first one does not have any size and no available modes. This confuses userspace tools (e.g. kmscube) who look for available modes for the first connector. The reason for the duplicated connector is that mcde_dsi.c and the DRM panel bridge helper both set up a DSI connector, with more or less the same code. The connector set up by the DRM panel bridge is the one that is correctly set up in the example above. Therefore we can just remove the connector setup from mcde_dsi.c and let the DRM core handle all the hard work. Signed-off-by: Stephan Gerhold --- drivers/gpu/drm/mcde/mcde_dsi.c | 52 +-------------------------------- 1 file changed, 1 insertion(+), 51 deletions(-) diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c index 4710f23b2966..df963e078c35 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -39,7 +39,6 @@ struct mcde_dsi { struct device *dev; struct mcde *mcde; struct drm_bridge bridge; - struct drm_connector connector; struct drm_panel *panel; struct drm_bridge *bridge_out; struct mipi_dsi_host dsi_host; @@ -64,11 +63,6 @@ static inline struct mcde_dsi *host_to_mcde_dsi(struct mipi_dsi_host *h) return container_of(h, struct mcde_dsi, dsi_host); } -static inline struct mcde_dsi *connector_to_mcde_dsi(struct drm_connector *c) -{ - return container_of(c, struct mcde_dsi, connector); -} - bool mcde_dsi_irq(struct mipi_dsi_device *mdsi) { struct mcde_dsi *d; @@ -843,67 +837,23 @@ static void mcde_dsi_bridge_disable(struct drm_bridge *bridge) clk_disable_unprepare(d->lp_clk); } -/* - * This connector needs no special handling, just use the default - * helpers for everything. It's pretty dummy. - */ -static const struct drm_connector_funcs mcde_dsi_connector_funcs = { - .reset = drm_atomic_helper_connector_reset, - .fill_modes = drm_helper_probe_single_connector_modes, - .destroy = drm_connector_cleanup, - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, -}; - -static int mcde_dsi_get_modes(struct drm_connector *connector) -{ - struct mcde_dsi *d = connector_to_mcde_dsi(connector); - - /* Just pass the question to the panel */ - if (d->panel) - return drm_panel_get_modes(d->panel); - - /* TODO: deal with bridges */ - - return 0; -} - -static const struct drm_connector_helper_funcs -mcde_dsi_connector_helper_funcs = { - .get_modes = mcde_dsi_get_modes, -}; - static int mcde_dsi_bridge_attach(struct drm_bridge *bridge) { struct mcde_dsi *d = bridge_to_mcde_dsi(bridge); struct drm_device *drm = bridge->dev; int ret; - drm_connector_helper_add(&d->connector, - &mcde_dsi_connector_helper_funcs); - if (!drm_core_check_feature(drm, DRIVER_ATOMIC)) { dev_err(d->dev, "we need atomic updates\n"); return -ENOTSUPP; } - ret = drm_connector_init(drm, &d->connector, - &mcde_dsi_connector_funcs, - DRM_MODE_CONNECTOR_DSI); - if (ret) { - dev_err(d->dev, "failed to initialize DSI bridge connector\n"); - return ret; - } - d->connector.polled = DRM_CONNECTOR_POLL_CONNECT; - /* The encoder in the bridge attached to the DSI bridge */ - drm_connector_attach_encoder(&d->connector, bridge->encoder); - /* Then we attach the DSI bridge to the output (panel etc) bridge */ + /* Attach the DSI bridge to the output (panel etc) bridge */ ret = drm_bridge_attach(bridge->encoder, d->bridge_out, bridge); if (ret) { dev_err(d->dev, "failed to attach the DSI bridge\n"); return ret; } - d->connector.status = connector_status_connected; return 0; } -- 2.23.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 567BAC5DF64 for ; Wed, 6 Nov 2019 17:01:26 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 35D9A21D7E for ; Wed, 6 Nov 2019 17:01:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 35D9A21D7E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=gerhold.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 435BC6EDF5; Wed, 6 Nov 2019 17:01:15 +0000 (UTC) Received: from mo6-p02-ob.smtp.rzone.de (mo6-p02-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5302::5]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E0C66EDEE for ; Wed, 6 Nov 2019 17:01:10 +0000 (UTC) X-RZG-AUTH: ":P3gBZUipdd93FF5ZZvYFPugejmSTVR2nRPhVORvLd4SsytBXQrEOHTIXs8PvtBNfIQ==" X-RZG-CLASS-ID: mo00 Received: from localhost.localdomain by smtp.strato.de (RZmta 44.29.0 AUTH) with ESMTPSA id e07688vA6H15hLv (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Wed, 6 Nov 2019 18:01:05 +0100 (CET) From: Stephan Gerhold To: Linus Walleij Subject: [PATCH 5/7] drm/mcde: dsi: Fix duplicated DSI connector Date: Wed, 6 Nov 2019 17:58:33 +0100 Message-Id: <20191106165835.2863-6-stephan@gerhold.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191106165835.2863-1-stephan@gerhold.net> References: <20191106165835.2863-1-stephan@gerhold.net> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1573059668; s=strato-dkim-0002; d=gerhold.net; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=uZcQk++YEkD2ap+7a/P9KdfqpT2ypee67VJ6/UFHXeA=; b=IBUuL4Lb+J8hZGsT+aecmZ84ivUrAkC9Wwky4Gx81F+tnCua+5r+QZD7WmWybmuKWs z2F6elIJe/cPoF546aYU2zq5Bj/409/ZPQ7ujRQgqIeyKoZPvgyh0pfFUc3sqU7G9p7b ol0FewsO3uyPUjh6z/k/ONoD55y/fNvVoI1/PMX9BvWNW2g8/KX2025gQsC46tB0Cd7A +rNT0hrmUewsrj020DcayD0G2BuQJ5Ltqp7vhMq6FaIbK0G9KR/xlvFclByQp3PFZFS5 ZCfL5vYO1EU+h3qi4+yY+KYKmOYAJ4vNWwSh6XdH1EQoxK77SA7sNDMezifNFMH51+NM QEug== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: David Airlie , Stephan Gerhold , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191106165833.EIaw_dyXlkwPZubQ0tUkHptVQS567jdMvCLgE2goKnU@z> VXNpbmcgYSAoc2luZ2xlKSBEU0kgZGlzcGxheSB3aXRoIE1DREUgY3VycmVudGx5IHJlc3VsdHMg aW4KdHdvICJjb25uZWN0ZWQiIGNvbm5lY3RvcnM6CgogIENvbm5lY3RvcjogRFNJLTEKICAgICAg ICAgIGlkICAgICAgICAgICAgIDogMzQKICAgICAgICAgIGVuY29kZXIgaWQgICAgIDogMAogICAg ICAgICAgY29ubiAgICAgICAgICAgOiBjb25uZWN0ZWQKICAgICAgICAgIHNpemUgICAgICAgICAg IDogMHgwIChtbSkKICAgICAgICAgIGNvdW50X21vZGVzICAgIDogMAogICAgICAgICAgY291bnRf cHJvcHMgICAgOiA1CiAgICAgICAgICBwcm9wcyAgICAgICAgICA6IDEgMiA1IDYgNAogICAgICAg ICAgY291bnRfZW5jb2RlcnMgOiAxCiAgICAgICAgICBlbmNvZGVycyAgICAgICA6IDMzCiAgQ29u bmVjdG9yOiBEU0ktMgogICAgICAgICAgaWQgICAgICAgICAgICAgOiAzNQogICAgICAgICAgZW5j b2RlciBpZCAgICAgOiAzMwogICAgICAgICAgY29ubiAgICAgICAgICAgOiBjb25uZWN0ZWQKICAg ICAgICAgIHNpemUgICAgICAgICAgIDogNTN4ODkgKG1tKQogICAgICAgICAgY291bnRfbW9kZXMg ICAgOiAxCiAgICAgICAgICBjb3VudF9wcm9wcyAgICA6IDUKICAgICAgICAgIHByb3BzICAgICAg ICAgIDogMSAyIDUgNiA0CiAgICAgICAgICBjb3VudF9lbmNvZGVycyA6IDEKICAgICAgICAgIGVu Y29kZXJzICAgICAgIDogMzMKICAgIE1vZGU6ICI0ODB4ODAwIiA0ODB4ODAwIDYwCgpBbHRob3Vn aCBib3RoIHNob3cgdXAgYXMgY29ubmVjdGVkLCB0aGUgZmlyc3Qgb25lIGRvZXMgbm90IGhhdmUK YW55IHNpemUgYW5kIG5vIGF2YWlsYWJsZSBtb2Rlcy4gVGhpcyBjb25mdXNlcyB1c2Vyc3BhY2Ug dG9vbHMKKGUuZy4ga21zY3ViZSkgd2hvIGxvb2sgZm9yIGF2YWlsYWJsZSBtb2RlcyBmb3IgdGhl IGZpcnN0IGNvbm5lY3Rvci4KClRoZSByZWFzb24gZm9yIHRoZSBkdXBsaWNhdGVkIGNvbm5lY3Rv ciBpcyB0aGF0IG1jZGVfZHNpLmMgYW5kIHRoZQpEUk0gcGFuZWwgYnJpZGdlIGhlbHBlciBib3Ro IHNldCB1cCBhIERTSSBjb25uZWN0b3IsIHdpdGggbW9yZSBvciBsZXNzCnRoZSBzYW1lIGNvZGUu IFRoZSBjb25uZWN0b3Igc2V0IHVwIGJ5IHRoZSBEUk0gcGFuZWwgYnJpZGdlIGlzIHRoZQpvbmUg dGhhdCBpcyBjb3JyZWN0bHkgc2V0IHVwIGluIHRoZSBleGFtcGxlIGFib3ZlLgoKVGhlcmVmb3Jl IHdlIGNhbiBqdXN0IHJlbW92ZSB0aGUgY29ubmVjdG9yIHNldHVwIGZyb20gbWNkZV9kc2kuYwph bmQgbGV0IHRoZSBEUk0gY29yZSBoYW5kbGUgYWxsIHRoZSBoYXJkIHdvcmsuCgpTaWduZWQtb2Zm LWJ5OiBTdGVwaGFuIEdlcmhvbGQgPHN0ZXBoYW5AZ2VyaG9sZC5uZXQ+Ci0tLQogZHJpdmVycy9n cHUvZHJtL21jZGUvbWNkZV9kc2kuYyB8IDUyICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1MSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaS5jIGIvZHJpdmVycy9ncHUv ZHJtL21jZGUvbWNkZV9kc2kuYwppbmRleCA0NzEwZjIzYjI5NjYuLmRmOTYzZTA3OGMzNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kc2kuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbWNkZS9tY2RlX2RzaS5jCkBAIC0zOSw3ICszOSw2IEBAIHN0cnVjdCBtY2RlX2RzaSB7 CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCBtY2RlICptY2RlOwogCXN0cnVjdCBkcm1f YnJpZGdlIGJyaWRnZTsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CiAJc3RydWN0 IGRybV9wYW5lbCAqcGFuZWw7CiAJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZV9vdXQ7CiAJc3Ry dWN0IG1pcGlfZHNpX2hvc3QgZHNpX2hvc3Q7CkBAIC02NCwxMSArNjMsNiBAQCBzdGF0aWMgaW5s aW5lIHN0cnVjdCBtY2RlX2RzaSAqaG9zdF90b19tY2RlX2RzaShzdHJ1Y3QgbWlwaV9kc2lfaG9z dCAqaCkKIAlyZXR1cm4gY29udGFpbmVyX29mKGgsIHN0cnVjdCBtY2RlX2RzaSwgZHNpX2hvc3Qp OwogfQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBtY2RlX2RzaSAqY29ubmVjdG9yX3RvX21jZGVf ZHNpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjKQotewotCXJldHVybiBjb250YWluZXJfb2YoYywg c3RydWN0IG1jZGVfZHNpLCBjb25uZWN0b3IpOwotfQotCiBib29sIG1jZGVfZHNpX2lycShzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNpKQogewogCXN0cnVjdCBtY2RlX2RzaSAqZDsKQEAgLTg0 Myw2NyArODM3LDIzIEBAIHN0YXRpYyB2b2lkIG1jZGVfZHNpX2JyaWRnZV9kaXNhYmxlKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpCiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGQtPmxwX2Nsayk7 CiB9CiAKLS8qCi0gKiBUaGlzIGNvbm5lY3RvciBuZWVkcyBubyBzcGVjaWFsIGhhbmRsaW5nLCBq dXN0IHVzZSB0aGUgZGVmYXVsdAotICogaGVscGVycyBmb3IgZXZlcnl0aGluZy4gSXQncyBwcmV0 dHkgZHVtbXkuCi0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBt Y2RlX2RzaV9jb25uZWN0b3JfZnVuY3MgPSB7Ci0JLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX3Jlc2V0LAotCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVf Y29ubmVjdG9yX21vZGVzLAotCS5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAotCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxp Y2F0ZV9zdGF0ZSwKLQkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKLX07Ci0KLXN0YXRpYyBpbnQgbWNkZV9kc2lfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCi17Ci0Jc3RydWN0IG1jZGVfZHNp ICpkID0gY29ubmVjdG9yX3RvX21jZGVfZHNpKGNvbm5lY3Rvcik7Ci0KLQkvKiBKdXN0IHBhc3Mg dGhlIHF1ZXN0aW9uIHRvIHRoZSBwYW5lbCAqLwotCWlmIChkLT5wYW5lbCkKLQkJcmV0dXJuIGRy bV9wYW5lbF9nZXRfbW9kZXMoZC0+cGFuZWwpOwotCi0JLyogVE9ETzogZGVhbCB3aXRoIGJyaWRn ZXMgKi8KLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzCi1tY2RlX2RzaV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewotCS5n ZXRfbW9kZXMgPSBtY2RlX2RzaV9nZXRfbW9kZXMsCi19OwotCiBzdGF0aWMgaW50IG1jZGVfZHNp X2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKIHsKIAlzdHJ1Y3QgbWNk ZV9kc2kgKmQgPSBicmlkZ2VfdG9fbWNkZV9kc2koYnJpZGdlKTsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtID0gYnJpZGdlLT5kZXY7CiAJaW50IHJldDsKIAotCWRybV9jb25uZWN0b3JfaGVscGVy X2FkZCgmZC0+Y29ubmVjdG9yLAotCQkJCSAmbWNkZV9kc2lfY29ubmVjdG9yX2hlbHBlcl9mdW5j cyk7Ci0KIAlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZHJtLCBEUklWRVJfQVRPTUlDKSkg ewogCQlkZXZfZXJyKGQtPmRldiwgIndlIG5lZWQgYXRvbWljIHVwZGF0ZXNcbiIpOwogCQlyZXR1 cm4gLUVOT1RTVVBQOwogCX0KIAotCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkcm0sICZkLT5j b25uZWN0b3IsCi0JCQkJICZtY2RlX2RzaV9jb25uZWN0b3JfZnVuY3MsCi0JCQkJIERSTV9NT0RF X0NPTk5FQ1RPUl9EU0kpOwotCWlmIChyZXQpIHsKLQkJZGV2X2VycihkLT5kZXYsICJmYWlsZWQg dG8gaW5pdGlhbGl6ZSBEU0kgYnJpZGdlIGNvbm5lY3RvclxuIik7Ci0JCXJldHVybiByZXQ7Ci0J fQotCWQtPmNvbm5lY3Rvci5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsKLQkv KiBUaGUgZW5jb2RlciBpbiB0aGUgYnJpZGdlIGF0dGFjaGVkIHRvIHRoZSBEU0kgYnJpZGdlICov Ci0JZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmZC0+Y29ubmVjdG9yLCBicmlkZ2UtPmVu Y29kZXIpOwotCS8qIFRoZW4gd2UgYXR0YWNoIHRoZSBEU0kgYnJpZGdlIHRvIHRoZSBvdXRwdXQg KHBhbmVsIGV0YykgYnJpZGdlICovCisJLyogQXR0YWNoIHRoZSBEU0kgYnJpZGdlIHRvIHRoZSBv dXRwdXQgKHBhbmVsIGV0YykgYnJpZGdlICovCiAJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goYnJp ZGdlLT5lbmNvZGVyLCBkLT5icmlkZ2Vfb3V0LCBicmlkZ2UpOwogCWlmIChyZXQpIHsKIAkJZGV2 X2VycihkLT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIHRoZSBEU0kgYnJpZGdlXG4iKTsKIAkJcmV0 dXJuIHJldDsKIAl9Ci0JZC0+Y29ubmVjdG9yLnN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29u bmVjdGVkOwogCiAJcmV0dXJuIDA7CiB9Ci0tIAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==