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=-11.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 CC063C4338F for ; Mon, 9 Aug 2021 15:50:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AB8516101E for ; Mon, 9 Aug 2021 15:50:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234121AbhHIPuW (ORCPT ); Mon, 9 Aug 2021 11:50:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235851AbhHIPuP (ORCPT ); Mon, 9 Aug 2021 11:50:15 -0400 Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FD4FC0617B0 for ; Mon, 9 Aug 2021 08:49:54 -0700 (PDT) Received: by mail-pj1-x102a.google.com with SMTP id pj14-20020a17090b4f4eb029017786cf98f9so553794pjb.2 for ; Mon, 09 Aug 2021 08:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=iypo2g0ksb3hPluHjo2K3HuanpxIhf/GrkPA0tdbfM4=; b=A/ObNU1jSuENPCBvXTFJQ0CAkMveWR7KjK0AqFrKxEkqDaQnvONeuIIl/kYK7m2Gyd 5DTnTjL2lqgzBnFT5RQkzx9NKgaLXbTBeez9RE+JwI4clf6czQvVVkQNERZH2mMFhl9G pCu4p5LHWCUrATnTqb72m5WhE3hwVzPaALCkw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=iypo2g0ksb3hPluHjo2K3HuanpxIhf/GrkPA0tdbfM4=; b=lP1dSt68YhwW60c3WcBWih3Jgdi0DSKLQQtmWRWSM79FxJhz9Td9obkMr/huDjEjvL Vk744d9PXKa0cO5jlisXYXmU/fZ0h4sUuJs6N5th1AYayPq+aWiJy2lhb4jt/NTWaZ0A x2X8hHC3UExOAbthNX+trvYwo+bUqEREkkv9ImCTyaNnxdpzTFT/5iE7O4gYKf8rS4Qk o/lGOO64O0MOEzxzlSdqNAnU+Wad5p6ioEeEfwREtIZHj+6Ge6ttgatNBHaUly/CpLem Co5rJvXm8OHxBc1hfMn8npSH4FS3r1Pz0/v+BHp9/1Kbtshq/h6Yk57XBh2m15ykub7j SeDA== X-Gm-Message-State: AOAM533VziTmpswjnmXOOhd5WRh9LDPXKkFEhYMaKfzrAFrRyVqD27+N NyneC5DBCKv45ZJ4KIawG6BXJg== X-Google-Smtp-Source: ABdhPJzHGnienAihLc95zBhFzzpY3gXspxszzg17Vbsfm7mbo6WiEiHCqewBRh0uVCyFhqXtvcwHFg== X-Received: by 2002:a17:90a:6c45:: with SMTP id x63mr36125760pjj.0.1628524194146; Mon, 09 Aug 2021 08:49:54 -0700 (PDT) Received: from localhost ([2620:15c:202:201:6914:ad55:5b1:543c]) by smtp.gmail.com with UTF8SMTPSA id j13sm23205367pgp.29.2021.08.09.08.49.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Aug 2021 08:49:53 -0700 (PDT) Date: Mon, 9 Aug 2021 08:49:50 -0700 From: Matthias Kaehlcke To: Greg Kroah-Hartman , Alan Stern , Rob Herring , Frank Rowand , Mathias Nyman , Felipe Balbi Cc: Bastien Nocera , Peter Chen , devicetree@vger.kernel.org, Michal Simek , linux-kernel@vger.kernel.org, Douglas Anderson , Krzysztof Kozlowski , linux-usb@vger.kernel.org, Ravi Chandra Sadineni , Stephen Boyd , Al Cooper , Andrey Zhizhikin , Andy Gross , Aswath Govindraju , Bjorn Andersson , Catalin Marinas , Dmitry Baryshkov , Dmitry Osipenko , Enric Balletbo i Serra , Fabio Estevam , Guido =?utf-8?Q?G=C3=BCnther?= , Jagan Teki , Nishanth Menon , Pawel Laszczak , Roger Quadros , Shawn Guo , Vinod Koul , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org Subject: Re: [PATCH v15 0/6] usb: misc: Add onboard_usb_hub driver Message-ID: References: <20210727004118.2583774-1-mka@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210727004118.2583774-1-mka@chromium.org> Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi Greg, Just wanted to check if this series is still on your radar. Is there anything that blocks it from landing (further ACKs, ...)? Thanks Matthias On Mon, Jul 26, 2021 at 05:41:12PM -0700, Matthias Kaehlcke wrote: > This series adds: > - the onboard_usb_hub_driver > - glue in the xhci-plat driver to create and destroy the > onboard_usb_hub platform devices if needed > - a device tree binding for the Realtek RTS5411 USB hub controller > - device tree changes that add RTS5411 entries for the QCA SC7180 > based boards trogdor and lazor > - a couple of stubs for platform device functions to avoid > unresolved symbols with certain kernel configs > > The main issue the driver addresses is that a USB hub needs to be > powered before it can be discovered. For discrete onboard hubs (an > example for such a hub is the Realtek RTS5411) this is often solved > by supplying the hub with an 'always-on' regulator, which is kind > of a hack. Some onboard hubs may require further initialization > steps, like changing the state of a GPIO or enabling a clock, which > requires even more hacks. This driver creates a platform device > representing the hub which performs the necessary initialization. > Currently it only supports switching on a single regulator, support > for multiple regulators or other actions can be added as needed. > Different initialization sequences can be supported based on the > compatible string. > > Besides performing the initialization the driver can be configured > to power the hub off during system suspend. This can help to extend > battery life on battery powered devices which have no requirements > to keep the hub powered during suspend. The driver can also be > configured to leave the hub powered when a wakeup capable USB device > is connected when suspending, and power it off otherwise. > > Changes in v15: > - adjusted dependencies of USB_DWC3_CORE to make sure it can only > be enabled when at least one of USB_DWC3_HOST, USB_DWC3_GADGET > or USB_DWC3_DUAL_ROLE is selectable > > Changes in v14: > - rebased on top of v5.14-rc1 > - dropped DT binding patch which landed in v5.13 > > Changes in v13: > - added patch "usb: Specify dependency on USB_XHCI_PLATFORM with > 'depends on'" to the series to avoid Kconfig conflicts > - added patch "arm64: defconfig: Explicitly enable USB_XHCI_PLATFORM" > to the series to keep effective defconfig unchanged > > Changes in v12: > - onboard_hub driver: use IS_ENABLED(CONFIG_USB_ONBOARD_HUB_MODULE) > in onboard_hub.h to also check for the driver built as module > - onboard_hub_driver: include onboard_hub.h again to make sure there > are prototype declarations for the public functions > > Changes in v11: > - support multiple onboard hubs connected to the same parent > - don't include ‘onboard_hub.h’ from the onboard hub driver > > Changes in v10: > - always use of_is_onboard_usb_hub() stub unless ONBOARD_USB_HUB=y/m > - keep 'regulator-boot-on' property for pp3300_hub > > Changes in v9: > - added dependency on ONBOARD_USB_HUB (or !!ONBOARD_USB_HUB) to > USB_PLATFORM_XHCI > > Changes in v7: > - updated DT binding > - series rebased on qcom/arm64-for-5.13 > > Changes in v6: > - updated summary > > Changes in v5: > - cover letter added > > Matthias Kaehlcke (6): > usb: misc: Add onboard_usb_hub driver > of/platform: Add stubs for of_platform_device_create/destroy() > arm64: defconfig: Explicitly enable USB_XHCI_PLATFORM > usb: Specify dependencies on USB_XHCI_PLATFORM with 'depends on' > usb: host: xhci-plat: Create platform device for onboard hubs in > probe() > arm64: dts: qcom: sc7180-trogdor: Add nodes for onboard USB hub > > .../sysfs-bus-platform-onboard-usb-hub | 8 + > MAINTAINERS | 7 + > .../boot/dts/qcom/sc7180-trogdor-lazor-r0.dts | 19 +- > .../boot/dts/qcom/sc7180-trogdor-lazor-r1.dts | 12 +- > .../arm64/boot/dts/qcom/sc7180-trogdor-r1.dts | 19 +- > arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 19 +- > arch/arm64/configs/defconfig | 1 + > drivers/usb/cdns3/Kconfig | 2 +- > drivers/usb/dwc3/Kconfig | 5 +- > drivers/usb/host/Kconfig | 5 +- > drivers/usb/host/xhci-plat.c | 6 + > drivers/usb/host/xhci.h | 2 + > drivers/usb/misc/Kconfig | 17 + > drivers/usb/misc/Makefile | 1 + > drivers/usb/misc/onboard_usb_hub.c | 497 ++++++++++++++++++ > include/linux/of_platform.h | 22 +- > include/linux/usb/onboard_hub.h | 18 + > 17 files changed, 621 insertions(+), 39 deletions(-) > create mode 100644 Documentation/ABI/testing/sysfs-bus-platform-onboard-usb-hub > create mode 100644 drivers/usb/misc/onboard_usb_hub.c > create mode 100644 include/linux/usb/onboard_hub.h > > -- > 2.32.0.432.gabb21c7263-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.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 35F01C4338F for ; Mon, 9 Aug 2021 16:03:36 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E8E0C60F56 for ; Mon, 9 Aug 2021 16:03:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E8E0C60F56 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OXix1Ayzdi9KTGKyCltY39YzWiZx+JsHclLX8M80b7U=; b=DhcTkQ4Mes2IRX Ug8j+Qm9raF4tEuS4/MWvcfbT+3gYYaDKvlaof1UH2S67+lhH1hx5KOxP+j+YRFoDUw2p9XFmwR1o rT8d77RGRxYeFyIeYQ6JegztQX/R7lBB+rNQa5SQ19bBuTAj81uLh8qvD0sN28A6wWM5Jg70gXKPZ 5/CEEwegptquQE+WfJYU6nTgvPgSuxEyDNsq2xfXG+Ha34I+hedsbSZiohk0hcjsdluZalZ9xvavU UT5BUvg2o5ikOBbGKegMv5rD3rVBxn5vRAs3pFwhRPhPgOJEBb6JCoo9OA7YlVRQq5OgwpjzPkv5o d/NJBOK1FtKdTAxTwJ5A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mD7iE-001Lyz-BY; Mon, 09 Aug 2021 16:01:15 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mD7XH-001HX9-NT for linux-arm-kernel@lists.infradead.org; Mon, 09 Aug 2021 15:49:57 +0000 Received: by mail-pj1-x102c.google.com with SMTP id hv22-20020a17090ae416b0290178c579e424so544579pjb.3 for ; Mon, 09 Aug 2021 08:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=iypo2g0ksb3hPluHjo2K3HuanpxIhf/GrkPA0tdbfM4=; b=A/ObNU1jSuENPCBvXTFJQ0CAkMveWR7KjK0AqFrKxEkqDaQnvONeuIIl/kYK7m2Gyd 5DTnTjL2lqgzBnFT5RQkzx9NKgaLXbTBeez9RE+JwI4clf6czQvVVkQNERZH2mMFhl9G pCu4p5LHWCUrATnTqb72m5WhE3hwVzPaALCkw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=iypo2g0ksb3hPluHjo2K3HuanpxIhf/GrkPA0tdbfM4=; b=FAE6mGJwvFCxogMCBM+d6aDqBzenkuEIozQ6+/oLr2EcTJf90QK0hWaLqgEHwakrD8 VJA6/9FF+19asPA5Zg0OAJGAle8fJ3iXHD1fU3f5g9672ptVxlDFO+KFePTpA3Vz/FUE 6P8L0TsvzTzL4zPFCUX3m7Hdzejj9UKp3nyM8Pr6tngFZ6P4FF1nuaxRewmlhH2FR3eA qBc6rGcXUPGJ4f/M5+lOwJGXENwx+kwo1GwU0Utd4n8/I4fj5s66wuHUWLFHNSw/XPhC bZkngUamM+6bEH2CAFay20p59QhjlznenPY3CcEdGAV41pbVsFaqDFCm/f2RsZuFdaW5 O7jQ== X-Gm-Message-State: AOAM531e9fIKyShxDFz0UZV8Ejlo1zCzSntxAxhUKeVxBrmbNJd4JURk VSorDxF7bag9u/C9kRcF8QsuTg== X-Google-Smtp-Source: ABdhPJzHGnienAihLc95zBhFzzpY3gXspxszzg17Vbsfm7mbo6WiEiHCqewBRh0uVCyFhqXtvcwHFg== X-Received: by 2002:a17:90a:6c45:: with SMTP id x63mr36125760pjj.0.1628524194146; Mon, 09 Aug 2021 08:49:54 -0700 (PDT) Received: from localhost ([2620:15c:202:201:6914:ad55:5b1:543c]) by smtp.gmail.com with UTF8SMTPSA id j13sm23205367pgp.29.2021.08.09.08.49.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Aug 2021 08:49:53 -0700 (PDT) Date: Mon, 9 Aug 2021 08:49:50 -0700 From: Matthias Kaehlcke To: Greg Kroah-Hartman , Alan Stern , Rob Herring , Frank Rowand , Mathias Nyman , Felipe Balbi Cc: Bastien Nocera , Peter Chen , devicetree@vger.kernel.org, Michal Simek , linux-kernel@vger.kernel.org, Douglas Anderson , Krzysztof Kozlowski , linux-usb@vger.kernel.org, Ravi Chandra Sadineni , Stephen Boyd , Al Cooper , Andrey Zhizhikin , Andy Gross , Aswath Govindraju , Bjorn Andersson , Catalin Marinas , Dmitry Baryshkov , Dmitry Osipenko , Enric Balletbo i Serra , Fabio Estevam , Guido =?utf-8?Q?G=C3=BCnther?= , Jagan Teki , Nishanth Menon , Pawel Laszczak , Roger Quadros , Shawn Guo , Vinod Koul , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org Subject: Re: [PATCH v15 0/6] usb: misc: Add onboard_usb_hub driver Message-ID: References: <20210727004118.2583774-1-mka@chromium.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210727004118.2583774-1-mka@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210809_084955_834803_16596197 X-CRM114-Status: GOOD ( 37.36 ) 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 SGkgR3JlZywKCkp1c3Qgd2FudGVkIHRvIGNoZWNrIGlmIHRoaXMgc2VyaWVzIGlzIHN0aWxsIG9u IHlvdXIgcmFkYXIuIElzCnRoZXJlIGFueXRoaW5nIHRoYXQgYmxvY2tzIGl0IGZyb20gbGFuZGlu ZyAoZnVydGhlciBBQ0tzLCAuLi4pPwoKVGhhbmtzCgpNYXR0aGlhcwoKT24gTW9uLCBKdWwgMjYs IDIwMjEgYXQgMDU6NDE6MTJQTSAtMDcwMCwgTWF0dGhpYXMgS2FlaGxja2Ugd3JvdGU6Cj4gVGhp cyBzZXJpZXMgYWRkczoKPiAtIHRoZSBvbmJvYXJkX3VzYl9odWJfZHJpdmVyCj4gLSBnbHVlIGlu IHRoZSB4aGNpLXBsYXQgZHJpdmVyIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSB0aGUKPiAgIG9uYm9h cmRfdXNiX2h1YiBwbGF0Zm9ybSBkZXZpY2VzIGlmIG5lZWRlZAo+IC0gYSBkZXZpY2UgdHJlZSBi aW5kaW5nIGZvciB0aGUgUmVhbHRlayBSVFM1NDExIFVTQiBodWIgY29udHJvbGxlcgo+IC0gZGV2 aWNlIHRyZWUgY2hhbmdlcyB0aGF0IGFkZCBSVFM1NDExIGVudHJpZXMgZm9yIHRoZSBRQ0EgU0M3 MTgwCj4gICBiYXNlZCBib2FyZHMgdHJvZ2RvciBhbmQgbGF6b3IKPiAtIGEgY291cGxlIG9mIHN0 dWJzIGZvciBwbGF0Zm9ybSBkZXZpY2UgZnVuY3Rpb25zIHRvIGF2b2lkCj4gICB1bnJlc29sdmVk IHN5bWJvbHMgd2l0aCBjZXJ0YWluIGtlcm5lbCBjb25maWdzCj4gCj4gVGhlIG1haW4gaXNzdWUg dGhlIGRyaXZlciBhZGRyZXNzZXMgaXMgdGhhdCBhIFVTQiBodWIgbmVlZHMgdG8gYmUKPiBwb3dl cmVkIGJlZm9yZSBpdCBjYW4gYmUgZGlzY292ZXJlZC4gRm9yIGRpc2NyZXRlIG9uYm9hcmQgaHVi cyAoYW4KPiBleGFtcGxlIGZvciBzdWNoIGEgaHViIGlzIHRoZSBSZWFsdGVrIFJUUzU0MTEpIHRo aXMgaXMgb2Z0ZW4gc29sdmVkCj4gYnkgc3VwcGx5aW5nIHRoZSBodWIgd2l0aCBhbiAnYWx3YXlz LW9uJyByZWd1bGF0b3IsIHdoaWNoIGlzIGtpbmQKPiBvZiBhIGhhY2suIFNvbWUgb25ib2FyZCBo dWJzIG1heSByZXF1aXJlIGZ1cnRoZXIgaW5pdGlhbGl6YXRpb24KPiBzdGVwcywgbGlrZSBjaGFu Z2luZyB0aGUgc3RhdGUgb2YgYSBHUElPIG9yIGVuYWJsaW5nIGEgY2xvY2ssIHdoaWNoCj4gcmVx dWlyZXMgZXZlbiBtb3JlIGhhY2tzLiBUaGlzIGRyaXZlciBjcmVhdGVzIGEgcGxhdGZvcm0gZGV2 aWNlCj4gcmVwcmVzZW50aW5nIHRoZSBodWIgd2hpY2ggcGVyZm9ybXMgdGhlIG5lY2Vzc2FyeSBp bml0aWFsaXphdGlvbi4KPiBDdXJyZW50bHkgaXQgb25seSBzdXBwb3J0cyBzd2l0Y2hpbmcgb24g YSBzaW5nbGUgcmVndWxhdG9yLCBzdXBwb3J0Cj4gZm9yIG11bHRpcGxlIHJlZ3VsYXRvcnMgb3Ig b3RoZXIgYWN0aW9ucyBjYW4gYmUgYWRkZWQgYXMgbmVlZGVkLgo+IERpZmZlcmVudCBpbml0aWFs aXphdGlvbiBzZXF1ZW5jZXMgY2FuIGJlIHN1cHBvcnRlZCBiYXNlZCBvbiB0aGUKPiBjb21wYXRp YmxlIHN0cmluZy4KPiAKPiBCZXNpZGVzIHBlcmZvcm1pbmcgdGhlIGluaXRpYWxpemF0aW9uIHRo ZSBkcml2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQKPiB0byBwb3dlciB0aGUgaHViIG9mZiBkdXJpbmcg c3lzdGVtIHN1c3BlbmQuIFRoaXMgY2FuIGhlbHAgdG8gZXh0ZW5kCj4gYmF0dGVyeSBsaWZlIG9u IGJhdHRlcnkgcG93ZXJlZCBkZXZpY2VzIHdoaWNoIGhhdmUgbm8gcmVxdWlyZW1lbnRzCj4gdG8g a2VlcCB0aGUgaHViIHBvd2VyZWQgZHVyaW5nIHN1c3BlbmQuIFRoZSBkcml2ZXIgY2FuIGFsc28g YmUKPiBjb25maWd1cmVkIHRvIGxlYXZlIHRoZSBodWIgcG93ZXJlZCB3aGVuIGEgd2FrZXVwIGNh cGFibGUgVVNCIGRldmljZQo+IGlzIGNvbm5lY3RlZCB3aGVuIHN1c3BlbmRpbmcsIGFuZCBwb3dl ciBpdCBvZmYgb3RoZXJ3aXNlLgo+IAo+IENoYW5nZXMgaW4gdjE1Ogo+IC0gYWRqdXN0ZWQgZGVw ZW5kZW5jaWVzIG9mIFVTQl9EV0MzX0NPUkUgdG8gbWFrZSBzdXJlIGl0IGNhbiBvbmx5Cj4gICBi ZSBlbmFibGVkIHdoZW4gYXQgbGVhc3Qgb25lIG9mIFVTQl9EV0MzX0hPU1QsIFVTQl9EV0MzX0dB REdFVAo+ICAgb3IgVVNCX0RXQzNfRFVBTF9ST0xFIGlzIHNlbGVjdGFibGUKPiAKPiBDaGFuZ2Vz IGluIHYxNDoKPiAtIHJlYmFzZWQgb24gdG9wIG9mIHY1LjE0LXJjMQo+IC0gZHJvcHBlZCBEVCBi aW5kaW5nIHBhdGNoIHdoaWNoIGxhbmRlZCBpbiB2NS4xMwo+IAo+IENoYW5nZXMgaW4gdjEzOgo+ IC0gYWRkZWQgcGF0Y2ggInVzYjogU3BlY2lmeSBkZXBlbmRlbmN5IG9uIFVTQl9YSENJX1BMQVRG T1JNIHdpdGgKPiAgICdkZXBlbmRzIG9uJyIgdG8gdGhlIHNlcmllcyB0byBhdm9pZCBLY29uZmln IGNvbmZsaWN0cwo+IC0gYWRkZWQgcGF0Y2ggImFybTY0OiBkZWZjb25maWc6IEV4cGxpY2l0bHkg ZW5hYmxlIFVTQl9YSENJX1BMQVRGT1JNIgo+ICAgdG8gdGhlIHNlcmllcyB0byBrZWVwIGVmZmVj dGl2ZSBkZWZjb25maWcgdW5jaGFuZ2VkCj4gCj4gQ2hhbmdlcyBpbiB2MTI6Cj4gLSBvbmJvYXJk X2h1YiBkcml2ZXI6IHVzZSBJU19FTkFCTEVEKENPTkZJR19VU0JfT05CT0FSRF9IVUJfTU9EVUxF KQo+ICAgaW4gb25ib2FyZF9odWIuaCB0byBhbHNvIGNoZWNrIGZvciB0aGUgZHJpdmVyIGJ1aWx0 IGFzIG1vZHVsZQo+IC0gb25ib2FyZF9odWJfZHJpdmVyOiBpbmNsdWRlIG9uYm9hcmRfaHViLmgg YWdhaW4gdG8gbWFrZSBzdXJlIHRoZXJlCj4gICBhcmUgcHJvdG90eXBlIGRlY2xhcmF0aW9ucyBm b3IgdGhlIHB1YmxpYyBmdW5jdGlvbnMKPiAKPiBDaGFuZ2VzIGluIHYxMToKPiAtIHN1cHBvcnQg bXVsdGlwbGUgb25ib2FyZCBodWJzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBwYXJlbnQKPiAtIGRv bid0IGluY2x1ZGUg4oCYb25ib2FyZF9odWIuaOKAmSBmcm9tIHRoZSBvbmJvYXJkIGh1YiBkcml2 ZXIKPiAKPiBDaGFuZ2VzIGluIHYxMDoKPiAtIGFsd2F5cyB1c2Ugb2ZfaXNfb25ib2FyZF91c2Jf aHViKCkgc3R1YiB1bmxlc3MgT05CT0FSRF9VU0JfSFVCPXkvbQo+IC0ga2VlcCAncmVndWxhdG9y LWJvb3Qtb24nIHByb3BlcnR5IGZvciBwcDMzMDBfaHViCj4gCj4gQ2hhbmdlcyBpbiB2OToKPiAt IGFkZGVkIGRlcGVuZGVuY3kgb24gT05CT0FSRF9VU0JfSFVCIChvciAhIU9OQk9BUkRfVVNCX0hV QikgdG8KPiAgIFVTQl9QTEFURk9STV9YSENJCj4gCj4gQ2hhbmdlcyBpbiB2NzoKPiAtIHVwZGF0 ZWQgRFQgYmluZGluZwo+IC0gc2VyaWVzIHJlYmFzZWQgb24gcWNvbS9hcm02NC1mb3ItNS4xMwo+ IAo+IENoYW5nZXMgaW4gdjY6Cj4gLSB1cGRhdGVkIHN1bW1hcnkKPiAKPiBDaGFuZ2VzIGluIHY1 Ogo+IC0gY292ZXIgbGV0dGVyIGFkZGVkCj4gCj4gTWF0dGhpYXMgS2FlaGxja2UgKDYpOgo+ICAg dXNiOiBtaXNjOiBBZGQgb25ib2FyZF91c2JfaHViIGRyaXZlcgo+ICAgb2YvcGxhdGZvcm06IEFk ZCBzdHVicyBmb3Igb2ZfcGxhdGZvcm1fZGV2aWNlX2NyZWF0ZS9kZXN0cm95KCkKPiAgIGFybTY0 OiBkZWZjb25maWc6IEV4cGxpY2l0bHkgZW5hYmxlIFVTQl9YSENJX1BMQVRGT1JNCj4gICB1c2I6 IFNwZWNpZnkgZGVwZW5kZW5jaWVzIG9uIFVTQl9YSENJX1BMQVRGT1JNIHdpdGggJ2RlcGVuZHMg b24nCj4gICB1c2I6IGhvc3Q6IHhoY2ktcGxhdDogQ3JlYXRlIHBsYXRmb3JtIGRldmljZSBmb3Ig b25ib2FyZCBodWJzIGluCj4gICAgIHByb2JlKCkKPiAgIGFybTY0OiBkdHM6IHFjb206IHNjNzE4 MC10cm9nZG9yOiBBZGQgbm9kZXMgZm9yIG9uYm9hcmQgVVNCIGh1Ygo+IAo+ICAuLi4vc3lzZnMt YnVzLXBsYXRmb3JtLW9uYm9hcmQtdXNiLWh1YiAgICAgICAgfCAgIDggKwo+ICBNQUlOVEFJTkVS UyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwo+ICAuLi4vYm9vdC9k dHMvcWNvbS9zYzcxODAtdHJvZ2Rvci1sYXpvci1yMC5kdHMgfCAgMTkgKy0KPiAgLi4uL2Jvb3Qv ZHRzL3Fjb20vc2M3MTgwLXRyb2dkb3ItbGF6b3ItcjEuZHRzIHwgIDEyICstCj4gIC4uLi9hcm02 NC9ib290L2R0cy9xY29tL3NjNzE4MC10cm9nZG9yLXIxLmR0cyB8ICAxOSArLQo+ICBhcmNoL2Fy bTY0L2Jvb3QvZHRzL3Fjb20vc2M3MTgwLXRyb2dkb3IuZHRzaSAgfCAgMTkgKy0KPiAgYXJjaC9h cm02NC9jb25maWdzL2RlZmNvbmZpZyAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVy cy91c2IvY2RuczMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCj4gIGRyaXZl cnMvdXNiL2R3YzMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQo+ICBkcml2 ZXJzL3VzYi9ob3N0L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KPiAgZHJp dmVycy91c2IvaG9zdC94aGNpLXBsYXQuYyAgICAgICAgICAgICAgICAgIHwgICA2ICsKPiAgZHJp dmVycy91c2IvaG9zdC94aGNpLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKPiAgZHJp dmVycy91c2IvbWlzYy9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsKPiAgZHJp dmVycy91c2IvbWlzYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJp dmVycy91c2IvbWlzYy9vbmJvYXJkX3VzYl9odWIuYyAgICAgICAgICAgIHwgNDk3ICsrKysrKysr KysrKysrKysrKwo+ICBpbmNsdWRlL2xpbnV4L29mX3BsYXRmb3JtLmggICAgICAgICAgICAgICAg ICAgfCAgMjIgKy0KPiAgaW5jbHVkZS9saW51eC91c2Ivb25ib2FyZF9odWIuaCAgICAgICAgICAg ICAgIHwgIDE4ICsKPiAgMTcgZmlsZXMgY2hhbmdlZCwgNjIxIGluc2VydGlvbnMoKyksIDM5IGRl bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu Zy9zeXNmcy1idXMtcGxhdGZvcm0tb25ib2FyZC11c2ItaHViCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2h1Yi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL2xpbnV4L3VzYi9vbmJvYXJkX2h1Yi5oCj4gCj4gLS0gCj4gMi4zMi4wLjQzMi5n YWJiMjFjNzI2My1nb29nCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==