From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephan Gerhold Subject: [PATCH 2/7] drm/mcde: Fix frame sync setup for video mode panels Date: Wed, 6 Nov 2019 17:58:30 +0100 Message-ID: <20191106165835.2863-3-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 The MCDE driver differentiates only between "te_sync" (for hardware TE0 sync) and software sync (i.e. manually triggered updates) at the moment. However, none of these options work correctly for video mode panels. Therefore, we need to make some changes to make them work correctly: - Select hardware sync coming from the (DSI) formatter. - Keep the FIFO permanently enabled (otherwise MCDE will stop feeding data to the panel). - Skip manual software sync (this is not necessary in video mode). Automatically detect if the connected panel is using video mode and enable the necessary changes in that case. Signed-off-by: Stephan Gerhold --- drivers/gpu/drm/mcde/mcde_display.c | 32 ++++++++++++++++------------- drivers/gpu/drm/mcde/mcde_drm.h | 1 + drivers/gpu/drm/mcde/mcde_drv.c | 2 -- drivers/gpu/drm/mcde/mcde_dsi.c | 13 ++++++++++-- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/mcde/mcde_display.c b/drivers/gpu/drm/mcde/mcde_display.c index 65522481b367..a3375a974caf 100644 --- a/drivers/gpu/drm/mcde/mcde_display.c +++ b/drivers/gpu/drm/mcde/mcde_display.c @@ -498,24 +498,20 @@ static void mcde_configure_channel(struct mcde *mcde, enum mcde_channel ch, } /* Set up channel 0 sync (based on chnl_update_registers()) */ - if (mcde->te_sync) { - /* - * Turn on hardware TE0 synchronization - */ + if (mcde->video_mode || mcde->te_sync) val = MCDE_CHNLXSYNCHMOD_SRC_SYNCH_HARDWARE << MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SHIFT; - val |= MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_TE0 - << MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_SHIFT; - } else { - /* - * Set up sync source to software, out sync formatter - * Code mostly from mcde_hw.c chnl_update_registers() - */ + else val = MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SOFTWARE << MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SHIFT; + + if (mcde->te_sync) + val |= MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_TE0 + << MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_SHIFT; + else val |= MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_FORMATTER << MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_SHIFT; - } + writel(val, mcde->regs + sync); /* Set up pixels per line and lines per frame */ @@ -938,6 +934,13 @@ static void mcde_display_enable(struct drm_simple_display_pipe *pipe, drm_crtc_vblank_on(crtc); + if (mcde->video_mode) + /* + * Keep FIFO permanently enabled in video mode, + * otherwise MCDE will stop feeding data to the panel. + */ + mcde_enable_fifo(mcde, MCDE_FIFO_A); + dev_info(drm->dev, "MCDE display is enabled\n"); } @@ -1047,8 +1050,9 @@ static void mcde_display_update(struct drm_simple_display_pipe *pipe, */ if (fb) { mcde_set_extsrc(mcde, drm_fb_cma_get_gem_addr(fb, pstate, 0)); - /* Send a single frame using software sync */ - mcde_display_send_one_frame(mcde); + if (!mcde->video_mode) + /* Send a single frame using software sync */ + mcde_display_send_one_frame(mcde); dev_info_once(mcde->dev, "sent first display update\n"); } else { /* diff --git a/drivers/gpu/drm/mcde/mcde_drm.h b/drivers/gpu/drm/mcde/mcde_drm.h index dab4db021231..80edd6628979 100644 --- a/drivers/gpu/drm/mcde/mcde_drm.h +++ b/drivers/gpu/drm/mcde/mcde_drm.h @@ -19,6 +19,7 @@ struct mcde { struct mipi_dsi_device *mdsi; s16 stride; bool te_sync; + bool video_mode; bool oneshot_mode; unsigned int flow_active; spinlock_t flow_lock; /* Locks the channel flow control */ diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c index 0ccd3b0308c2..9008ddcfc528 100644 --- a/drivers/gpu/drm/mcde/mcde_drv.c +++ b/drivers/gpu/drm/mcde/mcde_drv.c @@ -331,8 +331,6 @@ static int mcde_probe(struct platform_device *pdev) drm->dev_private = mcde; platform_set_drvdata(pdev, drm); - /* Enable use of the TE signal and interrupt */ - mcde->te_sync = true; /* Enable continuous updates: this is what Linux' framebuffer expects */ mcde->oneshot_mode = false; drm->dev_private = mcde; diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c index d6214d3c8b33..ffd2e0b64628 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -130,6 +130,15 @@ bool mcde_dsi_irq(struct mipi_dsi_device *mdsi) return te_received; } +static void mcde_dsi_attach_to_mcde(struct mcde_dsi *d) +{ + d->mcde->mdsi = d->mdsi; + + d->mcde->video_mode = !!(d->mdsi->mode_flags & MIPI_DSI_MODE_VIDEO); + /* Enable use of the TE signal for all command mode panels */ + d->mcde->te_sync = !d->mcde->video_mode; +} + static int mcde_dsi_host_attach(struct mipi_dsi_host *host, struct mipi_dsi_device *mdsi) { @@ -148,7 +157,7 @@ static int mcde_dsi_host_attach(struct mipi_dsi_host *host, d->mdsi = mdsi; if (d->mcde) - d->mcde->mdsi = mdsi; + mcde_dsi_attach_to_mcde(d); return 0; } @@ -901,7 +910,7 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, d->mcde = mcde; /* If the display attached before binding, set this up */ if (d->mdsi) - d->mcde->mdsi = d->mdsi; + mcde_dsi_attach_to_mcde(d); /* Obtain the clocks */ d->hs_clk = devm_clk_get(dev, "hs"); -- 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 61B94C5DF65 for ; Wed, 6 Nov 2019 17:01:14 +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 3F9D121882 for ; Wed, 6 Nov 2019 17:01:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3F9D121882 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 77FE86EDEF; Wed, 6 Nov 2019 17:01:10 +0000 (UTC) Received: from mo6-p01-ob.smtp.rzone.de (mo6-p01-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5301::3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 960BA6EDEF for ; Wed, 6 Nov 2019 17:01:09 +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 e07688vA6H13hLs (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:03 +0100 (CET) From: Stephan Gerhold To: Linus Walleij Subject: [PATCH 2/7] drm/mcde: Fix frame sync setup for video mode panels Date: Wed, 6 Nov 2019 17:58:30 +0100 Message-Id: <20191106165835.2863-3-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=1573059666; 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=EeS87K2j7Au0Fo7/boVudqSloB+oM7kXBhKYEZ0FXrc=; b=SrSiFaXc9jAamgI3DSTWivMZl3byc0pD7Vu9mmYBaqcFwWZoIJqMvtpf8tl0u0pbSw rJyLo9ahTx9mkZtzVr4g2zLnSQ6rnWE+blM4jXey9VKn9WSh73X4s9yFXHP5rSzC06K2 Sy6w2iEQrCAOR/RKwMYnYjZb4w7QJiysG7uiH1dwdGB0mLpQoQCoRG3Nipm1sLDYlIF0 P1IAIF+81lBjmdOWxFjPNh3VPn2XcuRppj1G1v2NfarcrqVGe/H+CJwSLVasw+2GgQPU lAxV6P4zbo7eClAMDH9QI2JzD8yYYNTmQupk0K87GlNlR49+/rkYms1Ub5frr4cgbcXz yeNQ== 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: <20191106165830.LhYI_8R7b_J5mId_OAVaPU7Qol0x4NadG9idfgqoAmI@z> VGhlIE1DREUgZHJpdmVyIGRpZmZlcmVudGlhdGVzIG9ubHkgYmV0d2VlbiAidGVfc3luYyIKKGZv ciBoYXJkd2FyZSBURTAgc3luYykgYW5kIHNvZnR3YXJlIHN5bmMKKGkuZS4gbWFudWFsbHkgdHJp Z2dlcmVkIHVwZGF0ZXMpIGF0IHRoZSBtb21lbnQuCgpIb3dldmVyLCBub25lIG9mIHRoZXNlIG9w dGlvbnMgd29yayBjb3JyZWN0bHkgZm9yIHZpZGVvIG1vZGUgcGFuZWxzLgpUaGVyZWZvcmUsIHdl IG5lZWQgdG8gbWFrZSBzb21lIGNoYW5nZXMgdG8gbWFrZSB0aGVtIHdvcmsgY29ycmVjdGx5OgoK ICAtIFNlbGVjdCBoYXJkd2FyZSBzeW5jIGNvbWluZyBmcm9tIHRoZSAoRFNJKSBmb3JtYXR0ZXIu CiAgLSBLZWVwIHRoZSBGSUZPIHBlcm1hbmVudGx5IGVuYWJsZWQgKG90aGVyd2lzZSBNQ0RFIHdp bGwgc3RvcAogICAgZmVlZGluZyBkYXRhIHRvIHRoZSBwYW5lbCkuCiAgLSBTa2lwIG1hbnVhbCBz b2Z0d2FyZSBzeW5jICh0aGlzIGlzIG5vdCBuZWNlc3NhcnkgaW4gdmlkZW8gbW9kZSkuCgpBdXRv bWF0aWNhbGx5IGRldGVjdCBpZiB0aGUgY29ubmVjdGVkIHBhbmVsIGlzIHVzaW5nIHZpZGVvIG1v ZGUKYW5kIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IGNoYW5nZXMgaW4gdGhhdCBjYXNlLgoKU2lnbmVk LW9mZi1ieTogU3RlcGhhbiBHZXJob2xkIDxzdGVwaGFuQGdlcmhvbGQubmV0PgotLS0KIGRyaXZl cnMvZ3B1L2RybS9tY2RlL21jZGVfZGlzcGxheS5jIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJtLmggICAgIHwgIDEgKwogZHJp dmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcnYuYyAgICAgfCAgMiAtLQogZHJpdmVycy9ncHUvZHJt L21jZGUvbWNkZV9kc2kuYyAgICAgfCAxMyArKysrKysrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwg MzAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21jZGUvbWNkZV9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rp c3BsYXkuYwppbmRleCA2NTUyMjQ4MWIzNjcuLmEzMzc1YTk3NGNhZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21jZGUvbWNkZV9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21j ZGUvbWNkZV9kaXNwbGF5LmMKQEAgLTQ5OCwyNCArNDk4LDIwIEBAIHN0YXRpYyB2b2lkIG1jZGVf Y29uZmlndXJlX2NoYW5uZWwoc3RydWN0IG1jZGUgKm1jZGUsIGVudW0gbWNkZV9jaGFubmVsIGNo LAogCX0KIAogCS8qIFNldCB1cCBjaGFubmVsIDAgc3luYyAoYmFzZWQgb24gY2hubF91cGRhdGVf cmVnaXN0ZXJzKCkpICovCi0JaWYgKG1jZGUtPnRlX3N5bmMpIHsKLQkJLyoKLQkJICogVHVybiBv biBoYXJkd2FyZSBURTAgc3luY2hyb25pemF0aW9uCi0JCSAqLworCWlmIChtY2RlLT52aWRlb19t b2RlIHx8IG1jZGUtPnRlX3N5bmMpCiAJCXZhbCA9IE1DREVfQ0hOTFhTWU5DSE1PRF9TUkNfU1lO Q0hfSEFSRFdBUkUKIAkJCTw8IE1DREVfQ0hOTFhTWU5DSE1PRF9TUkNfU1lOQ0hfU0hJRlQ7Ci0J CXZhbCB8PSBNQ0RFX0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19URTAKLQkJCTw8IE1DREVf Q0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX1NISUZUOwotCX0gZWxzZSB7Ci0JCS8qCi0JCSAq IFNldCB1cCBzeW5jIHNvdXJjZSB0byBzb2Z0d2FyZSwgb3V0IHN5bmMgZm9ybWF0dGVyCi0JCSAq IENvZGUgbW9zdGx5IGZyb20gbWNkZV9ody5jIGNobmxfdXBkYXRlX3JlZ2lzdGVycygpCi0JCSAq LworCWVsc2UKIAkJdmFsID0gTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9TT0ZUV0FSRQog CQkJPDwgTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9TSElGVDsKKworCWlmIChtY2RlLT50 ZV9zeW5jKQorCQl2YWwgfD0gTUNERV9DSE5MWFNZTkNITU9EX09VVF9TWU5DSF9TUkNfVEUwCisJ CQk8PCBNQ0RFX0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19TSElGVDsKKwllbHNlCiAJCXZh bCB8PSBNQ0RFX0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19GT1JNQVRURVIKIAkJCTw8IE1D REVfQ0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX1NISUZUOwotCX0KKwogCXdyaXRlbCh2YWws IG1jZGUtPnJlZ3MgKyBzeW5jKTsKIAogCS8qIFNldCB1cCBwaXhlbHMgcGVyIGxpbmUgYW5kIGxp bmVzIHBlciBmcmFtZSAqLwpAQCAtOTM4LDYgKzkzNCwxMyBAQCBzdGF0aWMgdm9pZCBtY2RlX2Rp c3BsYXlfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKIAogCWRy bV9jcnRjX3ZibGFua19vbihjcnRjKTsKIAorCWlmIChtY2RlLT52aWRlb19tb2RlKQorCQkvKgor CQkgKiBLZWVwIEZJRk8gcGVybWFuZW50bHkgZW5hYmxlZCBpbiB2aWRlbyBtb2RlLAorCQkgKiBv dGhlcndpc2UgTUNERSB3aWxsIHN0b3AgZmVlZGluZyBkYXRhIHRvIHRoZSBwYW5lbC4KKwkJICov CisJCW1jZGVfZW5hYmxlX2ZpZm8obWNkZSwgTUNERV9GSUZPX0EpOworCiAJZGV2X2luZm8oZHJt LT5kZXYsICJNQ0RFIGRpc3BsYXkgaXMgZW5hYmxlZFxuIik7CiB9CiAKQEAgLTEwNDcsOCArMTA1 MCw5IEBAIHN0YXRpYyB2b2lkIG1jZGVfZGlzcGxheV91cGRhdGUoc3RydWN0IGRybV9zaW1wbGVf ZGlzcGxheV9waXBlICpwaXBlLAogCSAqLwogCWlmIChmYikgewogCQltY2RlX3NldF9leHRzcmMo bWNkZSwgZHJtX2ZiX2NtYV9nZXRfZ2VtX2FkZHIoZmIsIHBzdGF0ZSwgMCkpOwotCQkvKiBTZW5k IGEgc2luZ2xlIGZyYW1lIHVzaW5nIHNvZnR3YXJlIHN5bmMgKi8KLQkJbWNkZV9kaXNwbGF5X3Nl bmRfb25lX2ZyYW1lKG1jZGUpOworCQlpZiAoIW1jZGUtPnZpZGVvX21vZGUpCisJCQkvKiBTZW5k IGEgc2luZ2xlIGZyYW1lIHVzaW5nIHNvZnR3YXJlIHN5bmMgKi8KKwkJCW1jZGVfZGlzcGxheV9z ZW5kX29uZV9mcmFtZShtY2RlKTsKIAkJZGV2X2luZm9fb25jZShtY2RlLT5kZXYsICJzZW50IGZp cnN0IGRpc3BsYXkgdXBkYXRlXG4iKTsKIAl9IGVsc2UgewogCQkvKgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVf ZHJtLmgKaW5kZXggZGFiNGRiMDIxMjMxLi44MGVkZDY2Mjg5NzkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tY2RlL21jZGVfZHJtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNk ZV9kcm0uaApAQCAtMTksNiArMTksNyBAQCBzdHJ1Y3QgbWNkZSB7CiAJc3RydWN0IG1pcGlfZHNp X2RldmljZSAqbWRzaTsKIAlzMTYgc3RyaWRlOwogCWJvb2wgdGVfc3luYzsKKwlib29sIHZpZGVv X21vZGU7CiAJYm9vbCBvbmVzaG90X21vZGU7CiAJdW5zaWduZWQgaW50IGZsb3dfYWN0aXZlOwog CXNwaW5sb2NrX3QgZmxvd19sb2NrOyAvKiBMb2NrcyB0aGUgY2hhbm5lbCBmbG93IGNvbnRyb2wg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMgYi9kcml2ZXJz L2dwdS9kcm0vbWNkZS9tY2RlX2Rydi5jCmluZGV4IDBjY2QzYjAzMDhjMi4uOTAwOGRkY2ZjNTI4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rydi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMKQEAgLTMzMSw4ICszMzEsNiBAQCBzdGF0aWMgaW50 IG1jZGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlkcm0tPmRldl9wcml2 YXRlID0gbWNkZTsKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcm0pOwogCi0JLyogRW5h YmxlIHVzZSBvZiB0aGUgVEUgc2lnbmFsIGFuZCBpbnRlcnJ1cHQgKi8KLQltY2RlLT50ZV9zeW5j ID0gdHJ1ZTsKIAkvKiBFbmFibGUgY29udGludW91cyB1cGRhdGVzOiB0aGlzIGlzIHdoYXQgTGlu dXgnIGZyYW1lYnVmZmVyIGV4cGVjdHMgKi8KIAltY2RlLT5vbmVzaG90X21vZGUgPSBmYWxzZTsK IAlkcm0tPmRldl9wcml2YXRlID0gbWNkZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t Y2RlL21jZGVfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaS5jCmluZGV4IGQ2 MjE0ZDNjOGIzMy4uZmZkMmUwYjY0NjI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWNk ZS9tY2RlX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHNpLmMKQEAgLTEz MCw2ICsxMzAsMTUgQEAgYm9vbCBtY2RlX2RzaV9pcnEoc3RydWN0IG1pcGlfZHNpX2RldmljZSAq bWRzaSkKIAlyZXR1cm4gdGVfcmVjZWl2ZWQ7CiB9CiAKK3N0YXRpYyB2b2lkIG1jZGVfZHNpX2F0 dGFjaF90b19tY2RlKHN0cnVjdCBtY2RlX2RzaSAqZCkKK3sKKwlkLT5tY2RlLT5tZHNpID0gZC0+ bWRzaTsKKworCWQtPm1jZGUtPnZpZGVvX21vZGUgPSAhIShkLT5tZHNpLT5tb2RlX2ZsYWdzICYg TUlQSV9EU0lfTU9ERV9WSURFTyk7CisJLyogRW5hYmxlIHVzZSBvZiB0aGUgVEUgc2lnbmFsIGZv ciBhbGwgY29tbWFuZCBtb2RlIHBhbmVscyAqLworCWQtPm1jZGUtPnRlX3N5bmMgPSAhZC0+bWNk ZS0+dmlkZW9fbW9kZTsKK30KKwogc3RhdGljIGludCBtY2RlX2RzaV9ob3N0X2F0dGFjaChzdHJ1 Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAkJCQlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNp KQogewpAQCAtMTQ4LDcgKzE1Nyw3IEBAIHN0YXRpYyBpbnQgbWNkZV9kc2lfaG9zdF9hdHRhY2go c3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAKIAlkLT5tZHNpID0gbWRzaTsKIAlpZiAoZC0+ bWNkZSkKLQkJZC0+bWNkZS0+bWRzaSA9IG1kc2k7CisJCW1jZGVfZHNpX2F0dGFjaF90b19tY2Rl KGQpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC05MDEsNyArOTEwLDcgQEAgc3RhdGljIGludCBtY2Rl X2RzaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAogCWQt Pm1jZGUgPSBtY2RlOwogCS8qIElmIHRoZSBkaXNwbGF5IGF0dGFjaGVkIGJlZm9yZSBiaW5kaW5n LCBzZXQgdGhpcyB1cCAqLwogCWlmIChkLT5tZHNpKQotCQlkLT5tY2RlLT5tZHNpID0gZC0+bWRz aTsKKwkJbWNkZV9kc2lfYXR0YWNoX3RvX21jZGUoZCk7CiAKIAkvKiBPYnRhaW4gdGhlIGNsb2Nr cyAqLwogCWQtPmhzX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJocyIpOwotLSAKMi4yMy4wCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=