From mboxrd@z Thu Jan 1 00:00:00 1970 From: arnd@arndb.de (Arnd Bergmann) Date: Wed, 6 Jul 2011 13:41:38 +0200 Subject: [PATCH 1/3] ARM: CSR: Adding CSR SiRFprimaII board support In-Reply-To: <1309945678-18813-2-git-send-email-bs14@csr.com> References: <1309945678-18813-1-git-send-email-bs14@csr.com> <1309945678-18813-2-git-send-email-bs14@csr.com> Message-ID: <201107061341.38591.arnd@arndb.de> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wednesday 06 July 2011, Barry Song wrote: > From: Binghua Duan > > SiRFprimaII is the latest generation application processor from CSR?s > Multifunction SoC product family. Designed around an ARM cortex A9 core, > high-speed memory bus, advanced 3D accelerator and full-HD multi-format > video decoder, SiRFprimaII is able to meet the needs of complicated > applications for modern multifunction devices that require heavy concurrent > applications and fluid user experience. Integrated with GPS baseband, > analog and PMU, this new platform is designed to provide a cost effective > solution for Automotive and Consumer markets. > > This patch adds the basic support for this SoC and EVB board based on device > tree. It is following the ZYNQ of Grant Likely in some degree. > > Signed-off-by: Binghua Duan > Signed-off-by: Rongjun Ying > Signed-off-by: Zhiwu Song > Signed-off-by: Yuping Luo > Signed-off-by: Bin Shi > Signed-off-by: Huayi Li > Signed-off-by: Barry Song Reviewed-by: Arnd Bergmann I think this is good for 3.1, but there are still a few things about the device tree file could be improved. > + axi { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x40000000 0x40000000 0x80000000>; > + > + sirfsoc-iobus { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x40000000 0x40000000 0x80000000>; > + > + l2-cache-controller at 0x80040000 { > + compatible = "arm,pl310-cache"; > + reg = <0x80040000 0x1000>; > + interrupts = <59>; > + }; > + > + intc: interrupt-controller at 0x80020000 { > + #interrupt-cells = <1>; > + interrupt-controller; > + compatible = "sirf,prima2-intc"; > + reg = <0x80020000 0x1000>; > + }; > + > + sys-iobg { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x88000000 0x88000000 0x40000>; > + > + clock-controller at 0x88000000 { > + compatible = "sirf,prima2-clkc"; > + reg = <0x88000000 0x1000>; > + interrupts = <3>; > + }; The axi bus and the sirfsoc-iobus seem to be identical in their scope, so it's probably enough to model one of them. I would normally recommend defining the ranges so that addresses are local to the respective bus, like axi { ranges = <0 0x40000000 0x80000000>; sys-iobg { ranges = <0 0x48000000 0x40000>; clock-controller at 0x88000000 { compatible = "sirf,prima2-clkc"; reg = <0 0x1000>; } reset-controller at 0x88010000 { compatible = "sirf,prima2-rstc"; reg = <0x10000 0x1000>; }; } } > + disp-iobg { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x90010000 0x90010000 0x30000>; > + > + display at 0x90010000 { > + compatible = "sirf,prima2-lcd"; > + reg = <0x90010000 0x20000>; > + interrupts = <30>; > + }; > + > + vpp at 0x90020000 { > + compatible = "sirf,prima2-vpp"; > + reg = <0x90020000 0x10000>; > + interrupts = <31>; > + }; > + }; > + > + graphics-iobg { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x98000000 0x98000000 0x8000000>; > + > + graphics at 0x98000000 { > + compatible = "sirf,prima2-graphics"; > + reg = <0x98000000 0x8000000>; > + interrupts = <6>; > + }; > + }; Are the display and graphics units CSR developments? If the GPU is in fact licensed from someone else (powervr, arm, ...), you should probably list the actual name of the device. > + multimedia-iobg { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0xa0000000 0xa0000000 0x8000000>; > + > + multimedia at 0xa0000000 { > + compatible = "sirf,prima2-multimedia"; > + reg = <0xa0000000 0x8000000>; > + interrupts = <5>; > + }; > + }; "multimedia" sounds like a too generic term. What does this do? > + uart0: uart at 0xb0050000 { > + cell-index = <0>; > + compatible = "sirf,prima2-uart"; > + reg = <0xb0050000 0x10000>; > + interrupts = <17>; > + }; > + > + uart1: uart at 0xb0060000 { > + cell-index = <1>; > + compatible = "sirf,prima2-uart"; > + reg = <0xb0060000 0x10000>; > + interrupts = <18>; > + }; > + > + uart2: uart at 0xb0070000 { > + cell-index = <2>; > + compatible = "sirf,prima2-uart"; > + reg = <0xb0070000 0x10000>; > + interrupts = <19>; > + }; Are these proprietary uarts, or are they compatible to 8250 and the like? You might want to set a clock-frequency property as of_serial.c uses. > + rtc-iobg { > + compatible = "sirf,prima2-rtciobg", "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + reg = <0x80030000 0x10000>; > + > + gpsrtc at 0x1000 { > + compatible = "sirf,prima2-gpsrtc"; > + reg = <0x1000 0x1000>; > + interrupts = <55 56 57>; > + }; > + > + sysrtc at 0x2000 { > + compatible = "sirf,prima2-sysrtc"; > + reg = <0x2000 0x1000>; > + interrupts = <52 53 54>; > + }; > + > + pwrc at 0x3000 { > + compatible = "sirf,prima2-pwrc"; > + reg = <0x3000 0x1000>; > + interrupts = <32>; > + }; > + }; Are these rtc implementations related? From the register layout, I would guess that they are supposed to be used by the same driver, so it's probably a good idea to add a "compatible" property with a common name for all three. > + uus-iobg { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0xb8000000 0xb8000000 0x40000>; > + > + usb0: usb at 0xb00E0000 { > + compatible = "sirf,prima2-usb"; > + reg = <0xb8000000 0x10000>; > + interrupts = <10>; > + }; > + > + usb1: usb at 0xb00f0000 { > + compatible = "sirf,prima2-usb"; > + reg = <0xb8010000 0x10000>; > + interrupts = <11>; > + }; Is the usb implementation compatible to an existing one? Many SoCs use one of ehci, ohci or musb. If that's the case, you should look at the respective bindings. > + sata at 0xb00f0000 { > + compatible = "sirf,prima2-sata"; > + reg = <0xb8020000 0x10000>; > + interrupts = <37>; > + }; Same thing here. Most sata controllers are compatible to some standard implementation. > + security at 0xb00f0000 { > + compatible = "sirf,prima2-security"; > + reg = <0xb8030000 0x10000>; > + interrupts = <42>; > + }; > + }; > + }; > + }; > +}; Arnd From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH 1/3] ARM: CSR: Adding CSR SiRFprimaII board support Date: Wed, 6 Jul 2011 13:41:38 +0200 Message-ID: <201107061341.38591.arnd@arndb.de> References: <1309945678-18813-1-git-send-email-bs14@csr.com> <1309945678-18813-2-git-send-email-bs14@csr.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1309945678-18813-2-git-send-email-bs14-kQvG35nSl+M@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org To: Barry Song Cc: linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, Bin Shi , devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, workgroup.linux-kQvG35nSl+M@public.gmane.org, Zhiwu Song , Rongjun Ying , Binghua Duan , Barry Song , tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org, Yuping Luo , Huayi Li , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: devicetree@vger.kernel.org T24gV2VkbmVzZGF5IDA2IEp1bHkgMjAxMSwgQmFycnkgU29uZyB3cm90ZToKPiBGcm9tOiBCaW5n aHVhIER1YW4gPGJpbmdodWEuZHVhbkBjc3IuY29tPgo+IAo+IFNpUkZwcmltYUlJIGlzIHRoZSBs YXRlc3QgZ2VuZXJhdGlvbiBhcHBsaWNhdGlvbiBwcm9jZXNzb3IgZnJvbSBDU1LigJlzCj4gTXVs dGlmdW5jdGlvbiBTb0MgcHJvZHVjdCBmYW1pbHkuIERlc2lnbmVkIGFyb3VuZCBhbiBBUk0gY29y dGV4IEE5IGNvcmUsCj4gaGlnaC1zcGVlZCBtZW1vcnkgYnVzLCBhZHZhbmNlZCAzRCBhY2NlbGVy YXRvciBhbmQgZnVsbC1IRCBtdWx0aS1mb3JtYXQKPiB2aWRlbyBkZWNvZGVyLCBTaVJGcHJpbWFJ SSBpcyBhYmxlIHRvIG1lZXQgdGhlIG5lZWRzIG9mIGNvbXBsaWNhdGVkCj4gYXBwbGljYXRpb25z IGZvciBtb2Rlcm4gbXVsdGlmdW5jdGlvbiBkZXZpY2VzIHRoYXQgcmVxdWlyZSBoZWF2eSBjb25j dXJyZW50Cj4gYXBwbGljYXRpb25zIGFuZCBmbHVpZCB1c2VyIGV4cGVyaWVuY2UuIEludGVncmF0 ZWQgd2l0aCBHUFMgYmFzZWJhbmQsCj4gYW5hbG9nIGFuZCBQTVUsIHRoaXMgbmV3IHBsYXRmb3Jt IGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUgYSBjb3N0IGVmZmVjdGl2ZQo+IHNvbHV0aW9uIGZvciBB dXRvbW90aXZlIGFuZCBDb25zdW1lciBtYXJrZXRzLgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUg YmFzaWMgc3VwcG9ydCBmb3IgdGhpcyBTb0MgYW5kIEVWQiBib2FyZCBiYXNlZCBvbiBkZXZpY2UK PiB0cmVlLiBJdCBpcyBmb2xsb3dpbmcgdGhlIFpZTlEgb2YgR3JhbnQgTGlrZWx5IGluIHNvbWUg ZGVncmVlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEJpbmdodWEgRHVhbiA8QmluZ2h1YS5EdWFuQGNz ci5jb20+Cj4gU2lnbmVkLW9mZi1ieTogUm9uZ2p1biBZaW5nIDxSb25nanVuLllpbmdAY3NyLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBaaGl3dSBTb25nIDxaaGl3dS5Tb25nQGNzci5jb20+Cj4gU2ln bmVkLW9mZi1ieTogWXVwaW5nIEx1byA8WXVwaW5nLkx1b0Bjc3IuY29tPgo+IFNpZ25lZC1vZmYt Ynk6IEJpbiBTaGkgPEJpbi5TaGlAY3NyLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBIdWF5aSBMaSA8 SHVheWkuTGlAY3NyLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBCYXJyeSBTb25nIDxCYW9odWEuU29u Z0Bjc3IuY29tPgoKUmV2aWV3ZWQtYnk6IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+CgpJ IHRoaW5rIHRoaXMgaXMgZ29vZCBmb3IgMy4xLCBidXQgdGhlcmUgYXJlIHN0aWxsIGEgZmV3IHRo aW5ncyBhYm91dAp0aGUgZGV2aWNlIHRyZWUgZmlsZSBjb3VsZCBiZSBpbXByb3ZlZC4KCj4gKwlh eGkgewo+ICsJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7Cj4gKwkJI2FkZHJlc3MtY2VsbHMg PSA8MT47Cj4gKwkJI3NpemUtY2VsbHMgPSA8MT47Cj4gKwkJcmFuZ2VzID0gPDB4NDAwMDAwMDAg MHg0MDAwMDAwMCAweDgwMDAwMDAwPjsKPiArCj4gKwkJc2lyZnNvYy1pb2J1cyB7Cj4gKwkJCWNv bXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7Cj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJ CQkjc2l6ZS1jZWxscyA9IDwxPjsKPiArCQkJcmFuZ2VzID0gPDB4NDAwMDAwMDAgMHg0MDAwMDAw MCAweDgwMDAwMDAwPjsKPiArCj4gKwkJCWwyLWNhY2hlLWNvbnRyb2xsZXJAMHg4MDA0MDAwMCB7 Cj4gKwkJCQljb21wYXRpYmxlID0gImFybSxwbDMxMC1jYWNoZSI7Cj4gKwkJCQlyZWcgPSA8MHg4 MDA0MDAwMCAweDEwMDA+Owo+ICsJCQkJaW50ZXJydXB0cyA9IDw1OT47Cj4gKwkJCX07Cj4gKwo+ ICsJCQlpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckAweDgwMDIwMDAwIHsKPiArCQkJCSNpbnRl cnJ1cHQtY2VsbHMgPSA8MT47Cj4gKwkJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKPiArCQkJCWNv bXBhdGlibGUgPSAic2lyZixwcmltYTItaW50YyI7Cj4gKwkJCQlyZWcgPSA8MHg4MDAyMDAwMCAw eDEwMDA+Owo+ICsJCQl9Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgc3lzLWlvYmcgewo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8MT47Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VzID0gPDB4ODgwMDAwMDAgMHg4ODAwMDAwMCAw eDQwMDAwPjsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2stY29udHJv bGxlckAweDg4MDAwMDAwIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbXBhdGlibGUgPSAic2lyZixwcmltYTItY2xrYyI7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWcgPSA8MHg4ODAwMDAwMCAweDEwMDA+Owo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0cyA9IDwzPjsKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9OwoKClRoZSBheGkgYnVzIGFuZCB0aGUgc2lyZnNvYy1pb2J1 cyBzZWVtIHRvIGJlIGlkZW50aWNhbCBpbiB0aGVpciBzY29wZSwKc28gaXQncyBwcm9iYWJseSBl bm91Z2ggdG8gbW9kZWwgb25lIG9mIHRoZW0uCgpJIHdvdWxkIG5vcm1hbGx5IHJlY29tbWVuZCBk ZWZpbmluZyB0aGUgcmFuZ2VzIHNvIHRoYXQgYWRkcmVzc2VzIGFyZSBsb2NhbAp0byB0aGUgcmVz cGVjdGl2ZSBidXMsIGxpa2UKCglheGkgewoJCXJhbmdlcyA9IDwwIDB4NDAwMDAwMDAgMHg4MDAw MDAwMD47CgoJCXN5cy1pb2JnIHsKCQkJcmFuZ2VzID0gPDAgMHg0ODAwMDAwMCAweDQwMDAwPjsK ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2stY29udHJvbGxlckAweDg4MDAwMDAwIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAic2lyZixwcmltYTItY2xr YyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MCAweDEwMDA+OwoJCQl9 CgogICAgICAgICAgICAgICAgICAgICAgICByZXNldC1jb250cm9sbGVyQDB4ODgwMTAwMDAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1y c3RjIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDEwMDAwIDB4MTAw MD47CiAgICAgICAgICAgICAgICAgICAgICAgIH07CgkJfQoJfQoKCj4gKwkJCWRpc3AtaW9iZyB7 Cj4gKwkJCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOwo+ICsJCQkJI2FkZHJlc3MtY2VsbHMg PSA8MT47Cj4gKwkJCQkjc2l6ZS1jZWxscyA9IDwxPjsKPiArCQkJCXJhbmdlcyA9IDwweDkwMDEw MDAwIDB4OTAwMTAwMDAgMHgzMDAwMD47Cj4gKwo+ICsJCQkJZGlzcGxheUAweDkwMDEwMDAwIHsK PiArCQkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLWxjZCI7Cj4gKwkJCQkJcmVnID0gPDB4 OTAwMTAwMDAgMHgyMDAwMD47Cj4gKwkJCQkJaW50ZXJydXB0cyA9IDwzMD47Cj4gKwkJCQl9Owo+ ICsKPiArCQkJCXZwcEAweDkwMDIwMDAwIHsKPiArCQkJCQljb21wYXRpYmxlID0gInNpcmYscHJp bWEyLXZwcCI7Cj4gKwkJCQkJcmVnID0gPDB4OTAwMjAwMDAgMHgxMDAwMD47Cj4gKwkJCQkJaW50 ZXJydXB0cyA9IDwzMT47Cj4gKwkJCQl9Owo+ICsJCQl9Owo+ICsKPiArCQkJZ3JhcGhpY3MtaW9i ZyB7Cj4gKwkJCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOwo+ICsJCQkJI2FkZHJlc3MtY2Vs bHMgPSA8MT47Cj4gKwkJCQkjc2l6ZS1jZWxscyA9IDwxPjsKPiArCQkJCXJhbmdlcyA9IDwweDk4 MDAwMDAwIDB4OTgwMDAwMDAgMHg4MDAwMDAwPjsKPiArCj4gKwkJCQlncmFwaGljc0AweDk4MDAw MDAwIHsKPiArCQkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLWdyYXBoaWNzIjsKPiArCQkJ CQlyZWcgPSA8MHg5ODAwMDAwMCAweDgwMDAwMDA+Owo+ICsJCQkJCWludGVycnVwdHMgPSA8Nj47 Cj4gKwkJCQl9Owo+ICsJCQl9OwoKQXJlIHRoZSBkaXNwbGF5IGFuZCBncmFwaGljcyB1bml0cyBD U1IgZGV2ZWxvcG1lbnRzPyBJZiB0aGUgR1BVIGlzCmluIGZhY3QgbGljZW5zZWQgZnJvbSBzb21l b25lIGVsc2UgKHBvd2VydnIsIGFybSwgLi4uKSwgeW91IHNob3VsZApwcm9iYWJseSBsaXN0IHRo ZSBhY3R1YWwgbmFtZSBvZiB0aGUgZGV2aWNlLgoKPiArCQkJbXVsdGltZWRpYS1pb2JnIHsKPiAr CQkJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7Cj4gKwkJCQkjYWRkcmVzcy1jZWxscyA9IDwx PjsKPiArCQkJCSNzaXplLWNlbGxzID0gPDE+Owo+ICsJCQkJcmFuZ2VzID0gPDB4YTAwMDAwMDAg MHhhMDAwMDAwMCAweDgwMDAwMDA+Owo+ICsKPiArCQkJCW11bHRpbWVkaWFAMHhhMDAwMDAwMCB7 Cj4gKwkJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1tdWx0aW1lZGlhIjsKPiArCQkJCQly ZWcgPSA8MHhhMDAwMDAwMCAweDgwMDAwMDA+Owo+ICsJCQkJCWludGVycnVwdHMgPSA8NT47Cj4g KwkJCQl9Owo+ICsJCQl9OwoKIm11bHRpbWVkaWEiIHNvdW5kcyBsaWtlIGEgdG9vIGdlbmVyaWMg dGVybS4gV2hhdCBkb2VzIHRoaXMgZG8/Cgo+ICsJCQkJdWFydDA6IHVhcnRAMHhiMDA1MDAwMCB7 Cj4gKwkJCQkJY2VsbC1pbmRleCA9IDwwPjsKPiArCQkJCQljb21wYXRpYmxlID0gInNpcmYscHJp bWEyLXVhcnQiOwo+ICsJCQkJCXJlZyA9IDwweGIwMDUwMDAwIDB4MTAwMDA+Owo+ICsJCQkJCWlu dGVycnVwdHMgPSA8MTc+Owo+ICsJCQkJfTsKPiArCj4gKwkgCQkJdWFydDE6IHVhcnRAMHhiMDA2 MDAwMCB7Cj4gKwkJCQkJY2VsbC1pbmRleCA9IDwxPjsKPiArCQkJCQljb21wYXRpYmxlID0gInNp cmYscHJpbWEyLXVhcnQiOwo+ICsJCQkJCXJlZyA9IDwweGIwMDYwMDAwIDB4MTAwMDA+Owo+ICsJ CQkJCWludGVycnVwdHMgPSA8MTg+Owo+ICsJCQkJfTsKPiArCj4gKwkgCQkJdWFydDI6IHVhcnRA MHhiMDA3MDAwMCB7Cj4gKwkJCQkJY2VsbC1pbmRleCA9IDwyPjsKPiArCQkJCQljb21wYXRpYmxl ID0gInNpcmYscHJpbWEyLXVhcnQiOwo+ICsJCQkJCXJlZyA9IDwweGIwMDcwMDAwIDB4MTAwMDA+ Owo+ICsJCQkJCWludGVycnVwdHMgPSA8MTk+Owo+ICsJCQkJfTsKCkFyZSB0aGVzZSBwcm9wcmll dGFyeSB1YXJ0cywgb3IgYXJlIHRoZXkgY29tcGF0aWJsZSB0byA4MjUwIGFuZCB0aGUKbGlrZT8g WW91IG1pZ2h0IHdhbnQgdG8gc2V0IGEgY2xvY2stZnJlcXVlbmN5IHByb3BlcnR5IGFzIG9mX3Nl cmlhbC5jCnVzZXMuCgo+ICsJCQlydGMtaW9iZyB7Cj4gKwkJCQljb21wYXRpYmxlID0gInNpcmYs cHJpbWEyLXJ0Y2lvYmciLCAic2ltcGxlLWJ1cyI7Cj4gKwkJCQkjYWRkcmVzcy1jZWxscyA9IDwx PjsKPiArCQkJCSNzaXplLWNlbGxzID0gPDE+Owo+ICsJCQkJcmVnID0gPDB4ODAwMzAwMDAgMHgx MDAwMD47Cj4gKwo+ICsJCQkJZ3BzcnRjQDB4MTAwMCB7Cj4gKwkJCQkJY29tcGF0aWJsZSA9ICJz aXJmLHByaW1hMi1ncHNydGMiOwo+ICsJCQkJCXJlZyA9IDwweDEwMDAgMHgxMDAwPjsKPiArCQkJ CQlpbnRlcnJ1cHRzID0gPDU1IDU2IDU3PjsKPiArCQkJCX07Cj4gKwo+ICsJCQkJc3lzcnRjQDB4 MjAwMCB7Cj4gKwkJCQkJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1zeXNydGMiOwo+ICsJCQkJ CXJlZyA9IDwweDIwMDAgMHgxMDAwPjsKPiArCQkJCQlpbnRlcnJ1cHRzID0gPDUyIDUzIDU0PjsK PiArCQkJCX07Cj4gKwo+ICsJCQkJcHdyY0AweDMwMDAgewo+ICsJCQkJCWNvbXBhdGlibGUgPSAi c2lyZixwcmltYTItcHdyYyI7Cj4gKwkJCQkJcmVnID0gPDB4MzAwMCAweDEwMDA+Owo+ICsJCQkJ CWludGVycnVwdHMgPSA8MzI+Owo+ICsJCQkJfTsKPiArCQkJfTsKCkFyZSB0aGVzZSBydGMgaW1w bGVtZW50YXRpb25zIHJlbGF0ZWQ/IEZyb20gdGhlIHJlZ2lzdGVyIGxheW91dCwgSSB3b3VsZApn dWVzcyB0aGF0IHRoZXkgYXJlIHN1cHBvc2VkIHRvIGJlIHVzZWQgYnkgdGhlIHNhbWUgZHJpdmVy LCBzbyBpdCdzCnByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIGFkZCBhICJjb21wYXRpYmxlIiBwcm9w ZXJ0eSB3aXRoIGEgY29tbW9uIG5hbWUKZm9yIGFsbCB0aHJlZS4KCj4gKwkJCXV1cy1pb2JnIHsK PiArCQkJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7Cj4gKwkJCQkjYWRkcmVzcy1jZWxscyA9 IDwxPjsKPiArCQkJCSNzaXplLWNlbGxzID0gPDE+Owo+ICsJCQkJcmFuZ2VzID0gPDB4YjgwMDAw MDAgMHhiODAwMDAwMCAweDQwMDAwPjsKPiArCj4gKwkgCQkJdXNiMDogdXNiQDB4YjAwRTAwMDAg ewo+ICsJCQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItdXNiIjsKPiArCQkJCQlyZWcgPSA8 MHhiODAwMDAwMCAweDEwMDAwPjsKPiArCQkJCQlpbnRlcnJ1cHRzID0gPDEwPjsKPiArCQkJCX07 Cj4gKwo+ICsJIAkJCXVzYjE6IHVzYkAweGIwMGYwMDAwIHsKPiArCQkJCQljb21wYXRpYmxlID0g InNpcmYscHJpbWEyLXVzYiI7Cj4gKwkJCQkJcmVnID0gPDB4YjgwMTAwMDAgMHgxMDAwMD47Cj4g KwkJCQkJaW50ZXJydXB0cyA9IDwxMT47Cj4gKwkJCQl9OwoKSXMgdGhlIHVzYiBpbXBsZW1lbnRh dGlvbiBjb21wYXRpYmxlIHRvIGFuIGV4aXN0aW5nIG9uZT8gTWFueSBTb0NzCnVzZSBvbmUgb2Yg ZWhjaSwgb2hjaSBvciBtdXNiLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHlvdSBzaG91bGQgbG9vawph dCB0aGUgcmVzcGVjdGl2ZSBiaW5kaW5ncy4KCj4gKwkJCQlzYXRhQDB4YjAwZjAwMDAgewo+ICsJ CQkJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItc2F0YSI7Cj4gKwkJCQkJcmVnID0gPDB4Yjgw MjAwMDAgMHgxMDAwMD47Cj4gKwkJCQkJaW50ZXJydXB0cyA9IDwzNz47Cj4gKwkJCQl9OwoKU2Ft ZSB0aGluZyBoZXJlLiBNb3N0IHNhdGEgY29udHJvbGxlcnMgYXJlIGNvbXBhdGlibGUgdG8gc29t ZQpzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbi4KCj4gKwkJCQlzZWN1cml0eUAweGIwMGYwMDAwIHsK PiArCQkJCQljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXNlY3VyaXR5IjsKPiArCQkJCQlyZWcg PSA8MHhiODAzMDAwMCAweDEwMDAwPjsKPiArCQkJCQlpbnRlcnJ1cHRzID0gPDQyPjsKPiArCQkJ CX07Cj4gKwkJCX07Cj4gKwkJfTsKPiArCX07Cj4gK307CgoJQXJuZApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkZXZpY2V0cmVlLWRpc2N1c3MgbWFpbGlu ZyBsaXN0CmRldmljZXRyZWUtZGlzY3Vzc0BsaXN0cy5vemxhYnMub3JnCmh0dHBzOi8vbGlzdHMu b3psYWJzLm9yZy9saXN0aW5mby9kZXZpY2V0cmVlLWRpc2N1c3MK