From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7B4E1272C6; Tue, 30 Apr 2024 08:39:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.200 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714466346; cv=none; b=W8bNKUR+E0+BZIBKnAb7f2WVypYVH/UfeLd+yQwc+ACeEFTRFbqiAg1ShBFAphbtHgDcplWu808sO69a/eatH0RU3suU8/W16R6McpbLd1EtnesCFGQoZKKzpUaj7vyGeUQiIjaMvMUN8q5DBkSsBJoern9x8G/ZxG9ZK4ZA/64= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714466346; c=relaxed/simple; bh=tGouIIMweCCg8lFI1k5a8Nmi7sj3tVWhoXa+yZ9Svjw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=Jj6VVhcz2cadv7ILySFj1cGMuFcYhBldXrvX5K4K10awAS8pqJ0e2yQUigxS8uS5KfxHirmoqt+AFr8AAxTu3onOgO8RBKA3azh38s6IwZgNqG1VRYT1XfTYx8nvhhz3A0a9oSHqWalKH2vQbN+FXV9c/ZLFlR3MDX/3BW7/TmY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=OYa1XQLH; arc=none smtp.client-ip=217.70.183.200 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="OYa1XQLH" Received: by mail.gandi.net (Postfix) with ESMTPA id 6105720013; Tue, 30 Apr 2024 08:38:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1714466340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1z1r8qP3wTyMtexbriJIq+WvlcDHX0KVVkOb8SF0acI=; b=OYa1XQLHVHnDfDXtIRKkfKPMke4wZr/J4u5RQY/BSrxG8sI2nJ5TVTYix2l+xnjMM9nfKT pUxdnTN/p7g90fsmFxCbPTezHmyDoXUwDdolMNTjhltSK2wkmedl8tOK9Rf96fdVNlX019 wDbq1dKt8FvjC2+O+Qff0nHwWUxnJ0NXrvCuYGLu1l+iNGv+LC0LVBkYXX7QQuwcApbFZ1 IZiMGwncytElcKLvDfwGr++lXQ6TGOHaCtnGokFAn145nzBS5/ezLhbZNnyHvfV10dJbmK 7GA0BLpt30XtoYDlxmcXZDYIIpcuHr7tLjrGwZlFlkZJ8S3vDlEuTA2DBBXaHA== From: Herve Codina To: Herve Codina , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Lee Jones , Arnd Bergmann , Horatiu Vultur , UNGLinuxDriver@microchip.com, Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan , Bjorn Helgaas , Philipp Zabel , Lars Povlsen , Steen Hegelund , Daniel Machon , Alexandre Belloni Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, netdev@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Allan Nielsen , Steen Hegelund , Luca Ceresoli , Thomas Petazzoni Subject: [PATCH 00/17] Add support for the LAN966x PCI device using a DT overlay Date: Tue, 30 Apr 2024 10:37:09 +0200 Message-ID: <20240430083730.134918-1-herve.codina@bootlin.com> X-Mailer: git-send-email 2.44.0 Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com Hi, This series adds support for the LAN966x chip when used as a PCI device. For reference, the LAN996x chip is a System-on-chip that integrates an Ethernet switch and a number of other traditional hardware blocks such as a GPIO controller, I2C controllers, SPI controllers, etc. The LAN996x can be used in two different modes: - With Linux running on its Linux built-in ARM cores. This mode is already supported by the upstream Linux kernel, with the LAN996x described as a standard ARM Device Tree in arch/arm/boot/dts/microchip/lan966x.dtsi. Thanks to this support, all hardware blocks in the LAN996x already have drivers in the upstream Linux kernel. - As a PCI device, thanks to its built-in PCI endpoint controller. In this case, the LAN996x ARM cores are not used, but all peripherals of the LAN996x can be accessed by the PCI host using memory-mapped I/O through the PCI BARs. This series aims at supporting this second use-case. As all peripherals of the LAN996x already have drivers in the Linux kernel, our goal is to re-use them as-is to support this second use-case. Therefore, this patch series introduces a PCI driver that binds on the LAN996x PCI VID/PID, and when probed, instantiates all devices that are accessible through the PCI BAR. As the list and characteristics of such devices are non-discoverable, this PCI driver loads a Device Tree overlay that allows to teach the kernel about which devices are available, and allows to probe the relevant drivers in kernel, re-using all existing drivers with no change. This patch series for now adds a Device Tree overlay that describes an initial subset of the devices available over PCI in the LAN996x, and follow-up patch series will add support for more once this initial support has landed. In order to add this PCI driver, a number of preparation changes are needed: - Patches 1 to 5 allow the reset driver used for the LAN996x to be built as a module. Indeed, in the case where Linux runs on the ARM cores, it is common to have the reset driver built-in. However, when the LAN996x is used as a PCI device, it makes sense that all its drivers can be loaded as modules. - Patches 6 and 7 improve the MDIO controller driver to properly handle its reset signal. - Patch 8 fixes an issue in the LAN996x switch driver. - Patches 9 to 13 introduce the internal interrupt controller used in the LAN996x. It is one of the few peripherals in the LAN996x that are only relevant when the LAN996x is used as a PCI device, which is why this interrupt controller did not have a driver so far. - Patches 14 and 15 make some small additions to the OF core and PCI/OF core to consider the PCI device as an interrupt controller. This topic was previously mentioned in [1] to avoid the need of phandle interrupt parents which are not available at some points. - Patches 16 and 17 introduce the LAN996x PCI driver itself, together with its DT bindings. We believe all items from the above list can be merged separately, with no build dependencies. We expect: - Patches 1 to 5 to be taken by reset maintainers - Patches 6, 7 and 8 to be taken by network driver maintainers - Patches 9 to 13 to be taken by irqchip maintainers - Patch 14/15 to be taken by DT/PCI maintainers - Patch 16/17 by the MFD maintainers Additionally, we also believe all preparation items in this patch series can be taken even before there's a final agreement on the last part of the series (the MFD driver itself). [1] https://lore.kernel.org/all/CAL_Jsq+je7+9ATR=B6jXHjEJHjn24vQFs4Tvi9=vhDeK9n42Aw@mail.gmail.com/ Best regards, Hervé Clément Léger (5): mfd: syscon: Add reference counting and device managed support reset: mchp: sparx5: Remove dependencies and allow building as a module reset: mchp: sparx5: Release syscon when not use anymore reset: core: add get_device()/put_device on rcdev reset: mchp: sparx5: set the dev member of the reset controller Herve Codina (12): dt-bindings: net: mscc-miim: Add resets property net: mdio: mscc-miim: Handle the switch reset net: lan966x: remove debugfs directory in probe() error path dt-bindings: interrupt-controller: Add support for Microchip LAN966x OIC irqdomain: Add missing parameter descriptions in docs irqdomain: Introduce irq_domain_alloc() and irq_domain_publish() irqchip: Add support for LAN966x OIC MAINTAINERS: Add the Microchip LAN966x OIC driver entry of: dynamic: Introduce of_changeset_add_prop_bool() pci: of_property: Add the interrupt-controller property in PCI device nodes mfd: Add support for LAN966x PCI device MAINTAINERS: Add the Microchip LAN966x PCI driver entry .../microchip,lan966x-oic.yaml | 55 ++++ .../devicetree/bindings/net/mscc,miim.yaml | 8 + MAINTAINERS | 12 + drivers/irqchip/Kconfig | 12 + drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-lan966x-oic.c | 301 ++++++++++++++++++ drivers/mfd/Kconfig | 24 ++ drivers/mfd/Makefile | 4 + drivers/mfd/lan966x_pci.c | 229 +++++++++++++ drivers/mfd/lan966x_pci.dtso | 167 ++++++++++ drivers/mfd/syscon.c | 145 ++++++++- .../ethernet/microchip/lan966x/lan966x_main.c | 6 +- drivers/net/mdio/mdio-mscc-miim.c | 8 + drivers/of/dynamic.c | 25 ++ drivers/pci/of_property.c | 24 ++ drivers/pci/quirks.c | 1 + drivers/reset/Kconfig | 3 +- drivers/reset/core.c | 2 + drivers/reset/reset-microchip-sparx5.c | 11 +- include/linux/irqdomain.h | 16 + include/linux/mfd/syscon.h | 18 ++ include/linux/of.h | 3 + kernel/irq/irqdomain.c | 118 +++++-- 23 files changed, 1149 insertions(+), 44 deletions(-) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/microchip,lan966x-oic.yaml create mode 100644 drivers/irqchip/irq-lan966x-oic.c create mode 100644 drivers/mfd/lan966x_pci.c create mode 100644 drivers/mfd/lan966x_pci.dtso -- 2.44.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7FB3EC4345F for ; Tue, 30 Apr 2024 08:39:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=xIQQhy6iDGnuYcAX57XSBq/QBDDJVORcmMYcOgYJONU=; b=PTRW74Xo2iXkiB uNgoAGUWzu7+9ZHXSTkIU1jwwiSfLDQIGPyX5XPPKsuP/kAMfnO4lKv6l5b/lEEod21vewPj3vndv /tuMVOAIeaNQo+bo0fYG6QFvipP9sEylml1Bk4JUU6z/9kjRRYyZmHk2Lrfj1Wch41wBTd+4mGIBP bfoFw/c3VQZRizY75dE4EGWvQBSWX1AGX2YzwLXemZM7Bqltfl+sweiO0HPAH3xKXiJDnqr0lvGgh H/U5jyjwwOq501wQlPDdHMPJkFLG6RswZQd5qNmsCKzQh4Fzwo0WxhfCXHQR5+pjaWXtpYAS9bC1A wF/cRoec9gGeN/144Wkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1j16-00000005dIL-1g72; Tue, 30 Apr 2024 08:39:12 +0000 Received: from relay7-d.mail.gandi.net ([2001:4b98:dc4:8::227]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1j11-00000005dFg-2rKD for linux-arm-kernel@lists.infradead.org; Tue, 30 Apr 2024 08:39:11 +0000 Received: by mail.gandi.net (Postfix) with ESMTPA id 6105720013; Tue, 30 Apr 2024 08:38:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1714466340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1z1r8qP3wTyMtexbriJIq+WvlcDHX0KVVkOb8SF0acI=; b=OYa1XQLHVHnDfDXtIRKkfKPMke4wZr/J4u5RQY/BSrxG8sI2nJ5TVTYix2l+xnjMM9nfKT pUxdnTN/p7g90fsmFxCbPTezHmyDoXUwDdolMNTjhltSK2wkmedl8tOK9Rf96fdVNlX019 wDbq1dKt8FvjC2+O+Qff0nHwWUxnJ0NXrvCuYGLu1l+iNGv+LC0LVBkYXX7QQuwcApbFZ1 IZiMGwncytElcKLvDfwGr++lXQ6TGOHaCtnGokFAn145nzBS5/ezLhbZNnyHvfV10dJbmK 7GA0BLpt30XtoYDlxmcXZDYIIpcuHr7tLjrGwZlFlkZJ8S3vDlEuTA2DBBXaHA== From: Herve Codina To: Herve Codina , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Lee Jones , Arnd Bergmann , Horatiu Vultur , UNGLinuxDriver@microchip.com, Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan , Bjorn Helgaas , Philipp Zabel , Lars Povlsen , Steen Hegelund , Daniel Machon , Alexandre Belloni Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, netdev@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Allan Nielsen , Steen Hegelund , Luca Ceresoli , Thomas Petazzoni Subject: [PATCH 00/17] Add support for the LAN966x PCI device using a DT overlay Date: Tue, 30 Apr 2024 10:37:09 +0200 Message-ID: <20240430083730.134918-1-herve.codina@bootlin.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-GND-Sasl: herve.codina@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240430_013908_366654_C85E78E2 X-CRM114-Status: GOOD ( 31.70 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpUaGlzIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMQU45NjZ4IGNoaXAgd2hlbiB1 c2VkIGFzIGEgUENJCmRldmljZS4KCkZvciByZWZlcmVuY2UsIHRoZSBMQU45OTZ4IGNoaXAgaXMg YSBTeXN0ZW0tb24tY2hpcCB0aGF0IGludGVncmF0ZXMgYW4KRXRoZXJuZXQgc3dpdGNoIGFuZCBh IG51bWJlciBvZiBvdGhlciB0cmFkaXRpb25hbCBoYXJkd2FyZSBibG9ja3Mgc3VjaAphcyBhIEdQ SU8gY29udHJvbGxlciwgSTJDIGNvbnRyb2xsZXJzLCBTUEkgY29udHJvbGxlcnMsIGV0Yy4gVGhl CkxBTjk5NnggY2FuIGJlIHVzZWQgaW4gdHdvIGRpZmZlcmVudCBtb2RlczoKCi0gV2l0aCBMaW51 eCBydW5uaW5nIG9uIGl0cyBMaW51eCBidWlsdC1pbiBBUk0gY29yZXMuCiAgVGhpcyBtb2RlIGlz IGFscmVhZHkgc3VwcG9ydGVkIGJ5IHRoZSB1cHN0cmVhbSBMaW51eCBrZXJuZWwsIHdpdGggdGhl CiAgTEFOOTk2eCBkZXNjcmliZWQgYXMgYSBzdGFuZGFyZCBBUk0gRGV2aWNlIFRyZWUgaW4KICBh cmNoL2FybS9ib290L2R0cy9taWNyb2NoaXAvbGFuOTY2eC5kdHNpLiBUaGFua3MgdG8gdGhpcyBz dXBwb3J0LAogIGFsbCBoYXJkd2FyZSBibG9ja3MgaW4gdGhlIExBTjk5NnggYWxyZWFkeSBoYXZl IGRyaXZlcnMgaW4gdGhlCiAgdXBzdHJlYW0gTGludXgga2VybmVsLgoKLSBBcyBhIFBDSSBkZXZp Y2UsIHRoYW5rcyB0byBpdHMgYnVpbHQtaW4gUENJIGVuZHBvaW50IGNvbnRyb2xsZXIuCiAgSW4g dGhpcyBjYXNlLCB0aGUgTEFOOTk2eCBBUk0gY29yZXMgYXJlIG5vdCB1c2VkLCBidXQgYWxsIHBl cmlwaGVyYWxzCiAgb2YgdGhlIExBTjk5NnggY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSBQQ0kgaG9z dCB1c2luZyBtZW1vcnktbWFwcGVkCiAgSS9PIHRocm91Z2ggdGhlIFBDSSBCQVJzLgoKVGhpcyBz ZXJpZXMgYWltcyBhdCBzdXBwb3J0aW5nIHRoaXMgc2Vjb25kIHVzZS1jYXNlLiBBcyBhbGwgcGVy aXBoZXJhbHMKb2YgdGhlIExBTjk5NnggYWxyZWFkeSBoYXZlIGRyaXZlcnMgaW4gdGhlIExpbnV4 IGtlcm5lbCwgb3VyIGdvYWwgaXMgdG8KcmUtdXNlIHRoZW0gYXMtaXMgdG8gc3VwcG9ydCB0aGlz IHNlY29uZCB1c2UtY2FzZS4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNl cyBhIFBDSSBkcml2ZXIgdGhhdCBiaW5kcyBvbiB0aGUKTEFOOTk2eCBQQ0kgVklEL1BJRCwgYW5k IHdoZW4gcHJvYmVkLCBpbnN0YW50aWF0ZXMgYWxsIGRldmljZXMgdGhhdCBhcmUKYWNjZXNzaWJs ZSB0aHJvdWdoIHRoZSBQQ0kgQkFSLiBBcyB0aGUgbGlzdCBhbmQgY2hhcmFjdGVyaXN0aWNzIG9m IHN1Y2gKZGV2aWNlcyBhcmUgbm9uLWRpc2NvdmVyYWJsZSwgdGhpcyBQQ0kgZHJpdmVyIGxvYWRz IGEgRGV2aWNlIFRyZWUKb3ZlcmxheSB0aGF0IGFsbG93cyB0byB0ZWFjaCB0aGUga2VybmVsIGFi b3V0IHdoaWNoIGRldmljZXMgYXJlCmF2YWlsYWJsZSwgYW5kIGFsbG93cyB0byBwcm9iZSB0aGUg cmVsZXZhbnQgZHJpdmVycyBpbiBrZXJuZWwsIHJlLXVzaW5nCmFsbCBleGlzdGluZyBkcml2ZXJz IHdpdGggbm8gY2hhbmdlLgoKVGhpcyBwYXRjaCBzZXJpZXMgZm9yIG5vdyBhZGRzIGEgRGV2aWNl IFRyZWUgb3ZlcmxheSB0aGF0IGRlc2NyaWJlcyBhbgppbml0aWFsIHN1YnNldCBvZiB0aGUgZGV2 aWNlcyBhdmFpbGFibGUgb3ZlciBQQ0kgaW4gdGhlIExBTjk5NngsIGFuZApmb2xsb3ctdXAgcGF0 Y2ggc2VyaWVzIHdpbGwgYWRkIHN1cHBvcnQgZm9yIG1vcmUgb25jZSB0aGlzIGluaXRpYWwKc3Vw cG9ydCBoYXMgbGFuZGVkLgoKSW4gb3JkZXIgdG8gYWRkIHRoaXMgUENJIGRyaXZlciwgYSBudW1i ZXIgb2YgcHJlcGFyYXRpb24gY2hhbmdlcyBhcmUKbmVlZGVkOgoKIC0gUGF0Y2hlcyAxIHRvIDUg YWxsb3cgdGhlIHJlc2V0IGRyaXZlciB1c2VkIGZvciB0aGUgTEFOOTk2eCB0byBiZQogICBidWls dCBhcyBhIG1vZHVsZS4gSW5kZWVkLCBpbiB0aGUgY2FzZSB3aGVyZSBMaW51eCBydW5zIG9uIHRo ZSBBUk0KICAgY29yZXMsIGl0IGlzIGNvbW1vbiB0byBoYXZlIHRoZSByZXNldCBkcml2ZXIgYnVp bHQtaW4uIEhvd2V2ZXIsIHdoZW4KICAgdGhlIExBTjk5NnggaXMgdXNlZCBhcyBhIFBDSSBkZXZp Y2UsIGl0IG1ha2VzIHNlbnNlIHRoYXQgYWxsIGl0cwogICBkcml2ZXJzIGNhbiBiZSBsb2FkZWQg YXMgbW9kdWxlcy4KCiAtIFBhdGNoZXMgNiBhbmQgNyBpbXByb3ZlIHRoZSBNRElPIGNvbnRyb2xs ZXIgZHJpdmVyIHRvIHByb3Blcmx5CiAgIGhhbmRsZSBpdHMgcmVzZXQgc2lnbmFsLgoKIC0gUGF0 Y2ggOCBmaXhlcyBhbiBpc3N1ZSBpbiB0aGUgTEFOOTk2eCBzd2l0Y2ggZHJpdmVyLgoKIC0gUGF0 Y2hlcyA5IHRvIDEzIGludHJvZHVjZSB0aGUgaW50ZXJuYWwgaW50ZXJydXB0IGNvbnRyb2xsZXIg dXNlZCBpbgogICB0aGUgTEFOOTk2eC4gSXQgaXMgb25lIG9mIHRoZSBmZXcgcGVyaXBoZXJhbHMg aW4gdGhlIExBTjk5NnggdGhhdAogICBhcmUgb25seSByZWxldmFudCB3aGVuIHRoZSBMQU45OTZ4 IGlzIHVzZWQgYXMgYSBQQ0kgZGV2aWNlLCB3aGljaCBpcwogICB3aHkgdGhpcyBpbnRlcnJ1cHQg Y29udHJvbGxlciBkaWQgbm90IGhhdmUgYSBkcml2ZXIgc28gZmFyLgoKIC0gUGF0Y2hlcyAxNCBh bmQgMTUgbWFrZSBzb21lIHNtYWxsIGFkZGl0aW9ucyB0byB0aGUgT0YgY29yZSBhbmQKICAgUENJ L09GIGNvcmUgdG8gY29uc2lkZXIgdGhlIFBDSSBkZXZpY2UgYXMgYW4gaW50ZXJydXB0IGNvbnRy b2xsZXIuCiAgIFRoaXMgdG9waWMgd2FzIHByZXZpb3VzbHkgbWVudGlvbmVkIGluIFsxXSB0byBh dm9pZCB0aGUgbmVlZCBvZgogICBwaGFuZGxlIGludGVycnVwdCBwYXJlbnRzIHdoaWNoIGFyZSBu b3QgYXZhaWxhYmxlIGF0IHNvbWUgcG9pbnRzLgoKIC0gUGF0Y2hlcyAxNiBhbmQgMTcgaW50cm9k dWNlIHRoZSBMQU45OTZ4IFBDSSBkcml2ZXIgaXRzZWxmLCB0b2dldGhlcgogICB3aXRoIGl0cyBE VCBiaW5kaW5ncy4KCldlIGJlbGlldmUgYWxsIGl0ZW1zIGZyb20gdGhlIGFib3ZlIGxpc3QgY2Fu IGJlIG1lcmdlZCBzZXBhcmF0ZWx5LCB3aXRoCm5vIGJ1aWxkIGRlcGVuZGVuY2llcy4gV2UgZXhw ZWN0OgoKIC0gUGF0Y2hlcyAxIHRvIDUgdG8gYmUgdGFrZW4gYnkgcmVzZXQgbWFpbnRhaW5lcnMK CiAtIFBhdGNoZXMgNiwgNyBhbmQgOCB0byBiZSB0YWtlbiBieSBuZXR3b3JrIGRyaXZlciBtYWlu dGFpbmVycwoKIC0gUGF0Y2hlcyA5IHRvIDEzIHRvIGJlIHRha2VuIGJ5IGlycWNoaXAgbWFpbnRh aW5lcnMKCiAtIFBhdGNoIDE0LzE1IHRvIGJlIHRha2VuIGJ5IERUL1BDSSBtYWludGFpbmVycwoK IC0gUGF0Y2ggMTYvMTcgYnkgdGhlIE1GRCBtYWludGFpbmVycwoKQWRkaXRpb25hbGx5LCB3ZSBh bHNvIGJlbGlldmUgYWxsIHByZXBhcmF0aW9uIGl0ZW1zIGluIHRoaXMgcGF0Y2ggc2VyaWVzCmNh biBiZSB0YWtlbiBldmVuIGJlZm9yZSB0aGVyZSdzIGEgZmluYWwgYWdyZWVtZW50IG9uIHRoZSBs YXN0IHBhcnQgb2YKdGhlIHNlcmllcyAodGhlIE1GRCBkcml2ZXIgaXRzZWxmKS4KClsxXSBodHRw czovL2xvcmUua2VybmVsLm9yZy9hbGwvQ0FMX0pzcStqZTcrOUFUUj1CNmpYSGpFSkhqbjI0dlFG czRUdmk5PXZoRGVLOW40MkF3QG1haWwuZ21haWwuY29tLwoKQmVzdCByZWdhcmRzLApIZXJ2w6kK CkNsw6ltZW50IEzDqWdlciAoNSk6CiAgbWZkOiBzeXNjb246IEFkZCByZWZlcmVuY2UgY291bnRp bmcgYW5kIGRldmljZSBtYW5hZ2VkIHN1cHBvcnQKICByZXNldDogbWNocDogc3Bhcng1OiBSZW1v dmUgZGVwZW5kZW5jaWVzIGFuZCBhbGxvdyBidWlsZGluZyBhcyBhCiAgICBtb2R1bGUKICByZXNl dDogbWNocDogc3Bhcng1OiBSZWxlYXNlIHN5c2NvbiB3aGVuIG5vdCB1c2UgYW55bW9yZQogIHJl c2V0OiBjb3JlOiBhZGQgZ2V0X2RldmljZSgpL3B1dF9kZXZpY2Ugb24gcmNkZXYKICByZXNldDog bWNocDogc3Bhcng1OiBzZXQgdGhlIGRldiBtZW1iZXIgb2YgdGhlIHJlc2V0IGNvbnRyb2xsZXIK CkhlcnZlIENvZGluYSAoMTIpOgogIGR0LWJpbmRpbmdzOiBuZXQ6IG1zY2MtbWlpbTogQWRkIHJl c2V0cyBwcm9wZXJ0eQogIG5ldDogbWRpbzogbXNjYy1taWltOiBIYW5kbGUgdGhlIHN3aXRjaCBy ZXNldAogIG5ldDogbGFuOTY2eDogcmVtb3ZlIGRlYnVnZnMgZGlyZWN0b3J5IGluIHByb2JlKCkg ZXJyb3IgcGF0aAogIGR0LWJpbmRpbmdzOiBpbnRlcnJ1cHQtY29udHJvbGxlcjogQWRkIHN1cHBv cnQgZm9yIE1pY3JvY2hpcCBMQU45NjZ4CiAgICBPSUMKICBpcnFkb21haW46IEFkZCBtaXNzaW5n IHBhcmFtZXRlciBkZXNjcmlwdGlvbnMgaW4gZG9jcwogIGlycWRvbWFpbjogSW50cm9kdWNlIGly cV9kb21haW5fYWxsb2MoKSBhbmQgaXJxX2RvbWFpbl9wdWJsaXNoKCkKICBpcnFjaGlwOiBBZGQg c3VwcG9ydCBmb3IgTEFOOTY2eCBPSUMKICBNQUlOVEFJTkVSUzogQWRkIHRoZSBNaWNyb2NoaXAg TEFOOTY2eCBPSUMgZHJpdmVyIGVudHJ5CiAgb2Y6IGR5bmFtaWM6IEludHJvZHVjZSBvZl9jaGFu Z2VzZXRfYWRkX3Byb3BfYm9vbCgpCiAgcGNpOiBvZl9wcm9wZXJ0eTogQWRkIHRoZSBpbnRlcnJ1 cHQtY29udHJvbGxlciBwcm9wZXJ0eSBpbiBQQ0kgZGV2aWNlCiAgICBub2RlcwogIG1mZDogQWRk IHN1cHBvcnQgZm9yIExBTjk2NnggUENJIGRldmljZQogIE1BSU5UQUlORVJTOiBBZGQgdGhlIE1p Y3JvY2hpcCBMQU45NjZ4IFBDSSBkcml2ZXIgZW50cnkKCiAuLi4vbWljcm9jaGlwLGxhbjk2Nngt b2ljLnlhbWwgICAgICAgICAgICAgICAgfCAgNTUgKysrKwogLi4uL2RldmljZXRyZWUvYmluZGlu Z3MvbmV0L21zY2MsbWlpbS55YW1sICAgIHwgICA4ICsKIE1BSU5UQUlORVJTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiBkcml2ZXJzL2lycWNoaXAvS2NvbmZpZyAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKwogZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvaXJxY2hpcC9pcnEtbGFuOTY2eC1v aWMuYyAgICAgICAgICAgICB8IDMwMSArKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbWZkL0tj b25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNCArKwogZHJpdmVycy9tZmQvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIGRyaXZlcnMvbWZkL2xhbjk2 NnhfcGNpLmMgICAgICAgICAgICAgICAgICAgICB8IDIyOSArKysrKysrKysrKysrCiBkcml2ZXJz L21mZC9sYW45NjZ4X3BjaS5kdHNvICAgICAgICAgICAgICAgICAgfCAxNjcgKysrKysrKysrKwog ZHJpdmVycy9tZmQvc3lzY29uLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQ1ICsrKysr KysrLQogLi4uL2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jIHwgICA2 ICstCiBkcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMgICAgICAgICAgICAgfCAgIDgg KwogZHJpdmVycy9vZi9keW5hbWljLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICsr CiBkcml2ZXJzL3BjaS9vZl9wcm9wZXJ0eS5jICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKysK IGRyaXZlcnMvcGNpL3F1aXJrcy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBk cml2ZXJzL3Jlc2V0L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRy aXZlcnMvcmVzZXQvY29yZS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2 ZXJzL3Jlc2V0L3Jlc2V0LW1pY3JvY2hpcC1zcGFyeDUuYyAgICAgICAgfCAgMTEgKy0KIGluY2x1 ZGUvbGludXgvaXJxZG9tYWluLmggICAgICAgICAgICAgICAgICAgICB8ICAxNiArCiBpbmNsdWRl L2xpbnV4L21mZC9zeXNjb24uaCAgICAgICAgICAgICAgICAgICAgfCAgMTggKysKIGluY2x1ZGUv bGludXgvb2YuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBrZXJuZWwvaXJx L2lycWRvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxMTggKysrKystLQogMjMgZmls ZXMgY2hhbmdlZCwgMTE0OSBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNv bnRyb2xsZXIvbWljcm9jaGlwLGxhbjk2Nngtb2ljLnlhbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2lycWNoaXAvaXJxLWxhbjk2Nngtb2ljLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL21mZC9sYW45NjZ4X3BjaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZmQvbGFu OTY2eF9wY2kuZHRzbwoKLS0gCjIuNDQuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK