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.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,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 057D8C2BC73 for ; Wed, 4 Dec 2019 17:53:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BEF6A20675 for ; Wed, 4 Dec 2019 17:53:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="j7pNpcFk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727912AbfLDRxz (ORCPT ); Wed, 4 Dec 2019 12:53:55 -0500 Received: from fllv0015.ext.ti.com ([198.47.19.141]:58072 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728104AbfLDRxy (ORCPT ); Wed, 4 Dec 2019 12:53:54 -0500 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id xB4HrHpQ023157; Wed, 4 Dec 2019 11:53:17 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1575481997; bh=K5H/3gYZtyj4l6M9b0D8wLi/qe8Cm+JCXSV78KdYbtQ=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=j7pNpcFkK7YEv3SOIeDT3yAjlF7XlGVU21QZ7iRL5RQb/CVIKyZF6TTCQIc1GwzsJ vsD178qCEsohOV6ftg3RC++YBk0RaCMqqEsVq7JWnBRwimjIOD5RhQPnvnfs801pkW BPms5YGQizF4LDxvxx6NDiQq6nLHNSSw85T4lQDs= Received: from DLEE107.ent.ti.com (dlee107.ent.ti.com [157.170.170.37]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id xB4HrHKt001305; Wed, 4 Dec 2019 11:53:17 -0600 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE107.ent.ti.com (157.170.170.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Wed, 4 Dec 2019 11:53:17 -0600 Received: from lelv0327.itg.ti.com (10.180.67.183) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Wed, 4 Dec 2019 11:53:17 -0600 Received: from jadmar.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id xB4HrBuA048941; Wed, 4 Dec 2019 11:53:15 -0600 From: Jyri Sarha To: , , , , , CC: , , , Subject: [PATCH 1/2] drm/tilcdc: Remove obsolete bundled tilcdc tfp410 driver Date: Wed, 4 Dec 2019 19:53:10 +0200 Message-ID: <17aefa0a42575bbdd0cb22d150a153e771b0be83.1575481630.git.jsarha@ti.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Remove obsolete bundled tfp410 driver with its "ti,tilcdc,tfp410" devicetree binding. No platform has ever used this driver in the mainline kernel and if anybody connects tfp410 to tilcdc he or she should use the generic drm tfp410 bridge driver. Signed-off-by: Jyri Sarha --- .../bindings/display/tilcdc/tfp410.txt | 21 - drivers/gpu/drm/tilcdc/Makefile | 1 - drivers/gpu/drm/tilcdc/tilcdc_drv.c | 3 - drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 379 ------------------ drivers/gpu/drm/tilcdc/tilcdc_tfp410.h | 15 - 5 files changed, 419 deletions(-) delete mode 100644 Documentation/devicetree/bindings/display/tilcdc/tfp410.txt delete mode 100644 drivers/gpu/drm/tilcdc/tilcdc_tfp410.c delete mode 100644 drivers/gpu/drm/tilcdc/tilcdc_tfp410.h diff --git a/Documentation/devicetree/bindings/display/tilcdc/tfp410.txt b/Documentation/devicetree/bindings/display/tilcdc/tfp410.txt deleted file mode 100644 index a58ae7756fc6..000000000000 --- a/Documentation/devicetree/bindings/display/tilcdc/tfp410.txt +++ /dev/null @@ -1,21 +0,0 @@ -Device-Tree bindings for tilcdc DRM TFP410 output driver - -Required properties: - - compatible: value should be "ti,tilcdc,tfp410". - - i2c: the phandle for the i2c device to use for DDC - -Recommended properties: - - pinctrl-names, pinctrl-0: the pincontrol settings to configure - muxing properly for pins that connect to TFP410 device - - powerdn-gpio: the powerdown GPIO, pulled low to power down the - TFP410 device (for DPMS_OFF) - -Example: - - dvicape { - compatible = "ti,tilcdc,tfp410"; - i2c = <&i2c2>; - pinctrl-names = "default"; - pinctrl-0 = <&bone_dvi_cape_dvi_00A1_pins>; - powerdn-gpio = <&gpio2 31 0>; - }; diff --git a/drivers/gpu/drm/tilcdc/Makefile b/drivers/gpu/drm/tilcdc/Makefile index 87f9480e43b0..662bf3a348c9 100644 --- a/drivers/gpu/drm/tilcdc/Makefile +++ b/drivers/gpu/drm/tilcdc/Makefile @@ -6,7 +6,6 @@ endif tilcdc-y := \ tilcdc_plane.o \ tilcdc_crtc.o \ - tilcdc_tfp410.o \ tilcdc_panel.o \ tilcdc_external.o \ tilcdc_drv.o diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 2a9e67597375..20745db863ff 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -30,7 +30,6 @@ #include "tilcdc_external.h" #include "tilcdc_panel.h" #include "tilcdc_regs.h" -#include "tilcdc_tfp410.h" static LIST_HEAD(module_list); @@ -649,7 +648,6 @@ static struct platform_driver tilcdc_platform_driver = { static int __init tilcdc_drm_init(void) { DBG("init"); - tilcdc_tfp410_init(); tilcdc_panel_init(); return platform_driver_register(&tilcdc_platform_driver); } @@ -659,7 +657,6 @@ static void __exit tilcdc_drm_fini(void) DBG("fini"); platform_driver_unregister(&tilcdc_platform_driver); tilcdc_panel_fini(); - tilcdc_tfp410_fini(); } module_init(tilcdc_drm_init); diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c deleted file mode 100644 index 530edb3b51cc..000000000000 --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c +++ /dev/null @@ -1,379 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2012 Texas Instruments - * Author: Rob Clark - */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "tilcdc_drv.h" -#include "tilcdc_tfp410.h" - -struct tfp410_module { - struct tilcdc_module base; - struct i2c_adapter *i2c; - int gpio; -}; -#define to_tfp410_module(x) container_of(x, struct tfp410_module, base) - - -static const struct tilcdc_panel_info dvi_info = { - .ac_bias = 255, - .ac_bias_intrpt = 0, - .dma_burst_sz = 16, - .bpp = 16, - .fdd = 0x80, - .tft_alt_mode = 0, - .sync_edge = 0, - .sync_ctrl = 1, - .raster_order = 0, -}; - -/* - * Encoder: - */ - -struct tfp410_encoder { - struct drm_encoder base; - struct tfp410_module *mod; - int dpms; -}; -#define to_tfp410_encoder(x) container_of(x, struct tfp410_encoder, base) - -static void tfp410_encoder_dpms(struct drm_encoder *encoder, int mode) -{ - struct tfp410_encoder *tfp410_encoder = to_tfp410_encoder(encoder); - - if (tfp410_encoder->dpms == mode) - return; - - if (mode == DRM_MODE_DPMS_ON) { - DBG("Power on"); - gpio_direction_output(tfp410_encoder->mod->gpio, 1); - } else { - DBG("Power off"); - gpio_direction_output(tfp410_encoder->mod->gpio, 0); - } - - tfp410_encoder->dpms = mode; -} - -static void tfp410_encoder_prepare(struct drm_encoder *encoder) -{ - tfp410_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); -} - -static void tfp410_encoder_commit(struct drm_encoder *encoder) -{ - tfp410_encoder_dpms(encoder, DRM_MODE_DPMS_ON); -} - -static void tfp410_encoder_mode_set(struct drm_encoder *encoder, - struct drm_display_mode *mode, - struct drm_display_mode *adjusted_mode) -{ - /* nothing needed */ -} - -static const struct drm_encoder_funcs tfp410_encoder_funcs = { - .destroy = drm_encoder_cleanup, -}; - -static const struct drm_encoder_helper_funcs tfp410_encoder_helper_funcs = { - .dpms = tfp410_encoder_dpms, - .prepare = tfp410_encoder_prepare, - .commit = tfp410_encoder_commit, - .mode_set = tfp410_encoder_mode_set, -}; - -static struct drm_encoder *tfp410_encoder_create(struct drm_device *dev, - struct tfp410_module *mod) -{ - struct tfp410_encoder *tfp410_encoder; - struct drm_encoder *encoder; - int ret; - - tfp410_encoder = devm_kzalloc(dev->dev, sizeof(*tfp410_encoder), - GFP_KERNEL); - if (!tfp410_encoder) - return NULL; - - tfp410_encoder->dpms = DRM_MODE_DPMS_OFF; - tfp410_encoder->mod = mod; - - encoder = &tfp410_encoder->base; - encoder->possible_crtcs = 1; - - ret = drm_encoder_init(dev, encoder, &tfp410_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); - if (ret < 0) - goto fail; - - drm_encoder_helper_add(encoder, &tfp410_encoder_helper_funcs); - - return encoder; - -fail: - drm_encoder_cleanup(encoder); - return NULL; -} - -/* - * Connector: - */ - -struct tfp410_connector { - struct drm_connector base; - - struct drm_encoder *encoder; /* our connected encoder */ - struct tfp410_module *mod; -}; -#define to_tfp410_connector(x) container_of(x, struct tfp410_connector, base) - - -static void tfp410_connector_destroy(struct drm_connector *connector) -{ - drm_connector_unregister(connector); - drm_connector_cleanup(connector); -} - -static enum drm_connector_status tfp410_connector_detect( - struct drm_connector *connector, - bool force) -{ - struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); - - if (drm_probe_ddc(tfp410_connector->mod->i2c)) - return connector_status_connected; - - return connector_status_unknown; -} - -static int tfp410_connector_get_modes(struct drm_connector *connector) -{ - struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); - struct edid *edid; - int ret = 0; - - edid = drm_get_edid(connector, tfp410_connector->mod->i2c); - - drm_connector_update_edid_property(connector, edid); - - if (edid) { - ret = drm_add_edid_modes(connector, edid); - kfree(edid); - } - - return ret; -} - -static struct drm_encoder *tfp410_connector_best_encoder( - struct drm_connector *connector) -{ - struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); - return tfp410_connector->encoder; -} - -static const struct drm_connector_funcs tfp410_connector_funcs = { - .destroy = tfp410_connector_destroy, - .detect = tfp410_connector_detect, - .fill_modes = drm_helper_probe_single_connector_modes, - .reset = drm_atomic_helper_connector_reset, - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, -}; - -static const struct drm_connector_helper_funcs tfp410_connector_helper_funcs = { - .get_modes = tfp410_connector_get_modes, - .best_encoder = tfp410_connector_best_encoder, -}; - -static struct drm_connector *tfp410_connector_create(struct drm_device *dev, - struct tfp410_module *mod, struct drm_encoder *encoder) -{ - struct tfp410_connector *tfp410_connector; - struct drm_connector *connector; - int ret; - - tfp410_connector = devm_kzalloc(dev->dev, sizeof(*tfp410_connector), - GFP_KERNEL); - if (!tfp410_connector) - return NULL; - - tfp410_connector->encoder = encoder; - tfp410_connector->mod = mod; - - connector = &tfp410_connector->base; - - drm_connector_init(dev, connector, &tfp410_connector_funcs, - DRM_MODE_CONNECTOR_DVID); - drm_connector_helper_add(connector, &tfp410_connector_helper_funcs); - - connector->polled = DRM_CONNECTOR_POLL_CONNECT | - DRM_CONNECTOR_POLL_DISCONNECT; - - connector->interlace_allowed = 0; - connector->doublescan_allowed = 0; - - ret = drm_connector_attach_encoder(connector, encoder); - if (ret) - goto fail; - - return connector; - -fail: - tfp410_connector_destroy(connector); - return NULL; -} - -/* - * Module: - */ - -static int tfp410_modeset_init(struct tilcdc_module *mod, struct drm_device *dev) -{ - struct tfp410_module *tfp410_mod = to_tfp410_module(mod); - struct tilcdc_drm_private *priv = dev->dev_private; - struct drm_encoder *encoder; - struct drm_connector *connector; - - encoder = tfp410_encoder_create(dev, tfp410_mod); - if (!encoder) - return -ENOMEM; - - connector = tfp410_connector_create(dev, tfp410_mod, encoder); - if (!connector) - return -ENOMEM; - - priv->encoders[priv->num_encoders++] = encoder; - priv->connectors[priv->num_connectors++] = connector; - - tilcdc_crtc_set_panel_info(priv->crtc, &dvi_info); - return 0; -} - -static const struct tilcdc_module_ops tfp410_module_ops = { - .modeset_init = tfp410_modeset_init, -}; - -/* - * Device: - */ - -static int tfp410_probe(struct platform_device *pdev) -{ - struct device_node *node = pdev->dev.of_node; - struct device_node *i2c_node; - struct tfp410_module *tfp410_mod; - struct tilcdc_module *mod; - struct pinctrl *pinctrl; - uint32_t i2c_phandle; - int ret = -EINVAL; - - /* bail out early if no DT data: */ - if (!node) { - dev_err(&pdev->dev, "device-tree data is missing\n"); - return -ENXIO; - } - - tfp410_mod = devm_kzalloc(&pdev->dev, sizeof(*tfp410_mod), GFP_KERNEL); - if (!tfp410_mod) - return -ENOMEM; - - mod = &tfp410_mod->base; - pdev->dev.platform_data = mod; - - tilcdc_module_init(mod, "tfp410", &tfp410_module_ops); - - pinctrl = devm_pinctrl_get_select_default(&pdev->dev); - if (IS_ERR(pinctrl)) - dev_warn(&pdev->dev, "pins are not configured\n"); - - if (of_property_read_u32(node, "i2c", &i2c_phandle)) { - dev_err(&pdev->dev, "could not get i2c bus phandle\n"); - goto fail; - } - - i2c_node = of_find_node_by_phandle(i2c_phandle); - if (!i2c_node) { - dev_err(&pdev->dev, "could not get i2c bus node\n"); - goto fail; - } - - tfp410_mod->i2c = of_find_i2c_adapter_by_node(i2c_node); - if (!tfp410_mod->i2c) { - dev_err(&pdev->dev, "could not get i2c\n"); - of_node_put(i2c_node); - goto fail; - } - - of_node_put(i2c_node); - - tfp410_mod->gpio = of_get_named_gpio_flags(node, "powerdn-gpio", - 0, NULL); - if (tfp410_mod->gpio < 0) { - dev_warn(&pdev->dev, "No power down GPIO\n"); - } else { - ret = gpio_request(tfp410_mod->gpio, "DVI_PDn"); - if (ret) { - dev_err(&pdev->dev, "could not get DVI_PDn gpio\n"); - goto fail_adapter; - } - } - - return 0; - -fail_adapter: - i2c_put_adapter(tfp410_mod->i2c); - -fail: - tilcdc_module_cleanup(mod); - return ret; -} - -static int tfp410_remove(struct platform_device *pdev) -{ - struct tilcdc_module *mod = dev_get_platdata(&pdev->dev); - struct tfp410_module *tfp410_mod = to_tfp410_module(mod); - - i2c_put_adapter(tfp410_mod->i2c); - gpio_free(tfp410_mod->gpio); - - tilcdc_module_cleanup(mod); - - return 0; -} - -static const struct of_device_id tfp410_of_match[] = { - { .compatible = "ti,tilcdc,tfp410", }, - { }, -}; - -struct platform_driver tfp410_driver = { - .probe = tfp410_probe, - .remove = tfp410_remove, - .driver = { - .owner = THIS_MODULE, - .name = "tfp410", - .of_match_table = tfp410_of_match, - }, -}; - -int __init tilcdc_tfp410_init(void) -{ - return platform_driver_register(&tfp410_driver); -} - -void __exit tilcdc_tfp410_fini(void) -{ - platform_driver_unregister(&tfp410_driver); -} diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.h b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.h deleted file mode 100644 index f9aaf6911ffc..000000000000 --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.h +++ /dev/null @@ -1,15 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (C) 2012 Texas Instruments - * Author: Rob Clark - */ - -#ifndef __TILCDC_TFP410_H__ -#define __TILCDC_TFP410_H__ - -/* sub-module for tfp410 dvi adaptor */ - -int tilcdc_tfp410_init(void); -void tilcdc_tfp410_fini(void); - -#endif /* __TILCDC_TFP410_H__ */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: [PATCH 1/2] drm/tilcdc: Remove obsolete bundled tilcdc tfp410 driver Date: Wed, 4 Dec 2019 19:53:10 +0200 Message-ID: <17aefa0a42575bbdd0cb22d150a153e771b0be83.1575481630.git.jsarha@ti.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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, tony@atomide.com, sam@ravnborg.org, robh+dt@kernel.org, devicetree@vger.kernel.org, linux-omap@vger.kernel.org Cc: peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: linux-omap@vger.kernel.org UmVtb3ZlIG9ic29sZXRlIGJ1bmRsZWQgdGZwNDEwIGRyaXZlciB3aXRoIGl0cyAidGksdGlsY2Rj LHRmcDQxMCIKZGV2aWNldHJlZSBiaW5kaW5nLiBObyBwbGF0Zm9ybSBoYXMgZXZlciB1c2VkIHRo aXMgZHJpdmVyIGluIHRoZQptYWlubGluZSBrZXJuZWwgYW5kIGlmIGFueWJvZHkgY29ubmVjdHMg dGZwNDEwIHRvIHRpbGNkYyBoZSBvciBzaGUKc2hvdWxkIHVzZSB0aGUgZ2VuZXJpYyBkcm0gdGZw NDEwIGJyaWRnZSBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBKeXJpIFNhcmhhIDxqc2FyaGFAdGku Y29tPgotLS0KIC4uLi9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy90ZnA0MTAudHh0ICAgICAgICB8 ICAyMSAtCiBkcml2ZXJzL2dwdS9kcm0vdGlsY2RjL01ha2VmaWxlICAgICAgICAgICAgICAgfCAg IDEgLQogZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfZHJ2LmMgICAgICAgICAgIHwgICAz IC0KIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5jICAgICAgICB8IDM3OSAt LS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5o ICAgICAgICB8ICAxNSAtCiA1IGZpbGVzIGNoYW5nZWQsIDQxOSBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90 aWxjZGMvdGZwNDEwLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS90aWxj ZGMvdGlsY2RjX3RmcDQxMC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Rp bGNkYy90aWxjZGNfdGZwNDEwLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvZGlzcGxheS90aWxjZGMvdGZwNDEwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy90ZnA0MTAudHh0CmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBhNThhZTc3NTZmYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9Eb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aWxjZGMvdGZwNDEwLnR4dAorKysg L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLURldmljZS1UcmVlIGJpbmRpbmdzIGZvciB0aWxj ZGMgRFJNIFRGUDQxMCBvdXRwdXQgZHJpdmVyCi0KLVJlcXVpcmVkIHByb3BlcnRpZXM6Ci0gLSBj b21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgInRpLHRpbGNkYyx0ZnA0MTAiLgotIC0gaTJjOiB0 aGUgcGhhbmRsZSBmb3IgdGhlIGkyYyBkZXZpY2UgdG8gdXNlIGZvciBEREMKLQotUmVjb21tZW5k ZWQgcHJvcGVydGllczoKLSAtIHBpbmN0cmwtbmFtZXMsIHBpbmN0cmwtMDogdGhlIHBpbmNvbnRy b2wgc2V0dGluZ3MgdG8gY29uZmlndXJlCi0gICBtdXhpbmcgcHJvcGVybHkgZm9yIHBpbnMgdGhh dCBjb25uZWN0IHRvIFRGUDQxMCBkZXZpY2UKLSAtIHBvd2VyZG4tZ3BpbzogdGhlIHBvd2VyZG93 biBHUElPLCBwdWxsZWQgbG93IHRvIHBvd2VyIGRvd24gdGhlCi0gICBURlA0MTAgZGV2aWNlIChm b3IgRFBNU19PRkYpCi0KLUV4YW1wbGU6Ci0KLQlkdmljYXBlIHsKLQkJY29tcGF0aWJsZSA9ICJ0 aSx0aWxjZGMsdGZwNDEwIjsKLQkJaTJjID0gPCZpMmMyPjsKLQkJcGluY3RybC1uYW1lcyA9ICJk ZWZhdWx0IjsKLQkJcGluY3RybC0wID0gPCZib25lX2R2aV9jYXBlX2R2aV8wMEExX3BpbnM+Owot CQlwb3dlcmRuLWdwaW8gPSA8JmdwaW8yIDMxIDA+OwotCX07CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdGlsY2RjL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3RpbGNkYy9NYWtlZmls ZQppbmRleCA4N2Y5NDgwZTQzYjAuLjY2MmJmM2EzNDhjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3RpbGNkYy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL01ha2Vm aWxlCkBAIC02LDcgKzYsNiBAQCBlbmRpZgogdGlsY2RjLXkgOj0gXAogCXRpbGNkY19wbGFuZS5v IFwKIAl0aWxjZGNfY3J0Yy5vIFwKLQl0aWxjZGNfdGZwNDEwLm8gXAogCXRpbGNkY19wYW5lbC5v IFwKIAl0aWxjZGNfZXh0ZXJuYWwubyBcCiAJdGlsY2RjX2Rydi5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMv dGlsY2RjX2Rydi5jCmluZGV4IDJhOWU2NzU5NzM3NS4uMjA3NDVkYjg2M2ZmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdGlsY2RjL3RpbGNkY19kcnYuYwpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgInRpbGNk Y19leHRlcm5hbC5oIgogI2luY2x1ZGUgInRpbGNkY19wYW5lbC5oIgogI2luY2x1ZGUgInRpbGNk Y19yZWdzLmgiCi0jaW5jbHVkZSAidGlsY2RjX3RmcDQxMC5oIgogCiBzdGF0aWMgTElTVF9IRUFE KG1vZHVsZV9saXN0KTsKIApAQCAtNjQ5LDcgKzY0OCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZHJpdmVyIHRpbGNkY19wbGF0Zm9ybV9kcml2ZXIgPSB7CiBzdGF0aWMgaW50IF9faW5pdCB0 aWxjZGNfZHJtX2luaXQodm9pZCkKIHsKIAlEQkcoImluaXQiKTsKLQl0aWxjZGNfdGZwNDEwX2lu aXQoKTsKIAl0aWxjZGNfcGFuZWxfaW5pdCgpOwogCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVn aXN0ZXIoJnRpbGNkY19wbGF0Zm9ybV9kcml2ZXIpOwogfQpAQCAtNjU5LDcgKzY1Nyw2IEBAIHN0 YXRpYyB2b2lkIF9fZXhpdCB0aWxjZGNfZHJtX2Zpbmkodm9pZCkKIAlEQkcoImZpbmkiKTsKIAlw bGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdGlsY2RjX3BsYXRmb3JtX2RyaXZlcik7CiAJdGls Y2RjX3BhbmVsX2ZpbmkoKTsKLQl0aWxjZGNfdGZwNDEwX2ZpbmkoKTsKIH0KIAogbW9kdWxlX2lu aXQodGlsY2RjX2RybV9pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMv dGlsY2RjX3RmcDQxMC5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfdGZwNDEwLmMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMGVkYjNiNTFjYy4uMDAwMDAwMDAwMDAw Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5jCisrKyAvZGV2L251 bGwKQEAgLTEsMzc5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMKLSAqIEF1 dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgotICovCi0KLSNpbmNsdWRlIDxs aW51eC9ncGlvLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kX2RldmljZXRhYmxlLmg+Ci0jaW5jbHVk ZSA8bGludXgvb2ZfZ3Bpby5oPgotI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4K LSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLQotI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgotI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgotI2luY2x1ZGUg PGRybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oPgotI2luY2x1ZGUgPGRybS9kcm1fcHJv YmVfaGVscGVyLmg+Ci0KLSNpbmNsdWRlICJ0aWxjZGNfZHJ2LmgiCi0jaW5jbHVkZSAidGlsY2Rj X3RmcDQxMC5oIgotCi1zdHJ1Y3QgdGZwNDEwX21vZHVsZSB7Ci0Jc3RydWN0IHRpbGNkY19tb2R1 bGUgYmFzZTsKLQlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYzsKLQlpbnQgZ3BpbzsKLX07Ci0jZGVm aW5lIHRvX3RmcDQxMF9tb2R1bGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB0ZnA0MTBfbW9k dWxlLCBiYXNlKQotCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGlsY2RjX3BhbmVsX2luZm8gZHZp X2luZm8gPSB7Ci0JCS5hY19iaWFzICAgICAgICAgICAgICAgID0gMjU1LAotCQkuYWNfYmlhc19p bnRycHQgICAgICAgICA9IDAsCi0JCS5kbWFfYnVyc3Rfc3ogICAgICAgICAgID0gMTYsCi0JCS5i cHAgICAgICAgICAgICAgICAgICAgID0gMTYsCi0JCS5mZGQgICAgICAgICAgICAgICAgICAgID0g MHg4MCwKLQkJLnRmdF9hbHRfbW9kZSAgICAgICAgICAgPSAwLAotCQkuc3luY19lZGdlICAgICAg ICAgICAgICA9IDAsCi0JCS5zeW5jX2N0cmwgICAgICAgICAgICAgID0gMSwKLQkJLnJhc3Rlcl9v cmRlciAgICAgICAgICAgPSAwLAotfTsKLQotLyoKLSAqIEVuY29kZXI6Ci0gKi8KLQotc3RydWN0 IHRmcDQxMF9lbmNvZGVyIHsKLQlzdHJ1Y3QgZHJtX2VuY29kZXIgYmFzZTsKLQlzdHJ1Y3QgdGZw NDEwX21vZHVsZSAqbW9kOwotCWludCBkcG1zOwotfTsKLSNkZWZpbmUgdG9fdGZwNDEwX2VuY29k ZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB0ZnA0MTBfZW5jb2RlciwgYmFzZSkKLQotc3Rh dGljIHZvaWQgdGZwNDEwX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIs IGludCBtb2RlKQotewotCXN0cnVjdCB0ZnA0MTBfZW5jb2RlciAqdGZwNDEwX2VuY29kZXIgPSB0 b190ZnA0MTBfZW5jb2RlcihlbmNvZGVyKTsKLQotCWlmICh0ZnA0MTBfZW5jb2Rlci0+ZHBtcyA9 PSBtb2RlKQotCQlyZXR1cm47Ci0KLQlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKSB7Ci0J CURCRygiUG93ZXIgb24iKTsKLQkJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHRmcDQxMF9lbmNvZGVy LT5tb2QtPmdwaW8sIDEpOwotCX0gZWxzZSB7Ci0JCURCRygiUG93ZXIgb2ZmIik7Ci0JCWdwaW9f ZGlyZWN0aW9uX291dHB1dCh0ZnA0MTBfZW5jb2Rlci0+bW9kLT5ncGlvLCAwKTsKLQl9Ci0KLQl0 ZnA0MTBfZW5jb2Rlci0+ZHBtcyA9IG1vZGU7Ci19Ci0KLXN0YXRpYyB2b2lkIHRmcDQxMF9lbmNv ZGVyX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXRmcDQxMF9lbmNv ZGVyX2RwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PRkYpOwotfQotCi1zdGF0aWMgdm9pZCB0 ZnA0MTBfZW5jb2Rlcl9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXRm cDQxMF9lbmNvZGVyX2RwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PTik7Ci19Ci0KLXN0YXRp YyB2b2lkIHRmcDQxMF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKLQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCi0JCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlKQotewotCS8qIG5vdGhpbmcgbmVlZGVkICovCi19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgdGZwNDEwX2VuY29kZXJfZnVuY3Mg PSB7Ci0JCS5kZXN0cm95ICAgICAgICA9IGRybV9lbmNvZGVyX2NsZWFudXAsCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyB0ZnA0MTBfZW5jb2Rlcl9o ZWxwZXJfZnVuY3MgPSB7Ci0JCS5kcG1zICAgICAgICAgICA9IHRmcDQxMF9lbmNvZGVyX2RwbXMs Ci0JCS5wcmVwYXJlICAgICAgICA9IHRmcDQxMF9lbmNvZGVyX3ByZXBhcmUsCi0JCS5jb21taXQg ICAgICAgICA9IHRmcDQxMF9lbmNvZGVyX2NvbW1pdCwKLQkJLm1vZGVfc2V0ICAgICAgID0gdGZw NDEwX2VuY29kZXJfbW9kZV9zZXQsCi19OwotCi1zdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICp0 ZnA0MTBfZW5jb2Rlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJc3RydWN0IHRm cDQxMF9tb2R1bGUgKm1vZCkKLXsKLQlzdHJ1Y3QgdGZwNDEwX2VuY29kZXIgKnRmcDQxMF9lbmNv ZGVyOwotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgcmV0OwotCi0JdGZwNDEw X2VuY29kZXIgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigqdGZwNDEwX2VuY29kZXIp LAotCQkJCSAgICAgIEdGUF9LRVJORUwpOwotCWlmICghdGZwNDEwX2VuY29kZXIpCi0JCXJldHVy biBOVUxMOwotCi0JdGZwNDEwX2VuY29kZXItPmRwbXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKLQl0 ZnA0MTBfZW5jb2Rlci0+bW9kID0gbW9kOwotCi0JZW5jb2RlciA9ICZ0ZnA0MTBfZW5jb2Rlci0+ YmFzZTsKLQllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDE7Ci0KLQlyZXQgPSBkcm1fZW5jb2Rl cl9pbml0KGRldiwgZW5jb2RlciwgJnRmcDQxMF9lbmNvZGVyX2Z1bmNzLAotCQkJRFJNX01PREVf RU5DT0RFUl9UTURTLCBOVUxMKTsKLQlpZiAocmV0IDwgMCkKLQkJZ290byBmYWlsOwotCi0JZHJt X2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmdGZwNDEwX2VuY29kZXJfaGVscGVyX2Z1bmNz KTsKLQotCXJldHVybiBlbmNvZGVyOwotCi1mYWlsOgotCWRybV9lbmNvZGVyX2NsZWFudXAoZW5j b2Rlcik7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLS8qCi0gKiBDb25uZWN0b3I6Ci0gKi8KLQotc3Ry dWN0IHRmcDQxMF9jb25uZWN0b3IgewotCXN0cnVjdCBkcm1fY29ubmVjdG9yIGJhc2U7Ci0KLQlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7ICAvKiBvdXIgY29ubmVjdGVkIGVuY29kZXIgKi8K LQlzdHJ1Y3QgdGZwNDEwX21vZHVsZSAqbW9kOwotfTsKLSNkZWZpbmUgdG9fdGZwNDEwX2Nvbm5l Y3Rvcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IHRmcDQxMF9jb25uZWN0b3IsIGJhc2UpCi0K LQotc3RhdGljIHZvaWQgdGZwNDEwX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCi17Ci0JZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7 Ci0JZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Ci19Ci0KLXN0YXRpYyBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzIHRmcDQxMF9jb25uZWN0b3JfZGV0ZWN0KAotCQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQlib29sIGZvcmNlKQotewotCXN0cnVjdCB0ZnA0MTBf Y29ubmVjdG9yICp0ZnA0MTBfY29ubmVjdG9yID0gdG9fdGZwNDEwX2Nvbm5lY3Rvcihjb25uZWN0 b3IpOwotCi0JaWYgKGRybV9wcm9iZV9kZGModGZwNDEwX2Nvbm5lY3Rvci0+bW9kLT5pMmMpKQot CQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Ci0KLQlyZXR1cm4gY29ubmVjdG9y X3N0YXR1c191bmtub3duOwotfQotCi1zdGF0aWMgaW50IHRmcDQxMF9jb25uZWN0b3JfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCi17Ci0Jc3RydWN0IHRmcDQxMF9j b25uZWN0b3IgKnRmcDQxMF9jb25uZWN0b3IgPSB0b190ZnA0MTBfY29ubmVjdG9yKGNvbm5lY3Rv cik7Ci0Jc3RydWN0IGVkaWQgKmVkaWQ7Ci0JaW50IHJldCA9IDA7Ci0KLQllZGlkID0gZHJtX2dl dF9lZGlkKGNvbm5lY3RvciwgdGZwNDEwX2Nvbm5lY3Rvci0+bW9kLT5pMmMpOwotCi0JZHJtX2Nv bm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOwotCi0JaWYgKGVk aWQpIHsKLQkJcmV0ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Ci0JCWtm cmVlKGVkaWQpOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZHJtX2Vu Y29kZXIgKnRmcDQxMF9jb25uZWN0b3JfYmVzdF9lbmNvZGVyKAotCQlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQotewotCXN0cnVjdCB0ZnA0MTBfY29ubmVjdG9yICp0ZnA0MTBfY29u bmVjdG9yID0gdG9fdGZwNDEwX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwotCXJldHVybiB0ZnA0MTBf Y29ubmVjdG9yLT5lbmNvZGVyOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfZnVuY3MgdGZwNDEwX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKLQkuZGVzdHJveSAgICAgICAgICAg ID0gdGZwNDEwX2Nvbm5lY3Rvcl9kZXN0cm95LAotCS5kZXRlY3QgICAgICAgICAgICAgPSB0ZnA0 MTBfY29ubmVjdG9yX2RldGVjdCwKLQkuZmlsbF9tb2RlcyAgICAgICAgID0gZHJtX2hlbHBlcl9w cm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAotCS5yZXNldCAgICAgICAgICAgICAgPSBkcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCi0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAotCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRl LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyB0 ZnA0MTBfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKLQkuZ2V0X21vZGVzICAgICAgICAgID0g dGZwNDEwX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCi0JLmJlc3RfZW5jb2RlciAgICAgICA9IHRmcDQx MF9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLAotfTsKLQotc3RhdGljIHN0cnVjdCBkcm1fY29ubmVj dG9yICp0ZnA0MTBfY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQlz dHJ1Y3QgdGZwNDEwX21vZHVsZSAqbW9kLCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17 Ci0Jc3RydWN0IHRmcDQxMF9jb25uZWN0b3IgKnRmcDQxMF9jb25uZWN0b3I7Ci0Jc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlpbnQgcmV0OwotCi0JdGZwNDEwX2Nvbm5lY3RvciA9 IGRldm1fa3phbGxvYyhkZXYtPmRldiwgc2l6ZW9mKCp0ZnA0MTBfY29ubmVjdG9yKSwKLQkJCQkJ R0ZQX0tFUk5FTCk7Ci0JaWYgKCF0ZnA0MTBfY29ubmVjdG9yKQotCQlyZXR1cm4gTlVMTDsKLQot CXRmcDQxMF9jb25uZWN0b3ItPmVuY29kZXIgPSBlbmNvZGVyOwotCXRmcDQxMF9jb25uZWN0b3It Pm1vZCA9IG1vZDsKLQotCWNvbm5lY3RvciA9ICZ0ZnA0MTBfY29ubmVjdG9yLT5iYXNlOwotCi0J ZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCAmdGZwNDEwX2Nvbm5lY3Rvcl9mdW5j cywKLQkJCURSTV9NT0RFX0NPTk5FQ1RPUl9EVklEKTsKLQlkcm1fY29ubmVjdG9yX2hlbHBlcl9h ZGQoY29ubmVjdG9yLCAmdGZwNDEwX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwotCi0JY29ubmVj dG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVCB8Ci0JCQlEUk1fQ09OTkVD VE9SX1BPTExfRElTQ09OTkVDVDsKLQotCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAw OwotCWNvbm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0gMDsKLQotCXJldCA9IGRybV9jb25u ZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKLQlpZiAocmV0KQotCQln b3RvIGZhaWw7Ci0KLQlyZXR1cm4gY29ubmVjdG9yOwotCi1mYWlsOgotCXRmcDQxMF9jb25uZWN0 b3JfZGVzdHJveShjb25uZWN0b3IpOwotCXJldHVybiBOVUxMOwotfQotCi0vKgotICogTW9kdWxl OgotICovCi0KLXN0YXRpYyBpbnQgdGZwNDEwX21vZGVzZXRfaW5pdChzdHJ1Y3QgdGlsY2RjX21v ZHVsZSAqbW9kLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotewotCXN0cnVjdCB0ZnA0MTBfbW9k dWxlICp0ZnA0MTBfbW9kID0gdG9fdGZwNDEwX21vZHVsZShtb2QpOwotCXN0cnVjdCB0aWxjZGNf ZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCi0JZW5jb2Rl ciA9IHRmcDQxMF9lbmNvZGVyX2NyZWF0ZShkZXYsIHRmcDQxMF9tb2QpOwotCWlmICghZW5jb2Rl cikKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQljb25uZWN0b3IgPSB0ZnA0MTBfY29ubmVjdG9yX2Ny ZWF0ZShkZXYsIHRmcDQxMF9tb2QsIGVuY29kZXIpOwotCWlmICghY29ubmVjdG9yKQotCQlyZXR1 cm4gLUVOT01FTTsKLQotCXByaXYtPmVuY29kZXJzW3ByaXYtPm51bV9lbmNvZGVycysrXSA9IGVu Y29kZXI7Ci0JcHJpdi0+Y29ubmVjdG9yc1twcml2LT5udW1fY29ubmVjdG9ycysrXSA9IGNvbm5l Y3RvcjsKLQotCXRpbGNkY19jcnRjX3NldF9wYW5lbF9pbmZvKHByaXYtPmNydGMsICZkdmlfaW5m byk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGlsY2RjX21vZHVsZV9v cHMgdGZwNDEwX21vZHVsZV9vcHMgPSB7Ci0JCS5tb2Rlc2V0X2luaXQgPSB0ZnA0MTBfbW9kZXNl dF9pbml0LAotfTsKLQotLyoKLSAqIERldmljZToKLSAqLwotCi1zdGF0aWMgaW50IHRmcDQxMF9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqaTJjX25v ZGU7Ci0Jc3RydWN0IHRmcDQxMF9tb2R1bGUgKnRmcDQxMF9tb2Q7Ci0Jc3RydWN0IHRpbGNkY19t b2R1bGUgKm1vZDsKLQlzdHJ1Y3QgcGluY3RybCAqcGluY3RybDsKLQl1aW50MzJfdCBpMmNfcGhh bmRsZTsKLQlpbnQgcmV0ID0gLUVJTlZBTDsKLQotCS8qIGJhaWwgb3V0IGVhcmx5IGlmIG5vIERU IGRhdGE6ICovCi0JaWYgKCFub2RlKSB7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgImRldmljZS10 cmVlIGRhdGEgaXMgbWlzc2luZ1xuIik7Ci0JCXJldHVybiAtRU5YSU87Ci0JfQotCi0JdGZwNDEw X21vZCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnRmcDQxMF9tb2QpLCBHRlBf S0VSTkVMKTsKLQlpZiAoIXRmcDQxMF9tb2QpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JbW9kID0g JnRmcDQxMF9tb2QtPmJhc2U7Ci0JcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBtb2Q7Ci0KLQl0 aWxjZGNfbW9kdWxlX2luaXQobW9kLCAidGZwNDEwIiwgJnRmcDQxMF9tb2R1bGVfb3BzKTsKLQot CXBpbmN0cmwgPSBkZXZtX3BpbmN0cmxfZ2V0X3NlbGVjdF9kZWZhdWx0KCZwZGV2LT5kZXYpOwot CWlmIChJU19FUlIocGluY3RybCkpCi0JCWRldl93YXJuKCZwZGV2LT5kZXYsICJwaW5zIGFyZSBu b3QgY29uZmlndXJlZFxuIik7Ci0KLQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgImky YyIsICZpMmNfcGhhbmRsZSkpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY291bGQgbm90IGdl dCBpMmMgYnVzIHBoYW5kbGVcbiIpOwotCQlnb3RvIGZhaWw7Ci0JfQotCi0JaTJjX25vZGUgPSBv Zl9maW5kX25vZGVfYnlfcGhhbmRsZShpMmNfcGhhbmRsZSk7Ci0JaWYgKCFpMmNfbm9kZSkgewot CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IGkyYyBidXMgbm9kZVxuIik7Ci0J CWdvdG8gZmFpbDsKLQl9Ci0KLQl0ZnA0MTBfbW9kLT5pMmMgPSBvZl9maW5kX2kyY19hZGFwdGVy X2J5X25vZGUoaTJjX25vZGUpOwotCWlmICghdGZwNDEwX21vZC0+aTJjKSB7Ci0JCWRldl9lcnIo JnBkZXYtPmRldiwgImNvdWxkIG5vdCBnZXQgaTJjXG4iKTsKLQkJb2Zfbm9kZV9wdXQoaTJjX25v ZGUpOwotCQlnb3RvIGZhaWw7Ci0JfQotCi0Jb2Zfbm9kZV9wdXQoaTJjX25vZGUpOwotCi0JdGZw NDEwX21vZC0+Z3BpbyA9IG9mX2dldF9uYW1lZF9ncGlvX2ZsYWdzKG5vZGUsICJwb3dlcmRuLWdw aW8iLAotCQkJMCwgTlVMTCk7Ci0JaWYgKHRmcDQxMF9tb2QtPmdwaW8gPCAwKSB7Ci0JCWRldl93 YXJuKCZwZGV2LT5kZXYsICJObyBwb3dlciBkb3duIEdQSU9cbiIpOwotCX0gZWxzZSB7Ci0JCXJl dCA9IGdwaW9fcmVxdWVzdCh0ZnA0MTBfbW9kLT5ncGlvLCAiRFZJX1BEbiIpOwotCQlpZiAocmV0 KSB7Ci0JCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IERWSV9QRG4gZ3Bpb1xu Iik7Ci0JCQlnb3RvIGZhaWxfYWRhcHRlcjsKLQkJfQotCX0KLQotCXJldHVybiAwOwotCi1mYWls X2FkYXB0ZXI6Ci0JaTJjX3B1dF9hZGFwdGVyKHRmcDQxMF9tb2QtPmkyYyk7Ci0KLWZhaWw6Ci0J dGlsY2RjX21vZHVsZV9jbGVhbnVwKG1vZCk7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGlu dCB0ZnA0MTBfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCi17Ci0Jc3RydWN0 IHRpbGNkY19tb2R1bGUgKm1vZCA9IGRldl9nZXRfcGxhdGRhdGEoJnBkZXYtPmRldik7Ci0Jc3Ry dWN0IHRmcDQxMF9tb2R1bGUgKnRmcDQxMF9tb2QgPSB0b190ZnA0MTBfbW9kdWxlKG1vZCk7Ci0K LQlpMmNfcHV0X2FkYXB0ZXIodGZwNDEwX21vZC0+aTJjKTsKLQlncGlvX2ZyZWUodGZwNDEwX21v ZC0+Z3Bpbyk7Ci0KLQl0aWxjZGNfbW9kdWxlX2NsZWFudXAobW9kKTsKLQotCXJldHVybiAwOwot fQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZnA0MTBfb2ZfbWF0Y2hbXSA9 IHsKLQkJeyAuY29tcGF0aWJsZSA9ICJ0aSx0aWxjZGMsdGZwNDEwIiwgfSwKLQkJeyB9LAotfTsK LQotc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZnA0MTBfZHJpdmVyID0gewotCS5wcm9iZSA9IHRm cDQxMF9wcm9iZSwKLQkucmVtb3ZlID0gdGZwNDEwX3JlbW92ZSwKLQkuZHJpdmVyID0gewotCQku b3duZXIgPSBUSElTX01PRFVMRSwKLQkJLm5hbWUgPSAidGZwNDEwIiwKLQkJLm9mX21hdGNoX3Rh YmxlID0gdGZwNDEwX29mX21hdGNoLAotCX0sCi19OwotCi1pbnQgX19pbml0IHRpbGNkY190ZnA0 MTBfaW5pdCh2b2lkKQotewotCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnRmcDQx MF9kcml2ZXIpOwotfQotCi12b2lkIF9fZXhpdCB0aWxjZGNfdGZwNDEwX2Zpbmkodm9pZCkKLXsK LQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdGZwNDEwX2RyaXZlcik7Ci19CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY190ZnA0MTAuaCBiL2RyaXZlcnMvZ3B1 L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBmOWFhZjY5MTFmZmMuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2Rj L3RpbGNkY190ZnA0MTAuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qCi0gKiBDb3B5cmlnaHQgKEMp IDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMKLSAqIEF1dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtA Z21haWwuY29tPgotICovCi0KLSNpZm5kZWYgX19USUxDRENfVEZQNDEwX0hfXwotI2RlZmluZSBf X1RJTENEQ19URlA0MTBfSF9fCi0KLS8qIHN1Yi1tb2R1bGUgZm9yIHRmcDQxMCBkdmkgYWRhcHRv ciAqLwotCi1pbnQgdGlsY2RjX3RmcDQxMF9pbml0KHZvaWQpOwotdm9pZCB0aWxjZGNfdGZwNDEw X2Zpbmkodm9pZCk7Ci0KLSNlbmRpZiAvKiBfX1RJTENEQ19URlA0MTBfSF9fICovCi0tIApUZXhh cyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5r aS4gWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTog SGVsc2lua2kKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA== 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 350F7C2BC73 for ; Wed, 4 Dec 2019 17:53:24 +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 148682084F for ; Wed, 4 Dec 2019 17:53:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 148682084F Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com 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 5E2D26E0C1; Wed, 4 Dec 2019 17:53:23 +0000 (UTC) Received: from fllv0015.ext.ti.com (fllv0015.ext.ti.com [198.47.19.141]) by gabe.freedesktop.org (Postfix) with ESMTPS id BEEAC6E93C for ; Wed, 4 Dec 2019 17:53:22 +0000 (UTC) Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id xB4HrHpQ023157; Wed, 4 Dec 2019 11:53:17 -0600 Received: from DLEE107.ent.ti.com (dlee107.ent.ti.com [157.170.170.37]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id xB4HrHKt001305; Wed, 4 Dec 2019 11:53:17 -0600 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE107.ent.ti.com (157.170.170.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Wed, 4 Dec 2019 11:53:17 -0600 Received: from lelv0327.itg.ti.com (10.180.67.183) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Wed, 4 Dec 2019 11:53:17 -0600 Received: from jadmar.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id xB4HrBuA048941; Wed, 4 Dec 2019 11:53:15 -0600 From: Jyri Sarha To: , , , , , Subject: [PATCH 1/2] drm/tilcdc: Remove obsolete bundled tilcdc tfp410 driver Date: Wed, 4 Dec 2019 19:53:10 +0200 Message-ID: <17aefa0a42575bbdd0cb22d150a153e771b0be83.1575481630.git.jsarha@ti.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1575481997; bh=K5H/3gYZtyj4l6M9b0D8wLi/qe8Cm+JCXSV78KdYbtQ=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=j7pNpcFkK7YEv3SOIeDT3yAjlF7XlGVU21QZ7iRL5RQb/CVIKyZF6TTCQIc1GwzsJ vsD178qCEsohOV6ftg3RC++YBk0RaCMqqEsVq7JWnBRwimjIOD5RhQPnvnfs801pkW BPms5YGQizF4LDxvxx6NDiQq6nLHNSSw85T4lQDs= 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: peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" UmVtb3ZlIG9ic29sZXRlIGJ1bmRsZWQgdGZwNDEwIGRyaXZlciB3aXRoIGl0cyAidGksdGlsY2Rj LHRmcDQxMCIKZGV2aWNldHJlZSBiaW5kaW5nLiBObyBwbGF0Zm9ybSBoYXMgZXZlciB1c2VkIHRo aXMgZHJpdmVyIGluIHRoZQptYWlubGluZSBrZXJuZWwgYW5kIGlmIGFueWJvZHkgY29ubmVjdHMg dGZwNDEwIHRvIHRpbGNkYyBoZSBvciBzaGUKc2hvdWxkIHVzZSB0aGUgZ2VuZXJpYyBkcm0gdGZw NDEwIGJyaWRnZSBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBKeXJpIFNhcmhhIDxqc2FyaGFAdGku Y29tPgotLS0KIC4uLi9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy90ZnA0MTAudHh0ICAgICAgICB8 ICAyMSAtCiBkcml2ZXJzL2dwdS9kcm0vdGlsY2RjL01ha2VmaWxlICAgICAgICAgICAgICAgfCAg IDEgLQogZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfZHJ2LmMgICAgICAgICAgIHwgICAz IC0KIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5jICAgICAgICB8IDM3OSAt LS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5o ICAgICAgICB8ICAxNSAtCiA1IGZpbGVzIGNoYW5nZWQsIDQxOSBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90 aWxjZGMvdGZwNDEwLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS90aWxj ZGMvdGlsY2RjX3RmcDQxMC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Rp bGNkYy90aWxjZGNfdGZwNDEwLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvZGlzcGxheS90aWxjZGMvdGZwNDEwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy90ZnA0MTAudHh0CmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBhNThhZTc3NTZmYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9Eb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aWxjZGMvdGZwNDEwLnR4dAorKysg L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLURldmljZS1UcmVlIGJpbmRpbmdzIGZvciB0aWxj ZGMgRFJNIFRGUDQxMCBvdXRwdXQgZHJpdmVyCi0KLVJlcXVpcmVkIHByb3BlcnRpZXM6Ci0gLSBj b21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgInRpLHRpbGNkYyx0ZnA0MTAiLgotIC0gaTJjOiB0 aGUgcGhhbmRsZSBmb3IgdGhlIGkyYyBkZXZpY2UgdG8gdXNlIGZvciBEREMKLQotUmVjb21tZW5k ZWQgcHJvcGVydGllczoKLSAtIHBpbmN0cmwtbmFtZXMsIHBpbmN0cmwtMDogdGhlIHBpbmNvbnRy b2wgc2V0dGluZ3MgdG8gY29uZmlndXJlCi0gICBtdXhpbmcgcHJvcGVybHkgZm9yIHBpbnMgdGhh dCBjb25uZWN0IHRvIFRGUDQxMCBkZXZpY2UKLSAtIHBvd2VyZG4tZ3BpbzogdGhlIHBvd2VyZG93 biBHUElPLCBwdWxsZWQgbG93IHRvIHBvd2VyIGRvd24gdGhlCi0gICBURlA0MTAgZGV2aWNlIChm b3IgRFBNU19PRkYpCi0KLUV4YW1wbGU6Ci0KLQlkdmljYXBlIHsKLQkJY29tcGF0aWJsZSA9ICJ0 aSx0aWxjZGMsdGZwNDEwIjsKLQkJaTJjID0gPCZpMmMyPjsKLQkJcGluY3RybC1uYW1lcyA9ICJk ZWZhdWx0IjsKLQkJcGluY3RybC0wID0gPCZib25lX2R2aV9jYXBlX2R2aV8wMEExX3BpbnM+Owot CQlwb3dlcmRuLWdwaW8gPSA8JmdwaW8yIDMxIDA+OwotCX07CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdGlsY2RjL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3RpbGNkYy9NYWtlZmls ZQppbmRleCA4N2Y5NDgwZTQzYjAuLjY2MmJmM2EzNDhjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3RpbGNkYy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL01ha2Vm aWxlCkBAIC02LDcgKzYsNiBAQCBlbmRpZgogdGlsY2RjLXkgOj0gXAogCXRpbGNkY19wbGFuZS5v IFwKIAl0aWxjZGNfY3J0Yy5vIFwKLQl0aWxjZGNfdGZwNDEwLm8gXAogCXRpbGNkY19wYW5lbC5v IFwKIAl0aWxjZGNfZXh0ZXJuYWwubyBcCiAJdGlsY2RjX2Rydi5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMv dGlsY2RjX2Rydi5jCmluZGV4IDJhOWU2NzU5NzM3NS4uMjA3NDVkYjg2M2ZmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdGlsY2RjL3RpbGNkY19kcnYuYwpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgInRpbGNk Y19leHRlcm5hbC5oIgogI2luY2x1ZGUgInRpbGNkY19wYW5lbC5oIgogI2luY2x1ZGUgInRpbGNk Y19yZWdzLmgiCi0jaW5jbHVkZSAidGlsY2RjX3RmcDQxMC5oIgogCiBzdGF0aWMgTElTVF9IRUFE KG1vZHVsZV9saXN0KTsKIApAQCAtNjQ5LDcgKzY0OCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZHJpdmVyIHRpbGNkY19wbGF0Zm9ybV9kcml2ZXIgPSB7CiBzdGF0aWMgaW50IF9faW5pdCB0 aWxjZGNfZHJtX2luaXQodm9pZCkKIHsKIAlEQkcoImluaXQiKTsKLQl0aWxjZGNfdGZwNDEwX2lu aXQoKTsKIAl0aWxjZGNfcGFuZWxfaW5pdCgpOwogCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVn aXN0ZXIoJnRpbGNkY19wbGF0Zm9ybV9kcml2ZXIpOwogfQpAQCAtNjU5LDcgKzY1Nyw2IEBAIHN0 YXRpYyB2b2lkIF9fZXhpdCB0aWxjZGNfZHJtX2Zpbmkodm9pZCkKIAlEQkcoImZpbmkiKTsKIAlw bGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdGlsY2RjX3BsYXRmb3JtX2RyaXZlcik7CiAJdGls Y2RjX3BhbmVsX2ZpbmkoKTsKLQl0aWxjZGNfdGZwNDEwX2ZpbmkoKTsKIH0KIAogbW9kdWxlX2lu aXQodGlsY2RjX2RybV9pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMv dGlsY2RjX3RmcDQxMC5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfdGZwNDEwLmMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMGVkYjNiNTFjYy4uMDAwMDAwMDAwMDAw Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5jCisrKyAvZGV2L251 bGwKQEAgLTEsMzc5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMKLSAqIEF1 dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgotICovCi0KLSNpbmNsdWRlIDxs aW51eC9ncGlvLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kX2RldmljZXRhYmxlLmg+Ci0jaW5jbHVk ZSA8bGludXgvb2ZfZ3Bpby5oPgotI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4K LSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLQotI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgotI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgotI2luY2x1ZGUg PGRybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oPgotI2luY2x1ZGUgPGRybS9kcm1fcHJv YmVfaGVscGVyLmg+Ci0KLSNpbmNsdWRlICJ0aWxjZGNfZHJ2LmgiCi0jaW5jbHVkZSAidGlsY2Rj X3RmcDQxMC5oIgotCi1zdHJ1Y3QgdGZwNDEwX21vZHVsZSB7Ci0Jc3RydWN0IHRpbGNkY19tb2R1 bGUgYmFzZTsKLQlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYzsKLQlpbnQgZ3BpbzsKLX07Ci0jZGVm aW5lIHRvX3RmcDQxMF9tb2R1bGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB0ZnA0MTBfbW9k dWxlLCBiYXNlKQotCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGlsY2RjX3BhbmVsX2luZm8gZHZp X2luZm8gPSB7Ci0JCS5hY19iaWFzICAgICAgICAgICAgICAgID0gMjU1LAotCQkuYWNfYmlhc19p bnRycHQgICAgICAgICA9IDAsCi0JCS5kbWFfYnVyc3Rfc3ogICAgICAgICAgID0gMTYsCi0JCS5i cHAgICAgICAgICAgICAgICAgICAgID0gMTYsCi0JCS5mZGQgICAgICAgICAgICAgICAgICAgID0g MHg4MCwKLQkJLnRmdF9hbHRfbW9kZSAgICAgICAgICAgPSAwLAotCQkuc3luY19lZGdlICAgICAg ICAgICAgICA9IDAsCi0JCS5zeW5jX2N0cmwgICAgICAgICAgICAgID0gMSwKLQkJLnJhc3Rlcl9v cmRlciAgICAgICAgICAgPSAwLAotfTsKLQotLyoKLSAqIEVuY29kZXI6Ci0gKi8KLQotc3RydWN0 IHRmcDQxMF9lbmNvZGVyIHsKLQlzdHJ1Y3QgZHJtX2VuY29kZXIgYmFzZTsKLQlzdHJ1Y3QgdGZw NDEwX21vZHVsZSAqbW9kOwotCWludCBkcG1zOwotfTsKLSNkZWZpbmUgdG9fdGZwNDEwX2VuY29k ZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB0ZnA0MTBfZW5jb2RlciwgYmFzZSkKLQotc3Rh dGljIHZvaWQgdGZwNDEwX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIs IGludCBtb2RlKQotewotCXN0cnVjdCB0ZnA0MTBfZW5jb2RlciAqdGZwNDEwX2VuY29kZXIgPSB0 b190ZnA0MTBfZW5jb2RlcihlbmNvZGVyKTsKLQotCWlmICh0ZnA0MTBfZW5jb2Rlci0+ZHBtcyA9 PSBtb2RlKQotCQlyZXR1cm47Ci0KLQlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKSB7Ci0J CURCRygiUG93ZXIgb24iKTsKLQkJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHRmcDQxMF9lbmNvZGVy LT5tb2QtPmdwaW8sIDEpOwotCX0gZWxzZSB7Ci0JCURCRygiUG93ZXIgb2ZmIik7Ci0JCWdwaW9f ZGlyZWN0aW9uX291dHB1dCh0ZnA0MTBfZW5jb2Rlci0+bW9kLT5ncGlvLCAwKTsKLQl9Ci0KLQl0 ZnA0MTBfZW5jb2Rlci0+ZHBtcyA9IG1vZGU7Ci19Ci0KLXN0YXRpYyB2b2lkIHRmcDQxMF9lbmNv ZGVyX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXRmcDQxMF9lbmNv ZGVyX2RwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PRkYpOwotfQotCi1zdGF0aWMgdm9pZCB0 ZnA0MTBfZW5jb2Rlcl9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXRm cDQxMF9lbmNvZGVyX2RwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PTik7Ci19Ci0KLXN0YXRp YyB2b2lkIHRmcDQxMF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKLQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCi0JCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlKQotewotCS8qIG5vdGhpbmcgbmVlZGVkICovCi19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgdGZwNDEwX2VuY29kZXJfZnVuY3Mg PSB7Ci0JCS5kZXN0cm95ICAgICAgICA9IGRybV9lbmNvZGVyX2NsZWFudXAsCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyB0ZnA0MTBfZW5jb2Rlcl9o ZWxwZXJfZnVuY3MgPSB7Ci0JCS5kcG1zICAgICAgICAgICA9IHRmcDQxMF9lbmNvZGVyX2RwbXMs Ci0JCS5wcmVwYXJlICAgICAgICA9IHRmcDQxMF9lbmNvZGVyX3ByZXBhcmUsCi0JCS5jb21taXQg ICAgICAgICA9IHRmcDQxMF9lbmNvZGVyX2NvbW1pdCwKLQkJLm1vZGVfc2V0ICAgICAgID0gdGZw NDEwX2VuY29kZXJfbW9kZV9zZXQsCi19OwotCi1zdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICp0 ZnA0MTBfZW5jb2Rlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJc3RydWN0IHRm cDQxMF9tb2R1bGUgKm1vZCkKLXsKLQlzdHJ1Y3QgdGZwNDEwX2VuY29kZXIgKnRmcDQxMF9lbmNv ZGVyOwotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgcmV0OwotCi0JdGZwNDEw X2VuY29kZXIgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigqdGZwNDEwX2VuY29kZXIp LAotCQkJCSAgICAgIEdGUF9LRVJORUwpOwotCWlmICghdGZwNDEwX2VuY29kZXIpCi0JCXJldHVy biBOVUxMOwotCi0JdGZwNDEwX2VuY29kZXItPmRwbXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKLQl0 ZnA0MTBfZW5jb2Rlci0+bW9kID0gbW9kOwotCi0JZW5jb2RlciA9ICZ0ZnA0MTBfZW5jb2Rlci0+ YmFzZTsKLQllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDE7Ci0KLQlyZXQgPSBkcm1fZW5jb2Rl cl9pbml0KGRldiwgZW5jb2RlciwgJnRmcDQxMF9lbmNvZGVyX2Z1bmNzLAotCQkJRFJNX01PREVf RU5DT0RFUl9UTURTLCBOVUxMKTsKLQlpZiAocmV0IDwgMCkKLQkJZ290byBmYWlsOwotCi0JZHJt X2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmdGZwNDEwX2VuY29kZXJfaGVscGVyX2Z1bmNz KTsKLQotCXJldHVybiBlbmNvZGVyOwotCi1mYWlsOgotCWRybV9lbmNvZGVyX2NsZWFudXAoZW5j b2Rlcik7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLS8qCi0gKiBDb25uZWN0b3I6Ci0gKi8KLQotc3Ry dWN0IHRmcDQxMF9jb25uZWN0b3IgewotCXN0cnVjdCBkcm1fY29ubmVjdG9yIGJhc2U7Ci0KLQlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7ICAvKiBvdXIgY29ubmVjdGVkIGVuY29kZXIgKi8K LQlzdHJ1Y3QgdGZwNDEwX21vZHVsZSAqbW9kOwotfTsKLSNkZWZpbmUgdG9fdGZwNDEwX2Nvbm5l Y3Rvcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IHRmcDQxMF9jb25uZWN0b3IsIGJhc2UpCi0K LQotc3RhdGljIHZvaWQgdGZwNDEwX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCi17Ci0JZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7 Ci0JZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Ci19Ci0KLXN0YXRpYyBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzIHRmcDQxMF9jb25uZWN0b3JfZGV0ZWN0KAotCQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQlib29sIGZvcmNlKQotewotCXN0cnVjdCB0ZnA0MTBf Y29ubmVjdG9yICp0ZnA0MTBfY29ubmVjdG9yID0gdG9fdGZwNDEwX2Nvbm5lY3Rvcihjb25uZWN0 b3IpOwotCi0JaWYgKGRybV9wcm9iZV9kZGModGZwNDEwX2Nvbm5lY3Rvci0+bW9kLT5pMmMpKQot CQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Ci0KLQlyZXR1cm4gY29ubmVjdG9y X3N0YXR1c191bmtub3duOwotfQotCi1zdGF0aWMgaW50IHRmcDQxMF9jb25uZWN0b3JfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCi17Ci0Jc3RydWN0IHRmcDQxMF9j b25uZWN0b3IgKnRmcDQxMF9jb25uZWN0b3IgPSB0b190ZnA0MTBfY29ubmVjdG9yKGNvbm5lY3Rv cik7Ci0Jc3RydWN0IGVkaWQgKmVkaWQ7Ci0JaW50IHJldCA9IDA7Ci0KLQllZGlkID0gZHJtX2dl dF9lZGlkKGNvbm5lY3RvciwgdGZwNDEwX2Nvbm5lY3Rvci0+bW9kLT5pMmMpOwotCi0JZHJtX2Nv bm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOwotCi0JaWYgKGVk aWQpIHsKLQkJcmV0ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Ci0JCWtm cmVlKGVkaWQpOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZHJtX2Vu Y29kZXIgKnRmcDQxMF9jb25uZWN0b3JfYmVzdF9lbmNvZGVyKAotCQlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQotewotCXN0cnVjdCB0ZnA0MTBfY29ubmVjdG9yICp0ZnA0MTBfY29u bmVjdG9yID0gdG9fdGZwNDEwX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwotCXJldHVybiB0ZnA0MTBf Y29ubmVjdG9yLT5lbmNvZGVyOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfZnVuY3MgdGZwNDEwX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKLQkuZGVzdHJveSAgICAgICAgICAg ID0gdGZwNDEwX2Nvbm5lY3Rvcl9kZXN0cm95LAotCS5kZXRlY3QgICAgICAgICAgICAgPSB0ZnA0 MTBfY29ubmVjdG9yX2RldGVjdCwKLQkuZmlsbF9tb2RlcyAgICAgICAgID0gZHJtX2hlbHBlcl9w cm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAotCS5yZXNldCAgICAgICAgICAgICAgPSBkcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCi0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAotCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRl LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyB0 ZnA0MTBfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKLQkuZ2V0X21vZGVzICAgICAgICAgID0g dGZwNDEwX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCi0JLmJlc3RfZW5jb2RlciAgICAgICA9IHRmcDQx MF9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLAotfTsKLQotc3RhdGljIHN0cnVjdCBkcm1fY29ubmVj dG9yICp0ZnA0MTBfY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQlz dHJ1Y3QgdGZwNDEwX21vZHVsZSAqbW9kLCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17 Ci0Jc3RydWN0IHRmcDQxMF9jb25uZWN0b3IgKnRmcDQxMF9jb25uZWN0b3I7Ci0Jc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlpbnQgcmV0OwotCi0JdGZwNDEwX2Nvbm5lY3RvciA9 IGRldm1fa3phbGxvYyhkZXYtPmRldiwgc2l6ZW9mKCp0ZnA0MTBfY29ubmVjdG9yKSwKLQkJCQkJ R0ZQX0tFUk5FTCk7Ci0JaWYgKCF0ZnA0MTBfY29ubmVjdG9yKQotCQlyZXR1cm4gTlVMTDsKLQot CXRmcDQxMF9jb25uZWN0b3ItPmVuY29kZXIgPSBlbmNvZGVyOwotCXRmcDQxMF9jb25uZWN0b3It Pm1vZCA9IG1vZDsKLQotCWNvbm5lY3RvciA9ICZ0ZnA0MTBfY29ubmVjdG9yLT5iYXNlOwotCi0J ZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCAmdGZwNDEwX2Nvbm5lY3Rvcl9mdW5j cywKLQkJCURSTV9NT0RFX0NPTk5FQ1RPUl9EVklEKTsKLQlkcm1fY29ubmVjdG9yX2hlbHBlcl9h ZGQoY29ubmVjdG9yLCAmdGZwNDEwX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwotCi0JY29ubmVj dG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVCB8Ci0JCQlEUk1fQ09OTkVD VE9SX1BPTExfRElTQ09OTkVDVDsKLQotCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAw OwotCWNvbm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0gMDsKLQotCXJldCA9IGRybV9jb25u ZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKLQlpZiAocmV0KQotCQln b3RvIGZhaWw7Ci0KLQlyZXR1cm4gY29ubmVjdG9yOwotCi1mYWlsOgotCXRmcDQxMF9jb25uZWN0 b3JfZGVzdHJveShjb25uZWN0b3IpOwotCXJldHVybiBOVUxMOwotfQotCi0vKgotICogTW9kdWxl OgotICovCi0KLXN0YXRpYyBpbnQgdGZwNDEwX21vZGVzZXRfaW5pdChzdHJ1Y3QgdGlsY2RjX21v ZHVsZSAqbW9kLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotewotCXN0cnVjdCB0ZnA0MTBfbW9k dWxlICp0ZnA0MTBfbW9kID0gdG9fdGZwNDEwX21vZHVsZShtb2QpOwotCXN0cnVjdCB0aWxjZGNf ZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCi0JZW5jb2Rl ciA9IHRmcDQxMF9lbmNvZGVyX2NyZWF0ZShkZXYsIHRmcDQxMF9tb2QpOwotCWlmICghZW5jb2Rl cikKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQljb25uZWN0b3IgPSB0ZnA0MTBfY29ubmVjdG9yX2Ny ZWF0ZShkZXYsIHRmcDQxMF9tb2QsIGVuY29kZXIpOwotCWlmICghY29ubmVjdG9yKQotCQlyZXR1 cm4gLUVOT01FTTsKLQotCXByaXYtPmVuY29kZXJzW3ByaXYtPm51bV9lbmNvZGVycysrXSA9IGVu Y29kZXI7Ci0JcHJpdi0+Y29ubmVjdG9yc1twcml2LT5udW1fY29ubmVjdG9ycysrXSA9IGNvbm5l Y3RvcjsKLQotCXRpbGNkY19jcnRjX3NldF9wYW5lbF9pbmZvKHByaXYtPmNydGMsICZkdmlfaW5m byk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGlsY2RjX21vZHVsZV9v cHMgdGZwNDEwX21vZHVsZV9vcHMgPSB7Ci0JCS5tb2Rlc2V0X2luaXQgPSB0ZnA0MTBfbW9kZXNl dF9pbml0LAotfTsKLQotLyoKLSAqIERldmljZToKLSAqLwotCi1zdGF0aWMgaW50IHRmcDQxMF9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqaTJjX25v ZGU7Ci0Jc3RydWN0IHRmcDQxMF9tb2R1bGUgKnRmcDQxMF9tb2Q7Ci0Jc3RydWN0IHRpbGNkY19t b2R1bGUgKm1vZDsKLQlzdHJ1Y3QgcGluY3RybCAqcGluY3RybDsKLQl1aW50MzJfdCBpMmNfcGhh bmRsZTsKLQlpbnQgcmV0ID0gLUVJTlZBTDsKLQotCS8qIGJhaWwgb3V0IGVhcmx5IGlmIG5vIERU IGRhdGE6ICovCi0JaWYgKCFub2RlKSB7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgImRldmljZS10 cmVlIGRhdGEgaXMgbWlzc2luZ1xuIik7Ci0JCXJldHVybiAtRU5YSU87Ci0JfQotCi0JdGZwNDEw X21vZCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnRmcDQxMF9tb2QpLCBHRlBf S0VSTkVMKTsKLQlpZiAoIXRmcDQxMF9tb2QpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JbW9kID0g JnRmcDQxMF9tb2QtPmJhc2U7Ci0JcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBtb2Q7Ci0KLQl0 aWxjZGNfbW9kdWxlX2luaXQobW9kLCAidGZwNDEwIiwgJnRmcDQxMF9tb2R1bGVfb3BzKTsKLQot CXBpbmN0cmwgPSBkZXZtX3BpbmN0cmxfZ2V0X3NlbGVjdF9kZWZhdWx0KCZwZGV2LT5kZXYpOwot CWlmIChJU19FUlIocGluY3RybCkpCi0JCWRldl93YXJuKCZwZGV2LT5kZXYsICJwaW5zIGFyZSBu b3QgY29uZmlndXJlZFxuIik7Ci0KLQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgImky YyIsICZpMmNfcGhhbmRsZSkpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY291bGQgbm90IGdl dCBpMmMgYnVzIHBoYW5kbGVcbiIpOwotCQlnb3RvIGZhaWw7Ci0JfQotCi0JaTJjX25vZGUgPSBv Zl9maW5kX25vZGVfYnlfcGhhbmRsZShpMmNfcGhhbmRsZSk7Ci0JaWYgKCFpMmNfbm9kZSkgewot CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IGkyYyBidXMgbm9kZVxuIik7Ci0J CWdvdG8gZmFpbDsKLQl9Ci0KLQl0ZnA0MTBfbW9kLT5pMmMgPSBvZl9maW5kX2kyY19hZGFwdGVy X2J5X25vZGUoaTJjX25vZGUpOwotCWlmICghdGZwNDEwX21vZC0+aTJjKSB7Ci0JCWRldl9lcnIo JnBkZXYtPmRldiwgImNvdWxkIG5vdCBnZXQgaTJjXG4iKTsKLQkJb2Zfbm9kZV9wdXQoaTJjX25v ZGUpOwotCQlnb3RvIGZhaWw7Ci0JfQotCi0Jb2Zfbm9kZV9wdXQoaTJjX25vZGUpOwotCi0JdGZw NDEwX21vZC0+Z3BpbyA9IG9mX2dldF9uYW1lZF9ncGlvX2ZsYWdzKG5vZGUsICJwb3dlcmRuLWdw aW8iLAotCQkJMCwgTlVMTCk7Ci0JaWYgKHRmcDQxMF9tb2QtPmdwaW8gPCAwKSB7Ci0JCWRldl93 YXJuKCZwZGV2LT5kZXYsICJObyBwb3dlciBkb3duIEdQSU9cbiIpOwotCX0gZWxzZSB7Ci0JCXJl dCA9IGdwaW9fcmVxdWVzdCh0ZnA0MTBfbW9kLT5ncGlvLCAiRFZJX1BEbiIpOwotCQlpZiAocmV0 KSB7Ci0JCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IERWSV9QRG4gZ3Bpb1xu Iik7Ci0JCQlnb3RvIGZhaWxfYWRhcHRlcjsKLQkJfQotCX0KLQotCXJldHVybiAwOwotCi1mYWls X2FkYXB0ZXI6Ci0JaTJjX3B1dF9hZGFwdGVyKHRmcDQxMF9tb2QtPmkyYyk7Ci0KLWZhaWw6Ci0J dGlsY2RjX21vZHVsZV9jbGVhbnVwKG1vZCk7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGlu dCB0ZnA0MTBfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCi17Ci0Jc3RydWN0 IHRpbGNkY19tb2R1bGUgKm1vZCA9IGRldl9nZXRfcGxhdGRhdGEoJnBkZXYtPmRldik7Ci0Jc3Ry dWN0IHRmcDQxMF9tb2R1bGUgKnRmcDQxMF9tb2QgPSB0b190ZnA0MTBfbW9kdWxlKG1vZCk7Ci0K LQlpMmNfcHV0X2FkYXB0ZXIodGZwNDEwX21vZC0+aTJjKTsKLQlncGlvX2ZyZWUodGZwNDEwX21v ZC0+Z3Bpbyk7Ci0KLQl0aWxjZGNfbW9kdWxlX2NsZWFudXAobW9kKTsKLQotCXJldHVybiAwOwot fQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZnA0MTBfb2ZfbWF0Y2hbXSA9 IHsKLQkJeyAuY29tcGF0aWJsZSA9ICJ0aSx0aWxjZGMsdGZwNDEwIiwgfSwKLQkJeyB9LAotfTsK LQotc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZnA0MTBfZHJpdmVyID0gewotCS5wcm9iZSA9IHRm cDQxMF9wcm9iZSwKLQkucmVtb3ZlID0gdGZwNDEwX3JlbW92ZSwKLQkuZHJpdmVyID0gewotCQku b3duZXIgPSBUSElTX01PRFVMRSwKLQkJLm5hbWUgPSAidGZwNDEwIiwKLQkJLm9mX21hdGNoX3Rh YmxlID0gdGZwNDEwX29mX21hdGNoLAotCX0sCi19OwotCi1pbnQgX19pbml0IHRpbGNkY190ZnA0 MTBfaW5pdCh2b2lkKQotewotCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnRmcDQx MF9kcml2ZXIpOwotfQotCi12b2lkIF9fZXhpdCB0aWxjZGNfdGZwNDEwX2Zpbmkodm9pZCkKLXsK LQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdGZwNDEwX2RyaXZlcik7Ci19CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY190ZnA0MTAuaCBiL2RyaXZlcnMvZ3B1 L2RybS90aWxjZGMvdGlsY2RjX3RmcDQxMC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBmOWFhZjY5MTFmZmMuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2Rj L3RpbGNkY190ZnA0MTAuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qCi0gKiBDb3B5cmlnaHQgKEMp IDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMKLSAqIEF1dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtA Z21haWwuY29tPgotICovCi0KLSNpZm5kZWYgX19USUxDRENfVEZQNDEwX0hfXwotI2RlZmluZSBf X1RJTENEQ19URlA0MTBfSF9fCi0KLS8qIHN1Yi1tb2R1bGUgZm9yIHRmcDQxMCBkdmkgYWRhcHRv ciAqLwotCi1pbnQgdGlsY2RjX3RmcDQxMF9pbml0KHZvaWQpOwotdm9pZCB0aWxjZGNfdGZwNDEw X2Zpbmkodm9pZCk7Ci0KLSNlbmRpZiAvKiBfX1RJTENEQ19URlA0MTBfSF9fICovCi0tIApUZXhh cyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5r aS4gWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTog SGVsc2lua2kKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==