From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajat Jain Subject: [PATCH v2 2/3] drm/i915: Lookup and attach ACPI device node for connectors Date: Mon, 4 Nov 2019 11:41:46 -0800 Message-ID: <20191104194147.185642-2-rajatja@google.com> References: <20191023001206.15741-1-rajatja@google.com> <20191104194147.185642-1-rajatja@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: In-Reply-To: <20191104194147.185642-1-rajatja@google.com> Sender: linux-kernel-owner@vger.kernel.org To: Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Daniel Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Chris Wilson , Imre Deak , =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, gregkh@linuxfoundation.org, mathewk@google.com, Daniel Thompson , Jonathan Corbet Cc: Rajat Jain , rajatxjain@gmail.com List-Id: intel-gfx@lists.freedesktop.org Lookup and attach ACPI nodes for intel connectors. The lookup is done in compliance with ACPI Spec 6.3 https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf (Ref: Pages 1119 - 1123). This can be useful for any connector specific platform properties. (This will be used for privacy screen in next patch). Signed-off-by: Rajat Jain Change-Id: I798e70714a4402554c8cd2a8e58268353f75814f --- v2: formed by splitting the original patch into ACPI lookup, and privacy screen property. Also move it into i915 now that I found existing code in i915 that can be re-used. drivers/gpu/drm/i915/display/intel_acpi.c | 50 +++++++++++++++++++ drivers/gpu/drm/i915/display/intel_acpi.h | 4 +- .../drm/i915/display/intel_display_types.h | 3 ++ drivers/gpu/drm/i915/display/intel_dp.c | 4 ++ 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c index 748d9b3125dd..0c10516430b1 100644 --- a/drivers/gpu/drm/i915/display/intel_acpi.c +++ b/drivers/gpu/drm/i915/display/intel_acpi.c @@ -243,3 +243,53 @@ void intel_populate_acpi_ids_for_all_connectors(struct drm_device *drm_dev) } drm_connector_list_iter_end(&conn_iter); } + +/* + * Ref: ACPI Spec 6.3 + * https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf + * Pages 1119 - 1123 describe, what I believe, a standard way of + * identifying / addressing "display panels" in the ACPI. It provides + * a way for the ACPI to define devices for the display panels attached + * to the system. It thus provides a way for the BIOS to export any panel + * specific properties to the system via ACPI (like device trees). + * + * The following functions looks up the ACPI node for a connector and returns + * it. Technically it is independent from the i915 code, and + * ideally may be called for all connectors. It is generally a good idea to + * be able to attach an ACPI node to describe anything if needed. (This can + * help in future for other panel specific features maybe). However, it + * needs an acpi device ID which is build using an index within a particular + * type of port (Ref to the pages of spec mentioned above, and to code in + * intel_populate_acpi_ids_for_all_connectors()). This device index + * unfortunately is not available in DRM code, so currently its call is + * originated from i915 driver. If in future this is useful for other drivers + * and we can find a generic way of getting a device index, we should move this + * function to drm code, maybe. + */ +void intel_connector_lookup_acpi_node(struct intel_connector *intel_connector) +{ + struct drm_device *drm_dev = intel_connector->base.dev; + struct device *dev = &drm_dev->pdev->dev; + struct acpi_device *conn_dev; + u64 conn_addr; + + /* + * Repopulate ACPI IDs for all connectors is needed because the display + * index may have changed as a result of hotplugging and unplugging + * connectors + */ + intel_populate_acpi_ids_for_all_connectors(drm_dev); + + /* Build the _ADR to look for */ + conn_addr = intel_connector->acpi_device_id; + conn_addr |= ACPI_DEVICE_ID_SCHEME; + conn_addr |= ACPI_BIOS_CAN_DETECT; + + DRM_DEV_INFO(dev, "Looking for connector ACPI node at _ADR=%llX\n", + conn_addr); + + /* Look up the connector device, under the PCI device */ + conn_dev = acpi_find_child_device(ACPI_COMPANION(dev), conn_addr, + false); + intel_connector->acpi_handle = conn_dev ? conn_dev->handle : NULL; +} diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h index 8f6d850df6fa..61a4392fac4a 100644 --- a/drivers/gpu/drm/i915/display/intel_acpi.h +++ b/drivers/gpu/drm/i915/display/intel_acpi.h @@ -9,14 +9,16 @@ #include "intel_display_types.h" #ifdef CONFIG_ACPI +void intel_connector_lookup_acpi_node(struct intel_connector *connector); void intel_register_dsm_handler(void); void intel_unregister_dsm_handler(void); void intel_populate_acpi_ids_for_all_connectors(struct drm_device *drm_dev); #else +static inline void +intel_connector_lookup_acpi_node(struct intel_connector *connector) { return; } static inline void intel_register_dsm_handler(void) { return; } static inline void intel_unregister_dsm_handler(void) { return; } static inline void -static inline void intel_populate_acpi_ids_for_all_connectors(struct drm_device *drm_dev) { } #endif /* CONFIG_ACPI */ diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h index 449abaea619f..c2706afc069b 100644 --- a/drivers/gpu/drm/i915/display/intel_display_types.h +++ b/drivers/gpu/drm/i915/display/intel_display_types.h @@ -400,6 +400,9 @@ struct intel_connector { /* ACPI device id for ACPI and driver cooperation */ u32 acpi_device_id; + /* ACPI handle corresponding to this connector display, if found */ + void *acpi_handle; + /* Reads out the current hw, returning true if the connector is enabled * and active (i.e. dpms ON state). */ bool (*get_hw_state)(struct intel_connector *); diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index f865615172a5..4fac408a4299 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -45,6 +45,7 @@ #include "i915_debugfs.h" #include "i915_drv.h" #include "i915_trace.h" +#include "intel_acpi.h" #include "intel_atomic.h" #include "intel_audio.h" #include "intel_connector.h" @@ -6333,6 +6334,7 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect { struct drm_i915_private *dev_priv = to_i915(connector->dev); enum port port = dp_to_dig_port(intel_dp)->base.port; + struct intel_connector *intel_connector = to_intel_connector(connector); if (!IS_G4X(dev_priv) && port != PORT_A) intel_attach_force_audio_property(connector); @@ -6354,6 +6356,8 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; + /* Lookup the ACPI node corresponding to the connector */ + intel_connector_lookup_acpi_node(intel_connector); } } -- 2.24.0.rc1.363.gb1bccd3e3d-goog 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.7 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 EA5F9C5DF60 for ; Tue, 5 Nov 2019 17:53:49 +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 CEFAC217F5 for ; Tue, 5 Nov 2019 17:53:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CEFAC217F5 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 438836EB38; Tue, 5 Nov 2019 17:53:47 +0000 (UTC) Received: from mail-vk1-xa4a.google.com (mail-vk1-xa4a.google.com [IPv6:2607:f8b0:4864:20::a4a]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8026F89BB0 for ; Mon, 4 Nov 2019 19:41:56 +0000 (UTC) Received: by mail-vk1-xa4a.google.com with SMTP id o144so8297453vko.13 for ; Mon, 04 Nov 2019 11:41:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=Hw2kwOv7aHvONVhhCWMO8y6YePHkYT17+TPLWVMLRSU=; b=n9MDZh1+QtNujP/48TU58jjdxGDRk1+xfgrTVG+oLG+xeLTS5TbYHCUBcUv5SSlw76 uAY0NhTUc5FUJu3HvvYbCCWXLMv86pqgrmnGjUbFkbKLjdzvwZnnxi5dTbc5CIzbrLi2 DfBfRVrZg4IIDlZzpnI9hTlyvwPvQ2ql2bE3mqoUP9StZpCgqqyaPWbCrfCnNJJj7biP FkNNif9B09ch++m0RYQfjfN08s9yEXT56nH/OAY3yMW0eZktl7OJJToTXZ0rKWhzCLfP 94kVr7MZI8vySDrdP695fxKnV7caXA9GR2ViLe8nMoPUet7XkeXfn1UWDtNRKRZ5bxaZ areg== X-Gm-Message-State: APjAAAXfg8mmCN0kDkbXW3zzo4B5tDuPSEbEK1cVibM8KDRaTM2cOJam 5dT5uZus72/axZXTe+zRPNCFDjgbhOOm X-Google-Smtp-Source: APXvYqwb6j34OVjZAiDyjhBEmZpq85fuYsMFGZ6t/xrnw1a7t9N7/et8lPSVl8i0rq89wRb09CV6muZzyUlz X-Received: by 2002:a1f:accb:: with SMTP id v194mr12398929vke.24.1572896515242; Mon, 04 Nov 2019 11:41:55 -0800 (PST) Date: Mon, 4 Nov 2019 11:41:46 -0800 In-Reply-To: <20191104194147.185642-1-rajatja@google.com> Message-Id: <20191104194147.185642-2-rajatja@google.com> Mime-Version: 1.0 References: <20191023001206.15741-1-rajatja@google.com> <20191104194147.185642-1-rajatja@google.com> X-Mailer: git-send-email 2.24.0.rc1.363.gb1bccd3e3d-goog From: Rajat Jain To: Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Daniel Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , "=?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?=" , Chris Wilson , Imre Deak , "=?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?=" , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, gregkh@linuxfoundation.org, mathewk@google.com, Daniel Thompson , Jonathan Corbet , Pavel Machek , seanpaul@google.com, Duncan Laurie , jsbarnes@google.com, Thierry Reding X-Mailman-Approved-At: Tue, 05 Nov 2019 17:53:45 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=Hw2kwOv7aHvONVhhCWMO8y6YePHkYT17+TPLWVMLRSU=; b=RsgJREjB0mlFsau8SHnepZumZUcVdUKubJ1bNzsWBi+9P2bPsQpu3xr7xsCEvCoqRQ 36Q65eYrYtvRFamazrB6URSmqgrn+LooJpHOXrYLGxQ1m9gl2oqkbtITwPAchypEDGSD RGDMaxeKlpiNfsjI7VLXJTn426oaMj7lP+7/TdyWPC3jmd6WHydcWRn3mrNuiiIdyqTV hjPMI3VdfrI8VkoGlHs5AJB+BDUMQIV2lajUz1bQNyjEdA4TsT5cdmRm6YpDXO8T8q/n VT5ge8M6qgX7Rd78Hxo6y4AX7g2BIqIbX3xAGz8ixGOVlUBE5+4hAjHHZVQLC1mQlGlJ gg4Q== Subject: [Intel-gfx] [PATCH v2 2/3] drm/i915: Lookup and attach ACPI device node for connectors X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rajat Jain , rajatxjain@gmail.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191104194146.jLsCnTd6fsa_XRmxB_we3xiRDmWuBZ3goIqD37eEP2Y@z> TG9va3VwIGFuZCBhdHRhY2ggQUNQSSBub2RlcyBmb3IgaW50ZWwgY29ubmVjdG9ycy4gVGhlIGxv b2t1cCBpcyBkb25lCmluIGNvbXBsaWFuY2Ugd2l0aCBBQ1BJIFNwZWMgNi4zCmh0dHBzOi8vdWVm aS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNvdXJjZXMvQUNQSV82XzNfZmluYWxfSmFuMzAu cGRmCihSZWY6IFBhZ2VzIDExMTkgLSAxMTIzKS4KClRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgYW55 IGNvbm5lY3RvciBzcGVjaWZpYyBwbGF0Zm9ybSBwcm9wZXJ0aWVzLiAoVGhpcwp3aWxsIGJlIHVz ZWQgZm9yIHByaXZhY3kgc2NyZWVuIGluIG5leHQgcGF0Y2gpLgoKU2lnbmVkLW9mZi1ieTogUmFq YXQgSmFpbiA8cmFqYXRqYUBnb29nbGUuY29tPgpDaGFuZ2UtSWQ6IEk3OThlNzA3MTRhNDQwMjU1 NGM4Y2QyYThlNTgyNjgzNTNmNzU4MTRmCi0tLQp2MjogZm9ybWVkIGJ5IHNwbGl0dGluZyB0aGUg b3JpZ2luYWwgcGF0Y2ggaW50byBBQ1BJIGxvb2t1cCwgYW5kIHByaXZhY3kKICAgIHNjcmVlbiBw cm9wZXJ0eS4gQWxzbyBtb3ZlIGl0IGludG8gaTkxNSBub3cgdGhhdCBJIGZvdW5kIGV4aXN0aW5n IGNvZGUKICAgIGluIGk5MTUgdGhhdCBjYW4gYmUgcmUtdXNlZC4KCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2FjcGkuYyAgICAgfCA1MCArKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2FjcGkuaCAgICAgfCAgNCArLQogLi4u L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgIDMgKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyAgICAgICB8ICA0ICsrCiA0IGZpbGVz IGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2FjcGkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYWNwaS5jCmluZGV4IDc0OGQ5YjMxMjVkZC4uMGMxMDUxNjQz MGIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2FjcGku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2FjcGkuYwpAQCAtMjQz LDMgKzI0Myw1MyBAQCB2b2lkIGludGVsX3BvcHVsYXRlX2FjcGlfaWRzX2Zvcl9hbGxfY29ubmVj dG9ycyhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldikKIAl9CiAJZHJtX2Nvbm5lY3Rvcl9saXN0 X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwogfQorCisvKgorICogUmVmOiBBQ1BJIFNwZWMgNi4zCisg KiBodHRwczovL3VlZmkub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvcmVzb3VyY2VzL0FDUElfNl8z X2ZpbmFsX0phbjMwLnBkZgorICogUGFnZXMgMTExOSAtIDExMjMgZGVzY3JpYmUsIHdoYXQgSSBi ZWxpZXZlLCBhIHN0YW5kYXJkIHdheSBvZgorICogaWRlbnRpZnlpbmcgLyBhZGRyZXNzaW5nICJk aXNwbGF5IHBhbmVscyIgaW4gdGhlIEFDUEkuIEl0IHByb3ZpZGVzCisgKiBhIHdheSBmb3IgdGhl IEFDUEkgdG8gZGVmaW5lIGRldmljZXMgZm9yIHRoZSBkaXNwbGF5IHBhbmVscyBhdHRhY2hlZAor ICogdG8gdGhlIHN5c3RlbS4gSXQgdGh1cyBwcm92aWRlcyBhIHdheSBmb3IgdGhlIEJJT1MgdG8g ZXhwb3J0IGFueSBwYW5lbAorICogc3BlY2lmaWMgcHJvcGVydGllcyB0byB0aGUgc3lzdGVtIHZp YSBBQ1BJIChsaWtlIGRldmljZSB0cmVlcykuCisgKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlv bnMgbG9va3MgdXAgdGhlIEFDUEkgbm9kZSBmb3IgYSBjb25uZWN0b3IgYW5kIHJldHVybnMKKyAq IGl0LiBUZWNobmljYWxseSBpdCBpcyBpbmRlcGVuZGVudCBmcm9tIHRoZSBpOTE1IGNvZGUsIGFu ZAorICogaWRlYWxseSBtYXkgYmUgY2FsbGVkIGZvciBhbGwgY29ubmVjdG9ycy4gSXQgaXMgZ2Vu ZXJhbGx5IGEgZ29vZCBpZGVhIHRvCisgKiBiZSBhYmxlIHRvIGF0dGFjaCBhbiBBQ1BJIG5vZGUg dG8gZGVzY3JpYmUgYW55dGhpbmcgaWYgbmVlZGVkLiAoVGhpcyBjYW4KKyAqIGhlbHAgaW4gZnV0 dXJlIGZvciBvdGhlciBwYW5lbCBzcGVjaWZpYyBmZWF0dXJlcyBtYXliZSkuIEhvd2V2ZXIsIGl0 CisgKiBuZWVkcyBhbiBhY3BpIGRldmljZSBJRCB3aGljaCBpcyBidWlsZCB1c2luZyBhbiBpbmRl eCB3aXRoaW4gYSBwYXJ0aWN1bGFyCisgKiB0eXBlIG9mIHBvcnQgKFJlZiB0byB0aGUgcGFnZXMg b2Ygc3BlYyBtZW50aW9uZWQgYWJvdmUsIGFuZCB0byBjb2RlIGluCisgKiBpbnRlbF9wb3B1bGF0 ZV9hY3BpX2lkc19mb3JfYWxsX2Nvbm5lY3RvcnMoKSkuIFRoaXMgZGV2aWNlIGluZGV4CisgKiB1 bmZvcnR1bmF0ZWx5IGlzIG5vdCBhdmFpbGFibGUgaW4gRFJNIGNvZGUsIHNvIGN1cnJlbnRseSBp dHMgY2FsbCBpcworICogb3JpZ2luYXRlZCBmcm9tIGk5MTUgZHJpdmVyLiBJZiBpbiBmdXR1cmUg dGhpcyBpcyB1c2VmdWwgZm9yIG90aGVyIGRyaXZlcnMKKyAqIGFuZCB3ZSBjYW4gZmluZCBhIGdl bmVyaWMgd2F5IG9mIGdldHRpbmcgYSBkZXZpY2UgaW5kZXgsIHdlIHNob3VsZCBtb3ZlIHRoaXMK KyAqIGZ1bmN0aW9uIHRvIGRybSBjb2RlLCBtYXliZS4KKyAqLwordm9pZCBpbnRlbF9jb25uZWN0 b3JfbG9va3VwX2FjcGlfbm9kZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0 b3IpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBpbnRlbF9jb25uZWN0b3ItPmJh c2UuZGV2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkcm1fZGV2LT5wZGV2LT5kZXY7CisJc3Ry dWN0IGFjcGlfZGV2aWNlICpjb25uX2RldjsKKwl1NjQgY29ubl9hZGRyOworCisJLyoKKwkgKiBS ZXBvcHVsYXRlIEFDUEkgSURzIGZvciBhbGwgY29ubmVjdG9ycyBpcyBuZWVkZWQgYmVjYXVzZSB0 aGUgZGlzcGxheQorCSAqIGluZGV4IG1heSBoYXZlIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgaG90 cGx1Z2dpbmcgYW5kIHVucGx1Z2dpbmcKKwkgKiBjb25uZWN0b3JzCisJICovCisJaW50ZWxfcG9w dWxhdGVfYWNwaV9pZHNfZm9yX2FsbF9jb25uZWN0b3JzKGRybV9kZXYpOworCisJLyogQnVpbGQg dGhlIF9BRFIgdG8gbG9vayBmb3IgKi8KKwljb25uX2FkZHIgPSBpbnRlbF9jb25uZWN0b3ItPmFj cGlfZGV2aWNlX2lkOworCWNvbm5fYWRkciB8PSBBQ1BJX0RFVklDRV9JRF9TQ0hFTUU7CisJY29u bl9hZGRyIHw9IEFDUElfQklPU19DQU5fREVURUNUOworCisJRFJNX0RFVl9JTkZPKGRldiwgIkxv b2tpbmcgZm9yIGNvbm5lY3RvciBBQ1BJIG5vZGUgYXQgX0FEUj0lbGxYXG4iLAorCQkgICAgIGNv bm5fYWRkcik7CisKKwkvKiBMb29rIHVwIHRoZSBjb25uZWN0b3IgZGV2aWNlLCB1bmRlciB0aGUg UENJIGRldmljZSAqLworCWNvbm5fZGV2ID0gYWNwaV9maW5kX2NoaWxkX2RldmljZShBQ1BJX0NP TVBBTklPTihkZXYpLCBjb25uX2FkZHIsCisJCQkJCSAgZmFsc2UpOworCWludGVsX2Nvbm5lY3Rv ci0+YWNwaV9oYW5kbGUgPSBjb25uX2RldiA/IGNvbm5fZGV2LT5oYW5kbGUgOiBOVUxMOworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hY3BpLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2FjcGkuaAppbmRleCA4ZjZkODUwZGY2 ZmEuLjYxYTQzOTJmYWM0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9hY3BpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9h Y3BpLmgKQEAgLTksMTQgKzksMTYgQEAKICNpbmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5cGVzLmgi CiAKICNpZmRlZiBDT05GSUdfQUNQSQordm9pZCBpbnRlbF9jb25uZWN0b3JfbG9va3VwX2FjcGlf bm9kZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwogdm9pZCBpbnRlbF9yZWdp c3Rlcl9kc21faGFuZGxlcih2b2lkKTsKIHZvaWQgaW50ZWxfdW5yZWdpc3Rlcl9kc21faGFuZGxl cih2b2lkKTsKIHZvaWQgaW50ZWxfcG9wdWxhdGVfYWNwaV9pZHNfZm9yX2FsbF9jb25uZWN0b3Jz KHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2KTsKICNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQK K2ludGVsX2Nvbm5lY3Rvcl9sb29rdXBfYWNwaV9ub2RlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikgeyByZXR1cm47IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yZWdpc3Rl cl9kc21faGFuZGxlcih2b2lkKSB7IHJldHVybjsgfQogc3RhdGljIGlubGluZSB2b2lkIGludGVs X3VucmVnaXN0ZXJfZHNtX2hhbmRsZXIodm9pZCkgeyByZXR1cm47IH0KIHN0YXRpYyBpbmxpbmUg dm9pZAotc3RhdGljIGlubGluZSB2b2lkCiBpbnRlbF9wb3B1bGF0ZV9hY3BpX2lkc19mb3JfYWxs X2Nvbm5lY3RvcnMoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYpIHsgfQogI2VuZGlmIC8qIENP TkZJR19BQ1BJICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3R5cGVzLmgKaW5kZXggNDQ5YWJhZWE2MTlmLi5jMjcwNmFmYzA2OWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5o CkBAIC00MDAsNiArNDAwLDkgQEAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7CiAJLyogQUNQSSBk ZXZpY2UgaWQgZm9yIEFDUEkgYW5kIGRyaXZlciBjb29wZXJhdGlvbiAqLwogCXUzMiBhY3BpX2Rl dmljZV9pZDsKIAorCS8qIEFDUEkgaGFuZGxlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBjb25uZWN0 b3IgZGlzcGxheSwgaWYgZm91bmQgKi8KKwl2b2lkICphY3BpX2hhbmRsZTsKKwogCS8qIFJlYWRz IG91dCB0aGUgY3VycmVudCBodywgcmV0dXJuaW5nIHRydWUgaWYgdGhlIGNvbm5lY3RvciBpcyBl bmFibGVkCiAJICogYW5kIGFjdGl2ZSAoaS5lLiBkcG1zIE9OIHN0YXRlKS4gKi8KIAlib29sICgq Z2V0X2h3X3N0YXRlKShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICopOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kcC5jCmluZGV4IGY4NjU2MTUxNzJhNS4uNGZhYzQwOGE0Mjk5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCkBAIC00NSw2ICs0NSw3IEBA CiAjaW5jbHVkZSAiaTkxNV9kZWJ1Z2ZzLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNs dWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfYWNwaS5oIgogI2luY2x1ZGUgImlu dGVsX2F0b21pYy5oIgogI2luY2x1ZGUgImludGVsX2F1ZGlvLmgiCiAjaW5jbHVkZSAiaW50ZWxf Y29ubmVjdG9yLmgiCkBAIC02MzMzLDYgKzYzMzQsNyBAQCBpbnRlbF9kcF9hZGRfcHJvcGVydGll cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5kZXYpOwogCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5i YXNlLnBvcnQ7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gdG9f aW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CiAKIAlpZiAoIUlTX0c0WChkZXZfcHJpdikgJiYg cG9ydCAhPSBQT1JUX0EpCiAJCWludGVsX2F0dGFjaF9mb3JjZV9hdWRpb19wcm9wZXJ0eShjb25u ZWN0b3IpOwpAQCAtNjM1NCw2ICs2MzU2LDggQEAgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3QKIAog CQljb25uZWN0b3ItPnN0YXRlLT5zY2FsaW5nX21vZGUgPSBEUk1fTU9ERV9TQ0FMRV9BU1BFQ1Q7 CiAKKwkJLyogTG9va3VwIHRoZSBBQ1BJIG5vZGUgY29ycmVzcG9uZGluZyB0byB0aGUgY29ubmVj dG9yICovCisJCWludGVsX2Nvbm5lY3Rvcl9sb29rdXBfYWNwaV9ub2RlKGludGVsX2Nvbm5lY3Rv cik7CiAJfQogfQogCi0tIAoyLjI0LjAucmMxLjM2My5nYjFiY2NkM2UzZC1nb29nCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=