All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Mun, Gwan-gyeong" <gwan-gyeong.mun@intel.com>
To: "Shankar, Uma" <uma.shankar@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "linux-fbdev@vger.kernel.org" <linux-fbdev@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH v3 06/17] drm/i915/dp: Read out DP SDPs (Secondary Data Packet)
Date: Sun, 09 Feb 2020 03:38:45 +0000	[thread overview]
Message-ID: <661f4ffafe7bd829ecd80e83e3e908b4b1a2d3c2.camel@intel.com> (raw)
In-Reply-To: <E7C9878FBA1C6D42A1CA3F62AEB6945F823DD00C@BGSMSX104.gar.corp.intel.com>

T24gV2VkLCAyMDIwLTAyLTA1IGF0IDIxOjU5ICswNTMwLCBTaGFua2FyLCBVbWEgd3JvdGU6DQo+
ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBkcmktZGV2ZWwgPGRyaS1k
ZXZlbC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmDQo+ID4gT2YgR3dh
bi0NCj4gPiBneWVvbmcgTXVuDQo+ID4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgNCwgMjAyMCA0
OjUwIEFNDQo+ID4gVG86IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gPiBDYzog
bGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au
b3JnDQo+ID4gU3ViamVjdDogW1BBVENIIHYzIDA2LzE3XSBkcm0vaTkxNS9kcDogUmVhZCBvdXQg
RFAgU0RQcyAoU2Vjb25kYXJ5DQo+ID4gRGF0YSBQYWNrZXQpDQo+IA0KPiBEcm9wIHRoZSBjb250
ZW50IGluIGJyYWNrZXQuDQo+IA0KPiA+IEl0IGFkZHMgY29kZSB0byByZWFkIHRoZSBEUCBTRFBz
IGZyb20gdGhlIHZpZGVvIERJUCBhbmQgdW5wYWNrIHRoZW0NCj4gPiBpbnRvIHRoZSBjcnRjDQo+
ID4gc3RhdGUuDQo+ID4gDQo+ID4gSXQgYWRkcyByb3V0aW5lcyB0aGF0IHJlYWQgb3V0IERQIFZT
QyBTRFAgYW5kIERQIEhEUiBNZXRhZGF0YQ0KPiA+IEluZm9mcmFtZSBTRFAgSW4NCj4gPiBvcmRl
ciB0byB1bnBhY2sgRFAgVlNDIFNEUCwgaXQgYWRkcyBpbnRlbF9kcF92c2Nfc2RwX3VucGFjaygp
DQo+ID4gZnVuY3Rpb24uDQo+ID4gSXQgZm9sbG93cyBEUCAxLjRhIHNwZWMuIFtUYWJsZSAyLTEx
NjogVlNDIFNEUCBIZWFkZXIgQnl0ZXNdIGFuZA0KPiA+IFtUYWJsZSAyLTExNzogVlNDDQo+ID4g
U0RQIFBheWxvYWQgZm9yIERCMTYgdGhyb3VnaCBEQjE4XQ0KPiA+IA0KPiA+IEluIG9yZGVyIHRv
IHVucGFjayBEUCBIRFIgTWV0YWRhdGEgSW5mb2ZyYW1lIFNEUCwgaXQgYWRkcw0KPiA+IGludGVs
X2RwX2hkcl9tZXRhZGF0YV9pbmZvZnJhbWVfc2RwX3VucGFjaygpLiBBbmQgaXQgZm9sbG93cyBE
UA0KPiA+IDEuNGEgc3BlYy4NCj4gPiAoW1RhYmxlIDItMTI1OiBJTkZPRlJBTUUgU0RQIHYxLjIg
SGVhZGVyIEJ5dGVzXSBhbmQgW1RhYmxlIDItMTI2Og0KPiA+IElORk9GUkFNRQ0KPiA+IFNEUCB2
MS4yIFBheWxvYWQgRGF0YSBCeXRlcyAtIERCMCB0aHJvdWdoIERCMzFdKSBhbmQgQ1RBLTg2MS1H
DQo+ID4gc3BlYy4gW1RhYmxlLTQyDQo+ID4gRHluYW1pYyBSYW5nZSBhbmQgTWFzdGVyaW5nIElu
Zm9GcmFtZV0uDQo+ID4gDQo+ID4gQSBuYW1laW5nIHJ1bGUgYW5kIHN0eWxlIG9mIGludGVsX3Jl
YWRfZHBfc2RwKCkgZnVuY3Rpb24gcmVmZXJlbmNlcw0KPiANCj4gVHlwbyBpbiBuYW1pbmcuDQo+
IA0KPiA+IGludGVsX3JlYWRfaW5mb2ZyYW1lKCkgZnVuY3Rpb24gb2YgaW50ZWxfaGRtaS5jDQo+
ID4gDQo+ID4gdjI6IE1pbm9yIHN0eWxlIGZpeA0KPiA+IHYzOiBSZXBsYWNlIGEgc3RydWN0dXJl
IG5hbWUgdG8gZHJtX2RwX3ZzY19zZHAgZnJvbQ0KPiA+IGludGVsX2RwX3ZzY19zZHANCj4gPiAN
Cj4gPiBTaWduZWQtb2ZmLWJ5OiBHd2FuLWd5ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11bkBpbnRl
bC5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf
ZHAuYyB8IDE3MA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL2dw
dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmggfCAgIDMgKw0KPiA+ICAyIGZpbGVzIGNoYW5n
ZWQsIDE3MyBpbnNlcnRpb25zKCspDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1
L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv
ZGlzcGxheS9pbnRlbF9kcC5jDQo+ID4gaW5kZXggZGQ3ZTU1ODgwMDFlLi5kNGVjZTBhODI0YzAg
MTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5j
DQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jDQo+ID4g
QEAgLTQ5MjUsNiArNDkyNSwxNzYgQEAgdm9pZCBpbnRlbF9kcF9zZXRfaW5mb2ZyYW1lcyhzdHJ1
Y3QNCj4gPiBpbnRlbF9lbmNvZGVyDQo+ID4gKmVuY29kZXIsDQo+ID4gIAlpbnRlbF93cml0ZV9k
cF9zZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwNCj4gPiBIRE1JX1BBQ0tFVF9UWVBFX0dBTVVUX01F
VEFEQVRBKTsgIH0NCj4gPiANCj4gPiArc3RhdGljIGludCBpbnRlbF9kcF92c2Nfc2RwX3VucGFj
ayhzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgKnZzYywNCj4gPiArCQkJCSAgIGNvbnN0IHZvaWQgKmJ1
ZmZlciwgc2l6ZV90IHNpemUpIHsNCj4gPiArCWNvbnN0IHN0cnVjdCBkcF9zZHAgKnNkcCA9IGJ1
ZmZlcjsNCj4gPiArDQo+ID4gKwlpZiAoc2l6ZSA8IHNpemVvZihzdHJ1Y3QgZHBfc2RwKSkNCj4g
PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwltZW1zZXQodnNjLCAwLCBzaXplKTsN
Cj4gPiArDQo+ID4gKwlpZiAoc2RwLT5zZHBfaGVhZGVyLkhCMCAhPSAwKQ0KPiA+ICsJCXJldHVy
biAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmIChzZHAtPnNkcF9oZWFkZXIuSEIxICE9IERQX1NE
UF9WU0MpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl2c2MtPnNkcF90eXBlID0gc2Rw
LT5zZHBfaGVhZGVyLkhCMTsNCj4gPiArDQo+ID4gKwlpZiAoc2RwLT5zZHBfaGVhZGVyLkhCMiA9
PSAweDIgJiYgc2RwLT5zZHBfaGVhZGVyLkhCMyA9PSAweDgpIHsNCj4gPiArCQl2c2MtPnJldmlz
aW9uID0gc2RwLT5zZHBfaGVhZGVyLkhCMjsNCj4gPiArCQl2c2MtPmxlbmd0aCA9IHNkcC0+c2Rw
X2hlYWRlci5IQjM7DQo+ID4gKwl9IGVsc2UgaWYgKHNkcC0+c2RwX2hlYWRlci5IQjIgPT0gMHg0
ICYmIHNkcC0+c2RwX2hlYWRlci5IQjMgPT0NCj4gPiAweGUpIHsNCj4gPiArCQl2c2MtPnJldmlz
aW9uID0gc2RwLT5zZHBfaGVhZGVyLkhCMjsNCj4gPiArCQl2c2MtPmxlbmd0aCA9IHNkcC0+c2Rw
X2hlYWRlci5IQjM7DQo+ID4gKwl9IGVsc2UgaWYgKHNkcC0+c2RwX2hlYWRlci5IQjIgPT0gMHg1
ICYmIHNkcC0+c2RwX2hlYWRlci5IQjMgPT0NCj4gPiAweDEzKSB7DQo+ID4gKwkJdnNjLT5yZXZp
c2lvbiA9IHNkcC0+c2RwX2hlYWRlci5IQjI7DQo+ID4gKwkJdnNjLT5sZW5ndGggPSBzZHAtPnNk
cF9oZWFkZXIuSEIzOw0KPiANCj4gVGhlIGFib3ZlIDIgbGluZXMgY2FuIGJlIGRvbmUgdW5jb25k
aXRpb25hbGx5LCBtYXkgYmUgY29tYmluZSB0aGUgaWYNCj4gY2hlY2tzLg0KPiANCj4gPiArCQl2
c2MtPmNvbG9yc3BhY2UgPSAoc2RwLT5kYlsxNl0gPj4gNCkgJiAweGY7DQo+ID4gKwkJdnNjLT5j
b2xvcmltZXRyeSA9IHNkcC0+ZGJbMTZdICYgMHhmOw0KPiA+ICsJCXZzYy0+ZHluYW1pY19yYW5n
ZSA9IChzZHAtPmRiWzE3XSA+PiA3KSAmIDB4MTsNCj4gPiArDQo+ID4gKwkJc3dpdGNoIChzZHAt
PmRiWzE3XSAmIDB4Nykgew0KPiA+ICsJCWNhc2UgMHgxOg0KPiA+ICsJCQl2c2MtPmJwYyA9IDg7
DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWNhc2UgMHgyOg0KPiA+ICsJCQl2c2MtPmJwYyA9IDEw
Ow0KPiA+ICsJCQlicmVhazsNCj4gPiArCQljYXNlIDB4MzoNCj4gPiArCQkJdnNjLT5icGMgPSAx
MjsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJY2FzZSAweDQ6DQo+ID4gKwkJCXZzYy0+YnBjID0g
MTY7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWRlZmF1bHQ6DQo+ID4gKwkJCU1JU1NJTkdfQ0FT
RShzZHAtPmRiWzE3XSAmIDB4Nyk7DQo+IA0KPiBIYW5kbGUgNmJwYyBjYXNlIGFzIHdlbGwuDQo+
IA0KWWVzLCAgSSdsbCB1cGRhdGUgZXZlcnl0aGluZyB0aGF0IHlvdSBjb21tZW50ZWQuDQo+ID4g
KwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJdnNjLT5jb250ZW50
X3R5cGUgPSBzZHAtPmRiWzE4XSAmIDB4NzsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcmV0dXJu
IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr
DQo+ID4gK3N0YXRpYyBpbnQNCj4gPiAraW50ZWxfZHBfaGRyX21ldGFkYXRhX2luZm9mcmFtZV9z
ZHBfdW5wYWNrKHN0cnVjdA0KPiA+IGhkbWlfZHJtX2luZm9mcmFtZQ0KPiA+ICpkcm1faW5mb2Zy
YW1lLA0KPiA+ICsJCQkJCSAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90DQo+ID4gc2l6ZSkg
ew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwljb25zdCBzdHJ1Y3QgZHBfc2RwICpzZHAg
PSBidWZmZXI7DQo+ID4gKw0KPiA+ICsJaWYgKHNpemUgPCBzaXplb2Yoc3RydWN0IGRwX3NkcCkp
DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJaWYgKHNkcC0+c2RwX2hlYWRl
ci5IQjAgIT0gMCkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlpZiAoc2Rw
LT5zZHBfaGVhZGVyLkhCMSAhPSBIRE1JX0lORk9GUkFNRV9UWVBFX0RSTSkNCj4gPiArCQlyZXR1
cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogTGVhc3QgU2lnbmlmaWNhbnQg
RWlnaHQgQml0cyBvZiAoRGF0YSBCeXRlIENvdW50IOKAkyAxKQ0KPiA+ICsJICogMURoIChpLmUu
LCBEYXRhIEJ5dGUgQ291bnQgPSAzMCBieXRlcykuDQo+ID4gKwkgKi8NCj4gPiArCWlmIChzZHAt
PnNkcF9oZWFkZXIuSEIyICE9IDB4MUQpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0K
PiA+ICsJLyogTW9zdCBTaWduaWZpY2FudCBUd28gQml0cyBvZiAoRGF0YSBCeXRlIENvdW50IOKA
kyAxKSwgQ2xlYXIgdG8NCj4gPiAwMGIuICovDQo+ID4gKwlpZiAoKHNkcC0+c2RwX2hlYWRlci5I
QjMgJiAweDMpICE9IDApDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJLyog
SU5GT0ZSQU1FIFNEUCBWZXJzaW9uIE51bWJlciAqLw0KPiA+ICsJaWYgKCgoc2RwLT5zZHBfaGVh
ZGVyLkhCMyA+PiAyKSAmIDB4M2YpICE9IDB4MTMpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+
ID4gKw0KPiA+ICsJLyogQ1RBIEhlYWRlciBCeXRlIDIgKElORk9GUkFNRSBWZXJzaW9uIE51bWJl
cikgKi8NCj4gPiArCWlmIChzZHAtPmRiWzBdICE9IDEpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7
DQo+ID4gKw0KPiA+ICsJLyogQ1RBIEhlYWRlciBCeXRlIDMgKExlbmd0aCBvZiBJTkZPRlJBTUUp
Og0KPiA+IEhETUlfRFJNX0lORk9GUkFNRV9TSVpFICovDQo+ID4gKwlpZiAoc2RwLT5kYlsxXSAh
PSBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr
DQo+ID4gKwlyZXQgPSBoZG1pX2RybV9pbmZvZnJhbWVfdW5wYWNrX29ubHkoZHJtX2luZm9mcmFt
ZSwgJnNkcC0NCj4gPiA+ZGJbMl0sDQo+ID4gKwkJCQkJICAgICBIRE1JX0RSTV9JTkZPRlJBTUVf
U0laRSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh
dGljIHZvaWQgaW50ZWxfcmVhZF9kcF92c2Nfc2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv
ZGVyLA0KPiA+ICsJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4g
PiArCQkJCSAgc3RydWN0IGRybV9kcF92c2Nfc2RwICp2c2MpDQo+ID4gK3sNCj4gPiArCXN0cnVj
dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0NCj4gPiBlbmNfdG9fZGlnX3Bv
cnQoZW5jb2Rlcik7DQo+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2lu
dGVsX2RwKGVuY29kZXIpOw0KPiA+ICsJdW5zaWduZWQgaW50IHR5cGUgPSBEUF9TRFBfVlNDOw0K
PiA+ICsJc3RydWN0IGRwX3NkcCBzZHAgPSB7fTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+
ICsJLyogV2hlbiBQU1IgaXMgZW5hYmxlZCwgVlNDIFNEUCBpcyBoYW5kbGVkIGJ5IFBTUiByb3V0
aW5lICovDQo+ID4gKwlpZiAoaW50ZWxfcHNyX2VuYWJsZWQoaW50ZWxfZHApKQ0KPiA+ICsJCXJl
dHVybjsNCj4gPiArDQo+ID4gKwlpZiAoKGNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYN
Cj4gPiArCSAgICAgaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQ0KPiA+
ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwlpbnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUo
ZW5jb2RlciwgY3J0Y19zdGF0ZSwgdHlwZSwgJnNkcCwNCj4gPiArc2l6ZW9mKHNkcCkpOw0KPiA+
ICsNCj4gPiArCXJldCA9IGludGVsX2RwX3ZzY19zZHBfdW5wYWNrKHZzYywgJnNkcCwgc2l6ZW9m
KHNkcCkpOw0KPiA+ICsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJRFJNX0RFQlVHX0tNUygiRmFp
bGVkIHRvIHVucGFjayBEUCBWU0MgU0RQXG4iKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQg
aW50ZWxfcmVhZF9kcF9oZHJfbWV0YWRhdGFfaW5mb2ZyYW1lX3NkcChzdHJ1Y3QNCj4gPiBpbnRl
bF9lbmNvZGVyDQo+ID4gKmVuY29kZXIsDQo+ID4gKwkJCQkJCSAgICAgc3RydWN0DQo+ID4gaW50
ZWxfY3J0Y19zdGF0ZQ0KPiA+ICpjcnRjX3N0YXRlLA0KPiA+ICsJCQkJCQkgICAgIHN0cnVjdA0K
PiA+IGhkbWlfZHJtX2luZm9mcmFtZQ0KPiA+ICpkcm1faW5mb2ZyYW1lKSB7DQo+ID4gKwlzdHJ1
Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9DQo+ID4gZW5jX3RvX2RpZ19w
b3J0KGVuY29kZXIpOw0KPiA+ICsJdW5zaWduZWQgaW50IHR5cGUgPSBIRE1JX1BBQ0tFVF9UWVBF
X0dBTVVUX01FVEFEQVRBOw0KPiA+ICsJc3RydWN0IGRwX3NkcCBzZHAgPSB7fTsNCj4gPiArCWlu
dCByZXQ7DQo+ID4gKw0KPiA+ICsJaWYgKChjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSAm
DQo+ID4gKwkgICAgaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQ0KPiA+
ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwlpbnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUo
ZW5jb2RlciwgY3J0Y19zdGF0ZSwgdHlwZSwgJnNkcCwNCj4gPiArCQkJCSAgICAgICBzaXplb2Yo
c2RwKSk7DQo+ID4gKw0KPiA+ICsJcmV0ID0gaW50ZWxfZHBfaGRyX21ldGFkYXRhX2luZm9mcmFt
ZV9zZHBfdW5wYWNrKGRybV9pbmZvZnJhbWUsDQo+ID4gJnNkcCwNCj4gPiArCQkJCQkJCSBzaXpl
b2Yoc2RwKSk7DQo+ID4gKw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlEUk1fREVCVUdfS01TKCJG
YWlsZWQgdG8gdW5wYWNrIERQIEhEUiBNZXRhZGF0YQ0KPiA+IEluZm9mcmFtZQ0KPiA+IFNEUFxu
Iik7IH0NCj4gPiArDQo+ID4gK3ZvaWQgaW50ZWxfcmVhZF9kcF9zZHAoc3RydWN0IGludGVsX2Vu
Y29kZXIgKmVuY29kZXIsDQo+ID4gKwkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj
cnRjX3N0YXRlLA0KPiA+ICsJCSAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSkNCj4gPiArew0KPiA+
ICsJc3dpdGNoICh0eXBlKSB7DQo+ID4gKwljYXNlIERQX1NEUF9WU0M6DQo+ID4gKwkJaW50ZWxf
cmVhZF9kcF92c2Nfc2RwKGVuY29kZXIsIGNydGNfc3RhdGUsDQo+ID4gKwkJCQkgICAgICAmY3J0
Y19zdGF0ZS0+aW5mb2ZyYW1lcy52c2MpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBIRE1J
X1BBQ0tFVF9UWVBFX0dBTVVUX01FVEFEQVRBOg0KPiA+ICsJCWludGVsX3JlYWRfZHBfaGRyX21l
dGFkYXRhX2luZm9mcmFtZV9zZHAoZW5jb2RlciwNCj4gPiBjcnRjX3N0YXRlLA0KPiA+ICsJCQkJ
CQkJICZjcnRjX3N0YXRlLQ0KPiA+ID4gaW5mb2ZyYW1lcy5kcm0uZHJtKTsNCj4gPiArCQlicmVh
azsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJTUlTU0lOR19DQVNFKHR5cGUpOw0KPiA+ICsJCWJy
ZWFrOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgdm9pZA0KPiA+ICBpbnRl
bF9kcF9zZXR1cF92c2Nfc2RwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gIAkJICAg
ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBkaWZmDQo+ID4g
LS1naXQNCj4gPiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaA0KPiA+
IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5oDQo+ID4gaW5kZXggMGRj
MDlhNDYzZWUxLi5lOGY5YmE5NjJkMDkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt
L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv
ZGlzcGxheS9pbnRlbF9kcC5oDQo+ID4gQEAgLTExOSw2ICsxMTksOSBAQCB2b2lkIGludGVsX2Rw
X2hkcl9tZXRhZGF0YV9lbmFibGUoc3RydWN0DQo+ID4gaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAs
ICB2b2lkIGludGVsX2RwX3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ID4g
KmVuY29kZXIsIGJvb2wNCj4gPiBlbmFibGUsDQo+ID4gIAkJCSAgICAgY29uc3Qgc3RydWN0IGlu
dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gIAkJCSAgICAgY29uc3Qgc3RydWN0IGRy
bV9jb25uZWN0b3Jfc3RhdGUNCj4gPiAqY29ubl9zdGF0ZSk7DQo+ID4gK3ZvaWQgaW50ZWxfcmVh
ZF9kcF9zZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ID4gKwkJICAgICAgIHN0
cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiA+ICsJCSAgICAgICB1bnNpZ25l
ZCBpbnQgdHlwZSk7DQo+ID4gIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1
Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7DQo+ID4gDQo+ID4gIHN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgaW50IGludGVsX2RwX3VudXNlZF9sYW5lX21hc2soaW50DQo+ID4gbGFuZV9jb3VudCkN
Cj4gPiAtLQ0KPiA+IDIuMjQuMQ0KPiA+IA0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fDQo+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+IGRy
aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNr
dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA0K

WARNING: multiple messages have this Message-ID (diff)
From: "Mun, Gwan-gyeong" <gwan-gyeong.mun@intel.com>
To: "Shankar, Uma" <uma.shankar@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "linux-fbdev@vger.kernel.org" <linux-fbdev@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH v3 06/17] drm/i915/dp: Read out DP SDPs (Secondary Data Packet)
Date: Sun, 9 Feb 2020 03:38:45 +0000	[thread overview]
Message-ID: <661f4ffafe7bd829ecd80e83e3e908b4b1a2d3c2.camel@intel.com> (raw)
In-Reply-To: <E7C9878FBA1C6D42A1CA3F62AEB6945F823DD00C@BGSMSX104.gar.corp.intel.com>

On Wed, 2020-02-05 at 21:59 +0530, Shankar, Uma wrote:
> > -----Original Message-----
> > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf
> > Of Gwan-
> > gyeong Mun
> > Sent: Tuesday, February 4, 2020 4:50 AM
> > To: intel-gfx@lists.freedesktop.org
> > Cc: linux-fbdev@vger.kernel.org; dri-devel@lists.freedesktop.org
> > Subject: [PATCH v3 06/17] drm/i915/dp: Read out DP SDPs (Secondary
> > Data Packet)
> 
> Drop the content in bracket.
> 
> > It adds code to read the DP SDPs from the video DIP and unpack them
> > into the crtc
> > state.
> > 
> > It adds routines that read out DP VSC SDP and DP HDR Metadata
> > Infoframe SDP In
> > order to unpack DP VSC SDP, it adds intel_dp_vsc_sdp_unpack()
> > function.
> > It follows DP 1.4a spec. [Table 2-116: VSC SDP Header Bytes] and
> > [Table 2-117: VSC
> > SDP Payload for DB16 through DB18]
> > 
> > In order to unpack DP HDR Metadata Infoframe SDP, it adds
> > intel_dp_hdr_metadata_infoframe_sdp_unpack(). And it follows DP
> > 1.4a spec.
> > ([Table 2-125: INFOFRAME SDP v1.2 Header Bytes] and [Table 2-126:
> > INFOFRAME
> > SDP v1.2 Payload Data Bytes - DB0 through DB31]) and CTA-861-G
> > spec. [Table-42
> > Dynamic Range and Mastering InfoFrame].
> > 
> > A nameing rule and style of intel_read_dp_sdp() function references
> 
> Typo in naming.
> 
> > intel_read_infoframe() function of intel_hdmi.c
> > 
> > v2: Minor style fix
> > v3: Replace a structure name to drm_dp_vsc_sdp from
> > intel_dp_vsc_sdp
> > 
> > Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_dp.c | 170
> > ++++++++++++++++++++++++
> >  drivers/gpu/drm/i915/display/intel_dp.h |   3 +
> >  2 files changed, 173 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > b/drivers/gpu/drm/i915/display/intel_dp.c
> > index dd7e5588001e..d4ece0a824c0 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > @@ -4925,6 +4925,176 @@ void intel_dp_set_infoframes(struct
> > intel_encoder
> > *encoder,
> >  	intel_write_dp_sdp(encoder, crtc_state,
> > HDMI_PACKET_TYPE_GAMUT_METADATA);  }
> > 
> > +static int intel_dp_vsc_sdp_unpack(struct drm_dp_vsc_sdp *vsc,
> > +				   const void *buffer, size_t size) {
> > +	const struct dp_sdp *sdp = buffer;
> > +
> > +	if (size < sizeof(struct dp_sdp))
> > +		return -EINVAL;
> > +
> > +	memset(vsc, 0, size);
> > +
> > +	if (sdp->sdp_header.HB0 != 0)
> > +		return -EINVAL;
> > +
> > +	if (sdp->sdp_header.HB1 != DP_SDP_VSC)
> > +		return -EINVAL;
> > +	vsc->sdp_type = sdp->sdp_header.HB1;
> > +
> > +	if (sdp->sdp_header.HB2 == 0x2 && sdp->sdp_header.HB3 == 0x8) {
> > +		vsc->revision = sdp->sdp_header.HB2;
> > +		vsc->length = sdp->sdp_header.HB3;
> > +	} else if (sdp->sdp_header.HB2 == 0x4 && sdp->sdp_header.HB3 ==
> > 0xe) {
> > +		vsc->revision = sdp->sdp_header.HB2;
> > +		vsc->length = sdp->sdp_header.HB3;
> > +	} else if (sdp->sdp_header.HB2 == 0x5 && sdp->sdp_header.HB3 ==
> > 0x13) {
> > +		vsc->revision = sdp->sdp_header.HB2;
> > +		vsc->length = sdp->sdp_header.HB3;
> 
> The above 2 lines can be done unconditionally, may be combine the if
> checks.
> 
> > +		vsc->colorspace = (sdp->db[16] >> 4) & 0xf;
> > +		vsc->colorimetry = sdp->db[16] & 0xf;
> > +		vsc->dynamic_range = (sdp->db[17] >> 7) & 0x1;
> > +
> > +		switch (sdp->db[17] & 0x7) {
> > +		case 0x1:
> > +			vsc->bpc = 8;
> > +			break;
> > +		case 0x2:
> > +			vsc->bpc = 10;
> > +			break;
> > +		case 0x3:
> > +			vsc->bpc = 12;
> > +			break;
> > +		case 0x4:
> > +			vsc->bpc = 16;
> > +			break;
> > +		default:
> > +			MISSING_CASE(sdp->db[17] & 0x7);
> 
> Handle 6bpc case as well.
> 
Yes,  I'll update everything that you commented.
> > +			return -EINVAL;
> > +		}
> > +
> > +		vsc->content_type = sdp->db[18] & 0x7;
> > +	} else {
> > +		return -EINVAL;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +static int
> > +intel_dp_hdr_metadata_infoframe_sdp_unpack(struct
> > hdmi_drm_infoframe
> > *drm_infoframe,
> > +					   const void *buffer, size_t
> > size) {
> > +	int ret;
> > +
> > +	const struct dp_sdp *sdp = buffer;
> > +
> > +	if (size < sizeof(struct dp_sdp))
> > +		return -EINVAL;
> > +
> > +	if (sdp->sdp_header.HB0 != 0)
> > +		return -EINVAL;
> > +
> > +	if (sdp->sdp_header.HB1 != HDMI_INFOFRAME_TYPE_DRM)
> > +		return -EINVAL;
> > +
> > +	/*
> > +	 * Least Significant Eight Bits of (Data Byte Count – 1)
> > +	 * 1Dh (i.e., Data Byte Count = 30 bytes).
> > +	 */
> > +	if (sdp->sdp_header.HB2 != 0x1D)
> > +		return -EINVAL;
> > +
> > +	/* Most Significant Two Bits of (Data Byte Count – 1), Clear to
> > 00b. */
> > +	if ((sdp->sdp_header.HB3 & 0x3) != 0)
> > +		return -EINVAL;
> > +
> > +	/* INFOFRAME SDP Version Number */
> > +	if (((sdp->sdp_header.HB3 >> 2) & 0x3f) != 0x13)
> > +		return -EINVAL;
> > +
> > +	/* CTA Header Byte 2 (INFOFRAME Version Number) */
> > +	if (sdp->db[0] != 1)
> > +		return -EINVAL;
> > +
> > +	/* CTA Header Byte 3 (Length of INFOFRAME):
> > HDMI_DRM_INFOFRAME_SIZE */
> > +	if (sdp->db[1] != HDMI_DRM_INFOFRAME_SIZE)
> > +		return -EINVAL;
> > +
> > +	ret = hdmi_drm_infoframe_unpack_only(drm_infoframe, &sdp-
> > >db[2],
> > +					     HDMI_DRM_INFOFRAME_SIZE);
> > +
> > +	return ret;
> > +}
> > +
> > +static void intel_read_dp_vsc_sdp(struct intel_encoder *encoder,
> > +				  struct intel_crtc_state *crtc_state,
> > +				  struct drm_dp_vsc_sdp *vsc)
> > +{
> > +	struct intel_digital_port *intel_dig_port =
> > enc_to_dig_port(encoder);
> > +	struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> > +	unsigned int type = DP_SDP_VSC;
> > +	struct dp_sdp sdp = {};
> > +	int ret;
> > +
> > +	/* When PSR is enabled, VSC SDP is handled by PSR routine */
> > +	if (intel_psr_enabled(intel_dp))
> > +		return;
> > +
> > +	if ((crtc_state->infoframes.enable &
> > +	     intel_hdmi_infoframe_enable(type)) == 0)
> > +		return;
> > +
> > +	intel_dig_port->read_infoframe(encoder, crtc_state, type, &sdp,
> > +sizeof(sdp));
> > +
> > +	ret = intel_dp_vsc_sdp_unpack(vsc, &sdp, sizeof(sdp));
> > +
> > +	if (ret)
> > +		DRM_DEBUG_KMS("Failed to unpack DP VSC SDP\n"); }
> > +
> > +static void intel_read_dp_hdr_metadata_infoframe_sdp(struct
> > intel_encoder
> > *encoder,
> > +						     struct
> > intel_crtc_state
> > *crtc_state,
> > +						     struct
> > hdmi_drm_infoframe
> > *drm_infoframe) {
> > +	struct intel_digital_port *intel_dig_port =
> > enc_to_dig_port(encoder);
> > +	unsigned int type = HDMI_PACKET_TYPE_GAMUT_METADATA;
> > +	struct dp_sdp sdp = {};
> > +	int ret;
> > +
> > +	if ((crtc_state->infoframes.enable &
> > +	    intel_hdmi_infoframe_enable(type)) == 0)
> > +		return;
> > +
> > +	intel_dig_port->read_infoframe(encoder, crtc_state, type, &sdp,
> > +				       sizeof(sdp));
> > +
> > +	ret = intel_dp_hdr_metadata_infoframe_sdp_unpack(drm_infoframe,
> > &sdp,
> > +							 sizeof(sdp));
> > +
> > +	if (ret)
> > +		DRM_DEBUG_KMS("Failed to unpack DP HDR Metadata
> > Infoframe
> > SDP\n"); }
> > +
> > +void intel_read_dp_sdp(struct intel_encoder *encoder,
> > +		       struct intel_crtc_state *crtc_state,
> > +		       unsigned int type)
> > +{
> > +	switch (type) {
> > +	case DP_SDP_VSC:
> > +		intel_read_dp_vsc_sdp(encoder, crtc_state,
> > +				      &crtc_state->infoframes.vsc);
> > +		break;
> > +	case HDMI_PACKET_TYPE_GAMUT_METADATA:
> > +		intel_read_dp_hdr_metadata_infoframe_sdp(encoder,
> > crtc_state,
> > +							 &crtc_state-
> > > infoframes.drm.drm);
> > +		break;
> > +	default:
> > +		MISSING_CASE(type);
> > +		break;
> > +	}
> > +}
> > +
> >  static void
> >  intel_dp_setup_vsc_sdp(struct intel_dp *intel_dp,
> >  		       const struct intel_crtc_state *crtc_state, diff
> > --git
> > a/drivers/gpu/drm/i915/display/intel_dp.h
> > b/drivers/gpu/drm/i915/display/intel_dp.h
> > index 0dc09a463ee1..e8f9ba962d09 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.h
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> > @@ -119,6 +119,9 @@ void intel_dp_hdr_metadata_enable(struct
> > intel_dp
> > *intel_dp,  void intel_dp_set_infoframes(struct intel_encoder
> > *encoder, bool
> > enable,
> >  			     const struct intel_crtc_state *crtc_state,
> >  			     const struct drm_connector_state
> > *conn_state);
> > +void intel_read_dp_sdp(struct intel_encoder *encoder,
> > +		       struct intel_crtc_state *crtc_state,
> > +		       unsigned int type);
> >  bool intel_digital_port_connected(struct intel_encoder *encoder);
> > 
> >  static inline unsigned int intel_dp_unused_lane_mask(int
> > lane_count)
> > --
> > 2.24.1
> > 
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: "Mun, Gwan-gyeong" <gwan-gyeong.mun@intel.com>
To: "Shankar, Uma" <uma.shankar@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "linux-fbdev@vger.kernel.org" <linux-fbdev@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH v3 06/17] drm/i915/dp: Read out DP SDPs (Secondary Data Packet)
Date: Sun, 9 Feb 2020 03:38:45 +0000	[thread overview]
Message-ID: <661f4ffafe7bd829ecd80e83e3e908b4b1a2d3c2.camel@intel.com> (raw)
In-Reply-To: <E7C9878FBA1C6D42A1CA3F62AEB6945F823DD00C@BGSMSX104.gar.corp.intel.com>

On Wed, 2020-02-05 at 21:59 +0530, Shankar, Uma wrote:
> > -----Original Message-----
> > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf
> > Of Gwan-
> > gyeong Mun
> > Sent: Tuesday, February 4, 2020 4:50 AM
> > To: intel-gfx@lists.freedesktop.org
> > Cc: linux-fbdev@vger.kernel.org; dri-devel@lists.freedesktop.org
> > Subject: [PATCH v3 06/17] drm/i915/dp: Read out DP SDPs (Secondary
> > Data Packet)
> 
> Drop the content in bracket.
> 
> > It adds code to read the DP SDPs from the video DIP and unpack them
> > into the crtc
> > state.
> > 
> > It adds routines that read out DP VSC SDP and DP HDR Metadata
> > Infoframe SDP In
> > order to unpack DP VSC SDP, it adds intel_dp_vsc_sdp_unpack()
> > function.
> > It follows DP 1.4a spec. [Table 2-116: VSC SDP Header Bytes] and
> > [Table 2-117: VSC
> > SDP Payload for DB16 through DB18]
> > 
> > In order to unpack DP HDR Metadata Infoframe SDP, it adds
> > intel_dp_hdr_metadata_infoframe_sdp_unpack(). And it follows DP
> > 1.4a spec.
> > ([Table 2-125: INFOFRAME SDP v1.2 Header Bytes] and [Table 2-126:
> > INFOFRAME
> > SDP v1.2 Payload Data Bytes - DB0 through DB31]) and CTA-861-G
> > spec. [Table-42
> > Dynamic Range and Mastering InfoFrame].
> > 
> > A nameing rule and style of intel_read_dp_sdp() function references
> 
> Typo in naming.
> 
> > intel_read_infoframe() function of intel_hdmi.c
> > 
> > v2: Minor style fix
> > v3: Replace a structure name to drm_dp_vsc_sdp from
> > intel_dp_vsc_sdp
> > 
> > Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_dp.c | 170
> > ++++++++++++++++++++++++
> >  drivers/gpu/drm/i915/display/intel_dp.h |   3 +
> >  2 files changed, 173 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > b/drivers/gpu/drm/i915/display/intel_dp.c
> > index dd7e5588001e..d4ece0a824c0 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > @@ -4925,6 +4925,176 @@ void intel_dp_set_infoframes(struct
> > intel_encoder
> > *encoder,
> >  	intel_write_dp_sdp(encoder, crtc_state,
> > HDMI_PACKET_TYPE_GAMUT_METADATA);  }
> > 
> > +static int intel_dp_vsc_sdp_unpack(struct drm_dp_vsc_sdp *vsc,
> > +				   const void *buffer, size_t size) {
> > +	const struct dp_sdp *sdp = buffer;
> > +
> > +	if (size < sizeof(struct dp_sdp))
> > +		return -EINVAL;
> > +
> > +	memset(vsc, 0, size);
> > +
> > +	if (sdp->sdp_header.HB0 != 0)
> > +		return -EINVAL;
> > +
> > +	if (sdp->sdp_header.HB1 != DP_SDP_VSC)
> > +		return -EINVAL;
> > +	vsc->sdp_type = sdp->sdp_header.HB1;
> > +
> > +	if (sdp->sdp_header.HB2 == 0x2 && sdp->sdp_header.HB3 == 0x8) {
> > +		vsc->revision = sdp->sdp_header.HB2;
> > +		vsc->length = sdp->sdp_header.HB3;
> > +	} else if (sdp->sdp_header.HB2 == 0x4 && sdp->sdp_header.HB3 ==
> > 0xe) {
> > +		vsc->revision = sdp->sdp_header.HB2;
> > +		vsc->length = sdp->sdp_header.HB3;
> > +	} else if (sdp->sdp_header.HB2 == 0x5 && sdp->sdp_header.HB3 ==
> > 0x13) {
> > +		vsc->revision = sdp->sdp_header.HB2;
> > +		vsc->length = sdp->sdp_header.HB3;
> 
> The above 2 lines can be done unconditionally, may be combine the if
> checks.
> 
> > +		vsc->colorspace = (sdp->db[16] >> 4) & 0xf;
> > +		vsc->colorimetry = sdp->db[16] & 0xf;
> > +		vsc->dynamic_range = (sdp->db[17] >> 7) & 0x1;
> > +
> > +		switch (sdp->db[17] & 0x7) {
> > +		case 0x1:
> > +			vsc->bpc = 8;
> > +			break;
> > +		case 0x2:
> > +			vsc->bpc = 10;
> > +			break;
> > +		case 0x3:
> > +			vsc->bpc = 12;
> > +			break;
> > +		case 0x4:
> > +			vsc->bpc = 16;
> > +			break;
> > +		default:
> > +			MISSING_CASE(sdp->db[17] & 0x7);
> 
> Handle 6bpc case as well.
> 
Yes,  I'll update everything that you commented.
> > +			return -EINVAL;
> > +		}
> > +
> > +		vsc->content_type = sdp->db[18] & 0x7;
> > +	} else {
> > +		return -EINVAL;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +static int
> > +intel_dp_hdr_metadata_infoframe_sdp_unpack(struct
> > hdmi_drm_infoframe
> > *drm_infoframe,
> > +					   const void *buffer, size_t
> > size) {
> > +	int ret;
> > +
> > +	const struct dp_sdp *sdp = buffer;
> > +
> > +	if (size < sizeof(struct dp_sdp))
> > +		return -EINVAL;
> > +
> > +	if (sdp->sdp_header.HB0 != 0)
> > +		return -EINVAL;
> > +
> > +	if (sdp->sdp_header.HB1 != HDMI_INFOFRAME_TYPE_DRM)
> > +		return -EINVAL;
> > +
> > +	/*
> > +	 * Least Significant Eight Bits of (Data Byte Count – 1)
> > +	 * 1Dh (i.e., Data Byte Count = 30 bytes).
> > +	 */
> > +	if (sdp->sdp_header.HB2 != 0x1D)
> > +		return -EINVAL;
> > +
> > +	/* Most Significant Two Bits of (Data Byte Count – 1), Clear to
> > 00b. */
> > +	if ((sdp->sdp_header.HB3 & 0x3) != 0)
> > +		return -EINVAL;
> > +
> > +	/* INFOFRAME SDP Version Number */
> > +	if (((sdp->sdp_header.HB3 >> 2) & 0x3f) != 0x13)
> > +		return -EINVAL;
> > +
> > +	/* CTA Header Byte 2 (INFOFRAME Version Number) */
> > +	if (sdp->db[0] != 1)
> > +		return -EINVAL;
> > +
> > +	/* CTA Header Byte 3 (Length of INFOFRAME):
> > HDMI_DRM_INFOFRAME_SIZE */
> > +	if (sdp->db[1] != HDMI_DRM_INFOFRAME_SIZE)
> > +		return -EINVAL;
> > +
> > +	ret = hdmi_drm_infoframe_unpack_only(drm_infoframe, &sdp-
> > >db[2],
> > +					     HDMI_DRM_INFOFRAME_SIZE);
> > +
> > +	return ret;
> > +}
> > +
> > +static void intel_read_dp_vsc_sdp(struct intel_encoder *encoder,
> > +				  struct intel_crtc_state *crtc_state,
> > +				  struct drm_dp_vsc_sdp *vsc)
> > +{
> > +	struct intel_digital_port *intel_dig_port =
> > enc_to_dig_port(encoder);
> > +	struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> > +	unsigned int type = DP_SDP_VSC;
> > +	struct dp_sdp sdp = {};
> > +	int ret;
> > +
> > +	/* When PSR is enabled, VSC SDP is handled by PSR routine */
> > +	if (intel_psr_enabled(intel_dp))
> > +		return;
> > +
> > +	if ((crtc_state->infoframes.enable &
> > +	     intel_hdmi_infoframe_enable(type)) == 0)
> > +		return;
> > +
> > +	intel_dig_port->read_infoframe(encoder, crtc_state, type, &sdp,
> > +sizeof(sdp));
> > +
> > +	ret = intel_dp_vsc_sdp_unpack(vsc, &sdp, sizeof(sdp));
> > +
> > +	if (ret)
> > +		DRM_DEBUG_KMS("Failed to unpack DP VSC SDP\n"); }
> > +
> > +static void intel_read_dp_hdr_metadata_infoframe_sdp(struct
> > intel_encoder
> > *encoder,
> > +						     struct
> > intel_crtc_state
> > *crtc_state,
> > +						     struct
> > hdmi_drm_infoframe
> > *drm_infoframe) {
> > +	struct intel_digital_port *intel_dig_port =
> > enc_to_dig_port(encoder);
> > +	unsigned int type = HDMI_PACKET_TYPE_GAMUT_METADATA;
> > +	struct dp_sdp sdp = {};
> > +	int ret;
> > +
> > +	if ((crtc_state->infoframes.enable &
> > +	    intel_hdmi_infoframe_enable(type)) == 0)
> > +		return;
> > +
> > +	intel_dig_port->read_infoframe(encoder, crtc_state, type, &sdp,
> > +				       sizeof(sdp));
> > +
> > +	ret = intel_dp_hdr_metadata_infoframe_sdp_unpack(drm_infoframe,
> > &sdp,
> > +							 sizeof(sdp));
> > +
> > +	if (ret)
> > +		DRM_DEBUG_KMS("Failed to unpack DP HDR Metadata
> > Infoframe
> > SDP\n"); }
> > +
> > +void intel_read_dp_sdp(struct intel_encoder *encoder,
> > +		       struct intel_crtc_state *crtc_state,
> > +		       unsigned int type)
> > +{
> > +	switch (type) {
> > +	case DP_SDP_VSC:
> > +		intel_read_dp_vsc_sdp(encoder, crtc_state,
> > +				      &crtc_state->infoframes.vsc);
> > +		break;
> > +	case HDMI_PACKET_TYPE_GAMUT_METADATA:
> > +		intel_read_dp_hdr_metadata_infoframe_sdp(encoder,
> > crtc_state,
> > +							 &crtc_state-
> > > infoframes.drm.drm);
> > +		break;
> > +	default:
> > +		MISSING_CASE(type);
> > +		break;
> > +	}
> > +}
> > +
> >  static void
> >  intel_dp_setup_vsc_sdp(struct intel_dp *intel_dp,
> >  		       const struct intel_crtc_state *crtc_state, diff
> > --git
> > a/drivers/gpu/drm/i915/display/intel_dp.h
> > b/drivers/gpu/drm/i915/display/intel_dp.h
> > index 0dc09a463ee1..e8f9ba962d09 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.h
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> > @@ -119,6 +119,9 @@ void intel_dp_hdr_metadata_enable(struct
> > intel_dp
> > *intel_dp,  void intel_dp_set_infoframes(struct intel_encoder
> > *encoder, bool
> > enable,
> >  			     const struct intel_crtc_state *crtc_state,
> >  			     const struct drm_connector_state
> > *conn_state);
> > +void intel_read_dp_sdp(struct intel_encoder *encoder,
> > +		       struct intel_crtc_state *crtc_state,
> > +		       unsigned int type);
> >  bool intel_digital_port_connected(struct intel_encoder *encoder);
> > 
> >  static inline unsigned int intel_dp_unused_lane_mask(int
> > lane_count)
> > --
> > 2.24.1
> > 
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2020-02-09  3:38 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-03 23:19 [PATCH v3 00/17] In order to readout DP SDPs, refactors the handling of DP SDPs Gwan-gyeong Mun
2020-02-03 23:19 ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:19 ` Gwan-gyeong Mun
2020-02-03 23:19 ` [PATCH v3 01/17] drm: add DP 1.4 VSC SDP Payload related enums and a structure Gwan-gyeong Mun
2020-02-03 23:19   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:19   ` Gwan-gyeong Mun
2020-02-05 14:42   ` Shankar, Uma
2020-02-05 14:42     ` [Intel-gfx] " Shankar, Uma
2020-02-05 14:42     ` Shankar, Uma
2020-02-09  3:26     ` Mun, Gwan-gyeong
2020-02-09  3:26       ` [Intel-gfx] " Mun, Gwan-gyeong
2020-02-09  3:26       ` Mun, Gwan-gyeong
2020-02-03 23:19 ` [PATCH v3 02/17] drm/i915/dp: Add compute routine for DP VSC SDP Gwan-gyeong Mun
2020-02-03 23:19   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:19   ` Gwan-gyeong Mun
2020-02-05 14:51   ` Shankar, Uma
2020-02-05 14:51     ` [Intel-gfx] " Shankar, Uma
2020-02-05 14:51     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 03/17] drm/i915/dp: Add compute routine for DP HDR Metadata Infoframe SDP Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 15:06   ` Shankar, Uma
2020-02-05 15:06     ` [Intel-gfx] " Shankar, Uma
2020-02-05 15:06     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 04/17] drm/i915/dp: Add writing of DP SDPs (Secondary Data Packet) Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:09   ` Shankar, Uma
2020-02-05 16:09     ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:09     ` Shankar, Uma
2020-02-09  3:34     ` Mun, Gwan-gyeong
2020-02-09  3:34       ` [Intel-gfx] " Mun, Gwan-gyeong
2020-02-09  3:34       ` Mun, Gwan-gyeong
2020-02-10  8:16       ` Shankar, Uma
2020-02-10  8:16         ` [Intel-gfx] " Shankar, Uma
2020-02-10  8:16         ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 05/17] video/hdmi: Add Unpack only function for DRM infoframe Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:15   ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:15     ` Shankar, Uma
2020-02-05 16:15     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 06/17] drm/i915/dp: Read out DP SDPs (Secondary Data Packet) Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:29   ` Shankar, Uma
2020-02-05 16:29     ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:29     ` Shankar, Uma
2020-02-09  3:38     ` Mun, Gwan-gyeong [this message]
2020-02-09  3:38       ` [Intel-gfx] " Mun, Gwan-gyeong
2020-02-09  3:38       ` Mun, Gwan-gyeong
2020-02-03 23:20 ` [PATCH v3 07/17] drm: Add logging function for DP VSC SDP Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:38   ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:38     ` Shankar, Uma
2020-02-05 16:38     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 08/17] drm/i915: Include HDMI DRM infoframe in the crtc state dump Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:42   ` Shankar, Uma
2020-02-05 16:42     ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:42     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 09/17] drm/i915: Include DP HDR Metadata Infoframe SDP " Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:44   ` Shankar, Uma
2020-02-05 16:44     ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:44     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 10/17] drm/i915: Include DP VSC " Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:46   ` Shankar, Uma
2020-02-05 16:46     ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:46     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 11/17] drm/i915: Program DP SDPs with computed configs Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:51   ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:51     ` Shankar, Uma
2020-02-05 16:51     ` Shankar, Uma
2020-02-09  3:40     ` Mun, Gwan-gyeong
2020-02-09  3:40       ` Mun, Gwan-gyeong
2020-02-09  3:40       ` Mun, Gwan-gyeong
2020-02-03 23:20 ` [PATCH v3 12/17] drm/i915: Add state readout for DP HDR Metadata Infoframe SDP Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 16:54   ` [Intel-gfx] " Shankar, Uma
2020-02-05 16:54     ` Shankar, Uma
2020-02-05 16:54     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 13/17] drm/i915: Add state readout for DP VSC SDP Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 17:00   ` Shankar, Uma
2020-02-05 17:00     ` [Intel-gfx] " Shankar, Uma
2020-02-05 17:00     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 14/17] drm/i915: Program DP SDPs on pipe updates Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 17:02   ` Shankar, Uma
2020-02-05 17:02     ` [Intel-gfx] " Shankar, Uma
2020-02-05 17:02     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 15/17] drm/i915: Stop sending DP SDPs on intel_ddi_post_disable_dp() Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 17:05   ` Shankar, Uma
2020-02-05 17:05     ` [Intel-gfx] " Shankar, Uma
2020-02-05 17:05     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 16/17] drm/i915/dp: Add compute routine for DP PSR VSC SDP Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 17:12   ` Shankar, Uma
2020-02-05 17:12     ` [Intel-gfx] " Shankar, Uma
2020-02-05 17:12     ` Shankar, Uma
2020-02-03 23:20 ` [PATCH v3 17/17] drm/i915/psr: Use new DP VSC SDP compute routine on PSR Gwan-gyeong Mun
2020-02-03 23:20   ` [Intel-gfx] " Gwan-gyeong Mun
2020-02-03 23:20   ` Gwan-gyeong Mun
2020-02-05 17:15   ` [Intel-gfx] " Shankar, Uma
2020-02-05 17:15     ` Shankar, Uma
2020-02-05 17:15     ` Shankar, Uma
2020-02-04 20:32 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for In order to readout DP SDPs, refactors the handling of DP SDPs (rev3) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=661f4ffafe7bd829ecd80e83e3e908b4b1a2d3c2.camel@intel.com \
    --to=gwan-gyeong.mun@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=uma.shankar@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.