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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 38312C19759 for ; Thu, 1 Aug 2019 03:46:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F3E4E214DA for ; Thu, 1 Aug 2019 03:46:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ZAubX0oe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729655AbfHADq3 (ORCPT ); Wed, 31 Jul 2019 23:46:29 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:33169 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729771AbfHADo5 (ORCPT ); Wed, 31 Jul 2019 23:44:57 -0400 Received: by mail-pg1-f193.google.com with SMTP id n190so1833090pgn.0 for ; Wed, 31 Jul 2019 20:44:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TafGTDaLfQIiKJYxJrrpSrigtAbrs7F+Anr4pE3NROk=; b=ZAubX0oegH5tBSxqyYzTmKkuh6MwE2oNG/rl//kpv5vB42IxMZ6QjzgrVhl+gq6+sq MI2sm/V0uzX6tJbaxyMJFcRCh8ZJx4LSNtWHmbAPC+Ntmwv/yrBnQuGPtesxy9Y9f/tf JJAjUo+b20mkv8RJpKuRYf2TfY0Bnj7trU38qyDV1xD+QXGI3Ae0nTL4Q/dw2Qa9MA3y GBoUyQskEB+L8X3FTNkzYVHxlltlBM7mh3Y90aZmvgXk4UsOhrO21bBKwNI8VrRhpEnK s1y7Zf5u4mibVvh3KLnrH9J0JHWAorKCO+p70KzGRud9ghzFqBmBKsuRif70peb2iv6k +W2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TafGTDaLfQIiKJYxJrrpSrigtAbrs7F+Anr4pE3NROk=; b=eJFPjOZwsvpwb5eOgEEdHoZHnXQtXE47e1HvglNLmccJnwCTdcswjSQmZt9YzkbHuV VbaFpD94Q5Tb/tJEvkTFcfQS75AWxhCR3ix9HTE/fUtJGNkyTZ33l8q+/aUcqX8GFr5k RSmzJQ8uVOWC/B+LySOuJCQvxgIloFMzeSLOfpCfl2SgTmnDJol/KdWQ4k3xn+/zbdgb 0jfgiqCYD/QUs3geXr600dXo9Zsdi5+Sm1cXSv3B9txXCyAb8eMCyBk8IB2tnP1ymKnN p73z1RWeVoSia7oG089DYczaNZZYphsTEOYSfydTr952gp4uNVHNq0Kxb+D6MIeriIxT pd8w== X-Gm-Message-State: APjAAAUvk1v2gjd9yx8fjbTyhfS9lgHBQNp9u1NrANAjQfZrUUJCPIvX sPyUS4Pq+j8MZRFMjEL0sbFZ4vmiaM8= X-Google-Smtp-Source: APXvYqzny3AHyMt5/ZveQdmI2/z/Y11lXel2SZs+jcWAzxgVZAm89DQZFbxQpL8AJ2BYJNRKjulrYg== X-Received: by 2002:a63:3fc9:: with SMTP id m192mr119070666pga.429.1564631096077; Wed, 31 Jul 2019 20:44:56 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.54 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:55 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 07/26] drm: kirin: Rename ade_plane to kirin_plane Date: Thu, 1 Aug 2019 03:44:20 +0000 Message-Id: <20190801034439.98227-8-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames the struct ade_plane to kirin_plane. The struct kirin_plane will later used by both kirin620 and future kirin960 driver, and will be moved to a common kirin_drm_drv.h in a future patch Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 57 ++++++++++--------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 73dff21bed6a..c09040876e68 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -41,8 +41,9 @@ #define to_ade_crtc(crtc) \ container_of(crtc, struct ade_crtc, base) -#define to_ade_plane(plane) \ - container_of(plane, struct ade_plane, base) +#define to_kirin_plane(plane) \ + container_of(plane, struct kirin_plane, base) + struct ade_hw_ctx { void __iomem *base; @@ -62,15 +63,15 @@ struct ade_crtc { bool enable; }; -struct ade_plane { +struct kirin_plane { struct drm_plane base; - void *ctx; - u8 ch; /* channel */ + void *hw_ctx; + u32 ch; }; struct ade_data { struct ade_crtc acrtc; - struct ade_plane aplane[ADE_CH_NUM]; + struct kirin_plane planes[ADE_CH_NUM]; struct ade_hw_ctx ctx; }; @@ -795,16 +796,16 @@ static void ade_compositor_routing_disable(void __iomem *base, u32 ch) /* * Typicaly, a channel looks like: DMA-->clip-->scale-->ctrans-->compositor */ -static void ade_update_channel(struct ade_plane *aplane, +static void ade_update_channel(struct kirin_plane *kplane, struct drm_framebuffer *fb, int crtc_x, int crtc_y, unsigned int crtc_w, unsigned int crtc_h, u32 src_x, u32 src_y, u32 src_w, u32 src_h) { - struct ade_hw_ctx *ctx = aplane->ctx; + struct ade_hw_ctx *ctx = kplane->hw_ctx; void __iomem *base = ctx->base; u32 fmt = ade_get_format(fb->format->format); - u32 ch = aplane->ch; + u32 ch = kplane->ch; u32 in_w; u32 in_h; @@ -828,11 +829,11 @@ static void ade_update_channel(struct ade_plane *aplane, ade_compositor_routing_set(base, ch, crtc_x, crtc_y, in_w, in_h, fmt); } -static void ade_disable_channel(struct ade_plane *aplane) +static void ade_disable_channel(struct kirin_plane *kplane) { - struct ade_hw_ctx *ctx = aplane->ctx; + struct ade_hw_ctx *ctx = kplane->hw_ctx; void __iomem *base = ctx->base; - u32 ch = aplane->ch; + u32 ch = kplane->ch; DRM_DEBUG_DRIVER("disable channel%d\n", ch + 1); @@ -894,10 +895,10 @@ static int ade_plane_atomic_check(struct drm_plane *plane, static void ade_plane_atomic_update(struct drm_plane *plane, struct drm_plane_state *old_state) { - struct drm_plane_state *state = plane->state; - struct ade_plane *aplane = to_ade_plane(plane); + struct drm_plane_state *state = plane->state; + struct kirin_plane *kplane = to_kirin_plane(plane); - ade_update_channel(aplane, state->fb, state->crtc_x, state->crtc_y, + ade_update_channel(kplane, state->fb, state->crtc_x, state->crtc_y, state->crtc_w, state->crtc_h, state->src_x >> 16, state->src_y >> 16, state->src_w >> 16, state->src_h >> 16); @@ -906,9 +907,9 @@ static void ade_plane_atomic_update(struct drm_plane *plane, static void ade_plane_atomic_disable(struct drm_plane *plane, struct drm_plane_state *old_state) { - struct ade_plane *aplane = to_ade_plane(plane); + struct kirin_plane *kplane = to_kirin_plane(plane); - ade_disable_channel(aplane); + ade_disable_channel(kplane); } static const struct drm_plane_helper_funcs ade_plane_helper_funcs = { @@ -926,7 +927,7 @@ static struct drm_plane_funcs ade_plane_funcs = { .atomic_destroy_state = drm_atomic_helper_plane_destroy_state, }; -static int ade_plane_init(struct drm_device *dev, struct ade_plane *aplane, +static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, enum drm_plane_type type) { const u32 *fmts; @@ -934,18 +935,18 @@ static int ade_plane_init(struct drm_device *dev, struct ade_plane *aplane, int ret = 0; /* get properties */ - fmts_cnt = ade_get_channel_formats(aplane->ch, &fmts); + fmts_cnt = ade_get_channel_formats(kplane->ch, &fmts); if (ret) return ret; - ret = drm_universal_plane_init(dev, &aplane->base, 1, &ade_plane_funcs, + ret = drm_universal_plane_init(dev, &kplane->base, 1, &ade_plane_funcs, fmts, fmts_cnt, NULL, type, NULL); if (ret) { - DRM_ERROR("fail to init plane, ch=%d\n", aplane->ch); + DRM_ERROR("fail to init plane, ch=%d\n", kplane->ch); return ret; } - drm_plane_helper_add(&aplane->base, &ade_plane_helper_funcs); + drm_plane_helper_add(&kplane->base, &ade_plane_helper_funcs); return 0; } @@ -1007,7 +1008,7 @@ static int ade_drm_init(struct platform_device *pdev) struct ade_data *ade; struct ade_hw_ctx *ctx; struct ade_crtc *acrtc; - struct ade_plane *aplane; + struct kirin_plane *kplane; enum drm_plane_type type; int ret; int i; @@ -1033,19 +1034,19 @@ static int ade_drm_init(struct platform_device *pdev) * need to do. */ for (i = 0; i < ADE_CH_NUM; i++) { - aplane = &ade->aplane[i]; - aplane->ch = i; - aplane->ctx = ctx; + kplane = &ade->planes[i]; + kplane->ch = i; + kplane->hw_ctx = ctx; type = i == PRIMARY_CH ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; - ret = ade_plane_init(dev, aplane, type); + ret = ade_plane_init(dev, kplane, type); if (ret) return ret; } /* crtc init */ - ret = ade_crtc_init(dev, &acrtc->base, &ade->aplane[PRIMARY_CH].base); + ret = ade_crtc_init(dev, &acrtc->base, &ade->planes[PRIMARY_CH].base); if (ret) return ret; -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Stultz Subject: [PATCH v3 07/26] drm: kirin: Rename ade_plane to kirin_plane Date: Thu, 1 Aug 2019 03:44:20 +0000 Message-ID: <20190801034439.98227-8-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id BB5AC6E33E for ; Thu, 1 Aug 2019 03:44:56 +0000 (UTC) Received: by mail-pg1-x542.google.com with SMTP id i18so33272373pgl.11 for ; Wed, 31 Jul 2019 20:44:56 -0700 (PDT) In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: lkml Cc: Xu YiPing , David Airlie , dri-devel , Rongrong Zou , Sam Ravnborg List-Id: dri-devel@lists.freedesktop.org RnJvbTogWHUgWWlQaW5nIDx4dXlpcGluZ0BoaXNpbGljb24uY29tPgoKQXMgcGFydCBvZiByZWZh Y3RvcmluZyB0aGUga2lyaW4gZHJpdmVyIHRvIGJldHRlciBzdXBwb3J0CmRpZmZlcmVudCBoYXJk d2FyZSByZXZpc2lvbnMsIHRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUKc3RydWN0IGFkZV9wbGFuZSB0 byBraXJpbl9wbGFuZS4KClRoZSBzdHJ1Y3Qga2lyaW5fcGxhbmUgd2lsbCBsYXRlciB1c2VkIGJ5 IGJvdGgga2lyaW42MjAgYW5kCmZ1dHVyZSBraXJpbjk2MCBkcml2ZXIsIGFuZCB3aWxsIGJlIG1v dmVkIHRvIGEgY29tbW9uCmtpcmluX2RybV9kcnYuaCBpbiBhIGZ1dHVyZSBwYXRjaAoKQ2M6IFJv bmdyb25nIFpvdSA8em91cm9uZ3JvbmdAZ21haWwuY29tPgpDYzogRGF2aWQgQWlybGllIDxhaXJs aWVkQGxpbnV4LmllPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpDYzogZHJp LWRldmVsIDxkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPgpDYzogU2FtIFJhdm5ib3Jn IDxzYW1AcmF2bmJvcmcub3JnPgpSZXZpZXdlZC1ieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJv cmcub3JnPgpTaWduZWQtb2ZmLWJ5OiBYdSBZaVBpbmcgPHh1eWlwaW5nQGhpc2lsaWNvbi5jb20+ Cltqc3R1bHR6OiByZXdvcmRlZCBjb21taXQgbWVzc2FnZV0KU2lnbmVkLW9mZi1ieTogSm9obiBT dHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+Ci0tLQogLi4uL2dwdS9kcm0vaGlzaWxpY29u L2tpcmluL2tpcmluX2RybV9hZGUuYyAgIHwgNTcgKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fYWRlLmMKaW5kZXggNzNkZmYyMWJl ZDZhLi5jMDkwNDA4NzZlNjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24v a2lyaW4va2lyaW5fZHJtX2FkZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2ly aW4va2lyaW5fZHJtX2FkZS5jCkBAIC00MSw4ICs0MSw5IEBACiAjZGVmaW5lIHRvX2FkZV9jcnRj KGNydGMpIFwKIAljb250YWluZXJfb2YoY3J0Yywgc3RydWN0IGFkZV9jcnRjLCBiYXNlKQogCi0j ZGVmaW5lIHRvX2FkZV9wbGFuZShwbGFuZSkgXAotCWNvbnRhaW5lcl9vZihwbGFuZSwgc3RydWN0 IGFkZV9wbGFuZSwgYmFzZSkKKyNkZWZpbmUgdG9fa2lyaW5fcGxhbmUocGxhbmUpIFwKKwljb250 YWluZXJfb2YocGxhbmUsIHN0cnVjdCBraXJpbl9wbGFuZSwgYmFzZSkKKwogCiBzdHJ1Y3QgYWRl X2h3X2N0eCB7CiAJdm9pZCBfX2lvbWVtICAqYmFzZTsKQEAgLTYyLDE1ICs2MywxNSBAQCBzdHJ1 Y3QgYWRlX2NydGMgewogCWJvb2wgZW5hYmxlOwogfTsKIAotc3RydWN0IGFkZV9wbGFuZSB7Citz dHJ1Y3Qga2lyaW5fcGxhbmUgewogCXN0cnVjdCBkcm1fcGxhbmUgYmFzZTsKLQl2b2lkICpjdHg7 Ci0JdTggY2g7IC8qIGNoYW5uZWwgKi8KKwl2b2lkICpod19jdHg7CisJdTMyIGNoOwogfTsKIAog c3RydWN0IGFkZV9kYXRhIHsKIAlzdHJ1Y3QgYWRlX2NydGMgYWNydGM7Ci0Jc3RydWN0IGFkZV9w bGFuZSBhcGxhbmVbQURFX0NIX05VTV07CisJc3RydWN0IGtpcmluX3BsYW5lIHBsYW5lc1tBREVf Q0hfTlVNXTsKIAlzdHJ1Y3QgYWRlX2h3X2N0eCBjdHg7CiB9OwogCkBAIC03OTUsMTYgKzc5Niwx NiBAQCBzdGF0aWMgdm9pZCBhZGVfY29tcG9zaXRvcl9yb3V0aW5nX2Rpc2FibGUodm9pZCBfX2lv bWVtICpiYXNlLCB1MzIgY2gpCiAvKgogICogVHlwaWNhbHksIGEgY2hhbm5lbCBsb29rcyBsaWtl OiBETUEtLT5jbGlwLS0+c2NhbGUtLT5jdHJhbnMtLT5jb21wb3NpdG9yCiAgKi8KLXN0YXRpYyB2 b2lkIGFkZV91cGRhdGVfY2hhbm5lbChzdHJ1Y3QgYWRlX3BsYW5lICphcGxhbmUsCitzdGF0aWMg dm9pZCBhZGVfdXBkYXRlX2NoYW5uZWwoc3RydWN0IGtpcmluX3BsYW5lICprcGxhbmUsCiAJCQkg ICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjcnRjX3gsCiAJCQkgICAgICAg aW50IGNydGNfeSwgdW5zaWduZWQgaW50IGNydGNfdywKIAkJCSAgICAgICB1bnNpZ25lZCBpbnQg Y3J0Y19oLCB1MzIgc3JjX3gsCiAJCQkgICAgICAgdTMyIHNyY195LCB1MzIgc3JjX3csIHUzMiBz cmNfaCkKIHsKLQlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4ID0gYXBsYW5lLT5jdHg7CisJc3RydWN0 IGFkZV9od19jdHggKmN0eCA9IGtwbGFuZS0+aHdfY3R4OwogCXZvaWQgX19pb21lbSAqYmFzZSA9 IGN0eC0+YmFzZTsKIAl1MzIgZm10ID0gYWRlX2dldF9mb3JtYXQoZmItPmZvcm1hdC0+Zm9ybWF0 KTsKLQl1MzIgY2ggPSBhcGxhbmUtPmNoOworCXUzMiBjaCA9IGtwbGFuZS0+Y2g7CiAJdTMyIGlu X3c7CiAJdTMyIGluX2g7CiAKQEAgLTgyOCwxMSArODI5LDExIEBAIHN0YXRpYyB2b2lkIGFkZV91 cGRhdGVfY2hhbm5lbChzdHJ1Y3QgYWRlX3BsYW5lICphcGxhbmUsCiAJYWRlX2NvbXBvc2l0b3Jf cm91dGluZ19zZXQoYmFzZSwgY2gsIGNydGNfeCwgY3J0Y195LCBpbl93LCBpbl9oLCBmbXQpOwog fQogCi1zdGF0aWMgdm9pZCBhZGVfZGlzYWJsZV9jaGFubmVsKHN0cnVjdCBhZGVfcGxhbmUgKmFw bGFuZSkKK3N0YXRpYyB2b2lkIGFkZV9kaXNhYmxlX2NoYW5uZWwoc3RydWN0IGtpcmluX3BsYW5l ICprcGxhbmUpCiB7Ci0Jc3RydWN0IGFkZV9od19jdHggKmN0eCA9IGFwbGFuZS0+Y3R4OworCXN0 cnVjdCBhZGVfaHdfY3R4ICpjdHggPSBrcGxhbmUtPmh3X2N0eDsKIAl2b2lkIF9faW9tZW0gKmJh c2UgPSBjdHgtPmJhc2U7Ci0JdTMyIGNoID0gYXBsYW5lLT5jaDsKKwl1MzIgY2ggPSBrcGxhbmUt PmNoOwogCiAJRFJNX0RFQlVHX0RSSVZFUigiZGlzYWJsZSBjaGFubmVsJWRcbiIsIGNoICsgMSk7 CiAKQEAgLTg5NCwxMCArODk1LDEwIEBAIHN0YXRpYyBpbnQgYWRlX3BsYW5lX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHN0YXRpYyB2b2lkIGFkZV9wbGFuZV9hdG9taWNf dXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpvbGRfc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZQkqc3RhdGUJPSBw bGFuZS0+c3RhdGU7Ci0Jc3RydWN0IGFkZV9wbGFuZSAqYXBsYW5lID0gdG9fYWRlX3BsYW5lKHBs YW5lKTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKKwlz dHJ1Y3Qga2lyaW5fcGxhbmUgKmtwbGFuZSA9IHRvX2tpcmluX3BsYW5lKHBsYW5lKTsKIAotCWFk ZV91cGRhdGVfY2hhbm5lbChhcGxhbmUsIHN0YXRlLT5mYiwgc3RhdGUtPmNydGNfeCwgc3RhdGUt PmNydGNfeSwKKwlhZGVfdXBkYXRlX2NoYW5uZWwoa3BsYW5lLCBzdGF0ZS0+ZmIsIHN0YXRlLT5j cnRjX3gsIHN0YXRlLT5jcnRjX3ksCiAJCQkgICBzdGF0ZS0+Y3J0Y193LCBzdGF0ZS0+Y3J0Y19o LAogCQkJICAgc3RhdGUtPnNyY194ID4+IDE2LCBzdGF0ZS0+c3JjX3kgPj4gMTYsCiAJCQkgICBz dGF0ZS0+c3JjX3cgPj4gMTYsIHN0YXRlLT5zcmNfaCA+PiAxNik7CkBAIC05MDYsOSArOTA3LDkg QEAgc3RhdGljIHZvaWQgYWRlX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCiBzdGF0aWMgdm9pZCBhZGVfcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUp CiB7Ci0Jc3RydWN0IGFkZV9wbGFuZSAqYXBsYW5lID0gdG9fYWRlX3BsYW5lKHBsYW5lKTsKKwlz dHJ1Y3Qga2lyaW5fcGxhbmUgKmtwbGFuZSA9IHRvX2tpcmluX3BsYW5lKHBsYW5lKTsKIAotCWFk ZV9kaXNhYmxlX2NoYW5uZWwoYXBsYW5lKTsKKwlhZGVfZGlzYWJsZV9jaGFubmVsKGtwbGFuZSk7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBhZGVfcGxh bmVfaGVscGVyX2Z1bmNzID0gewpAQCAtOTI2LDcgKzkyNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X3BsYW5lX2Z1bmNzIGFkZV9wbGFuZV9mdW5jcyA9IHsKIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAogfTsKIAotc3RhdGljIGlu dCBhZGVfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgYWRlX3BsYW5l ICphcGxhbmUsCitzdGF0aWMgaW50IGFkZV9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBraXJpbl9wbGFuZSAqa3BsYW5lLAogCQkJICBlbnVtIGRybV9wbGFuZV90eXBl IHR5cGUpCiB7CiAJY29uc3QgdTMyICpmbXRzOwpAQCAtOTM0LDE4ICs5MzUsMTggQEAgc3RhdGlj IGludCBhZGVfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgYWRlX3Bs YW5lICphcGxhbmUsCiAJaW50IHJldCA9IDA7CiAKIAkvKiBnZXQgIHByb3BlcnRpZXMgKi8KLQlm bXRzX2NudCA9IGFkZV9nZXRfY2hhbm5lbF9mb3JtYXRzKGFwbGFuZS0+Y2gsICZmbXRzKTsKKwlm bXRzX2NudCA9IGFkZV9nZXRfY2hhbm5lbF9mb3JtYXRzKGtwbGFuZS0+Y2gsICZmbXRzKTsKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0 KGRldiwgJmFwbGFuZS0+YmFzZSwgMSwgJmFkZV9wbGFuZV9mdW5jcywKKwlyZXQgPSBkcm1fdW5p dmVyc2FsX3BsYW5lX2luaXQoZGV2LCAma3BsYW5lLT5iYXNlLCAxLCAmYWRlX3BsYW5lX2Z1bmNz LAogCQkJCSAgICAgICBmbXRzLCBmbXRzX2NudCwgTlVMTCwgdHlwZSwgTlVMTCk7CiAJaWYgKHJl dCkgewotCQlEUk1fRVJST1IoImZhaWwgdG8gaW5pdCBwbGFuZSwgY2g9JWRcbiIsIGFwbGFuZS0+ Y2gpOworCQlEUk1fRVJST1IoImZhaWwgdG8gaW5pdCBwbGFuZSwgY2g9JWRcbiIsIGtwbGFuZS0+ Y2gpOwogCQlyZXR1cm4gcmV0OwogCX0KIAotCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZhcGxhbmUt PmJhc2UsICZhZGVfcGxhbmVfaGVscGVyX2Z1bmNzKTsKKwlkcm1fcGxhbmVfaGVscGVyX2FkZCgm a3BsYW5lLT5iYXNlLCAmYWRlX3BsYW5lX2hlbHBlcl9mdW5jcyk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTEwMDcsNyArMTAwOCw3IEBAIHN0YXRpYyBpbnQgYWRlX2RybV9pbml0KHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCiAJc3RydWN0IGFkZV9kYXRhICphZGU7CiAJc3RydWN0IGFkZV9o d19jdHggKmN0eDsKIAlzdHJ1Y3QgYWRlX2NydGMgKmFjcnRjOwotCXN0cnVjdCBhZGVfcGxhbmUg KmFwbGFuZTsKKwlzdHJ1Y3Qga2lyaW5fcGxhbmUgKmtwbGFuZTsKIAllbnVtIGRybV9wbGFuZV90 eXBlIHR5cGU7CiAJaW50IHJldDsKIAlpbnQgaTsKQEAgLTEwMzMsMTkgKzEwMzQsMTkgQEAgc3Rh dGljIGludCBhZGVfZHJtX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkgKiBu ZWVkIHRvIGRvLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBBREVfQ0hfTlVNOyBpKyspIHsKLQkJ YXBsYW5lID0gJmFkZS0+YXBsYW5lW2ldOwotCQlhcGxhbmUtPmNoID0gaTsKLQkJYXBsYW5lLT5j dHggPSBjdHg7CisJCWtwbGFuZSA9ICZhZGUtPnBsYW5lc1tpXTsKKwkJa3BsYW5lLT5jaCA9IGk7 CisJCWtwbGFuZS0+aHdfY3R4ID0gY3R4OwogCQl0eXBlID0gaSA9PSBQUklNQVJZX0NIID8gRFJN X1BMQU5FX1RZUEVfUFJJTUFSWSA6CiAJCQlEUk1fUExBTkVfVFlQRV9PVkVSTEFZOwogCi0JCXJl dCA9IGFkZV9wbGFuZV9pbml0KGRldiwgYXBsYW5lLCB0eXBlKTsKKwkJcmV0ID0gYWRlX3BsYW5l X2luaXQoZGV2LCBrcGxhbmUsIHR5cGUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9 CiAKIAkvKiBjcnRjIGluaXQgKi8KLQlyZXQgPSBhZGVfY3J0Y19pbml0KGRldiwgJmFjcnRjLT5i YXNlLCAmYWRlLT5hcGxhbmVbUFJJTUFSWV9DSF0uYmFzZSk7CisJcmV0ID0gYWRlX2NydGNfaW5p dChkZXYsICZhY3J0Yy0+YmFzZSwgJmFkZS0+cGxhbmVzW1BSSU1BUllfQ0hdLmJhc2UpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVs