From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [RFC 0/2] drm/dsi: DSI for devices with different control bus Date: Tue, 15 Sep 2015 16:02:58 +0530 Message-ID: <55F7F3DA.20702@codeaurora.org> References: <1439993828.31432.28.camel@pengutronix.de> <20150819143452.GH15607@ulmo.nvidia.com> <1439995944.31432.34.camel@pengutronix.de> <20150819150207.GJ15607@ulmo.nvidia.com> <55D5548E.9030608@codeaurora.org> <20150820114815.GB7479@ulmo.nvidia.com> <55D6C07D.4050405@codeaurora.org> <55ED7921.2030103@codeaurora.org> <55EEB82C.2070805@samsung.com> <55F12007.6020307@codeaurora.org> <20150910073252.GA8756@ulmo.nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20150910073252.GA8756@ulmo.nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , Mark Rutland , Rob Herring Cc: "devicetree@vger.kernel.org" , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Andrzej Hajda List-Id: linux-arm-msm@vger.kernel.org SGkgUm9iLCBNYXJrLAoKV2UndmUgYmVlbiB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQg d2F5IHRvIHJlcHJlc2VudCBhIGNsYXNzCm9mIGRpc3BsYXkgZW5jb2RlciBkZXZpY2VzIGluIERU LgoKVGhlc2UgZGV2aWNlcyBoYXZlIHJlZ2lzdGVycyB0aGF0IGFyZSBnZW5lcmFsbHkgY29uZmln dXJlZCB2aWEgaTJjLiBPbmNlIAp0aGUgZGV2aWNlIGlzIGNvbmZpZ3VyZWQsIGl0IHRha2VzIGlu IHZpZGVvIGRhdGEgZnJvbSB0aGUgbWlwaQpkc2kgYnVzLgoKVW50aWwgbm93LCBhbGwgdGhlIGRl dmljZXMgd2UndmUgc3VwcG9ydGVkIGRldmljZXMgdGhhdCBjYW4gYmUgYXJlCmNvbmZpZ3VyZWQg YnkgdGhlIGRzaSBidXMgaXRzZWxmLCBhbmQgaGVuY2UsIHdlJ3ZlIGJlZW4gYWJsZSB0bwpyZXBy ZXNlbnQgdGhlbSBpbiBEVCBhcyBjaGlsZHJlbiB1bmRlciB0aGUgZHNpIGhvc3QuCgpGb3IgdGhl IGFib3ZlIGNsYXNzIG9mIGRldmljZXMgKHVzaW5nIGJvdGggaTJjIGFuZCBkc2kpLCB3ZSBhcmVu J3QKYWJsZSB0byBjb25jbHVkZSB1cG9uIHdoYXQncyB0aGUgYmV0dGVyIGFwcHJvYWNoIGFtb25n IHRoZSB0d286CgoxLiBSZXByZXNlbnQgdGhlIGRldmljZSB2aWEgMiBkaWZmZXJlbnQgbm9kZXMg aW4gRFQuIE9uZSB3b3VsZCBiZQphIGNoaWxkIHVuZGVyIGFuIGkyYyBhZGFwdGVyLCB0aGUgb3Ro ZXIgYSBjaGlsZCBvZiBhIGRzaSBob3N0LiBXZQp3b3VsZCBoYXZlIHR3byBkZXZpY2UgZHJpdmVy cywgb25lIGkyYyBjbGllbnQsIGFuZCB0aGUgb3RoZXIgYQptaXBpIGRzaSBkZXZpY2UuCgoyLiBS ZXByZXNlbnQgdGhlIGRldmljZSBhcyBhbiBpMmMgY2xpZW50IGluIERULiBQcm92aWRlIGFuIGFw aQp0byBjcmVhdGUgImR1bW15IiBkc2kgZGV2aWNlcy4gVGhlIGkyYyBjbGllbnQgZHJpdmVyIHdv dWxkIHVzZQp0aGlzIGFwaSB0byByZWdpc3RlciBhIGRzaSBkZXZpY2UsIGFuZCBsaW5rIGl0c2Vs ZiB3aXRoIHRoZSBkc2kKaG9zdC4KCldoYXQgZG8geW91IHRoaW5rIHdvdWxkIGJlIHRoZSB3YXkg dG8gZ28gaGVyZT8gSSBndWVzcyB5b3UKbWlnaHQgaGF2ZSBmYWNlZCBzb21ldGhpbmcgc2ltaWxh ciBpbiBvdGhlciBzdWJzeXN0ZW1zLgoKSSd2ZSBnaXZlbiBhIHJlbGF0aXZlbHkgYnJpZWYgZGVz Y3JpcHRpb24gb2YgdGhlIHByb2JsZW0uIFRoZXJlCndlcmUgc29tZSBtb3JlIG5pdHR5IGdyaXR0 aWVzIGRpc2N1c3NlZCBpbiB0aGlzIHRocmVhZCBiZWZvcmUuCgpUaGllcnJ5LCBBbmRyemVqLCBM dWNhcywKClBsZWFzZSBmZWVsIGZyZWUgdG8gYWRkIHlvdXIgY29tbWVudHMgaWYgSSBoYXZlIG1p c3NlZCBvdXQgb24Kc29tZXRoaW5nLgoKVGhhbmtzLApBcmNoaXQKCk9uIDA5LzEwLzIwMTUgMDE6 MDIgUE0sIFRoaWVycnkgUmVkaW5nIHdyb3RlOgo+IE9uIFRodSwgU2VwIDEwLCAyMDE1IGF0IDEx OjQ1OjM1QU0gKzA1MzAsIEFyY2hpdCBUYW5lamEgd3JvdGU6Cj4+Cj4+Cj4+IE9uIDA5LzA4LzIw MTUgMDM6NTcgUE0sIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4+PiBPbiAwOS8wNy8yMDE1IDAxOjQ2 IFBNLCBBcmNoaXQgVGFuZWphIHdyb3RlOgo+Pj4+IFRoaWVycnksCj4+Pj4KPj4+PiBPbiAwOC8y MS8yMDE1IDExOjM5IEFNLCBBcmNoaXQgVGFuZWphIHdyb3RlOgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBP biAwOC8yMC8yMDE1IDA1OjE4IFBNLCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPj4+Pj4+IE9uIFRo dSwgQXVnIDIwLCAyMDE1IGF0IDA5OjQ2OjE0QU0gKzA1MzAsIEFyY2hpdCBUYW5lamEgd3JvdGU6 Cj4+Pj4+Pj4gSGkgVGhpZXJyeSwgTHVjYXMsCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IE9uIDA4 LzE5LzIwMTUgMDg6MzIgUE0sIFRoaWVycnkgUmVkaW5nIHdyb3RlOgo+Pj4+Pj4+PiBPbiBXZWQs IEF1ZyAxOSwgMjAxNSBhdCAwNDo1MjoyNFBNICswMjAwLCBMdWNhcyBTdGFjaCB3cm90ZToKPj4+ Pj4+Pj4+IEFtIE1pdHR3b2NoLCBkZW4gMTkuMDguMjAxNSwgMTY6MzQgKzAyMDAgc2NocmllYiBU aGllcnJ5IFJlZGluZzoKPj4+Pj4+Pj4+PiBPbiBXZWQsIEF1ZyAxOSwgMjAxNSBhdCAwNDoxNzow OFBNICswMjAwLCBMdWNhcyBTdGFjaCB3cm90ZToKPj4+Pj4+Pj4+Pj4gSGkgVGhpZXJyeSwgQXJj aGl0LAo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gWy4uLl0KPj4+Pj4+Pj4+Pj4+IFBlcmhhcHMgYSBi ZXR0ZXIgd2F5IHdvdWxkIGJlIHRvIGludmVydCB0aGlzIHJlbGF0aW9uc2hpcC4KPj4+Pj4+Pj4+ Pj4+IEFjY29yZGluZyB0bwo+Pj4+Pj4+Pj4+Pj4geW91ciBwcm9wb3NhbCB3ZSdkIGhhdmUgdG8g aGF2ZSBEVCBsaWtlIHRoaXM6Cj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gICAgICBpMmNALi4u IHsKPj4+Pj4+Pj4+Pj4+ICAgICAgICAgIC4uLgo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+ICAg ICAgICAgIGRzaS1kZXZpY2VALi4uIHsKPj4+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAuLi4KPj4+ Pj4+Pj4+Pj4+ICAgICAgICAgICAgICBkc2ktYnVzID0gPCZkc2k+Owo+Pj4+Pj4+Pj4+Pj4gICAg ICAgICAgICAgIC4uLgo+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgfTsKPj4+Pj4+Pj4+Pj4+Cj4+Pj4+ Pj4+Pj4+PiAgICAgICAgICAuLi4KPj4+Pj4+Pj4+Pj4+ICAgICAgfTsKPj4+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj4+PiAgICAgIGRzaUAuLi4gewo+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgLi4uCj4+Pj4+ Pj4+Pj4+PiAgICAgIH07Cj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gSW52ZXJzaW5nIHRoZSBy ZWxhdGlvbnNoaXAgd291bGQgYmVjb21lIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4+Pj4+Pj4+Pj4+ Pgo+Pj4+Pj4+Pj4+Pj4gICAgICBpMmNALi4uIHsKPj4+Pj4+Pj4+Pj4+ICAgICAgICAgIC4uLgo+ Pj4+Pj4+Pj4+Pj4gICAgICB9Owo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+ICAgICAgZHNpQC4u LiB7Cj4+Pj4+Pj4+Pj4+PiAgICAgICAgICAuLi4KPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiAg ICAgICAgICBwZXJpcGhlcmFsQC4uLiB7Cj4+Pj4+Pj4+Pj4+PiAgICAgICAgICAgICAgLi4uCj4+ Pj4+Pj4+Pj4+PiAgICAgICAgICAgICAgaTJjLWJ1cyA9IDwmaTJjPjsKPj4+Pj4+Pj4+Pj4+ICAg ICAgICAgICAgICAuLi4KPj4+Pj4+Pj4+Pj4+ICAgICAgICAgIH07Cj4+Pj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+Pj4gICAgICAgICAgLi4uCj4+Pj4+Pj4+Pj4+PiAgICAgIH07Cj4+Pj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4+Pj4gQm90aCBvZiB0aG9zZSBhcmVuJ3QgZnVuZGFtZW50YWxseSBkaWZmZXJlbnQs IGFuZCB0aGV5IGJvdGggaGF2ZQo+Pj4+Pj4+Pj4+Pj4gdGhlCj4+Pj4+Pj4+Pj4+PiBkaXNhdmFu dGFnZSBvZiBsYWNraW5nIHdheXMgdG8gdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gZGF0YSB0aGF0 Cj4+Pj4+Pj4+Pj4+PiB0aGUKPj4+Pj4+Pj4+Pj4+IG90aGVyIGJ1cyBuZWVkcyB0byBpbnN0YW50 aWF0ZSB0aGUgZHVtbXkgZGV2aWNlIChzdWNoIGFzIHRoZSByZWcKPj4+Pj4+Pj4+Pj4+IHByb3Bl cnR5IGZvciBleGFtcGxlLCBkZW5vdGluZyB0aGUgSTJDIHNsYXZlIGFkZHJlc3Mgb3IgdGhlIERT SQo+Pj4+Pj4+Pj4+Pj4gVkMpLgo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+IFNvIGhvdyBhYm91 dCB3ZSBjcmVhdGUgdHdvIGRldmljZXMgaW4gdGhlIGRldmljZSB0cmVlIGFuZCBmdXNlCj4+Pj4+ Pj4+Pj4+PiB0aGVtIGF0Cj4+Pj4+Pj4+Pj4+PiB0aGUgZHJpdmVyIGxldmVsOgo+Pj4+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+Pj4+ICAgICAgaTJjQC4uLiB7Cj4+Pj4+Pj4+Pj4+PiAgICAgICAgICAuLi4K Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiAgICAgICAgICBpMmNkc2k6IGRzaS1kZXZpY2VALi4u IHsKPj4+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAuLi4KPj4+Pj4+Pj4+Pj4+ICAgICAgICAgIH07 Cj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgLi4uCj4+Pj4+Pj4+Pj4+PiAgICAg IH07Cj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gICAgICBkc2lALi4uIHsKPj4+Pj4+Pj4+Pj4+ ICAgICAgICAgIC4uLgo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+ICAgICAgICAgIHBlcmlwaGVy YWxALi4uIHsKPj4+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAuLi4KPj4+Pj4+Pj4+Pj4+ICAgICAg ICAgICAgICBjb250cm9sID0gPCZpMmNkc2k+Owo+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgIC4u Lgo+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgfTsKPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiAgICAg ICAgICAuLi4KPj4+Pj4+Pj4+Pj4+ICAgICAgfTsKPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiBU aGlzIHdheSB3ZSdsbCBnZXQgYm90aCBhbiBJMkMgZGV2aWNlIGFuZCBhIERTSSBkZXZpY2UgdGhh dCB3ZQo+Pj4+Pj4+Pj4+Pj4gY2FuIGZ1bGx5Cj4+Pj4+Pj4+Pj4+PiBkZXNjcmliZSB1c2luZyB0 aGUgc3RhbmRhcmQgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEF0IGRyaXZlciB0aW1lCj4+Pj4+Pj4+ Pj4+PiB3ZSBjYW4KPj4+Pj4+Pj4+Pj4+IGdldCB0aGUgSTJDIGRldmljZSBmcm9tIHRoZSBwaGFu ZGxlIGluIHRoZSBjb250cm9sIHByb3BlcnR5IG9mCj4+Pj4+Pj4+Pj4+PiB0aGUgRFNJCj4+Pj4+ Pj4+Pj4+PiBkZXZpY2UgYW5kIHVzZSBpdCB0byBleGVjdXRlIEkyQyB0cmFuc2FjdGlvbnMuCj4+ Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBJIGRvbid0IHJlYWxseSBsaWtlIHRvIHNlZSB0aGF0IHlv dSBhcmUgaW52ZW50aW5nIHlldC1hbm90aGVyLXdheSB0bwo+Pj4+Pj4+Pj4+PiBoYW5kbGUgZGV2 aWNlcyBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgYnVzZXMuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ IERldmljZXRyZWUgaXMgc3RydWN0dXJlZCBhbG9uZyB0aGUgY29udHJvbCBidXNlcywgZXZlbiBp ZiB0aGUKPj4+Pj4+Pj4+Pj4gZGV2aWNlcwo+Pj4+Pj4+Pj4+PiBhcmUgY29ubmVjdGVkIHRvIG11 bHRpcGxlIGJ1c2VzLCBpbiB0aGUgRFQgdGhleSBhcmUgYWx3YXlzCj4+Pj4+Pj4+Pj4+IGNoaWxk cmVuIG9mCj4+Pj4+Pj4+Pj4+IHRoZSBidXMgdGhhdCBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlaXIg cmVnaXN0ZXJzIGZyb20gdGhlIENQVXMKPj4+Pj4+Pj4+Pj4gcGVyc3BlY3RpdmUuIFNvIGEgRFNJ IGVuY29kZXIgdGhhdCBpcyBjb250cm9sbGVkIHRocm91Z2ggaTJjIGlzCj4+Pj4+Pj4+Pj4+IGNs ZWFybHkKPj4+Pj4+Pj4+Pj4gYSBjaGlsZCBvZiB0aGUgaTJjIG1hc3RlciBjb250cm9sbGVyIGFu ZCBvbmx5IG9mIHRoYXQgb25lLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gSSB0aGluayB0aGF0J3Mg YSBmbGF3ZWQgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIG9uIGhlcmUuIFRoZQo+Pj4+ Pj4+Pj4+IGRldmljZSBpbiBmYWN0IGhhcyB0d28gaW50ZXJmYWNlczogb25lIGlzIEkyQywgdGhl IG90aGVyIGlzIERTSS4KPj4+Pj4+Pj4+PiBJbiBteQo+Pj4+Pj4+Pj4+IG9waW5pb24gdGhhdCdz IHJlYXNvbiBlbm91Z2ggdG8gcmVwcmVzZW50IGl0IGFzIHR3byBsb2dpY2FsIGRldmljZXMuCj4+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IERvZXMgaXQgcmVhbGx5IGhhdmUgMiBjb250cm9sIGludGVyZmFj ZXMgdGhhdCBhcmUgdXNlZCBhdCB0aGUgc2FtZQo+Pj4+Pj4+Pj4gdGltZT8KPj4+Pj4+Pj4+IE9y IGlzIHRoZSBEU0kgY29ubmVjdGlvbiBhIHBhc3NpdmUgZGF0YSBidXMgaWYgdGhlIHJlZ2lzdGVy IGNvbnRyb2wKPj4+Pj4+Pj4+IGhhcHBlbnMgdGhyb3VnaCBpMmM/Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IFRoZSBpbnRlcmZhY2VzIG1heSBub3QgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lLCBhbmQgdGhl IERTSSBpbnRlcmZhY2UKPj4+Pj4+Pj4gbWF5IGV2ZW4gYmUgY3JpcHBsZWQsIGJ1dCB0aGUgZGV2 aWNlIGlzIHN0aWxsIGFkZHJlc3NhYmxlIGZyb20gdGhlIERTSQo+Pj4+Pj4+PiBob3N0IGNvbnRy b2xsZXIsIGlmIGZvciBub3RoaW5nIGVsc2UgdGhhbiBmb3Igcm91dGluZyB0aGUgdmlkZW8gc3Ry ZWFtLgo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBJZiB5b3UgbmVlZCB0byBtb2RlbCBjb25uZWN0aW9u cyBiZXR3ZWVuIGRldmljZXMgdGhhdCBhcmUgbm90Cj4+Pj4+Pj4+Pj4+IHJlZmxlY3RlZAo+Pj4+ Pj4+Pj4+PiB0aHJvdWdoIHRoZSBjb250cm9sIGJ1cyBoaWVyYXJjaHkgeW91IHNob3VsZCByZWFs bHkgY29uc2lkZXIKPj4+Pj4+Pj4+Pj4gdXNpbmcgdGhlCj4+Pj4+Pj4+Pj4+IHN0YW5kYXJkaXpl ZCBvZi1ncmFwaCBiaW5kaW5ncy4KPj4+Pj4+Pj4+Pj4gKERvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9ncmFwaC50eHQpCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBUaGUgcHJvYmxlbSBp cyB0aGF0IHRoZSBvcmlnaW5hbCBwcm9wb3NhbCB3b3VsZCBpbnN0YW50aWF0ZSBhIGR1bW15Cj4+ Pj4+Pj4+Pj4gZGV2aWNlLCBzbyBpdCB3b3VsZG4ndCBiZSByZXByZXNlbnRlZCBpbiBEVCBhdCBh bGwuIFNvIHVubGVzcyB5b3UKPj4+Pj4+Pj4+PiBkbyBhZGQKPj4+Pj4+Pj4+PiB0d28gbG9naWNh bCBkZXZpY2VzIHRvIERUIChvbmUgZm9yIGVhY2ggYnVzIGludGVyZmFjZSksIHlvdSBkb24ndAo+ Pj4+Pj4+Pj4+IGhhdmUKPj4+Pj4+Pj4+PiBhbnl0aGluZyB0byBnbHVlIHRvZ2V0aGVyIHdpdGgg YW4gT0YgZ3JhcGguCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEkgc2VlIHRoYXQgdGhlIGhhdmluZyBk dW1teSBkZXZpY2UgaXMgdGhlIGxlYXN0IGRlc2lyYWJsZSBzb2x1dGlvbi4KPj4+Pj4+Pj4+IEJ1 dAo+Pj4+Pj4+Pj4gaWYgdGhlcmUgaXMgb25seSBvbmUgY29udHJvbCBidXMgdG8gdGhlIGRldmlj ZSBJIHRoaW5rIGl0IHNob3VsZCBiZQo+Pj4+Pj4+Pj4gb25lCj4+Pj4+Pj4+PiBkZXZpY2Ugc2l0 dGluZyBiZW5lYXRoIHRoZSBjb250cm9sIGJ1cy4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBZb3UgY2Fu IHRoZW4gdXNlIG9mLWdyYXBoIHRvIG1vZGVsIHRoZSBkYXRhIHBhdGggYmV0d2VlbiB0aGUgRFNJ Cj4+Pj4+Pj4+PiBlbmNvZGVyCj4+Pj4+Pj4+PiBhbmQgZGV2aWNlLgo+Pj4+Pj4+Pgo+Pj4+Pj4+ PiBCdXQgeW91IHdpbGwgYmUgbmVlZGluZyBhIGRldmljZSBiZWxvdyB0aGUgRFNJIGhvc3QgY29u dHJvbGxlciB0bwo+Pj4+Pj4+PiByZXByZXNlbnQgdGhhdCBlbmRwb2ludCBvZiB0aGUgY29ubmVj dGlvbi4gVGhlIERTSSBob3N0IGNvbnRyb2xsZXIKPj4+Pj4+Pj4gaXRzZWxmIGlzIGluIG5vIHdh eSBjb25uZWN0ZWQgdG8gdGhlIEkyQyBhZGFwdGVyLiBZb3Ugd291bGQgaGF2ZSB0bwo+Pj4+Pj4+ PiBhZGQgc29tZSBzb3J0IG9mIHF1aXJrIHRvIHRoZSBEU0kgY29udHJvbGxlciBiaW5kaW5nIHRv IGFsbG93IGl0IHRvCj4+Pj4+Pj4KPj4+Pj4+PiBUaGFua3MgZm9yIHRoZSByZXZpZXcuCj4+Pj4+ Pj4KPj4+Pj4+PiBJIGltcGxlbWVudGVkIHRoaXMgdG8gc3VwcG9ydCBBRFY3NTMzIERTSSB0byBI RE1JIGVuY29kZXIgY2hpcCwgd2hpY2gKPj4+Pj4+PiBoYXMgYSBEU0kgdmlkZW8gYnVzIGFuZCBh biBpMmMgY29udHJvbCBidXMuCj4+Pj4+Pj4KPj4+Pj4+PiBUaGVyZSB3ZXJlbid0IGFueSBxdWly a3MgYXMgc3VjaCBpbiB0aGUgZGV2aWNlIHRyZWUgd2hlbiBJIHRyaWVkIHRvCj4+Pj4+Pj4gaW1w bGVtZW50IHRoaXMuIFRoZSBEVCBzZWVtcyB0byBtYW5hZ2UgZmluZSB3aXRob3V0IGEgbm9kZQo+ Pj4+Pj4+IGNvcnJlc3BvbmRpbmcgdG8gYSBtaXBpX2RzaV9kZXZpY2U6Cj4+Pj4+Pj4KPj4+Pj4+ PiBpMmNfYWRhcEAuLiB7Cj4+Pj4+Pj4gICAgICBhZHY3NTMzQC4uIHsKPj4+Pj4+Pgo+Pj4+Pj4+ ICAgICAgICAgIHBvcnQgewo+Pj4+Pj4+ICAgICAgICAgICAgICBhZHZfaW46IGVuZHBvaW50IHsK Pj4+Pj4+PiAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmZHNpX291dD47Cj4+ Pj4+Pj4gICAgICAgICAgICAgIH07Cj4+Pj4+Pj4gICAgICAgICAgfTsKPj4+Pj4+PiAgICAgIH07 Cj4+Pj4+Pj4gfTsKPj4+Pj4+Pgo+Pj4+Pj4+IGRzaV9ob3N0QC4uIHsKPj4+Pj4+PiAgICAgIC4u Lgo+Pj4+Pj4+ICAgICAgLi4uCj4+Pj4+Pj4KPj4+Pj4+PiAgICAgIHBvcnQgewo+Pj4+Pj4+ICAg ICAgICAgIGRzaV9vdXQ6IGVuZHBvaW50IHsKPj4+Pj4+PiAgICAgICAgICAgICAgcmVtb3RlLWVu ZHBvaW50ID0gPCZhZHZfaW4+Owo+Pj4+Pj4+ICAgICAgICAgIH0KPj4+Pj4+PiAgICAgIH07Cj4+ Pj4+Pj4gfTsKPj4+Pj4+Pgo+Pj4+Pj4+IEl0J3MgdGhlIGkyYyBkcml2ZXIncyBqb2IgdG8gcGFy c2UgdGhlIGdyYXBoIGFuZCByZXRyaWV2ZSB0aGUKPj4+Pj4+PiBwaGFuZGxlIHRvIHRoZSBkc2kg aG9zdC4gVXNpbmcgdGhpcywgaXQgY2FuIHByb2NlZWQgd2l0aAo+Pj4+Pj4+IHJlZ2lzdGVyaW5n IGl0c2VsZiB0byB0aGlzIGhvc3QgdXNpbmcgdGhlIG5ldyBkc2kgZnVuY3MuIFRoaXMKPj4+Pj4+ PiBwYXRjaCBkb2VzIHRoZSBzYW1lIGZvciB0aGUgYWR2NzUzMyBpMmMgZHJpdmVyOgo+Pj4+Pj4+ Cj4+Pj4+Pj4gaHR0cDovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9kcmktZGV2ZWwvbXNnODY4NDAu aHRtbAo+Pj4+Pj4+Cj4+Pj4+Pj4+IGhvb2sgdXAgd2l0aCBhIGNvbnRyb2wgZW5kcG9pbnQuIEFu ZCB0aGVuIHlvdSdsbCBuZWVkIG1vcmUgcXVpcmtzCj4+Pj4+Pj4+IHRvIGRlc2NyaWJlIHdoYXQg a2luZCBvZiBEU0kgZGV2aWNlIHRoaXMgaXMuCj4+Pj4+Pj4KPj4+Pj4+PiBDb3VsZCB5b3UgZXhw bGFpbiB3aGF0IHlvdSBtZWFudCBieSB0aGlzPyBJLmUuIGRlc2NyaWJpbmcgdGhlIGtpbmQKPj4+ Pj4+PiBvZiBEU0kgZGV2aWNlPwo+Pj4+Pj4KPj4+Pj4+IERlc2NyaWJpbmcgdGhlIG51bWJlciBv ZiBsYW5lcywgc3BlY2lmeWluZyB0aGUgdmlydHVhbCBjaGFubmVsLCBtb2RlCj4+Pj4+PiBmbGFn cywgZXRjLiBZb3UgY291bGQgcHJvYmFibHkgc2V0IHRoZSBudW1iZXIgb2YgbGFuZXMgYW5kIG1v ZGUgZmxhZ3MKPj4+Pj4+IHZpYSB0aGUgSTJDIGRyaXZlciwgYnV0IGVzcGVjaWFsbHkgdGhlIHZp cnR1YWwgY2hhbm5lbCBjYW5ub3QgYmUgc2V0Cj4+Pj4+PiBiZWNhdXNlIGl0IGlzbid0IGtub3du IHRvIHRoZSBJMkMgRFQgYnJhbmNoIG9mIHRoZSBkZXZpY2UuCj4+Pj4+Cj4+Pj4+IEkgYWdyZWUg d2l0aCB0aGUgVkMgcGFydC4gSXQgY291bGQgYmUgYSBEVCBlbnRyeSB3aXRoaW4gdGhlIGkyYyBj bGllbnQKPj4+Pj4gbm9kZSwgYnV0IHRoYXQgZG9lcyBtYWtlIGl0IHNlZW0gbGlrZSBhIHF1aXJr LiBUaGUgJ3JlZycgd2F5IHVuZGVyIHRoZQo+Pj4+PiBEU0kgaG9zdCBpcyBkZWZpbml0ZWx5IGJl dHRlciB0byBwb3B1bGF0ZSB0aGUgdmlydHVhbCBjaGFubmVsLgo+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+ PiBUaGUgZHNpIGRldmljZSBjcmVhdGVkIGlzbid0IHJlYWxseSBhIGR1bW15IGRldmljZSBhcyBz dWNoLiBJdCdzCj4+Pj4+Pj4gZHVtbXkgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUgaXNuJ3QgYSBy ZWFsIGRzaSBkcml2ZXIgYXNzb2NpYXRlZAo+Pj4+Pj4+IHdpdGggaXQuIFRoZSBkc2kgZGV2aWNl IGlzIHN0aWxsIHVzZWQgdG8gYXR0YWNoIHRvIGEgbWlwaSBkc2kgaG9zdCwKPj4+Pj4+PiB0aGUg d2F5IG5vcm1hbCBkc2kgZGV2aWNlcyBkby4KPj4+Pj4+Cj4+Pj4+PiBJIHVuZGVyc3RhbmQsIGJ1 dCBJIGRvbid0IHNlZSB3aHkgaXQgaGFzIHRvIGJlIGluc3RhbnRpYXRlZCBieSB0aGUgSTJDCj4+ Pj4+PiBkcml2ZXIsIHRoYXQncyB3aGF0IEkgZmluZCBiYWNrd2FyZHMuIFRoZXJlIGlzIGFscmVh ZHkgYSBzdGFuZGFyZCB3YXkKPj4+Pj4+IGZvciBpbnN0YW50aWF0aW5nIERTSSBkZXZpY2VzLCB3 aHkgbm90IHVzZSBpdD8KPj4+Pj4KPj4+Pj4gSSBhc3N1bWVkIHdlIGNvdWxkIGVpdGhlciByZXBy ZXNlbnQgdGhlIGRldmljZSB1c2luZyBhbiBpMmMgZHJpdmVyLCBvcgo+Pj4+PiBkc2ksIGJ1dCBu b3QgYm90aC4gSGVuY2UsIEkgY2FtZSB1cCB3aXRoIHRoaXMgYXBwcm9hY2guCj4+Pj4+Cj4+Pj4+ Pgo+Pj4+Pj4+PiBPbiB0aGUgb3RoZXIgaGFuZCBpZiB5b3UgcHJvcGVybHkgaW5zdGFudGlhdGUg dGhlIERTSSBkZXZpY2UgeW91IGNhbgo+Pj4+Pj4+PiBlYXNpbHkgd3JpdGUgYSBkcml2ZXIgZm9y IGl0LCBhbmQgdGhlIGRyaXZlciB3aWxsIHNldCB1cCB0aGUgY29ycmVjdAo+Pj4+Pj4+PiBwcm9w ZXJ0aWVzIGFzIGltcGxpZWQgYnkgdGhlIGNvbXBhdGlibGUgc3RyaW5nLiBPbmNlIHlvdSBoYXZl IHRoYXQgeW91Cj4+Pj4+Pj4+IGNhbiBlYXNpbHkgaG9vayBpdCB1cCB0byB0aGUgSTJDIGNvbnRy b2wgaW50ZXJmYWNlIGluIHdoYXRldmVyIHdheSB5b3UKPj4+Pj4+Pj4gbGlrZSwgYmUgdGhhdCBh biBPRiBncmFwaCBvciBqdXN0IGEgc2ltcGxlIHVuaWRpcmVjdGlvbmFsIGxpbmsgYnkKPj4+Pj4+ Pj4gcGhhbmRsZS4KPj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFdpdGggdGhlIGZ1c2VkIGFwcHJv YWNoIHlvdSBzdWdnZXN0ZWQsIHdlIHdvdWxkIGhhdmUgMiBkcml2ZXJzOiBvbmUgaTJjCj4+Pj4+ Pj4gYW5kIHRoZSBvdGhlciBkc2kuIFRoZSBpMmMgY2xpZW50IGRyaXZlciB3b3VsZCBiZSBtb3Jl IG9yIGxlc3MgbWluaW1hbCwKPj4+Pj4+PiBwcmVwYXJpbmcgYW4gaTJjX2NsaWVudCBkZXZpY2Ug Zm9yIHRoZSBkc2kgZHJpdmVyIHRvIHVzZS4gSXMgbXkKPj4+Pj4+PiB1bmRlcnN0YW5kaW5nIGNv cnJlY3Q/Cj4+Pj4+Pgo+Pj4+Pj4gQ29ycmVjdC4gVGhhdCdzIGtpbmQgb2Ygc2ltaWxhciB0byB0 aGUgd2F5IGFuIEhETUkgZW5jb2RlciBkcml2ZXIgd291bGQKPj4+Pj4+IHVzZSBhbiBJMkMgYWRh cHRlciB0byBxdWVyeSBFRElELiBUaGUgaTJjX2NsaWVudCBkZXZpY2Ugd291bGQgYmUgYSBtZWFu cwo+Pj4+Pj4gZm9yIHRoZSBEU0kgZHJpdmVyIHRvIGFjY2VzcyB0aGUgY29udHJvbCBpbnRlcmZh Y2UuCj4+Pj4+Cj4+Pj4+IE9rYXkuCj4+Pj4+Cj4+Pj4+IEFsdGhvdWdoLCBJJ20gbm90IHN1cmUg YWJvdXQgdGhlIEhETUkgZW5jb2RlciBleGFtcGxlLiBBbiBIRE1JCj4+Pj4+IGVuY29kZXIgd291 bGQgcmVhZCBvZmYgZWRpZCBkaXJlY3RseSBmcm9tIHRoZSBhZGFwdGVyKHdpdGggYW4gYWRkcmVz cwo+Pj4+PiBzcGVjaWZpZWQpLCBpdCB3b3VsZG4ndCBuZWVkIHRvIGNyZWF0ZSBhbiBpMmMgY2xp ZW50IGRldmljZS4gVGhlcmVmb3JlLAo+Pj4+PiBhbiBIRE1JIGVuY29kZXIgd291bGRuJ3QgbmVl ZCB0byBoYXZlIGEgc2VwYXJhdGUgbm9kZSBmb3IgaTJjIGluIERULgo+Pj4+Pgo+Pj4+Pj4KPj4+ Pj4+PiBXZSBjYW4gZG8gd2l0aG91dCBkdW1teSBkc2kgZGV2aWNlcyB3aXRoIHRoaXMgbWV0aG9k LiBCdXQsIHJlcHJlc2VudGluZwo+Pj4+Pj4+IGEgZGV2aWNlIHdpdGggMiBEVCBub2RlcyBzZWVt cyBhIGJpdCBvZmYuIFdlJ2QgYWxzbyBuZWVkIHRvIGNvbXBhdGlibGUKPj4+Pj4+PiBzdHJpbmdz IGZvciB0aGUgc2FtZSBkZXZpY2UsIG9uZSBmb3IgdGhlIGkyYyBwYXJ0LCBhbmQgdGhlIG90aGVy IGZvcgo+Pj4+Pj4+IHRoZSBkc2kgcGFydC4KPj4+Pj4+Cj4+Pj4+PiBJIGFncmVlIHRoYXQgdGhp cyBzb21ld2hhdCBzdHJldGNoZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBkZXZpY2UgdHJlZS4KPj4+ Pj4+IEFub3RoZXIgYWx0ZXJuYXRpdmUgSSBndWVzcyB3b3VsZCBiZSB0byBub3QgaGF2ZSBhIGNv bXBhdGlibGUgc3RyaW5nIGZvcgo+Pj4+Pj4gdGhlIEkyQyBkZXZpY2UgYXQgYWxsICh0aGF0J3Mg dGVjaG5pY2FsbHkgbm90IHZhbGlkLCBJIGd1ZXNzKSBiZWNhdXNlIHdlCj4+Pj4+PiByZWFsbHkg ZG9uJ3QgbmVlZCBhbiBJMkMgZHJpdmVyIGZvciB0aGUgZGV2aWNlLiBXaGF0IHdlIHJlYWxseSBu ZWVkIGlzIGEKPj4+Pj4+IERTSSBkcml2ZXIgd2l0aCBhIG1lYW5zIHRvIHRhbGsgb3ZlciBzb21l IEkyQyBidXMgd2l0aCBzb21lIG90aGVyIHBhcnQKPj4+Pj4+IG9mIGl0cyBkZXZpY2UuCj4+Pj4+ Cj4+Pj4+IEkgdGhpbmsgd2hhdCB0aGUgZHJpdmVyIHNob3VsZCAncmVhbGx5JyBiZSBpcyBhIGJp dCBzdWJqZWN0aXZlLCBhbmQgY2FuCj4+Pj4+IHZhcnkgYmFzZWQgb24gd2hhdCB0aGUgYnVzZXMg YXJlIHVzZWQgZm9yIGluIHRoZSBkZXZpY2UuIEZvciB0aGUgVG9zaGliYQo+Pj4+PiBjaGlwIHRo YXQgSmFuaSBtZW50aW9uZWQsIGl0IHRlbmRzIG1vcmUgdG93YXJkcyBhIERTSSBkcml2ZXIuIFdo ZXJlYXMsCj4+Pj4+IGZvciBhbiBBRFY3NXh4IGNoaXAsIGl0J3MgY2xvc2VyIHRvIGFuIEkyQyBk cml2ZXIgc2luY2Ugb25seSBJMkMgY2FuIGJlCj4+Pj4+IHVzZWQgdG8gY29uZmlndXJlIHRoZSBj aGlwIHJlZ2lzdGVycy4KPj4+Pj4KPj4+Pj4gQWx0aG91Z2gsIEkgYWdyZWUgd2l0aCB0aGUgcG9p bnQgeW91IG1hZGUgYWJvdXQgdGhlIERTSSBidXMgaGVyZToKPj4+Pj4KPj4+Pj4gImFuZCB0aGUg RFNJIGludGVyZmFjZSBtYXkgZXZlbiBiZSBjcmlwcGxlZCwgYnV0IHRoZSBkZXZpY2UgaXMgc3Rp bGwKPj4+Pj4gYWRkcmVzc2FibGUgZnJvbSB0aGUgRFNJIGhvc3QgY29udHJvbGxlciwgaWYgZm9y IG5vdGhpbmcgZWxzZSB0aGFuIGZvcgo+Pj4+PiByb3V0aW5nIHRoZSB2aWRlbyBzdHJlYW0uIgo+ Pj4+Pgo+Pj4+PiBUaGUgZmFjdCB0aGF0IHRoZSBkYXRhIG9uIHRoZSBEU0kgYnVzIGNvbnRhaW5z IHJvdXRpbmcgaW5mb3JtYXRpb24gKGkuZSwKPj4+Pj4gdmlydHVhbCBjaGFubmVsIG51bWJlcikg YWx3YXlzIGdpdmVzIGl0IHNvbWUgJ2NvbnRyb2wnIGFzcGVjdC4KPj4+Pj4KPj4+Pj4+Cj4+Pj4+ Pj4gICBGcm9tIGFuIGFkdjc1eHggZHJpdmVyIHBlcnNwZWN0aXZlLCBpdCBzaG91bGQgYWxzbyBz dXBwb3J0IHRoZSBBRFY3NTExCj4+Pj4+Pj4gY2hpcCwgd2hpY2ggaXMgYSBSR0IvRFBJIHRvIEhE TUkgZW5jb2Rlci4gRm9yIGFkdjc1MTEsIHdlIGRvbid0IG5lZWQgYQo+Pj4+Pj4+IERTSSBEVCBu b2RlLiBJdCB3b3VsZCBiZSBhIGJpdCBpbmNvbnNpc3RlbnQgdG8gaGF2ZSB0aGUgYmluZGluZ3MK Pj4+Pj4+PiByZXF1aXJlIGJvdGggRFNJIGFuZCBJMkMgbm9kZXMgZm9yIG9uZSBjaGlwLCBhbmQg b25seSBJMkMgbm9kZSBmb3IgdGhlCj4+Pj4+Pj4gb3RoZXIsIHdpdGggYm90aCBjaGlwcyBiZWlu ZyBzdXBwb3J0ZWQgYnkgdGhlIHNhbWUgZHJpdmVyLgo+Pj4+Pj4KPj4+Pj4+IFdoeSB3b3VsZCB0 aGF0IGJlIGluY29uc2lzdGVudD8gVGhhdCBzb3VuZHMgbGlrZSB0aGUgbW9zdCBhY2N1cmF0ZQo+ Pj4+Pj4gcmVwcmVzZW50YXRpb24gb2YgdGhlIGhhcmR3YXJlIHRvIG1lLgo+Pj4+Pgo+Pj4+PiBJ bmNvbnNpc3RlbnQgd2Fzbid0IHRoZSByaWdodCB0ZXJtLiBJIHNob3VsZCBoYXZlIHVzZWQgJ3Vu Y29tbW9uJyA6KQo+Pj4+PiBJdCdzIGNvbW1vbiBmb3IgdHdvIGNoaXBzIG9mIHRoZSBzYW1lIGZh bWlseSB0byBoYXZlIGEgZGlmZmVyZW50IHNldAo+Pj4+PiBvcHRpb25hbCBwcm9wZXJ0aWVzIGlu IERULCBidXQgaXQncyBub3QgY29tbW9uIGZvciB0d28gY2hpcHMgb2YgdGhlCj4+Pj4+IHNhbWUg ZmFtaWx5IHRvIGJlIHJlcHJlc2VudGVkIGJ5IGEgZGlmZmVyZW50IG51bWJlciBvZiBkZXZpY2Vz IGluCj4+Pj4+IERULgo+Pj4+Pgo+Pj4+PiBJIGRvbid0IGhhdmUgYW4gaXNzdWUgd2l0aCB0aGUg ZnVzZWQgYXBwcm9hY2ggeW91IHN1Z2dlc3RlZCwgYXMgbG9uZwo+Pj4+PiBhcyBwZW9wbGUgYXJl IG9rYXkgd2l0aCB0aGUgRFQgcGFydHMuIEVzcGVjaWFsbHkgdGhlIHBhcnQgb2YgbmVlZGluZyAy Cj4+Pj4+IGNvbXBhdGlibGUgc3RyaW5ncyBpbiB0aGUgRFQuCj4+Pj4KPj4+PiBJIGltcGxlbWVu dGVkIHRoZSBBRFY3NTMzIGRyaXZlciB3aXRoIHRoZSBhcHByb2FjaCB5b3Ugc3VnZ2VzdGVkIGFi b3ZlCj4+Pj4gKDIgZHJpdmVycyBmb3IgMiBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiB0aGUgY2hp cCkuIEkgcG9zdGVkIGl0IG91dAo+Pj4+IGp1c3QgYSB3aGlsZSBiYWNrICh3aXRoIHlvdSBpbiBs b29wKS4KPj4+Pgo+Pj4+IFRoZSBEVCBub2RlIHdpdGggdGhpcyBhcHBvcmFjaCB3b3VsZCBsb29r IGxpa2UgdGhpczoKPj4+Pgo+Pj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9ib2Rkb2IvbGludXgvYmxv Yi9jMjRjYmY2M2E2OTk4ZDAwMDk1YzEwMTIyY2U1ZTM3Yjc2NGM3ZGJhL2FyY2gvYXJtNjQvYm9v dC9kdHMvcWNvbS9hcHE4MDE2LXNiYy5kdHNpI0wxNjIKPj4+Pgo+Pj4+IFRoZSBtYWluIGlycml0 YW50IHdpdGggdGhlICcyIGRyaXZlcicgYXBwcm9hY2ggaXMgdGhhdCB3ZSBuZWVkIHRvCj4+Pj4g c2hhcmUgdGhlIHBlci1kZXZpY2UgZHJpdmVyIGRhdGEgd2l0aCB0aGVtLiBGb3IgQURWNzUzMywg SSd2ZSBtYWRlCj4+Pj4gdGhlIGkyYyBkcml2ZXIgYWxsb2NhdGUgZHJpdmVyIGRhdGEgKHN0cnVj dCBhZHY3NTExKS4KPj4+Pgo+Pj4+IFRoZSBkc2kgZHJpdmVyIGdldHMgdGhlIGRyaXZlciBkYXRh IGluIHRoZSBmb2xsb3dpbmcgd2F5Ogo+Pj4+Cj4+Pj4gLSBUaGUgaTJjIGRyaXZlciBzZXRzIHRo ZSBkcml2ZXIgZGF0YSBhcyBpdHMgY2xpZW50IGRhdGEgdXNpbmcKPj4+PiAgICAgaTJjX3NldF9j bGllbnRkYXRhKCkKPj4+PiAtIFBhcnNlIHRoZSBpMmMtY29udHJvbCBwaGFuZGxlIHRvIGdldCB0 aGUgY29ycmVzcG9uZGluZyBpMmMgY2xpZW50Lgo+Pj4+IC0gRXh0cmFjdCB0aGUgYWR2NzUxMSBz dHJ1Y3QgYnkgZ2V0dGluZyBpMmNfZ2V0X2NsaWVudGRhdGEoKQo+Pj4+Cj4+Pj4gVGhpcyB3YXkg b2YgZ2V0dGluZyB0aGUgc2FtZSBkcml2ZXIgZGF0YSBpcyBhIGJpdCBzdHJhbmdlLCBidXQgaXQK Pj4+PiB3b3Jrcy4gRm9yIHRoaXMsIHdlIGRvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRzaSBk cml2ZXIgZGVmZXJzCj4+Pj4gYXMgbG9uZyBhcyB0aGUgaTJjIGRyaXZlciBpc24ndCBwcm9iZWQu Cj4+Pj4KPj4+PiBJJ3ZlIG5vdyBpbXBsZW1lbnRlZCBib3RoIGFwcHJvYWNoZXMgZm9yIHRoZSBk cml2ZXIuIFRoZSBmaXJzdCB1c2luZwo+Pj4+IGEgZHVtbXkgZHNpIGRldmljZSwgYW5kIHRoaXMg b25lIHVzaW5nIDIgZHJpdmVycyAod2l0aCBib3RoIGJlaW5nCj4+Pj4gcmVwcmVzZW50ZWQgaW4g RFQpLiBUaGUgYWR2YW50YWdlIG9mIHRoZSBsYXR0ZXIgaXMgdGhhdCB3ZSBkb24ndCBuZWVkCj4+ Pj4gdG8gY3JlYXRlIGFueSBkdW1teSBkZXZpY2Ugc3R1ZmYsIHRoZSBkaXNhZHZhbnRhZ2UgaXMg dGhhdCBEVCBpcyBhIGJpdAo+Pj4+IHVuY29tbW9uLgo+Pj4+Cj4+Pj4gQ2FuIHdlIG5vdyBjb21l IHRvIGEgY29uY2x1c2lvbiBvbiB3aGF0IGFwcHJvYWNoIGlzIGJldHRlcj8KPj4+Cj4+PiBEU0kg YnkgZGVzaWduIGlzIGRhdGEgYnVzIHdoaWNoIGNhbiBiZSB1c2VkIGFkZGl0aW9uYWxseSBhcyBh IGNvbnRyb2wgYnVzLCBidXQKPj4+IGluIHRoaXMgcGFydGljdWxhciBjYXNlIGl0IGlzIHB1cmVs eSBkYXRhIGJ1cy4gU28gb2YtZ3JhcGggYmluZGluZ3Mgc2VlbSB0byBiZQo+Pj4gYmV0dGVyIGNo b2ljZS4gQXMgYWxyZWFkeSBMdWNhcyBTdGFjaCBzYWlkIERUIGhpZXJhcmNoeSBzaG91bGQgZGVz Y3JpYmUgY29udHJvbAo+Pj4gYnVzZXMgYW5kIG9mLWdyYXBoIGJpbmRpbmdzIHNob3VsZCBkZXNj cmliZSBkYXRhIGJ1cy4gQXJndW1lbnQgdGhhdCBodyBoYXMgdHdvCj4+PiBpbnRlcmZhY2VzIGRv ZXMgbm90IHNlZW0gdG8gYmUgdmFsaWQgaGVyZSAtIGl0IGhhcyBvbmx5IG9uZSBjb250cm9sIGlu dGVyZmFjZS4KPj4+IFRoZSBvdGhlciBvbmUgaXMgb25seSBmb3IgZGF0YSwgcmVwcmVzZW50aW5n IGV2ZXJ5IGRhdGEgaW50ZXJmYWNlIHVzaW5nIERUCj4+PiBoaWVyYXJjaHkgd291bGQgbGVhZCB0 byBpbmZsYXRpb24gb2YgcHNldWRvIGRldmljZXMuCj4+Pgo+Pj4gT24gdGhlIG90aGVyIHNpZGUg SSBkbyBub3Qgc2VlIGR1bW15IGRldmljZSBhcHByb2FjaCBpZGVhbCBzb2x1dGlvbiwgSSBndWVz cwo+Pj4gbGlnaHR3ZWlnaHQgZnJhbWV3b3JrIHByb3ZpZGluZyBEU0kgaG9zdHMgZGV0YWNoZWQg ZnJvbSBMaW51eCBkZXZpY2UgbW9kZWwgY291bGQKPj4+IHdvcmsgYmV0dGVyIGhlcmUuCj4+PiBU aGUgb25seSBwcm9ibGVtIGhlcmUgaXMgdGhhdCBpdCBzaG91bGQgY29leGlzdCBzb21laG93IHdp dGggZHNpIGJ1cyB1c2VkIHRvCj4+PiBjb250cm9sIGRldmljZXMuIEFueXdheSBpbXBsZW1lbnRp bmcgaXQgc2hvdWxkbid0IGJlIGhhcmQsIHF1ZXN0aW9uIGlzIGlmIGl0Cj4+PiB3b3VsZCBiZSBl dmVudHVhbGx5IGFjY2VwdGVkIDopIEkgZ3Vlc3Mgd2UgY2FuIGxpdmUgZm9yIG5vdyB3aXRoIGR1 bW15IGRldnMuCj4+Pgo+Pj4gU3VtbWFyaXppbmcgSSB3b3VsZCBwcmVmZXIgdmVyc2lvbiB3aXRo IGR1bW15IGRldmljZXMsIGFzIGl0IHNlZW1zIG1vcmUKPj4+IGNvbXBhdGlibGUgd2l0aCBEVCBk ZXNpZ24uCj4+Cj4+IFRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrLiBJJ2xsIHNwaW4gYSBuZXdlciB2 ZXJzaW9uIG9mIHRoZSBkdW1teSBkc2kgZGV2Cj4+IHBhdGNoZXMgYWZ0ZXIgd2FpdGluZyBmb3Ig c29tZSBtb3JlIGNvbW1lbnRzLgo+Cj4gTGV0J3Mgd2FpdCBmb3Igc29tZW9uZSBmcm9tIHRoZSBk ZXZpY2UgdHJlZSBtYWludGFpbmVycyB0byBjb21tZW50Cj4gaW5zdGVhZCBvZiBnb2luZyBhcm91 bmQgaW4gY2lyY2xlcy4KPgo+IFRoaWVycnkKPgoKLS0gClF1YWxjb21tIElubm92YXRpb24gQ2Vu dGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5k YXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753356AbbIOKdN (ORCPT ); Tue, 15 Sep 2015 06:33:13 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:41126 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753319AbbIOKdI (ORCPT ); Tue, 15 Sep 2015 06:33:08 -0400 Subject: Re: [RFC 0/2] drm/dsi: DSI for devices with different control bus To: Thierry Reding , Mark Rutland , Rob Herring References: <1439993828.31432.28.camel@pengutronix.de> <20150819143452.GH15607@ulmo.nvidia.com> <1439995944.31432.34.camel@pengutronix.de> <20150819150207.GJ15607@ulmo.nvidia.com> <55D5548E.9030608@codeaurora.org> <20150820114815.GB7479@ulmo.nvidia.com> <55D6C07D.4050405@codeaurora.org> <55ED7921.2030103@codeaurora.org> <55EEB82C.2070805@samsung.com> <55F12007.6020307@codeaurora.org> <20150910073252.GA8756@ulmo.nvidia.com> Cc: Andrzej Hajda , "devicetree@vger.kernel.org" , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Lucas Stach From: Archit Taneja Message-ID: <55F7F3DA.20702@codeaurora.org> Date: Tue, 15 Sep 2015 16:02:58 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <20150910073252.GA8756@ulmo.nvidia.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Rob, Mark, We've been trying to figure out the right way to represent a class of display encoder devices in DT. These devices have registers that are generally configured via i2c. Once the device is configured, it takes in video data from the mipi dsi bus. Until now, all the devices we've supported devices that can be are configured by the dsi bus itself, and hence, we've been able to represent them in DT as children under the dsi host. For the above class of devices (using both i2c and dsi), we aren't able to conclude upon what's the better approach among the two: 1. Represent the device via 2 different nodes in DT. One would be a child under an i2c adapter, the other a child of a dsi host. We would have two device drivers, one i2c client, and the other a mipi dsi device. 2. Represent the device as an i2c client in DT. Provide an api to create "dummy" dsi devices. The i2c client driver would use this api to register a dsi device, and link itself with the dsi host. What do you think would be the way to go here? I guess you might have faced something similar in other subsystems. I've given a relatively brief description of the problem. There were some more nitty gritties discussed in this thread before. Thierry, Andrzej, Lucas, Please feel free to add your comments if I have missed out on something. Thanks, Archit On 09/10/2015 01:02 PM, Thierry Reding wrote: > On Thu, Sep 10, 2015 at 11:45:35AM +0530, Archit Taneja wrote: >> >> >> On 09/08/2015 03:57 PM, Andrzej Hajda wrote: >>> On 09/07/2015 01:46 PM, Archit Taneja wrote: >>>> Thierry, >>>> >>>> On 08/21/2015 11:39 AM, Archit Taneja wrote: >>>>> >>>>> >>>>> On 08/20/2015 05:18 PM, Thierry Reding wrote: >>>>>> On Thu, Aug 20, 2015 at 09:46:14AM +0530, Archit Taneja wrote: >>>>>>> Hi Thierry, Lucas, >>>>>>> >>>>>>> >>>>>>> On 08/19/2015 08:32 PM, Thierry Reding wrote: >>>>>>>> On Wed, Aug 19, 2015 at 04:52:24PM +0200, Lucas Stach wrote: >>>>>>>>> Am Mittwoch, den 19.08.2015, 16:34 +0200 schrieb Thierry Reding: >>>>>>>>>> On Wed, Aug 19, 2015 at 04:17:08PM +0200, Lucas Stach wrote: >>>>>>>>>>> Hi Thierry, Archit, >>>>>>>>>>> >>>>>>>>> [...] >>>>>>>>>>>> Perhaps a better way would be to invert this relationship. >>>>>>>>>>>> According to >>>>>>>>>>>> your proposal we'd have to have DT like this: >>>>>>>>>>>> >>>>>>>>>>>> i2c@... { >>>>>>>>>>>> ... >>>>>>>>>>>> >>>>>>>>>>>> dsi-device@... { >>>>>>>>>>>> ... >>>>>>>>>>>> dsi-bus = <&dsi>; >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> dsi@... { >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> Inversing the relationship would become something like this: >>>>>>>>>>>> >>>>>>>>>>>> i2c@... { >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> dsi@... { >>>>>>>>>>>> ... >>>>>>>>>>>> >>>>>>>>>>>> peripheral@... { >>>>>>>>>>>> ... >>>>>>>>>>>> i2c-bus = <&i2c>; >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> Both of those aren't fundamentally different, and they both have >>>>>>>>>>>> the >>>>>>>>>>>> disavantage of lacking ways to transport configuration data that >>>>>>>>>>>> the >>>>>>>>>>>> other bus needs to instantiate the dummy device (such as the reg >>>>>>>>>>>> property for example, denoting the I2C slave address or the DSI >>>>>>>>>>>> VC). >>>>>>>>>>>> >>>>>>>>>>>> So how about we create two devices in the device tree and fuse >>>>>>>>>>>> them at >>>>>>>>>>>> the driver level: >>>>>>>>>>>> >>>>>>>>>>>> i2c@... { >>>>>>>>>>>> ... >>>>>>>>>>>> >>>>>>>>>>>> i2cdsi: dsi-device@... { >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> dsi@... { >>>>>>>>>>>> ... >>>>>>>>>>>> >>>>>>>>>>>> peripheral@... { >>>>>>>>>>>> ... >>>>>>>>>>>> control = <&i2cdsi>; >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> ... >>>>>>>>>>>> }; >>>>>>>>>>>> >>>>>>>>>>>> This way we'll get both an I2C device and a DSI device that we >>>>>>>>>>>> can fully >>>>>>>>>>>> describe using the standard device tree bindings. At driver time >>>>>>>>>>>> we can >>>>>>>>>>>> get the I2C device from the phandle in the control property of >>>>>>>>>>>> the DSI >>>>>>>>>>>> device and use it to execute I2C transactions. >>>>>>>>>>>> >>>>>>>>>>> I don't really like to see that you are inventing yet-another-way to >>>>>>>>>>> handle devices connected to multiple buses. >>>>>>>>>>> >>>>>>>>>>> Devicetree is structured along the control buses, even if the >>>>>>>>>>> devices >>>>>>>>>>> are connected to multiple buses, in the DT they are always >>>>>>>>>>> children of >>>>>>>>>>> the bus that is used to control their registers from the CPUs >>>>>>>>>>> perspective. So a DSI encoder that is controlled through i2c is >>>>>>>>>>> clearly >>>>>>>>>>> a child of the i2c master controller and only of that one. >>>>>>>>>> >>>>>>>>>> I think that's a flawed interpretation of what's going on here. The >>>>>>>>>> device in fact has two interfaces: one is I2C, the other is DSI. >>>>>>>>>> In my >>>>>>>>>> opinion that's reason enough to represent it as two logical devices. >>>>>>>>>> >>>>>>>>> Does it really have 2 control interfaces that are used at the same >>>>>>>>> time? >>>>>>>>> Or is the DSI connection a passive data bus if the register control >>>>>>>>> happens through i2c? >>>>>>>> >>>>>>>> The interfaces may not be used at the same time, and the DSI interface >>>>>>>> may even be crippled, but the device is still addressable from the DSI >>>>>>>> host controller, if for nothing else than for routing the video stream. >>>>>>>> >>>>>>>>>>> If you need to model connections between devices that are not >>>>>>>>>>> reflected >>>>>>>>>>> through the control bus hierarchy you should really consider >>>>>>>>>>> using the >>>>>>>>>>> standardized of-graph bindings. >>>>>>>>>>> (Documentation/devicetree/bindings/graph.txt) >>>>>>>>>> >>>>>>>>>> The problem is that the original proposal would instantiate a dummy >>>>>>>>>> device, so it wouldn't be represented in DT at all. So unless you >>>>>>>>>> do add >>>>>>>>>> two logical devices to DT (one for each bus interface), you don't >>>>>>>>>> have >>>>>>>>>> anything to glue together with an OF graph. >>>>>>>>>> >>>>>>>>> I see that the having dummy device is the least desirable solution. >>>>>>>>> But >>>>>>>>> if there is only one control bus to the device I think it should be >>>>>>>>> one >>>>>>>>> device sitting beneath the control bus. >>>>>>>>> >>>>>>>>> You can then use of-graph to model the data path between the DSI >>>>>>>>> encoder >>>>>>>>> and device. >>>>>>>> >>>>>>>> But you will be needing a device below the DSI host controller to >>>>>>>> represent that endpoint of the connection. The DSI host controller >>>>>>>> itself is in no way connected to the I2C adapter. You would have to >>>>>>>> add some sort of quirk to the DSI controller binding to allow it to >>>>>>> >>>>>>> Thanks for the review. >>>>>>> >>>>>>> I implemented this to support ADV7533 DSI to HDMI encoder chip, which >>>>>>> has a DSI video bus and an i2c control bus. >>>>>>> >>>>>>> There weren't any quirks as such in the device tree when I tried to >>>>>>> implement this. The DT seems to manage fine without a node >>>>>>> corresponding to a mipi_dsi_device: >>>>>>> >>>>>>> i2c_adap@.. { >>>>>>> adv7533@.. { >>>>>>> >>>>>>> port { >>>>>>> adv_in: endpoint { >>>>>>> remote-endpoint = <&dsi_out>; >>>>>>> }; >>>>>>> }; >>>>>>> }; >>>>>>> }; >>>>>>> >>>>>>> dsi_host@.. { >>>>>>> ... >>>>>>> ... >>>>>>> >>>>>>> port { >>>>>>> dsi_out: endpoint { >>>>>>> remote-endpoint = <&adv_in>; >>>>>>> } >>>>>>> }; >>>>>>> }; >>>>>>> >>>>>>> It's the i2c driver's job to parse the graph and retrieve the >>>>>>> phandle to the dsi host. Using this, it can proceed with >>>>>>> registering itself to this host using the new dsi funcs. This >>>>>>> patch does the same for the adv7533 i2c driver: >>>>>>> >>>>>>> http://www.spinics.net/lists/dri-devel/msg86840.html >>>>>>> >>>>>>>> hook up with a control endpoint. And then you'll need more quirks >>>>>>>> to describe what kind of DSI device this is. >>>>>>> >>>>>>> Could you explain what you meant by this? I.e. describing the kind >>>>>>> of DSI device? >>>>>> >>>>>> Describing the number of lanes, specifying the virtual channel, mode >>>>>> flags, etc. You could probably set the number of lanes and mode flags >>>>>> via the I2C driver, but especially the virtual channel cannot be set >>>>>> because it isn't known to the I2C DT branch of the device. >>>>> >>>>> I agree with the VC part. It could be a DT entry within the i2c client >>>>> node, but that does make it seem like a quirk. The 'reg' way under the >>>>> DSI host is definitely better to populate the virtual channel. >>>>> >>>>>> >>>>>>> The dsi device created isn't really a dummy device as such. It's >>>>>>> dummy in the sense that there isn't a real dsi driver associated >>>>>>> with it. The dsi device is still used to attach to a mipi dsi host, >>>>>>> the way normal dsi devices do. >>>>>> >>>>>> I understand, but I don't see why it has to be instantiated by the I2C >>>>>> driver, that's what I find backwards. There is already a standard way >>>>>> for instantiating DSI devices, why not use it? >>>>> >>>>> I assumed we could either represent the device using an i2c driver, or >>>>> dsi, but not both. Hence, I came up with this approach. >>>>> >>>>>> >>>>>>>> On the other hand if you properly instantiate the DSI device you can >>>>>>>> easily write a driver for it, and the driver will set up the correct >>>>>>>> properties as implied by the compatible string. Once you have that you >>>>>>>> can easily hook it up to the I2C control interface in whatever way you >>>>>>>> like, be that an OF graph or just a simple unidirectional link by >>>>>>>> phandle. >>>>>>>> >>>>>>> >>>>>>> With the fused approach you suggested, we would have 2 drivers: one i2c >>>>>>> and the other dsi. The i2c client driver would be more or less minimal, >>>>>>> preparing an i2c_client device for the dsi driver to use. Is my >>>>>>> understanding correct? >>>>>> >>>>>> Correct. That's kind of similar to the way an HDMI encoder driver would >>>>>> use an I2C adapter to query EDID. The i2c_client device would be a means >>>>>> for the DSI driver to access the control interface. >>>>> >>>>> Okay. >>>>> >>>>> Although, I'm not sure about the HDMI encoder example. An HDMI >>>>> encoder would read off edid directly from the adapter(with an address >>>>> specified), it wouldn't need to create an i2c client device. Therefore, >>>>> an HDMI encoder wouldn't need to have a separate node for i2c in DT. >>>>> >>>>>> >>>>>>> We can do without dummy dsi devices with this method. But, representing >>>>>>> a device with 2 DT nodes seems a bit off. We'd also need to compatible >>>>>>> strings for the same device, one for the i2c part, and the other for >>>>>>> the dsi part. >>>>>> >>>>>> I agree that this somewhat stretches the capabilities of device tree. >>>>>> Another alternative I guess would be to not have a compatible string for >>>>>> the I2C device at all (that's technically not valid, I guess) because we >>>>>> really don't need an I2C driver for the device. What we really need is a >>>>>> DSI driver with a means to talk over some I2C bus with some other part >>>>>> of its device. >>>>> >>>>> I think what the driver should 'really' be is a bit subjective, and can >>>>> vary based on what the buses are used for in the device. For the Toshiba >>>>> chip that Jani mentioned, it tends more towards a DSI driver. Whereas, >>>>> for an ADV75xx chip, it's closer to an I2C driver since only I2C can be >>>>> used to configure the chip registers. >>>>> >>>>> Although, I agree with the point you made about the DSI bus here: >>>>> >>>>> "and the DSI interface may even be crippled, but the device is still >>>>> addressable from the DSI host controller, if for nothing else than for >>>>> routing the video stream." >>>>> >>>>> The fact that the data on the DSI bus contains routing information (i.e, >>>>> virtual channel number) always gives it some 'control' aspect. >>>>> >>>>>> >>>>>>> From an adv75xx driver perspective, it should also support the ADV7511 >>>>>>> chip, which is a RGB/DPI to HDMI encoder. For adv7511, we don't need a >>>>>>> DSI DT node. It would be a bit inconsistent to have the bindings >>>>>>> require both DSI and I2C nodes for one chip, and only I2C node for the >>>>>>> other, with both chips being supported by the same driver. >>>>>> >>>>>> Why would that be inconsistent? That sounds like the most accurate >>>>>> representation of the hardware to me. >>>>> >>>>> Inconsistent wasn't the right term. I should have used 'uncommon' :) >>>>> It's common for two chips of the same family to have a different set >>>>> optional properties in DT, but it's not common for two chips of the >>>>> same family to be represented by a different number of devices in >>>>> DT. >>>>> >>>>> I don't have an issue with the fused approach you suggested, as long >>>>> as people are okay with the DT parts. Especially the part of needing 2 >>>>> compatible strings in the DT. >>>> >>>> I implemented the ADV7533 driver with the approach you suggested above >>>> (2 drivers for 2 different components of the chip). I posted it out >>>> just a while back (with you in loop). >>>> >>>> The DT node with this apporach would look like this: >>>> >>>> https://github.com/boddob/linux/blob/c24cbf63a6998d00095c10122ce5e37b764c7dba/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi#L162 >>>> >>>> The main irritant with the '2 driver' approach is that we need to >>>> share the per-device driver data with them. For ADV7533, I've made >>>> the i2c driver allocate driver data (struct adv7511). >>>> >>>> The dsi driver gets the driver data in the following way: >>>> >>>> - The i2c driver sets the driver data as its client data using >>>> i2c_set_clientdata() >>>> - Parse the i2c-control phandle to get the corresponding i2c client. >>>> - Extract the adv7511 struct by getting i2c_get_clientdata() >>>> >>>> This way of getting the same driver data is a bit strange, but it >>>> works. For this, we do need to ensure that the dsi driver defers >>>> as long as the i2c driver isn't probed. >>>> >>>> I've now implemented both approaches for the driver. The first using >>>> a dummy dsi device, and this one using 2 drivers (with both being >>>> represented in DT). The advantage of the latter is that we don't need >>>> to create any dummy device stuff, the disadvantage is that DT is a bit >>>> uncommon. >>>> >>>> Can we now come to a conclusion on what approach is better? >>> >>> DSI by design is data bus which can be used additionally as a control bus, but >>> in this particular case it is purely data bus. So of-graph bindings seem to be >>> better choice. As already Lucas Stach said DT hierarchy should describe control >>> buses and of-graph bindings should describe data bus. Argument that hw has two >>> interfaces does not seem to be valid here - it has only one control interface. >>> The other one is only for data, representing every data interface using DT >>> hierarchy would lead to inflation of pseudo devices. >>> >>> On the other side I do not see dummy device approach ideal solution, I guess >>> lightweight framework providing DSI hosts detached from Linux device model could >>> work better here. >>> The only problem here is that it should coexist somehow with dsi bus used to >>> control devices. Anyway implementing it shouldn't be hard, question is if it >>> would be eventually accepted :) I guess we can live for now with dummy devs. >>> >>> Summarizing I would prefer version with dummy devices, as it seems more >>> compatible with DT design. >> >> Thanks for the feedback. I'll spin a newer version of the dummy dsi dev >> patches after waiting for some more comments. > > Let's wait for someone from the device tree maintainers to comment > instead of going around in circles. > > Thierry > -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project