From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 11/11] drm/fbdevdrm: Detect and validate display modes Date: Tue, 26 Mar 2019 10:17:44 +0100 Message-ID: <20190326091744.11542-12-tzimmermann@suse.de> References: <20190326091744.11542-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5CE836E7B8 for ; Tue, 26 Mar 2019 09:17:58 +0000 (UTC) In-Reply-To: <20190326091744.11542-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@linux.ie, daniel@ffwll.ch, b.zolnierkie@samsung.com Cc: linux-fbdev@vger.kernel.org, Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org TW9kZSBkZXRlY3Rpb24gY3VycmVudGx5IHJlcG9ydHMgdGhlIG1vZGVzIGxpc3RlZCBpbiBmYl9p bmZvOjptb2RlbGlzdC4KVGhlIGxpc3QgaXMgZWl0aGVyIGJ1aWxkIGZyb20gRURJRCBpbmZvcm1h dGlvbiBvciwgbW9yZSBvZnRlbiwgYSBsaXN0IG9mCnByZXZpb3VzbHkgc2V0IG1vZGVzLiBBIGxh dGVyIHVwZGF0ZSB0byB0aGUgbW9kZSBkZXRlY3Rpb24gY291bGQgYWxzbwp0YWtlIGludG8gYWNj b3VudCB0aGUgbW9kZXMgaW4gZmJfbW9uc3BlY3M6Om1vZGVkYiBvciB0ZXN0IHByZS1kZWZpbmVk ClZFU0EgbW9kZXMuCgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1h bm5Ac3VzZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fbW9kZXNl dC5jIHwgMTYzICsrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTYyIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZmJk ZXZkcm0vZmJkZXZkcm1fbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2 ZHJtX21vZGVzZXQuYwppbmRleCA4N2Y1NmVjNzZlZGYuLmU4OWVjYTRiNThkZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX21vZGVzZXQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fbW9kZXNldC5jCkBAIC0yMSw5ICsyMSwxNiBA QAogI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hl bHBlci5oPgogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisjaW5jbHVkZSAiZmJkZXZkcm1fZGV2aWNl LmgiCiAjaW5jbHVkZSAiZmJkZXZkcm1fbW9kZXMuaCIKICNpbmNsdWRlICJmYmRldmRybV9wcmlt YXJ5LmgiCiAKK3N0YXRpYyBzdHJ1Y3QgZmJkZXZkcm1fbW9kZXNldCogZmJkZXZkcm1fbW9kZXNl dF9vZl9jb25uZWN0b3IoCisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwly ZXR1cm4gY29udGFpbmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IGZiZGV2ZHJtX21vZGVzZXQsIGNv bm5lY3Rvcik7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZmJkZXZkcm1fbW9kZXNldCogZmJkZXZkcm1f bW9kZXNldF9vZl9jcnRjKAogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKQEAgLTM1MywxMSAr MzYwLDEzMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGZiZGV2ZHJt X2VuY29kZXJfZnVuY3MgPSB7CiAgKiBDb25uZWN0b3IKICAqLwogCi1zdGF0aWMgaW50IGNvbm5l Y3Rvcl9oZWxwZXJfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCitz dGF0aWMgaW50IHVwZGF0ZV9kaXNwbGF5X2luZm8oc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmlu Zm8sIHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKQoreworCWludCBudW1fcGl4ZWw7CisKKwlpZiAo ZmJfaW5mby0+Zml4LnR5cGUgIT0gRkJfVFlQRV9QQUNLRURfUElYRUxTKQorCQlyZXR1cm4gLUVJ TlZBTDsgLyogcnVsZSBvdXQgdGV4dCBtb2RlLCBldGMuICovCisKKwlpZiAoZmJfaW5mby0+Zml4 LmlkWzBdKSB7CisJCXN0cm5jcHkoaW5mby0+bmFtZSwgZmJfaW5mby0+Zml4LmlkLCBzaXplb2Yo aW5mby0+bmFtZSkgLSAxKTsKKwkJaW5mby0+bmFtZVtzaXplb2YoaW5mby0+bmFtZSkgLSAxXSA9 ICdcMCc7CisJfSBlbHNlIHsKKwkJbWVtc2V0KGluZm8tPm5hbWUsICdcMCcsIHNpemVvZihpbmZv LT5uYW1lKSk7CisJfQorCisJaW5mby0+d2lkdGhfbW0gPSBmYl9pbmZvLT52YXIud2lkdGg7CisJ aW5mby0+aGVpZ2h0X21tID0gZmJfaW5mby0+dmFyLmhlaWdodDsKKwlpbmZvLT5waXhlbF9jbG9j ayA9IFBJQ09TMktIWihmYl9pbmZvLT52YXIucGl4Y2xvY2spOworCisJbnVtX3BpeGVsID0gMDsK KwlpZiAoZmJfaW5mby0+dmFyLnJlZC5sZW5ndGgpCisJCSsrbnVtX3BpeGVsOworCWlmIChmYl9p bmZvLT52YXIuZ3JlZW4ubGVuZ3RoKQorCQkrK251bV9waXhlbDsKKwlpZiAoZmJfaW5mby0+dmFy LmJsdWUubGVuZ3RoKQorCQkrK251bV9waXhlbDsKKwlpZiAoZmJfaW5mby0+dmFyLnRyYW5zcC5s ZW5ndGgpCisJCSsrbnVtX3BpeGVsOworCisJaWYgKG51bV9waXhlbCkKKwkJaW5mby0+YnBjID0g ZmJfaW5mby0+dmFyLmJpdHNfcGVyX3BpeGVsOworCWVsc2UKKwkJaW5mby0+YnBjID0gMDsKKwor CWluZm8tPnN1YnBpeGVsX29yZGVyID0gU3ViUGl4ZWxVbmtub3duOworCWluZm8tPmNvbG9yX2Zv cm1hdHMgPSBEUk1fQ09MT1JfRk9STUFUX1JHQjQ0NDsKKwlpbmZvLT5idXNfZm9ybWF0cyA9ICZp bmZvLT5jb2xvcl9mb3JtYXRzOworCWluZm8tPm51bV9idXNfZm9ybWF0cyA9IDE7CisJaW5mby0+ YnVzX2ZsYWdzID0gMDsKKwlpbmZvLT5tYXhfdG1kc19jbG9jayA9IDA7CisJaW5mby0+ZHZpX2R1 YWwgPSBmYWxzZTsKKwlpbmZvLT5oYXNfaGRtaV9pbmZvZnJhbWUgPSBmYWxzZTsKKwlpbmZvLT5l ZGlkX2hkbWlfZGNfbW9kZXMgPSAwOworCWluZm8tPmNlYV9yZXYgPSAwOworCW1lbXNldCgmaW5m by0+aGRtaSwgMCwgc2l6ZW9mKGluZm8tPmhkbWkpKTsKKwlpbmZvLT5ub25fZGVza3RvcCA9IDA7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fbW9kZV9wcm9iZWRfYWRkX2Zyb21f ZmJfdmlkZW9tb2RlKAorCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGNvbnN0IHN0 cnVjdCBmYl92aWRlb21vZGUgKmZiX21vZGUsCisJc3RydWN0IGZiX2luZm8gKmZiX2luZm8pCiB7 CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwltb2RlID0gZHJtX21vZGVfY3Jl YXRlX2Zyb21fZmJfdmlkZW9tb2RlKGNvbm5lY3Rvci0+ZGV2LCBmYl9tb2RlKTsKKwlpZiAoIW1v ZGUpCisJCXJldHVybiAtRU5PTUVNOworCisJbW9kZS0+d2lkdGhfbW0gPSBmYl9pbmZvLT52YXIu d2lkdGg7CisJbW9kZS0+aGVpZ2h0X21tID0gZmJfaW5mby0+dmFyLmhlaWdodDsKKworCWRybV9t b2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKKworCS8qIHVwZGF0ZSBjb25uZWN0b3Ig cHJvcGVydGllcyBmcm9tIGRpc3BsYXkgbW9kZSAqLworCWlmIChtb2RlLT5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKQorCQljb25uZWN0b3ItPmludGVybGFjZV9hbGxvd2VkID0gdHJ1 ZTsKKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCisJCWNvbm5lY3Rv ci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0gdHJ1ZTsKKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHXzNEX01BU0spCisJCWNvbm5lY3Rvci0+c3RlcmVvX2FsbG93ZWQgPSB0cnVlOworCiAJ cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgY29ubmVjdG9yX2hlbHBlcl9nZXRfbW9kZXMoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZmJkZXZkcm1fbW9kZXNl dCAqbW9kZXNldDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7CisJaW50IHJldCwgbnVtX21vZGVz ID0gMDsKKworCW1vZGVzZXQgPSBmYmRldmRybV9tb2Rlc2V0X29mX2Nvbm5lY3Rvcihjb25uZWN0 b3IpOworCisJcmV0ID0gdXBkYXRlX2Rpc3BsYXlfaW5mbygmY29ubmVjdG9yLT5kaXNwbGF5X2lu Zm8sIG1vZGVzZXQtPmZiX2luZm8pOworCWlmIChyZXQpCisJCXJldHVybiAwOworCisJLyogdXBk YXRlIGNvbm5lY3RvciBwcm9wZXJ0aWVzIGZyb20gdmlkZW8gbW9kZXMgKi8KKwljb25uZWN0b3It PmludGVybGFjZV9hbGxvd2VkID0gMDsKKwljb25uZWN0b3ItPmRvdWJsZXNjYW5fYWxsb3dlZCA9 IDA7CisJY29ubmVjdG9yLT5zdGVyZW9fYWxsb3dlZCA9IDA7CisKKwlpZiAoIW51bV9tb2RlcyAm JiBtb2Rlc2V0LT5mYl9pbmZvLT5tb2RlKSB7CisJCXJldCA9IGRybV9tb2RlX3Byb2JlZF9hZGRf ZnJvbV9mYl92aWRlb21vZGUoCisJCQljb25uZWN0b3IsIG1vZGVzZXQtPmZiX2luZm8tPm1vZGUs IG1vZGVzZXQtPmZiX2luZm8pOworCQlpZiAoIXJldCkKKwkJCSsrbnVtX21vZGVzOworCX0KKwor CWlmICghbnVtX21vZGVzKSB7CisKKwkJLyogRFJNIGJhY2twb3J0aW5nIG5vdGVzOiB3ZSBnbyB0 aHJvdWdoIGFsbCBtb2RlcyBpbiB0aGUKKwkJICogZmJfaW5mbydzIG1vZGUgbGlzdCBhbmQgY29u dmVydCBlYWNoIHRvIGEgRFJNIG1vZGVzLiBJZgorCQkgKiB5b3UgY29udmVydCBhbiBmYmRldiBk cml2ZXIgdG8gRFJNLCByZXBsYWNlIHRoaXMgY29kZQorCQkgKiB3aXRoIGFuIGFjdHVhbCBoYXJk d2FyZSBxdWVyeS4gVGhpcyB3aWxsIHVzdWFsbHkgaW52b2x2ZQorCQkgKiByZWFkaW5nIHRoZSBt b25pdG9yIEVESUQgdmlhIEREQy4KKwkJICovCisKKwkJbGlzdF9mb3JfZWFjaChwb3MsICZtb2Rl c2V0LT5mYl9pbmZvLT5tb2RlbGlzdCkgeworCQkJY29uc3Qgc3RydWN0IGZiX21vZGVsaXN0ICpt b2RlbGlzdCA9CisJCQkJY29udGFpbmVyX29mKHBvcywgc3RydWN0IGZiX21vZGVsaXN0LCBsaXN0 KTsKKworCQkJcmV0ID0gZHJtX21vZGVfcHJvYmVkX2FkZF9mcm9tX2ZiX3ZpZGVvbW9kZSgKKwkJ CQljb25uZWN0b3IsICAmbW9kZWxpc3QtPm1vZGUsCisJCQkJbW9kZXNldC0+ZmJfaW5mbyk7CisJ CQlpZiAocmV0IDwgMCkKKwkJCQljb250aW51ZTsKKwkJCSsrbnVtX21vZGVzOworCQl9CisJfQor CisJcmV0dXJuIG51bV9tb2RlczsKK30KKwogc3RhdGljIGludCBjb25uZWN0b3JfaGVscGVyX2Rl dGVjdF9jdHgoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkgICAgICAgc3Ry dWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsCiAJCQkJICAgICAgIGJvb2wgZm9yY2Up CkBAIC0zNjgsNiArNDk0LDIxIEBAIHN0YXRpYyBpbnQgY29ubmVjdG9yX2hlbHBlcl9kZXRlY3Rf Y3R4KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiBzdGF0aWMgZW51bSBkcm1fbW9k ZV9zdGF0dXMgY29ubmVjdG9yX2hlbHBlcl9tb2RlX3ZhbGlkKAogCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQogeworCXN0cnVj dCBmYl92YXJfc2NyZWVuaW5mbyBmYl92YXI7CisJaW50IHJldDsKKwlzdHJ1Y3QgZmJkZXZkcm1f bW9kZXNldCAqbW9kZXNldCA9IGZiZGV2ZHJtX21vZGVzZXRfb2ZfY29ubmVjdG9yKGNvbm5lY3Rv cik7CisKKwkvKiBmYl92YWxpZGF0ZV9tb2RlKCkgcmVxdWlyZXMgZmJfaW5mby0+bW9uc3BlY3Mg dG8gY29udGFpbiB2YWxpZAorCSAqIGRhdGEuIFNraXAgdGhlIHRlc3QgaWYgdGhlIG1heGltdW0g Y2xvY2sgbG9va3MgYm9ndXMuICovCisJaWYgKCFtb2Rlc2V0LT5mYl9pbmZvLT5tb25zcGVjcy5k Y2xrbWF4KQorCQlyZXR1cm4gTU9ERV9PSzsKKworCWZiZGV2ZHJtX2luaXRfZmJfdmFyX3NjcmVl bmluZm9fZnJvbV9tb2RlKCZmYl92YXIsIG1vZGUpOworCisJcmV0ID0gZmJfdmFsaWRhdGVfbW9k ZSgmZmJfdmFyLCBtb2Rlc2V0LT5mYl9pbmZvKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIE1P REVfQkFEOworCiAJcmV0dXJuIE1PREVfT0s7CiB9CiAKQEAgLTQ0NCw2ICs1ODUsMjYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGZiZGV2ZHJtX2Nvbm5lY3Rvcl9m dW5jcyA9IHsKIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBtb2RlX2NvbmZpZ19tb2RlX3Zh bGlkKAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlKQogeworCS8qIFRPRE86IG1heWJlIGRldGVjdCBtYXhpbXVtIGRlcHRoICovCisJ c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtYXhfYnBwID0gNDsgLyogMzItYml0IGRlcHRoICov CisKKwlzaXplX3QgdnJhbV9zaXplXzIsIGZiX3NpemU7CisJc3RydWN0IGZiZGV2ZHJtX2Rldmlj ZSAqZmRldiA9IGZiZGV2ZHJtX2RldmljZV9vZl9kZXYoZGV2KTsKKworCS8qIERSTSBwb3J0aW5n IG5vdGU6IFRoZSBhdG9taWMgbW9kZS1zZXR0aW5nIGZyYW1ld29yayByZXF1aXJlcworCSAqIHR3 byBmcmFtZWJ1ZmZlcnMgdG8gYmUgcHJlc2VudCBpbiBWUkFNIGR1cmluZyBwYWdlIGZsaXBzLiBU aGlzCisJICogaXMgYSBwcm9ibGVtIGZvciBtb2RlcyB0aGF0IHJlcXVpcmUgYnVmZmVycyBsYXJn ZXIgdGhhbiBoYWxmCisJICogdGhlIFZSQU0gc2l6ZS4gVGhpcyBjYW4gaGFwcGVuIG9uIG9sZGVy IGdyYXBoaWNzIGNhcmRzIHdpdGggbGVzcworCSAqIHRoYW4gMTYgTWlCIG9mIFZSQU0uIFRoZXJl J3Mgbm8gcG9pbnQgaW4gcmVwb3J0aW5nIHN1Y2ggbW9kZXMsCisJICogc28gd2Ugc29ydCB0aGVt IG91dC4gSWYgeW91J3JlIHBvcnRpbmcgYW4gZmJkZXZkcml2ZXIgdG8gRFJNLCB5b3UKKwkgKiBt YXkgd2FudCB0byBrZWVwIHRoaXMgcG9saWN5IGlmIHRoZSBkZXZpY2UgaGFzIGxpbWl0ZWQgVlJB TS4KKwkgKi8KKwl2cmFtX3NpemVfMiA9IGZkZXYtPnR0bS52cmFtX3NpemUgLyAyOworCisJZmJf c2l6ZSA9IG1vZGUtPmhkaXNwbGF5ICogbW9kZS0+dmRpc3BsYXkgKiBtYXhfYnBwOworCWlmIChm Yl9zaXplID4gdnJhbV9zaXplXzIpCisJCXJldHVybiBNT0RFX01FTTsKKwogCXJldHVybiBNT0RF X09LOwogfQogCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==