From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH 5/9] drm/fb-helper: Add generic fbdev emulation .fb_probe function Date: Wed, 23 May 2018 16:34:07 +0200 Message-ID: <20180523143411.64070-6-noralf@tronnes.org> References: <20180523143411.64070-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.domeneshop.no (smtp.domeneshop.no [IPv6:2a01:5b40:0:3005::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E2976E4C0 for ; Wed, 23 May 2018 14:34:37 +0000 (UTC) In-Reply-To: <20180523143411.64070-1-noralf@tronnes.org> 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: intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBnZXR0aW5nIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9u LgpBIGRybV9mYl9oZWxwZXJfZnVuY3MuZmJfcHJvYmUgZnVuY3Rpb24gaXMgYWRkZWQgd2hpY2gg dXNlcyB0aGUKRFJNIGNsaWVudCBBUEkgdG8gZ2V0IGEgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGEg ZHVtYiBidWZmZXIuCgpBIHRyYW5zaXRpb25hbCBoYWNrIGZvciB0aW55ZHJtIGlzIG5lZWRlZCBp biBvcmRlciB0byBzd2l0Y2ggb3ZlciBhbGwKQ01BIGhlbHBlciBkcml2ZXJzIGluIGEgbGF0ZXIg cGF0Y2guIFRoaXMgaGFjayB3aWxsIGJlIHJlbW92ZWQgd2hlbgp0aW55ZHJtIG1vdmVzIHRvIHZt YWxsb2MgYnVmZmVycy4KClNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRy b25uZXMub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCAxNjQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2Zi X2hlbHBlci5oICAgICB8ICAyNiArKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKaW5kZXggMmVlMWVhYTY2MTg4Li40NDRjMmI0 MDQwZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAtMzAsMTEgKzMwLDEzIEBACiAjZGVm aW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICI6ICIgZm10CiAKICNpbmNsdWRlIDxsaW51 eC9jb25zb2xlLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c3JxLmg+CiAjaW5jbHVkZSA8bGludXgvc2xh Yi5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGRybS9kcm1QLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KICNp bmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxw ZXIuaD4KQEAgLTI5MjgsNiArMjkzMCwxNjggQEAgdm9pZCBkcm1fZmJfaGVscGVyX291dHB1dF9w b2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIH0KIEVYUE9SVF9TWU1CT0woZHJt X2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKTsKIAorLyogQHVzZXI6IDE9dXNlcnNwYWNl LCAwPWZiY29uICovCitzdGF0aWMgaW50IGRybV9mYmRldl9mYl9vcGVuKHN0cnVjdCBmYl9pbmZv ICppbmZvLCBpbnQgdXNlcikKK3sKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0g aW5mby0+cGFyOworCisJaWYgKCF0cnlfbW9kdWxlX2dldChmYl9oZWxwZXItPmRldi0+ZHJpdmVy LT5mb3BzLT5vd25lcikpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgZHJtX2ZiZGV2X2ZiX3JlbGVhc2Uoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCB1 c2VyKQoreworCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CisK Kwltb2R1bGVfcHV0KGZiX2hlbHBlci0+ZGV2LT5kcml2ZXItPmZvcHMtPm93bmVyKTsKKworCXJl dHVybiAwOworfQorCisvKgorICogZmJfb3BzLmZiX2Rlc3Ryb3kgaXMgY2FsbGVkIGJ5IHRoZSBs YXN0IHB1dF9mYl9pbmZvKCkgY2FsbCBhdCB0aGUgZW5kIG9mCisgKiB1bnJlZ2lzdGVyX2ZyYW1l YnVmZmVyKCkgb3IgZmJfcmVsZWFzZSgpLgorICovCitzdGF0aWMgdm9pZCBkcm1fZmJkZXZfZmJf ZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBmYl9vcHMgKmZib3BzID0gTlVMTDsKKwor CURSTV9ERUJVRygiXG4iKTsKKworCWlmIChmYl9oZWxwZXItPmZiZGV2LT5mYmRlZmlvKSB7CisJ CWZiX2RlZmVycmVkX2lvX2NsZWFudXAoZmJfaGVscGVyLT5mYmRldik7CisJCWZib3BzID0gZmJf aGVscGVyLT5mYmRldi0+ZmJvcHM7CisJfQorCisJZHJtX2ZiX2hlbHBlcl9maW5pKGZiX2hlbHBl cik7CisJZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoZmJfaGVscGVyLT5idWZmZXIpOwor CWRybV9jbGllbnRfZnJlZShmYl9oZWxwZXItPmNsaWVudCk7CisJa2ZyZWUoZmJfaGVscGVyKTsK KwlrZnJlZShmYm9wcyk7Cit9CisKK3N0YXRpYyBpbnQgZHJtX2ZiZGV2X2ZiX21tYXAoc3RydWN0 IGZiX2luZm8gKmluZm8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CisKKwlpZiAoZmJfaGVscGVyLT5k ZXYtPmRyaXZlci0+Z2VtX3ByaW1lX21tYXApCisJCXJldHVybiBmYl9oZWxwZXItPmRldi0+ZHJp dmVyLT5nZW1fcHJpbWVfbW1hcChmYl9oZWxwZXItPmJ1ZmZlci0+Z2VtLCB2bWEpOworCWVsc2UK KwkJcmV0dXJuIC1FTk9ERVY7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmJfb3BzIGRybV9mYmRldl9m Yl9vcHMgPSB7CisJLyogTm8gbmVlZCB0byBzZXQgb3duZXIsIHRoaXMgbW9kdWxlIGlzIGFscmVh ZHkgcGlubmVkIGJ5IHRoZSBkcml2ZXIuICovCisJRFJNX0ZCX0hFTFBFUl9ERUZBVUxUX09QUywK KwkuZmJfb3Blbgk9IGRybV9mYmRldl9mYl9vcGVuLAorCS5mYl9yZWxlYXNlCT0gZHJtX2ZiZGV2 X2ZiX3JlbGVhc2UsCisJLmZiX2Rlc3Ryb3kJPSBkcm1fZmJkZXZfZmJfZGVzdHJveSwKKwkuZmJf bW1hcAk9IGRybV9mYmRldl9mYl9tbWFwLAorCS5mYl9yZWFkCT0gZHJtX2ZiX2hlbHBlcl9zeXNf cmVhZCwKKwkuZmJfd3JpdGUJPSBkcm1fZmJfaGVscGVyX3N5c193cml0ZSwKKwkuZmJfZmlsbHJl Y3QJPSBkcm1fZmJfaGVscGVyX3N5c19maWxscmVjdCwKKwkuZmJfY29weWFyZWEJPSBkcm1fZmJf aGVscGVyX3N5c19jb3B5YXJlYSwKKwkuZmJfaW1hZ2VibGl0CT0gZHJtX2ZiX2hlbHBlcl9zeXNf aW1hZ2VibGl0LAorfTsKKworc3RhdGljIHN0cnVjdCBmYl9kZWZlcnJlZF9pbyBkcm1fZmJkZXZf ZGVmaW8gPSB7CisJLmRlbGF5CQk9IEhaIC8gMjAsCisJLmRlZmVycmVkX2lvCT0gZHJtX2ZiX2hl bHBlcl9kZWZlcnJlZF9pbywKK307CisKKy8qCisgKiBUT0RPOiBSZW1vdmUgdGhpcyB3aGVuIHRp bnlkcm0gaXMgY29udmVydGVkIHRvIHZtYWxsb2MgYnVmZmVycy4KKyAqLworc3RhdGljIGludCBk cm1fZmJkZXZfY21hX2RlZmVycmVkX2lvX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCisJCQkJ CSAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJZmJfZGVmZXJyZWRfaW9fbW1hcChp bmZvLCB2bWEpOworCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bWEt PnZtX3BhZ2VfcHJvdCk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRybV9mYl9oZWxwZXJfZ2Vu ZXJpY19wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAorCQkJCXN0cnVjdCBk cm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpCit7CisJc3RydWN0IGRybV9jbGllbnRf ZGV2ICpjbGllbnQgPSBmYl9oZWxwZXItPmNsaWVudDsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9idWZm ZXIgKmJ1ZmZlcjsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwlzdHJ1Y3QgZmJfaW5m byAqZmJpOworCXUzMiBmb3JtYXQ7CisJaW50IHJldDsKKworCURSTV9ERUJVR19LTVMoInN1cmZh Y2Ugd2lkdGgoJWQpLCBoZWlnaHQoJWQpIGFuZCBicHAoJWQpXG4iLAorCQkgICAgICBzaXplcy0+ c3VyZmFjZV93aWR0aCwgc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0LAorCQkgICAgICBzaXplcy0+c3Vy ZmFjZV9icHApOworCisJZm9ybWF0ID0gZHJtX21vZGVfbGVnYWN5X2ZiX2Zvcm1hdChzaXplcy0+ c3VyZmFjZV9icHAsIHNpemVzLT5zdXJmYWNlX2RlcHRoKTsKKwlidWZmZXIgPSBkcm1fY2xpZW50 X2ZyYW1lYnVmZmVyX2NyZWF0ZShjbGllbnQsIHNpemVzLT5zdXJmYWNlX3dpZHRoLAorCQkJCQkg ICAgICAgc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0LCBmb3JtYXQpOworCWlmIChJU19FUlIoYnVmZmVy KSkKKwkJcmV0dXJuIFBUUl9FUlIoYnVmZmVyKTsKKworCWZiX2hlbHBlci0+YnVmZmVyID0gYnVm ZmVyOworCWZiX2hlbHBlci0+ZmIgPSBidWZmZXItPmZiOworCWZiID0gYnVmZmVyLT5mYjsKKwor CWZiaSA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGZiX2hlbHBlcik7CisJaWYgKElTX0VSUihm YmkpKSB7CisJCXJldCA9IFBUUl9FUlIoZmJpKTsKKwkJZ290byBlcnJfZnJlZV9idWZmZXI7CisJ fQorCisJZmJpLT5wYXIgPSBmYl9oZWxwZXI7CisJZmJpLT5mYm9wcyA9ICZkcm1fZmJkZXZfZmJf b3BzOworCWZiaS0+c2NyZWVuX3NpemUgPSBmYi0+aGVpZ2h0ICogZmItPnBpdGNoZXNbMF07CisJ ZmJpLT5maXguc21lbV9sZW4gPSBmYmktPnNjcmVlbl9zaXplOworCWZiaS0+c2NyZWVuX2J1ZmZl ciA9IGJ1ZmZlci0+dmFkZHI7CisJc3RyY3B5KGZiaS0+Zml4LmlkLCAiRFJNIGVtdWxhdGVkIik7 CisKKwlkcm1fZmJfaGVscGVyX2ZpbGxfZml4KGZiaSwgZmItPnBpdGNoZXNbMF0sIGZiLT5mb3Jt YXQtPmRlcHRoKTsKKwlkcm1fZmJfaGVscGVyX2ZpbGxfdmFyKGZiaSwgZmJfaGVscGVyLCBzaXpl cy0+ZmJfd2lkdGgsIHNpemVzLT5mYl9oZWlnaHQpOworCisJaWYgKGZiLT5mdW5jcy0+ZGlydHkp IHsKKwkJc3RydWN0IGZiX29wcyAqZmJvcHM7CisKKwkJLyoKKwkJICogZmJfZGVmZXJyZWRfaW9f Y2xlYW51cCgpIGNsZWFycyAmZmJvcHMtPmZiX21tYXAgc28gYSBwZXIKKwkJICogaW5zdGFuY2Ug dmVyc2lvbiBpcyBuZWNlc3NhcnkuCisJCSAqLworCQlmYm9wcyA9IGt6YWxsb2Moc2l6ZW9mKCpm Ym9wcyksIEdGUF9LRVJORUwpOworCQlpZiAoIWZib3BzKSB7CisJCQlyZXQgPSAtRU5PTUVNOwor CQkJZ290byBlcnJfZmJfaW5mb19kZXN0cm95OworCQl9CisKKwkJKmZib3BzID0gKmZiaS0+ZmJv cHM7CisJCWZiaS0+ZmJvcHMgPSBmYm9wczsKKworCQlmYmktPmZiZGVmaW8gPSAmZHJtX2ZiZGV2 X2RlZmlvOworCisJCS8qIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gdGlueWRybSBpcyBjb252ZXJ0 ZWQgdG8gdm1hbGxvYyBidWZmZXJzLiAqLworCQlmYmktPmZpeC5zbWVtX3N0YXJ0ID0gcGFnZV90 b19waHlzKHZpcnRfdG9fcGFnZShidWZmZXItPnZhZGRyKSk7CisKKwkJZmJfZGVmZXJyZWRfaW9f aW5pdChmYmkpOworCisJCS8qIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gdGlueWRybSBpcyBjb252 ZXJ0ZWQgdG8gdm1hbGxvYyBidWZmZXJzLiAqLworCQlmYmktPmZib3BzLT5mYl9tbWFwID0gZHJt X2ZiZGV2X2NtYV9kZWZlcnJlZF9pb19tbWFwOworCX0KKworCXJldHVybiAwOworCitlcnJfZmJf aW5mb19kZXN0cm95OgorCWRybV9mYl9oZWxwZXJfZmluaShmYl9oZWxwZXIpOworZXJyX2ZyZWVf YnVmZmVyOgorCWRybV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKGJ1ZmZlcik7CisKKwlyZXR1 cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUpOwor CiAvKiBUaGUgS2NvbmZpZyBEUk1fS01TX0hFTFBFUiBzZWxlY3RzIEZSQU1FQlVGRkVSX0NPTlNP TEUgKGlmICFFWFBFUlQpCiAgKiBidXQgdGhlIG1vZHVsZSBkb2Vzbid0IGRlcGVuZCBvbiBhbnkg ZmIgY29uc29sZSBzeW1ib2xzLiAgQXQgbGVhc3QKICAqIGF0dGVtcHQgdG8gbG9hZCBmYmNvbiB0 byBhdm9pZCBsZWF2aW5nIHRoZSBzeXN0ZW0gd2l0aG91dCBhIHVzYWJsZSBjb25zb2xlLgpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Zi X2hlbHBlci5oCmluZGV4IGIwNjk0MzNlN2ZjMS4uYmIzODQ2OWE5NTAyIDEwMDY0NAotLS0gYS9p bmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBl ci5oCkBAIC0zMCw2ICszMCw4IEBACiAjaWZuZGVmIERSTV9GQl9IRUxQRVJfSAogI2RlZmluZSBE Uk1fRkJfSEVMUEVSX0gKIAorc3RydWN0IGRybV9jbGllbnRfYnVmZmVyOworc3RydWN0IGRybV9j bGllbnRfZGV2Owogc3RydWN0IGRybV9mYl9oZWxwZXI7CiAKICNpbmNsdWRlIDxkcm0vZHJtX2Ny dGMuaD4KQEAgLTIzMiw2ICsyMzQsMjAgQEAgc3RydWN0IGRybV9mYl9oZWxwZXIgewogCSAqIFNl ZSBhbHNvOiBAZGVmZXJyZWRfc2V0dXAKIAkgKi8KIAlpbnQgcHJlZmVycmVkX2JwcDsKKworCS8q KgorCSAqIEBjbGllbnQ6CisJICoKKwkgKiBEUk0gY2xpZW50IHVzZWQgYnkgdGhlIGdlbmVyaWMg ZmJkZXYgZW11bGF0aW9uLgorCSAqLworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50Owor CisJLyoqCisJICogQGJ1ZmZlcjoKKwkgKgorCSAqIEZyYW1lYnVmZmVyIHVzZWQgYnkgdGhlIGdl bmVyaWMgZmJkZXYgZW11bGF0aW9uLgorCSAqLworCXN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAq YnVmZmVyOwogfTsKIAogLyoqCkBAIC0zMzAsNiArMzQ2LDkgQEAgdm9pZCBkcm1fZmJfaGVscGVy X2ZiZGV2X3RlYXJkb3duKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiB2b2lkIGRybV9mYl9o ZWxwZXJfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBkcm1fZmJfaGVs cGVyX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKK2ludCBk cm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciwKKwkJCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKTsKICNlbHNl CiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCQkJCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCkBAIC01NjQsNiAr NTgzLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2No YW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIH0KIAorc3RhdGljIGlubGluZSBpbnQK K2RybV9mYl9oZWxwZXJfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyLAorCQkJICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpCit7 CisJcmV0dXJuIDA7Cit9CisKICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGludAotLSAKMi4xNS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK