From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Francis Subject: [PATCH v9 6/6] drm/dp_mst: Add helpers for MST DSC and virtual DPCD aux Date: Tue, 27 Aug 2019 10:13:29 -0400 Message-ID: <20190827141329.30767-7-David.Francis@amd.com> References: <20190827141329.30767-1-David.Francis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740082.outbound.protection.outlook.com [40.107.74.82]) by gabe.freedesktop.org (Postfix) with ESMTPS id A6DAF89BBD for ; Tue, 27 Aug 2019 14:13:42 +0000 (UTC) In-Reply-To: <20190827141329.30767-1-David.Francis@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: David Francis List-Id: dri-devel@lists.freedesktop.org QWRkIGRybV9kcF9tc3RfZHNjX2F1eF9mb3JfcG9ydC4gVG8gZW5hYmxlIERTQywgdGhlIERTQ19F TkFCTEVECnJlZ2lzdGVyIG1pZ2h0IGhhdmUgdG8gYmUgd3JpdHRlbiBvbiB0aGUgbGVhZiBwb3J0 J3MgRFBDRCwKaXRzIHBhcmVudCdzIERQQ0QsIG9yIHRoZSBNU1QgbWFuYWdlcidzIERQQ0QuIFRo aXMgZnVuY3Rpb24KZmluZHMgdGhlIGNvcnJlY3QgYXV4IGZvciB0aGUgam9iLgoKQXMgcGFydCBv ZiB0aGlzLCBhZGQgZHJtX2RwX21zdF9pc192aXJ0dWFsX2RwY2QuIFZpcnR1YWwgRFBDRAppcyBh IERQIGZlYXR1cmUgbmV3IGluIERQIHYxLjQsIHdoaWNoIGV4cG9zZXMgY2VydGFpbiBEUENECnJl Z2lzdGVycyBvbiB2aXJ0dWFsIHBvcnRzLgoKdjI6IFJlbWVtYmVyIHRvIHVubG9jayBtdXRleCBv biBhbGwgcGF0aHMKdjM6IFJlZmFjdG9yIHRvIG1hdGNoIGNvZGluZyBzdHlsZSBhbmQgaW5jcmVh c2UgYnJldml0eQoKQ2M6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+CkNjOiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgpDYzogSGFycnkgV2VudGxhbmQgPGhh cnJ5LndlbnRsYW5kQGFtZC5jb20+ClJldmlld2VkLWJ5OiBXZW5qaW5nIExpdSA8V2VuamluZy5M aXVAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgRnJhbmNpcyA8RGF2aWQuRnJhbmNpc0Bh bWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgfCAxNTMg KysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVy LmggICAgICAgfCAgIDIgKwogMiBmaWxlcyBjaGFuZ2VkLCAxNTUgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCmluZGV4IDUwMjkyM2MyNDQ1MC4uZTI0ZGJh Mjc2MTE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKQEAgLTQxNTAsMyAr NDE1MCwxNTYgQEAgc3RhdGljIHZvaWQgZHJtX2RwX21zdF91bnJlZ2lzdGVyX2kyY19idXMoc3Ry dWN0IGRybV9kcF9hdXggKmF1eCkKIHsKIAlpMmNfZGVsX2FkYXB0ZXIoJmF1eC0+ZGRjKTsKIH0K KworLyoqCisgKiBkcm1fZHBfbXN0X2lzX3ZpcnR1YWxfZHBjZCgpIC0gSXMgdGhlIGdpdmVuIHBv cnQgYSB2aXJ0dWFsIERQIFBlZXIgRGV2aWNlCisgKiBAcG9ydDogVGhlIHBvcnQgdG8gY2hlY2sK KyAqCisgKiBBIHNpbmdsZSBwaHlzaWNhbCBNU1QgaHViIG9iamVjdCBjYW4gYmUgcmVwcmVzZW50 ZWQgaW4gdGhlIHRvcG9sb2d5CisgKiBieSBtdWx0aXBsZSBicmFuY2hlcywgd2l0aCB2aXJ0dWFs IHBvcnRzIGJldHdlZW4gdGhvc2UgYnJhbmNoZXMuCisgKgorICogQXMgb2YgRFAxLjQsIEFuIE1T VCBodWIgd2l0aCBpbnRlcm5hbCAodmlydHVhbCkgcG9ydHMgbXVzdCBleHBvc2UKKyAqIGNlcnRh aW4gRFBDRCByZWdpc3RlcnMgb3ZlciB0aG9zZSBwb3J0cy4gU2VlIHNlY3Rpb25zIDIuNi4xLjEu MQorICogYW5kIDIuNi4xLjEuMiBvZiBEaXNwbGF5IFBvcnQgc3BlY2lmaWNhdGlvbiB2MS40IGZv ciBkZXRhaWxzLgorICoKKyAqIE1heSBhY3F1aXJlIG1nci0+bG9jaworICoKKyAqIFJldHVybnM6 CisgKiB0cnVlIGlmIHRoZSBwb3J0IGlzIGEgdmlydHVhbCBEUCBwZWVyIGRldmljZSwgZmFsc2Ug b3RoZXJ3aXNlCisgKi8KK3N0YXRpYyBib29sIGRybV9kcF9tc3RfaXNfdmlydHVhbF9kcGNkKHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCit7CisJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAq ZG93bnN0cmVhbV9wb3J0OworCisJaWYgKCFwb3J0IHx8IHBvcnQtPmRwY2RfcmV2IDwgRFBfRFBD RF9SRVZfMTQpCisJCXJldHVybiBmYWxzZTsKKworCS8qIFZpcnR1YWwgRFAgU2luayAoSW50ZXJu YWwgRGlzcGxheSBQYW5lbCkgKi8KKwlpZiAocG9ydC0+cG9ydF9udW0gPj0gOCkKKwkJcmV0dXJu IHRydWU7CisKKwkvKiBEUC10by1IRE1JIFByb3RvY29sIENvbnZlcnRlciAqLworCWlmIChwb3J0 LT5wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlYgJiYKKwkgICAgIXBvcnQtPm1j cyAmJgorCSAgICBwb3J0LT5sZHBzKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qIERQLXRvLURQICov CisJbXV0ZXhfbG9jaygmcG9ydC0+bWdyLT5sb2NrKTsKKwlpZiAocG9ydC0+cGR0ID09IERQX1BF RVJfREVWSUNFX01TVF9CUkFOQ0hJTkcgJiYKKwkgICAgcG9ydC0+bXN0YiAmJgorCSAgICBwb3J0 LT5tc3RiLT5udW1fcG9ydHMgPT0gMikgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRvd25zdHJl YW1fcG9ydCwgJnBvcnQtPm1zdGItPnBvcnRzLCBuZXh0KSB7CisJCQlpZiAoZG93bnN0cmVhbV9w b3J0LT5wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfU1NUX1NJTksgJiYKKwkJCSAgICAhZG93bnN0cmVh bV9wb3J0LT5pbnB1dCkgeworCQkJCW11dGV4X3VubG9jaygmcG9ydC0+bWdyLT5sb2NrKTsKKwkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKwltdXRleF91bmxvY2soJnBvcnQtPm1nci0+ bG9jayk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9kc2NfYXV4 X2Zvcl9wb3J0KCkgLSBGaW5kIHRoZSBjb3JyZWN0IGF1eCBmb3IgRFNDCisgKiBAcG9ydDogVGhl IHBvcnQgdG8gY2hlY2suIEEgbGVhZiBvZiB0aGUgTVNUIHRyZWUgd2l0aCBhbiBhdHRhY2hlZCBk aXNwbGF5LgorICoKKyAqIERlcGVuZGluZyBvbiB0aGUgc2l0dWF0aW9uLCBEU0MgbWF5IGJlIGVu YWJsZWQgdmlhIHRoZSBlbmRwb2ludCBhdXgsCisgKiB0aGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0g YXV4LCBvciB0aGUgY29ubmVjdG9yJ3MgcGh5c2ljYWwgYXV4LgorICoKKyAqIFRoaXMgaXMgYm90 aCB0aGUgY29ycmVjdCBhdXggdG8gcmVhZCBEU0NfQ0FQQUJJTElUWSBhbmQgdGhlCisgKiBjb3Jy ZWN0IGF1eCB0byB3cml0ZSBEU0NfRU5BQkxFRC4KKyAqCisgKiBUaGlzIG9wZXJhdGlvbiBjYW4g YmUgZXhwZW5zaXZlICh1cCB0byBmb3VyIGF1eCByZWFkcyksIHNvCisgKiB0aGUgY2FsbGVyIHNo b3VsZCBjYWNoZSB0aGUgcmV0dXJuLgorICoKKyAqIFJldHVybnM6CisgKiBOVUxMIGlmIERTQyBj YW5ub3QgYmUgZW5hYmxlZCBvbiB0aGlzIHBvcnQsIG90aGVyd2lzZSB0aGUgYXV4IGRldmljZQor ICovCitzdHJ1Y3QgZHJtX2RwX2F1eCAqZHJtX2RwX21zdF9kc2NfYXV4X2Zvcl9wb3J0KHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCit7CisJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqaW1t ZWRpYXRlX3Vwc3RyZWFtX3BvcnQ7CisJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZmVjX3BvcnQ7 CisJc3RydWN0IGRybV9kcF9kZXNjICpkZXNjID0gTlVMTDsKKworCWlmICghcG9ydCkKKwkJcmV0 dXJuIE5VTEw7CisKKwlpZiAocG9ydC0+cGFyZW50KQorCQlpbW1lZGlhdGVfdXBzdHJlYW1fcG9y dCA9IHBvcnQtPnBhcmVudC0+cG9ydF9wYXJlbnQ7CisJZWxzZQorCQlpbW1lZGlhdGVfdXBzdHJl YW1fcG9ydCA9IE5VTEw7CisKKwlmZWNfcG9ydCA9IGltbWVkaWF0ZV91cHN0cmVhbV9wb3J0Owor CXdoaWxlIChmZWNfcG9ydCkgeworCQkvKgorCQkgKiBFYWNoIHBoeXNpY2FsIGxpbmsgKGkuZS4g bm90IGEgdmlydHVhbCBwb3J0KSBiZXR3ZWVuIHRoZQorCQkgKiBvdXRwdXQgYW5kIHRoZSBwcmlt YXJ5IGRldmljZSBtdXN0IHN1cHBvcnQgRkVDCisJCSAqLworCQlpZiAoIWRybV9kcF9tc3RfaXNf dmlydHVhbF9kcGNkKGZlY19wb3J0KSAmJgorCQkJCSFmZWNfcG9ydC0+ZmVjX2NhcGFibGUpCisJ CQlyZXR1cm4gTlVMTDsKKworCQlmZWNfcG9ydCA9IGZlY19wb3J0LT5wYXJlbnQtPnBvcnRfcGFy ZW50OworCX0KKworCS8qIERQLXRvLURQIHBlZXIgZGV2aWNlICovCisJaWYgKGRybV9kcF9tc3Rf aXNfdmlydHVhbF9kcGNkKGltbWVkaWF0ZV91cHN0cmVhbV9wb3J0KSkgeworCQl1OCB1cHN0cmVh bV9kc2M7CisJCXU4IGVuZHBvaW50X2RzYzsKKwkJdTggZW5kcG9pbnRfZmVjOworCisJCWlmIChk cm1fZHBfZHBjZF9yZWFkKCZwb3J0LT5hdXgsCisJCQkJICAgICBEUF9EU0NfU1VQUE9SVCwgJmVu ZHBvaW50X2RzYywgMSkgPCAwKQorCQkJcmV0dXJuIE5VTEw7CisJCWlmIChkcm1fZHBfZHBjZF9y ZWFkKCZwb3J0LT5hdXgsCisJCQkJICAgICBEUF9GRUNfQ0FQQUJJTElUWSwgJmVuZHBvaW50X2Zl YywgMSkgPCAwKQorCQkJcmV0dXJuIE5VTEw7CisJCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbW1l ZGlhdGVfdXBzdHJlYW1fcG9ydC0+YXV4LAorCQkJCSAgICAgRFBfRFNDX1NVUFBPUlQsICZ1cHN0 cmVhbV9kc2MsIDEpIDwgMCkKKwkJCXJldHVybiBOVUxMOworCisJCS8qIEVucG9pbnQgZGVjb21w cmVzc2lvbiB3aXRoIERQLXRvLURQIHBlZXIgZGV2aWNlICovCisJCWlmICgoZW5kcG9pbnRfZHNj ICYgRFBfRFNDX0RFQ09NUFJFU1NJT05fSVNfU1VQUE9SVEVEKSAmJgorCQkgICAgKGVuZHBvaW50 X2ZlYyAmIERQX0ZFQ19DQVBBQkxFKSAmJgorCQkgICAgKHVwc3RyZWFtX2RzYyAmIDB4MikgLyog RFNDIHBhc3N0aHJvdWdoICovKQorCQkJcmV0dXJuICZwb3J0LT5hdXg7CisKKwkJLyogVmlydHVh bCBEUENEIGRlY29tcHJlc3Npb24gd2l0aCBEUC10by1EUCBwZWVyIGRldmljZSAqLworCQlyZXR1 cm4gJmltbWVkaWF0ZV91cHN0cmVhbV9wb3J0LT5hdXg7CisJfQorCisJLyogVmlydHVhbCBEUENE IGRlY29tcHJlc3Npb24gd2l0aCBEUC10by1IRE1JIG9yIFZpcnR1YWwgRFAgU2luayAqLworCWlm IChkcm1fZHBfbXN0X2lzX3ZpcnR1YWxfZHBjZChwb3J0KSkKKwkJcmV0dXJuICZwb3J0LT5hdXg7 CisKKwkvKgorCSAqIFN5bmFwdGljcyBxdWlyaworCSAqIEFwcGxpZXMgdG8gcG9ydHMgZm9yIHdo aWNoOgorCSAqIC0gUGh5c2ljYWwgYXV4IGhhcyBTeW5hcHRpY3MgT1VJCisJICogLSBEUHYxLjQg b3IgaGlnaGVyCisJICogLSBQb3J0IGlzIG9uIHByaW1hcnkgYnJhbmNoIGRldmljZQorCSAqIC0g Tm90IGEgVkdBIGFkYXB0ZXIgKERQX0RXTl9TVFJNX1BPUlRfVFlQRV9BTkFMT0cpCisJICovCisJ aWYgKCFkcm1fZHBfcmVhZF9kZXNjKHBvcnQtPm1nci0+YXV4LCBkZXNjLCB0cnVlKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJaWYgKGRybV9kcF9oYXNfcXVpcmsoZGVzYywgRFBfRFBDRF9RVUlSS19E U0NfV0lUSE9VVF9WSVJUVUFMX0RQQ0QgJiYKKwkgICAgcG9ydC0+bWdyLT5kcGNkW0RQX0RQQ0Rf UkVWXSA+PSBEUF9EUENEX1JFVl8xNCkgJiYKKwkgICAgcG9ydC0+cGFyZW50ID09IHBvcnQtPm1n ci0+bXN0X3ByaW1hcnkpIHsKKwkJdTggZG93bnN0cmVhbXBvcnQ7CisKKwkJZHJtX2RwX2RwY2Rf cmVhZCgmcG9ydC0+YXV4LCBEUF9ET1dOU1RSRUFNUE9SVF9QUkVTRU5ULAorCQkJCSAmZG93bnN0 cmVhbXBvcnQsIDEpOworCisJCWlmICgoZG93bnN0cmVhbXBvcnQgJiBEUF9EV05fU1RSTV9QT1JU X1BSRVNFTlQpICYmCisJCSAgICgoZG93bnN0cmVhbXBvcnQgJiBEUF9EV05fU1RSTV9QT1JUX1RZ UEVfTUFTSykKKwkJICAgICAhPSBEUF9EV05fU1RSTV9QT1JUX1RZUEVfQU5BTE9HKSkKKwkJCXJl dHVybiBwb3J0LT5tZ3ItPmF1eDsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KK0VYUE9SVF9TWU1C T0woZHJtX2RwX21zdF9kc2NfYXV4X2Zvcl9wb3J0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9kcF9tc3RfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCmlu ZGV4IGYxMTNhZTA0ZmE4OC4uNGNmNzM4NTQ1ZGZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9k cm1fZHBfbXN0X2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgK QEAgLTY3Myw2ICs2NzMsOCBAQCBpbnQgX19tdXN0X2NoZWNrIGRybV9kcF9tc3RfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiB2b2lkIGRybV9kcF9tc3RfZ2V0 X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwogdm9pZCBkcm1fZHBf bXN0X3B1dF9wb3J0X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KTsKIAorc3Ry dWN0IGRybV9kcF9hdXggKmRybV9kcF9tc3RfZHNjX2F1eF9mb3JfcG9ydChzdHJ1Y3QgZHJtX2Rw X21zdF9wb3J0ICpwb3J0KTsKKwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0 ZV9mdW5jcyBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlX2Z1bmNzOwogCiAvKioKLS0gCjIuMTcu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs