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=-8.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_MUTT 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 42840C43381 for ; Wed, 27 Feb 2019 13:13:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EF9552133D for ; Wed, 27 Feb 2019 13:13:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551273202; bh=ZYYQLEPb5liFOfmxZhGBOGsGIRu+PG4pQEPj4kSnLmI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=MrtRPb9PCBFNCrS1jGGFWCgNPG9y4Dm5GwL0w14omvYaVJW8Ie2Z81LZlhyGuuVh6 qf9fby1NDaYNIUgGgT21SzYdzJV/Fpg5GwoWBAxVh1D02GcOmhn0B2CCHib0H0IoWo VanGJCAUtUfVpgtl040XjgvJuIZurbq+aOPv2SR8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730280AbfB0NNU (ORCPT ); Wed, 27 Feb 2019 08:13:20 -0500 Received: from mail-lf1-f65.google.com ([209.85.167.65]:40001 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729248AbfB0NNU (ORCPT ); Wed, 27 Feb 2019 08:13:20 -0500 Received: by mail-lf1-f65.google.com with SMTP id a8so6655705lfi.7; Wed, 27 Feb 2019 05:13:17 -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:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=cDYy0M/4cSrybiJsr7HJwPfJcJrNZlZfrPqCsY0i82c=; b=dwHtqhl9CPdwHqcWF4HzCvJrlQLAZjPGFRTPMolLLTMIueUWUJz3aHQe0lYfHpVif8 +FDqmlFP1fPSH4i09VdoytXSCN2shBtlw8nVA12C5ZBdKnw2O4K1BoUSqpzVI5iH6jh1 /quejvnYb5ngnet9jrqnjV8J8Lf4l07pWohVPVaZUhP649W/egI1XzTlwN8Mr0+pmuMR fxuf1gO+dnvYFqFJy9cL7w7soAXFI15ldV7soZSbxq2a3bqdIc1InKsBpzmSm2k6AdIB Pv4+pt5vU1z8G+D+FHsq52m7elYXbeS51j6Sz1ZlvJY5OJWQ5yb2qhS3pG1AZMkpOCsH 2bnQ== X-Gm-Message-State: AHQUAubyrIShJfOAhVW/9aCG7uNgBVuNMxtrAqwus8Vrjr5B59xz6ZeB 8nEhP+Zx0RLnvIWJZgqQoBE= X-Google-Smtp-Source: AHgI3IZWHoxyaeIRPbUElr/FGl1jVRkpUNONruQnXjMaEVEmjh3QdkdAC9HX1M7UwyOv9zhz6Tuqkg== X-Received: by 2002:a19:2812:: with SMTP id o18mr872827lfo.128.1551273196574; Wed, 27 Feb 2019 05:13:16 -0800 (PST) Received: from xi.terra (c-74bee655.07-184-6d6c6d4.bbcust.telenor.se. [85.230.190.116]) by smtp.gmail.com with ESMTPSA id c2sm3921042ljj.45.2019.02.27.05.13.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Feb 2019 05:13:15 -0800 (PST) Received: from johan by xi.terra with local (Exim 4.91) (envelope-from ) id 1gyz1P-0008MI-Cu; Wed, 27 Feb 2019 14:13:15 +0100 Date: Wed, 27 Feb 2019 14:13:15 +0100 From: Johan Hovold To: =?iso-8859-1?Q?M=E5ns_Rullg=E5rd?= , =?iso-8859-1?Q?Bj=F8rn?= Mork Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] USB: serial: option: set driver_info for SIM5218 and compatibles Message-ID: <20190227131315.GO4747@localhost> References: <20190226170710.12709-1-mans@mansr.com> <20190227083342.GJ4747@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.11.3 (2019-02-01) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding Bjørn. On Wed, Feb 27, 2019 at 11:57:16AM +0000, Måns Rullgård wrote: > Johan Hovold writes: > > > On Tue, Feb 26, 2019 at 05:07:10PM +0000, Mans Rullgard wrote: > >> The SIMCom SIM5218 and compatible devices have 5 USB interfaces, only 4 > >> of which are serial ports. The fifth is a network interface supported > >> by the qmi-wwan driver. Furthermore, the serial ports do not support > >> modem control signals. Add driver_info flags to reflect this. > >> > >> Signed-off-by: Mans Rullgard > >> --- > >> drivers/usb/serial/option.c | 3 ++- > >> 1 file changed, 2 insertions(+), 1 deletion(-) > >> > >> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c > >> index fb544340888b..af4cbfecc3ff 100644 > >> --- a/drivers/usb/serial/option.c > >> +++ b/drivers/usb/serial/option.c > >> @@ -1066,7 +1066,8 @@ static const struct usb_device_id option_ids[] = { > >> .driver_info = RSVD(3) }, > >> { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ > >> { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ > >> - { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ > >> + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */ > >> + .driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) }, > >> /* Quectel products using Qualcomm vendor ID */ > >> { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)}, > >> { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20), > > > > Could you please provide the output of usb-devices (or lsusb -v) for > > this device? > > lsusb -v: > Bus 001 Device 003: ID 05c6:9000 Qualcomm, Inc. SIMCom SIM5218 modem > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 0 > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > idVendor 0x05c6 Qualcomm, Inc. > idProduct 0x9000 SIMCom SIM5218 modem > bcdDevice 0.00 > iManufacturer 3 SimTech, Incorporated > iProduct 2 SimTech SIM5360 > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 138 > bNumInterfaces 5 > bConfigurationValue 1 > iConfiguration 1 SimTech Configuration > bmAttributes 0xe0 > Self Powered > Remote Wakeup > MaxPower 500mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 255 Vendor Specific Protocol > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x01 EP 1 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 1 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 255 Vendor Specific Protocol > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x82 EP 2 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x02 EP 2 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 2 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 255 Vendor Specific Protocol > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x83 EP 3 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x03 EP 3 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 3 > bAlternateSetting 0 > bNumEndpoints 3 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 255 Vendor Specific Protocol > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x84 EP 4 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 5 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x85 EP 5 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x04 EP 4 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 4 > bAlternateSetting 0 > bNumEndpoints 3 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 255 Vendor Specific Protocol > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x86 EP 6 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 5 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x87 EP 7 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x05 EP 5 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 32 > Device Qualifier (for other device speed): > bLength 10 > bDescriptorType 6 > bcdUSB 2.00 > bDeviceClass 0 > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > bNumConfigurations 1 > can't get debug descriptor: Resource temporarily unavailable > Device Status: 0x0000 > (Bus Powered) So the patch looks fine to me. The fifth interface is QMI, but hasn't been available for use until now then, and this seems to have been the vendors idea from the start: http://www.microchip.ua/simcom/WCDMA/APPNOTES/SIMCom_3G_Linux_driver_Application%20Note_V1.00.pdf And you're seeing errors when opening ports 0-3 due to the DTR calls which I guess no one noticed or cared about before? Before you sent me the lsusb I searched for it and came across the below thread where Bjørn's having a go at SIMCom. In it there's output from a second device using the same id but with entirely different descriptors. https://forum.openwrt.org/t/lte-wireless-module-support-by-openwrt-led-on-tplink/13586?page=3 If this is a common theme with this vendor we may need to be extra careful when making changes. Johan From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: USB: serial: option: set driver_info for SIM5218 and compatibles From: Johan Hovold Message-Id: <20190227131315.GO4747@localhost> Date: Wed, 27 Feb 2019 14:13:15 +0100 To: =?iso-8859-1?Q?M=E5ns_Rullg=E5rd?= , =?iso-8859-1?Q?Bj=F8rn?= Mork Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: QWRkaW5nIEJqw7hybi4KCk9uIFdlZCwgRmViIDI3LCAyMDE5IGF0IDExOjU3OjE2QU0gKzAwMDAs IE3DpW5zIFJ1bGxnw6VyZCB3cm90ZToKPiBKb2hhbiBIb3ZvbGQgPGpvaGFuQGtlcm5lbC5vcmc+ IHdyaXRlczoKPiAKPiA+IE9uIFR1ZSwgRmViIDI2LCAyMDE5IGF0IDA1OjA3OjEwUE0gKzAwMDAs IE1hbnMgUnVsbGdhcmQgd3JvdGU6Cj4gPj4gVGhlIFNJTUNvbSBTSU01MjE4IGFuZCBjb21wYXRp YmxlIGRldmljZXMgaGF2ZSA1IFVTQiBpbnRlcmZhY2VzLCBvbmx5IDQKPiA+PiBvZiB3aGljaCBh cmUgc2VyaWFsIHBvcnRzLiAgVGhlIGZpZnRoIGlzIGEgbmV0d29yayBpbnRlcmZhY2Ugc3VwcG9y dGVkCj4gPj4gYnkgdGhlIHFtaS13d2FuIGRyaXZlci4gIEZ1cnRoZXJtb3JlLCB0aGUgc2VyaWFs IHBvcnRzIGRvIG5vdCBzdXBwb3J0Cj4gPj4gbW9kZW0gY29udHJvbCBzaWduYWxzLiAgQWRkIGRy aXZlcl9pbmZvIGZsYWdzIHRvIHJlZmxlY3QgdGhpcy4KPiA+PiAKPiA+PiBTaWduZWQtb2ZmLWJ5 OiBNYW5zIFJ1bGxnYXJkIDxtYW5zQG1hbnNyLmNvbT4KPiA+PiAtLS0KPiA+PiAgZHJpdmVycy91 c2Ivc2VyaWFsL29wdGlvbi5jIHwgMyArKy0KPiA+PiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4+IAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9zZXJpYWwvb3B0aW9uLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKPiA+PiBpbmRl eCBmYjU0NDM0MDg4OGIuLmFmNGNiZmVjYzNmZiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL3Vz Yi9zZXJpYWwvb3B0aW9uLmMKPiA+PiArKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMK PiA+PiBAQCAtMTA2Niw3ICsxMDY2LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNl X2lkIG9wdGlvbl9pZHNbXSA9IHsKPiA+PiAgCSAgLmRyaXZlcl9pbmZvID0gUlNWRCgzKSB9LAo+ ID4+ICAJeyBVU0JfREVWSUNFKFFVQUxDT01NX1ZFTkRPUl9JRCwgMHg2NjEzKX0sIC8qIE9uZGEg SDYwMC9aVEUgTUYzMzAgKi8KPiA+PiAgCXsgVVNCX0RFVklDRShRVUFMQ09NTV9WRU5ET1JfSUQs IDB4MDAyMyl9LCAvKiBPTllYIDNHIGRldmljZSAqLwo+ID4+IC0JeyBVU0JfREVWSUNFKFFVQUxD T01NX1ZFTkRPUl9JRCwgMHg5MDAwKX0sIC8qIFNJTUNvbSBTSU01MjE4ICovCj4gPj4gKwl7IFVT Ql9ERVZJQ0UoUVVBTENPTU1fVkVORE9SX0lELCAweDkwMDApLCAvKiBTSU1Db20gU0lNNTIxOCAq Lwo+ID4+ICsJICAuZHJpdmVyX2luZm8gPSBOQ1RSTCgwKSB8IE5DVFJMKDEpIHwgTkNUUkwoMikg fCBOQ1RSTCgzKSB8IFJTVkQoNCkgfSwKPiA+PiAgCS8qIFF1ZWN0ZWwgcHJvZHVjdHMgdXNpbmcg UXVhbGNvbW0gdmVuZG9yIElEICovCj4gPj4gIAl7IFVTQl9ERVZJQ0UoUVVBTENPTU1fVkVORE9S X0lELCBRVUVDVEVMX1BST0RVQ1RfVUMxNSl9LAo+ID4+ICAJeyBVU0JfREVWSUNFKFFVQUxDT01N X1ZFTkRPUl9JRCwgUVVFQ1RFTF9QUk9EVUNUX1VDMjApLAo+ID4KPiA+IENvdWxkIHlvdSBwbGVh c2UgcHJvdmlkZSB0aGUgb3V0cHV0IG9mIHVzYi1kZXZpY2VzIChvciBsc3VzYiAtdikgZm9yCj4g PiB0aGlzIGRldmljZT8KPiAKPiBsc3VzYiAtdjoKPiBCdXMgMDAxIERldmljZSAwMDM6IElEIDA1 YzY6OTAwMCBRdWFsY29tbSwgSW5jLiBTSU1Db20gU0lNNTIxOCBtb2RlbQo+IERldmljZSBEZXNj cmlwdG9yOgo+ICAgYkxlbmd0aCAgICAgICAgICAgICAgICAxOAo+ICAgYkRlc2NyaXB0b3JUeXBl ICAgICAgICAgMQo+ICAgYmNkVVNCICAgICAgICAgICAgICAgMi4wMAo+ICAgYkRldmljZUNsYXNz ICAgICAgICAgICAgMCAKPiAgIGJEZXZpY2VTdWJDbGFzcyAgICAgICAgIDAgCj4gICBiRGV2aWNl UHJvdG9jb2wgICAgICAgICAwIAo+ICAgYk1heFBhY2tldFNpemUwICAgICAgICA2NAo+ICAgaWRW ZW5kb3IgICAgICAgICAgIDB4MDVjNiBRdWFsY29tbSwgSW5jLgo+ICAgaWRQcm9kdWN0ICAgICAg ICAgIDB4OTAwMCBTSU1Db20gU0lNNTIxOCBtb2RlbQo+ICAgYmNkRGV2aWNlICAgICAgICAgICAg MC4wMAo+ICAgaU1hbnVmYWN0dXJlciAgICAgICAgICAgMyBTaW1UZWNoLCBJbmNvcnBvcmF0ZWQK PiAgIGlQcm9kdWN0ICAgICAgICAgICAgICAgIDIgU2ltVGVjaCBTSU01MzYwCj4gICBpU2VyaWFs ICAgICAgICAgICAgICAgICAwIAo+ICAgYk51bUNvbmZpZ3VyYXRpb25zICAgICAgMQo+ICAgQ29u ZmlndXJhdGlvbiBEZXNjcmlwdG9yOgo+ICAgICBiTGVuZ3RoICAgICAgICAgICAgICAgICA5Cj4g ICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDIKPiAgICAgd1RvdGFsTGVuZ3RoICAgICAgICAg IDEzOAo+ICAgICBiTnVtSW50ZXJmYWNlcyAgICAgICAgICA1Cj4gICAgIGJDb25maWd1cmF0aW9u VmFsdWUgICAgIDEKPiAgICAgaUNvbmZpZ3VyYXRpb24gICAgICAgICAgMSBTaW1UZWNoIENvbmZp Z3VyYXRpb24KPiAgICAgYm1BdHRyaWJ1dGVzICAgICAgICAgMHhlMAo+ICAgICAgIFNlbGYgUG93 ZXJlZAo+ICAgICAgIFJlbW90ZSBXYWtldXAKPiAgICAgTWF4UG93ZXIgICAgICAgICAgICAgIDUw MG1BCj4gICAgIEludGVyZmFjZSBEZXNjcmlwdG9yOgo+ICAgICAgIGJMZW5ndGggICAgICAgICAg ICAgICAgIDkKPiAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA0Cj4gICAgICAgYkludGVy ZmFjZU51bWJlciAgICAgICAgMAo+ICAgICAgIGJBbHRlcm5hdGVTZXR0aW5nICAgICAgIDAKPiAg ICAgICBiTnVtRW5kcG9pbnRzICAgICAgICAgICAyCj4gICAgICAgYkludGVyZmFjZUNsYXNzICAg ICAgIDI1NSBWZW5kb3IgU3BlY2lmaWMgQ2xhc3MKPiAgICAgICBiSW50ZXJmYWNlU3ViQ2xhc3Mg ICAgMjU1IFZlbmRvciBTcGVjaWZpYyBTdWJjbGFzcwo+ICAgICAgIGJJbnRlcmZhY2VQcm90b2Nv bCAgICAyNTUgVmVuZG9yIFNwZWNpZmljIFByb3RvY29sCj4gICAgICAgaUludGVyZmFjZSAgICAg ICAgICAgICAgMCAKPiAgICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOgo+ICAgICAgICAgYkxlbmd0 aCAgICAgICAgICAgICAgICAgNwo+ICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQo+ ICAgICAgICAgYkVuZHBvaW50QWRkcmVzcyAgICAgMHg4MSAgRVAgMSBJTgo+ICAgICAgICAgYm1B dHRyaWJ1dGVzICAgICAgICAgICAgMgo+ICAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAg ICAgQnVsawo+ICAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQo+ICAgICAg ICAgICBVc2FnZSBUeXBlICAgICAgICAgICAgICAgRGF0YQo+ICAgICAgICAgd01heFBhY2tldFNp emUgICAgIDB4MDIwMCAgMXggNTEyIGJ5dGVzCj4gICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAg ICAgIDMyCj4gICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoKPiAgICAgICAgIGJMZW5ndGggICAg ICAgICAgICAgICAgIDcKPiAgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUKPiAgICAg ICAgIGJFbmRwb2ludEFkZHJlc3MgICAgIDB4MDEgIEVQIDEgT1VUCj4gICAgICAgICBibUF0dHJp YnV0ZXMgICAgICAgICAgICAyCj4gICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBC dWxrCj4gICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lCj4gICAgICAgICAg IFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhCj4gICAgICAgICB3TWF4UGFja2V0U2l6ZSAg ICAgMHgwMjAwICAxeCA1MTIgYnl0ZXMKPiAgICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAg MzIKPiAgICAgSW50ZXJmYWNlIERlc2NyaXB0b3I6Cj4gICAgICAgYkxlbmd0aCAgICAgICAgICAg ICAgICAgOQo+ICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDQKPiAgICAgICBiSW50ZXJm YWNlTnVtYmVyICAgICAgICAxCj4gICAgICAgYkFsdGVybmF0ZVNldHRpbmcgICAgICAgMAo+ICAg ICAgIGJOdW1FbmRwb2ludHMgICAgICAgICAgIDIKPiAgICAgICBiSW50ZXJmYWNlQ2xhc3MgICAg ICAgMjU1IFZlbmRvciBTcGVjaWZpYyBDbGFzcwo+ICAgICAgIGJJbnRlcmZhY2VTdWJDbGFzcyAg ICAyNTUgVmVuZG9yIFNwZWNpZmljIFN1YmNsYXNzCj4gICAgICAgYkludGVyZmFjZVByb3RvY29s ICAgIDI1NSBWZW5kb3IgU3BlY2lmaWMgUHJvdG9jb2wKPiAgICAgICBpSW50ZXJmYWNlICAgICAg ICAgICAgICAwIAo+ICAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6Cj4gICAgICAgICBiTGVuZ3Ro ICAgICAgICAgICAgICAgICA3Cj4gICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1Cj4g ICAgICAgICBiRW5kcG9pbnRBZGRyZXNzICAgICAweDgyICBFUCAyIElOCj4gICAgICAgICBibUF0 dHJpYnV0ZXMgICAgICAgICAgICAyCj4gICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAg ICBCdWxrCj4gICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lCj4gICAgICAg ICAgIFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhCj4gICAgICAgICB3TWF4UGFja2V0U2l6 ZSAgICAgMHgwMjAwICAxeCA1MTIgYnl0ZXMKPiAgICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAg ICAgMzIKPiAgICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOgo+ICAgICAgICAgYkxlbmd0aCAgICAg ICAgICAgICAgICAgNwo+ICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQo+ICAgICAg ICAgYkVuZHBvaW50QWRkcmVzcyAgICAgMHgwMiAgRVAgMiBPVVQKPiAgICAgICAgIGJtQXR0cmli dXRlcyAgICAgICAgICAgIDIKPiAgICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIEJ1 bGsKPiAgICAgICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUKPiAgICAgICAgICAg VXNhZ2UgVHlwZSAgICAgICAgICAgICAgIERhdGEKPiAgICAgICAgIHdNYXhQYWNrZXRTaXplICAg ICAweDAyMDAgIDF4IDUxMiBieXRlcwo+ICAgICAgICAgYkludGVydmFsICAgICAgICAgICAgICAz Mgo+ICAgICBJbnRlcmZhY2UgRGVzY3JpcHRvcjoKPiAgICAgICBiTGVuZ3RoICAgICAgICAgICAg ICAgICA5Cj4gICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNAo+ICAgICAgIGJJbnRlcmZh Y2VOdW1iZXIgICAgICAgIDIKPiAgICAgICBiQWx0ZXJuYXRlU2V0dGluZyAgICAgICAwCj4gICAg ICAgYk51bUVuZHBvaW50cyAgICAgICAgICAgMgo+ICAgICAgIGJJbnRlcmZhY2VDbGFzcyAgICAg ICAyNTUgVmVuZG9yIFNwZWNpZmljIENsYXNzCj4gICAgICAgYkludGVyZmFjZVN1YkNsYXNzICAg IDI1NSBWZW5kb3IgU3BlY2lmaWMgU3ViY2xhc3MKPiAgICAgICBiSW50ZXJmYWNlUHJvdG9jb2wg ICAgMjU1IFZlbmRvciBTcGVjaWZpYyBQcm90b2NvbAo+ICAgICAgIGlJbnRlcmZhY2UgICAgICAg ICAgICAgIDAgCj4gICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoKPiAgICAgICAgIGJMZW5ndGgg ICAgICAgICAgICAgICAgIDcKPiAgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUKPiAg ICAgICAgIGJFbmRwb2ludEFkZHJlc3MgICAgIDB4ODMgIEVQIDMgSU4KPiAgICAgICAgIGJtQXR0 cmlidXRlcyAgICAgICAgICAgIDIKPiAgICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAg IEJ1bGsKPiAgICAgICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUKPiAgICAgICAg ICAgVXNhZ2UgVHlwZSAgICAgICAgICAgICAgIERhdGEKPiAgICAgICAgIHdNYXhQYWNrZXRTaXpl ICAgICAweDAyMDAgIDF4IDUxMiBieXRlcwo+ICAgICAgICAgYkludGVydmFsICAgICAgICAgICAg ICAzMgo+ICAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6Cj4gICAgICAgICBiTGVuZ3RoICAgICAg ICAgICAgICAgICA3Cj4gICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1Cj4gICAgICAg ICBiRW5kcG9pbnRBZGRyZXNzICAgICAweDAzICBFUCAzIE9VVAo+ICAgICAgICAgYm1BdHRyaWJ1 dGVzICAgICAgICAgICAgMgo+ICAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAgQnVs awo+ICAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQo+ICAgICAgICAgICBV c2FnZSBUeXBlICAgICAgICAgICAgICAgRGF0YQo+ICAgICAgICAgd01heFBhY2tldFNpemUgICAg IDB4MDIwMCAgMXggNTEyIGJ5dGVzCj4gICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgIDMy Cj4gICAgIEludGVyZmFjZSBEZXNjcmlwdG9yOgo+ICAgICAgIGJMZW5ndGggICAgICAgICAgICAg ICAgIDkKPiAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA0Cj4gICAgICAgYkludGVyZmFj ZU51bWJlciAgICAgICAgMwo+ICAgICAgIGJBbHRlcm5hdGVTZXR0aW5nICAgICAgIDAKPiAgICAg ICBiTnVtRW5kcG9pbnRzICAgICAgICAgICAzCj4gICAgICAgYkludGVyZmFjZUNsYXNzICAgICAg IDI1NSBWZW5kb3IgU3BlY2lmaWMgQ2xhc3MKPiAgICAgICBiSW50ZXJmYWNlU3ViQ2xhc3MgICAg MjU1IFZlbmRvciBTcGVjaWZpYyBTdWJjbGFzcwo+ICAgICAgIGJJbnRlcmZhY2VQcm90b2NvbCAg ICAyNTUgVmVuZG9yIFNwZWNpZmljIFByb3RvY29sCj4gICAgICAgaUludGVyZmFjZSAgICAgICAg ICAgICAgMCAKPiAgICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOgo+ICAgICAgICAgYkxlbmd0aCAg ICAgICAgICAgICAgICAgNwo+ICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQo+ICAg ICAgICAgYkVuZHBvaW50QWRkcmVzcyAgICAgMHg4NCAgRVAgNCBJTgo+ICAgICAgICAgYm1BdHRy aWJ1dGVzICAgICAgICAgICAgMwo+ICAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAg SW50ZXJydXB0Cj4gICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lCj4gICAg ICAgICAgIFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhCj4gICAgICAgICB3TWF4UGFja2V0 U2l6ZSAgICAgMHgwMDQwICAxeCA2NCBieXRlcwo+ICAgICAgICAgYkludGVydmFsICAgICAgICAg ICAgICAgNQo+ICAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6Cj4gICAgICAgICBiTGVuZ3RoICAg ICAgICAgICAgICAgICA3Cj4gICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1Cj4gICAg ICAgICBiRW5kcG9pbnRBZGRyZXNzICAgICAweDg1ICBFUCA1IElOCj4gICAgICAgICBibUF0dHJp YnV0ZXMgICAgICAgICAgICAyCj4gICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBC dWxrCj4gICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lCj4gICAgICAgICAg IFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhCj4gICAgICAgICB3TWF4UGFja2V0U2l6ZSAg ICAgMHgwMjAwICAxeCA1MTIgYnl0ZXMKPiAgICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAg MzIKPiAgICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOgo+ICAgICAgICAgYkxlbmd0aCAgICAgICAg ICAgICAgICAgNwo+ICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQo+ICAgICAgICAg YkVuZHBvaW50QWRkcmVzcyAgICAgMHgwNCAgRVAgNCBPVVQKPiAgICAgICAgIGJtQXR0cmlidXRl cyAgICAgICAgICAgIDIKPiAgICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIEJ1bGsK PiAgICAgICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUKPiAgICAgICAgICAgVXNh Z2UgVHlwZSAgICAgICAgICAgICAgIERhdGEKPiAgICAgICAgIHdNYXhQYWNrZXRTaXplICAgICAw eDAyMDAgIDF4IDUxMiBieXRlcwo+ICAgICAgICAgYkludGVydmFsICAgICAgICAgICAgICAzMgo+ ICAgICBJbnRlcmZhY2UgRGVzY3JpcHRvcjoKPiAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICAg ICA5Cj4gICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNAo+ICAgICAgIGJJbnRlcmZhY2VO dW1iZXIgICAgICAgIDQKPiAgICAgICBiQWx0ZXJuYXRlU2V0dGluZyAgICAgICAwCj4gICAgICAg Yk51bUVuZHBvaW50cyAgICAgICAgICAgMwo+ICAgICAgIGJJbnRlcmZhY2VDbGFzcyAgICAgICAy NTUgVmVuZG9yIFNwZWNpZmljIENsYXNzCj4gICAgICAgYkludGVyZmFjZVN1YkNsYXNzICAgIDI1 NSBWZW5kb3IgU3BlY2lmaWMgU3ViY2xhc3MKPiAgICAgICBiSW50ZXJmYWNlUHJvdG9jb2wgICAg MjU1IFZlbmRvciBTcGVjaWZpYyBQcm90b2NvbAo+ICAgICAgIGlJbnRlcmZhY2UgICAgICAgICAg ICAgIDAgCj4gICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoKPiAgICAgICAgIGJMZW5ndGggICAg ICAgICAgICAgICAgIDcKPiAgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUKPiAgICAg ICAgIGJFbmRwb2ludEFkZHJlc3MgICAgIDB4ODYgIEVQIDYgSU4KPiAgICAgICAgIGJtQXR0cmli dXRlcyAgICAgICAgICAgIDMKPiAgICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElu dGVycnVwdAo+ICAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQo+ICAgICAg ICAgICBVc2FnZSBUeXBlICAgICAgICAgICAgICAgRGF0YQo+ICAgICAgICAgd01heFBhY2tldFNp emUgICAgIDB4MDA0MCAgMXggNjQgYnl0ZXMKPiAgICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAg ICAgIDUKPiAgICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOgo+ICAgICAgICAgYkxlbmd0aCAgICAg ICAgICAgICAgICAgNwo+ICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQo+ICAgICAg ICAgYkVuZHBvaW50QWRkcmVzcyAgICAgMHg4NyAgRVAgNyBJTgo+ICAgICAgICAgYm1BdHRyaWJ1 dGVzICAgICAgICAgICAgMgo+ICAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAgQnVs awo+ICAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQo+ICAgICAgICAgICBV c2FnZSBUeXBlICAgICAgICAgICAgICAgRGF0YQo+ICAgICAgICAgd01heFBhY2tldFNpemUgICAg IDB4MDIwMCAgMXggNTEyIGJ5dGVzCj4gICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgIDMy Cj4gICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoKPiAgICAgICAgIGJMZW5ndGggICAgICAgICAg ICAgICAgIDcKPiAgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUKPiAgICAgICAgIGJF bmRwb2ludEFkZHJlc3MgICAgIDB4MDUgIEVQIDUgT1VUCj4gICAgICAgICBibUF0dHJpYnV0ZXMg ICAgICAgICAgICAyCj4gICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBCdWxrCj4g ICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lCj4gICAgICAgICAgIFVzYWdl IFR5cGUgICAgICAgICAgICAgICBEYXRhCj4gICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAgMHgw MjAwICAxeCA1MTIgYnl0ZXMKPiAgICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAgMzIKPiBE ZXZpY2UgUXVhbGlmaWVyIChmb3Igb3RoZXIgZGV2aWNlIHNwZWVkKToKPiAgIGJMZW5ndGggICAg ICAgICAgICAgICAgMTAKPiAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDYKPiAgIGJjZFVTQiAg ICAgICAgICAgICAgIDIuMDAKPiAgIGJEZXZpY2VDbGFzcyAgICAgICAgICAgIDAgCj4gICBiRGV2 aWNlU3ViQ2xhc3MgICAgICAgICAwIAo+ICAgYkRldmljZVByb3RvY29sICAgICAgICAgMCAKPiAg IGJNYXhQYWNrZXRTaXplMCAgICAgICAgNjQKPiAgIGJOdW1Db25maWd1cmF0aW9ucyAgICAgIDEK PiBjYW4ndCBnZXQgZGVidWcgZGVzY3JpcHRvcjogUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFp bGFibGUKPiBEZXZpY2UgU3RhdHVzOiAgICAgMHgwMDAwCj4gICAoQnVzIFBvd2VyZWQpCgpTbyB0 aGUgcGF0Y2ggbG9va3MgZmluZSB0byBtZS4gVGhlIGZpZnRoIGludGVyZmFjZSBpcyBRTUksIGJ1 dCBoYXNuJ3QKYmVlbiBhdmFpbGFibGUgZm9yIHVzZSB1bnRpbCBub3cgdGhlbiwgYW5kIHRoaXMg c2VlbXMgdG8gaGF2ZSBiZWVuIHRoZQp2ZW5kb3JzIGlkZWEgZnJvbSB0aGUgc3RhcnQ6CgoJaHR0 cDovL3d3dy5taWNyb2NoaXAudWEvc2ltY29tL1dDRE1BL0FQUE5PVEVTL1NJTUNvbV8zR19MaW51 eF9kcml2ZXJfQXBwbGljYXRpb24lMjBOb3RlX1YxLjAwLnBkZgoKQW5kIHlvdSdyZSBzZWVpbmcg ZXJyb3JzIHdoZW4gb3BlbmluZyBwb3J0cyAwLTMgZHVlIHRvIHRoZSBEVFIgY2FsbHMKd2hpY2gg SSBndWVzcyBubyBvbmUgbm90aWNlZCBvciBjYXJlZCBhYm91dCBiZWZvcmU/CgpCZWZvcmUgeW91 IHNlbnQgbWUgdGhlIGxzdXNiIEkgc2VhcmNoZWQgZm9yIGl0IGFuZCBjYW1lIGFjcm9zcyB0aGUg YmVsb3cKdGhyZWFkIHdoZXJlIEJqw7hybidzIGhhdmluZyBhIGdvIGF0IFNJTUNvbS4gSW4gaXQg dGhlcmUncyBvdXRwdXQgZnJvbSBhCnNlY29uZCBkZXZpY2UgdXNpbmcgdGhlIHNhbWUgaWQgYnV0 IHdpdGggZW50aXJlbHkgZGlmZmVyZW50IGRlc2NyaXB0b3JzLgoKCWh0dHBzOi8vZm9ydW0ub3Bl bndydC5vcmcvdC9sdGUtd2lyZWxlc3MtbW9kdWxlLXN1cHBvcnQtYnktb3BlbndydC1sZWQtb24t dHBsaW5rLzEzNTg2P3BhZ2U9MwoKSWYgdGhpcyBpcyBhIGNvbW1vbiB0aGVtZSB3aXRoIHRoaXMg dmVuZG9yIHdlIG1heSBuZWVkIHRvIGJlIGV4dHJhCmNhcmVmdWwgd2hlbiBtYWtpbmcgY2hhbmdl cy4KCkpvaGFuCg==