From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [RFC 1/6] drm: Add top level Kconfig option for DRM fbdev emulation Date: Tue, 10 Mar 2015 15:11:28 +0530 Message-ID: <1425980493-27533-2-git-send-email-architt@codeaurora.org> References: <1425980493-27533-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1425980493-27533-1-git-send-email-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: daniel.vetter@ffwll.ch, robdclark@gmail.com, airlied@linux.ie, treding@nvidia.com, p.zabel@pengutronix.de, benjamin.gaignard@linaro.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org TGVnYWN5IGZiZGV2IGVtdWxhdGlvbiBzdXBwb3J0IHZpYSBEUk0gaXMgYWNoaWV2ZWQgdGhyb3Vn aCBLTVMgRkIgaGVscGVycy4KTW9zdCBtb2Rlc2V0dGluZyBkcml2ZXJzIGVuYWJsZSBwcm92aWRl IGZiZGV2IGVtdWxhdGlvbiBieSBkZWZhdWx0IGJ5IHNlbGVjdGluZwpLTVMgRkIgaGVscGVycy4g QSBmZXcgcHJvdmlkZSBhIHNlcGFyYXRlIEtjb25maWcgb3B0aW9uIGZvciB0aGUgdXNlciB0byBl bmFibGUKb3IgZGlzYmFsZSBmYmRldiBlbXVsYXRpb24uCgpFbmFibGluZyBmYmRldiBlbXVsYXRp b24gaXMgZmluYWxseSBhIGRpc3Ryby1sZXZlbCBkZWNpc2lvbi4gSGF2aW5nIGEgdG9wIGxldmVs Cktjb25maWcgb3B0aW9uIGZvciBmYmRldiBlbXVsYXRpb24gaGVscHMgYnkgcHJvdmlkaW5nIGEg dW5pZm9ybSB3YXkgdG8KZW5hYmxlL2Rpc2FibGUgZmJkZXYgZW11bGF0aW9uIGZvciBhbnkgbW9k ZXNldHRpbmcgZHJpdmVyLiBJdCBhbHNvIGxldHMgdXMKcmVtb3ZlIHVubmVjZXNzYXJ5IGRyaXZl ciBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbnMgdGhhdCBjYXVzZXMgYmxvYXQuCgpXaXRoIGEgdG9w IGxldmVsIEtjb25maWcgaW4gcGxhY2UsIHdlIGNhbiBzdHViIG91dCB0aGUgZmIgaGVscGVyIGZ1 bmN0aW9ucyB3aGVuCm5vdCBuZWVkZWQgd2l0aG91dCBicmVha2luZyBmdW5jdGlvbmFsaXR5LiBI YXZpbmcgc3R1YiBmdW5jdGlvbnMgYWxzbyBwcmV2ZW50cwpkcml2ZXJzIHRvIHJlcXVpcmUgd3Jh cHBpbmcgZmIgaGVscGVyIGZ1bmN0aW9uIGNhbGxzIHdpdGggI2lmZGVmcy4KCkRSTV9GQkRFVl9F TVVMQVRJT04gZGVmYXVsdHMgdG8geSBzaW5jZSBtYW55IGRyaXZlcnMgZW5hYmxlIGZiZGV2IGVt dWxhdGlvbiBieQpkZWZhdWx0IGFuZCBtYWpvcml0eSBvZiBkaXN0cmlidXRpb25zIGV4cGVjdCB0 aGUgZmJkZXYgaW50ZXJmYWNlIGluIHRoZSBrZXJuZWwuCgpGb3Igbm93LCB0aGlzIGNvbmZpZyBz ZWxlY3RzIGJvdGggRkJfU1lTXyogYW5kIEZCX0NGQl8qIGNvbmZpZ3MgYXMgc29tZQptb2Rlc2V0 dGluZyBkcml2ZXJzIHVzZSB0aGUgZm9ybWVyIGFuZCBvdGhlciB0aGUgbGF0ZXIuIFRoaXMgbmVl ZHMgdG8gYmUgdGFrZW4KY2FyZSBvZiBpbiBhIGJldHRlciB3YXkuCgpTaWduZWQtb2ZmLWJ5OiBB cmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9LY29uZmlnICAgICB8ICAxOCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAg fCAgIDQgKysKIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCB8IDEyMCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVy cy9ncHUvZHJtL0tjb25maWcKaW5kZXggMTUxYTA1MC4uMzhmODNhMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTQw LDYgKzQwLDI0IEBAIGNvbmZpZyBEUk1fS01TX0ZCX0hFTFBFUgogCWhlbHAKIAkgIEZCREVWIGhl bHBlcnMgZm9yIEtNUyBkcml2ZXJzLgogCitjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTgorCWJv b2wgIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2 ZXIiCisJZGVwZW5kcyBvbiBEUk0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlzZWxlY3QgRFJN X0tNU19GQl9IRUxQRVIKKwlzZWxlY3QgRkJfU1lTX0ZJTExSRUNUCisJc2VsZWN0IEZCX1NZU19D T1BZQVJFQQorCXNlbGVjdCBGQl9TWVNfSU1BR0VCTElUCisJc2VsZWN0IEZCX1NZU19GT1BTCisJ c2VsZWN0IEZCX0NGQl9GSUxMUkVDVAorCXNlbGVjdCBGQl9DRkJfQ09QWUFSRUEKKwlzZWxlY3Qg RkJfQ0ZCX0lNQUdFQkxJVAorCWRlZmF1bHQgeQorCWhlbHAKKwkgIENob29zZSB0aGlzIG9wdGlv biBpZiB5b3UgaGF2ZSBhIG5lZWQgZm9yIHRoZSBsZWdhY3kgZmJkZXYKKwkgIHN1cHBvcnQuIE5v dGUgdGhhdCB0aGlzIHN1cHBvcnQgYWxzbyBwcm92aWRlIHRoZSBsaW51eCBjb25zb2xlCisJICBz dXBwb3J0IG9uIHRvcCBvZiB5b3VyIG1vZGVzZXR0aW5nIGRyaXZlci4KKwogY29uZmlnIERSTV9M T0FEX0VESURfRklSTVdBUkUKIAlib29sICJBbGxvdyB0byBzcGVjaWZ5IGFuIEVESUQgZGF0YSBz ZXQgaW5zdGVhZCBvZiBwcm9iaW5nIGZvciBpdCIKIAlkZXBlbmRzIG9uIERSTV9LTVNfSEVMUEVS CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUKaW5kZXggMmMyMzliOS4uYzFkNDRiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtMjUsNyArMjUs MTEgQEAgZHJtLSQoQ09ORklHX09GKSArPSBkcm1fb2YubwogZHJtX2ttc19oZWxwZXIteSA6PSBk cm1fY3J0Y19oZWxwZXIubyBkcm1fZHBfaGVscGVyLm8gZHJtX3Byb2JlX2hlbHBlci5vIFwKIAkJ ZHJtX3BsYW5lX2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubyBkcm1fYXRvbWljX2hlbHBl ci5vCiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBk cm1fZWRpZF9sb2FkLm8KKworaWZlcSAoJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikseSkK IGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9LTVNfRkJfSEVMUEVSKSArPSBkcm1fZmJfaGVs cGVyLm8KK2VuZGlmCisKIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9LTVNfQ01BX0hFTFBF UikgKz0gZHJtX2ZiX2NtYV9oZWxwZXIubwogCiBvYmotJChDT05GSUdfRFJNX0tNU19IRUxQRVIp ICs9IGRybV9rbXNfaGVscGVyLm8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAppbmRleCAyMWI5NDRjLi5kYmZjZTFh IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2ZiX2hlbHBlci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgc3RydWN0IGRybV9mYl9oZWxw ZXIgewogCWJvb2wgZGVsYXllZF9ob3RwbHVnOwogfTsKIAorI2lmZGVmIENPTkZJR19EUk1fRkJE RVZfRU1VTEFUSU9OCiB2b2lkIGRybV9mYl9oZWxwZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCQkJICAgY29uc3Qgc3RydWN0 IGRybV9mYl9oZWxwZXJfZnVuY3MgKmZ1bmNzKTsKIGludCBkcm1fZmJfaGVscGVyX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTEzOSw0ICsxNDAsMTIzIEBAIGRybV9waWNrX2NtZGxp bmVfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2hlbHBlcl9jb25uLAog aW50IGRybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3Ioc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CiBpbnQgZHJtX2Zi X2hlbHBlcl9yZW1vdmVfb25lX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyLAogCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKKyNlbHNl CitzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkJCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCisJCQkJCWNvbnN0 IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzICpmdW5jcykKK3sKK30KKworc3RhdGljIGlubGlu ZSBpbnQgZHJtX2ZiX2hlbHBlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCSAgICAg ICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLCBpbnQgY3J0Y19jb3VudCwKKwkJICAgICAg IGludCBtYXhfY29ubikKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRy bV9mYl9oZWxwZXJfZmluaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyKQoreworfQorCitz dGF0aWMgaW5saW5lIGludCBkcm1fZmJfaGVscGVyX2JsYW5rKGludCBibGFuaywgc3RydWN0IGZi X2luZm8gKmluZm8pCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGRybV9m Yl9oZWxwZXJfcGFuX2Rpc3BsYXkoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCisJCQkJ CSAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu bGluZSBpbnQgZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBkcm1fZmJfaGVscGVyX2NoZWNrX3Zh cihzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKKwkJCQkJICBzdHJ1Y3QgZmJfaW5mbyAq aW5mbykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBib29sCitkcm1fZmJfaGVs cGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyKQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2Zi X2hlbHBlcl9maWxsX3ZhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKKwkJCQkJICBzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLAorCQkJCQkgIHVpbnQzMl90IGZiX3dpZHRoLCB1aW50MzJf dCBmYl9oZWlnaHQpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fZmJfaGVscGVyX2Zp bGxfZml4KHN0cnVjdCBmYl9pbmZvICppbmZvLCB1aW50MzJfdCBwaXRjaCwKKwkJCQkJICB1aW50 MzJfdCBkZXB0aCkKK3sKK30KKworc3RhdGljIGlubGluZSBpbnQgZHJtX2ZiX2hlbHBlcl9zZXRj bWFwKHN0cnVjdCBmYl9jbWFwICpjbWFwLAorCQkJCQlzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKK3sK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgZHJtX2ZiX2hlbHBlcl9ob3RwbHVn X2V2ZW50KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCit7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbmxpbmUgaW50IGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKKwkJCQkJICAgICAgIGludCBicHBfc2VsKQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludAorZHJtX2ZiX2hlbHBlcl9zaW5nbGVf YWRkX2FsbF9jb25uZWN0b3JzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCit7CisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGRybV9mYl9oZWxwZXJfZGVidWdfZW50 ZXIoc3RydWN0IGZiX2luZm8gKmluZm8pCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxp bmUgaW50IGRybV9mYl9oZWxwZXJfZGVidWdfbGVhdmUoc3RydWN0IGZiX2luZm8gKmluZm8pCit7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KgorZHJtX2hhc19wcmVmZXJyZWRfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3Ig KmZiX2Nvbm5lY3RvciwKKwkJICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKwlyZXR1 cm4gTlVMTDsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqCitk cm1fcGlja19jbWRsaW5lX21vZGUoc3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmYl9o ZWxwZXJfY29ubiwKKwkJICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworCXJldHVybiBO VUxMOworfQorCitzdGF0aWMgaW5saW5lIGludAorZHJtX2ZiX2hlbHBlcl9hZGRfb25lX2Nvbm5l Y3RvcihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAorCQkJCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50 Citkcm1fZmJfaGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIsCisJCQkJICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK KwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCiAjZW5kaWYKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmhv c3RlZCBieSBUaGUgTGludXggRm91bmRhdGlvbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751891AbbCJJlx (ORCPT ); Tue, 10 Mar 2015 05:41:53 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:59185 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750989AbbCJJlp (ORCPT ); Tue, 10 Mar 2015 05:41:45 -0400 From: Archit Taneja To: daniel.vetter@ffwll.ch, robdclark@gmail.com, airlied@linux.ie, treding@nvidia.com, p.zabel@pengutronix.de, benjamin.gaignard@linaro.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Archit Taneja Subject: [RFC 1/6] drm: Add top level Kconfig option for DRM fbdev emulation Date: Tue, 10 Mar 2015 15:11:28 +0530 Message-Id: <1425980493-27533-2-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1425980493-27533-1-git-send-email-architt@codeaurora.org> References: <1425980493-27533-1-git-send-email-architt@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Legacy fbdev emulation support via DRM is achieved through KMS FB helpers. Most modesetting drivers enable provide fbdev emulation by default by selecting KMS FB helpers. A few provide a separate Kconfig option for the user to enable or disbale fbdev emulation. Enabling fbdev emulation is finally a distro-level decision. Having a top level Kconfig option for fbdev emulation helps by providing a uniform way to enable/disable fbdev emulation for any modesetting driver. It also lets us remove unnecessary driver specific Kconfig options that causes bloat. With a top level Kconfig in place, we can stub out the fb helper functions when not needed without breaking functionality. Having stub functions also prevents drivers to require wrapping fb helper function calls with #ifdefs. DRM_FBDEV_EMULATION defaults to y since many drivers enable fbdev emulation by default and majority of distributions expect the fbdev interface in the kernel. For now, this config selects both FB_SYS_* and FB_CFB_* configs as some modesetting drivers use the former and other the later. This needs to be taken care of in a better way. Signed-off-by: Archit Taneja --- drivers/gpu/drm/Kconfig | 18 +++++++ drivers/gpu/drm/Makefile | 4 ++ include/drm/drm_fb_helper.h | 120 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 151a050..38f83a0 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -40,6 +40,24 @@ config DRM_KMS_FB_HELPER help FBDEV helpers for KMS drivers. +config DRM_FBDEV_EMULATION + bool "Enable legacy fbdev support for your modesetting driver" + depends on DRM + select DRM_KMS_HELPER + select DRM_KMS_FB_HELPER + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + default y + help + Choose this option if you have a need for the legacy fbdev + support. Note that this support also provide the linux console + support on top of your modesetting driver. + config DRM_LOAD_EDID_FIRMWARE bool "Allow to specify an EDID data set instead of probing for it" depends on DRM_KMS_HELPER diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index 2c239b9..c1d44b2 100644 --- a/drivers/gpu/drm/Makefile +++ b/drivers/gpu/drm/Makefile @@ -25,7 +25,11 @@ drm-$(CONFIG_OF) += drm_of.o drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o \ drm_plane_helper.o drm_dp_mst_topology.o drm_atomic_helper.o drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o + +ifeq ($(CONFIG_DRM_FBDEV_EMULATION),y) drm_kms_helper-$(CONFIG_DRM_KMS_FB_HELPER) += drm_fb_helper.o +endif + drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 21b944c..dbfce1a 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -103,6 +103,7 @@ struct drm_fb_helper { bool delayed_hotplug; }; +#ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, const struct drm_fb_helper_funcs *funcs); int drm_fb_helper_init(struct drm_device *dev, @@ -139,4 +140,123 @@ drm_pick_cmdline_mode(struct drm_fb_helper_connector *fb_helper_conn, int drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector); int drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector); +#else +static inline void drm_fb_helper_prepare(struct drm_device *dev, + struct drm_fb_helper *helper, + const struct drm_fb_helper_funcs *funcs) +{ +} + +static inline int drm_fb_helper_init(struct drm_device *dev, + struct drm_fb_helper *helper, int crtc_count, + int max_conn) +{ + return 0; +} + +static inline void drm_fb_helper_fini(struct drm_fb_helper *helper) +{ +} + +static inline int drm_fb_helper_blank(int blank, struct fb_info *info) +{ + return 0; +} + +static inline int drm_fb_helper_pan_display(struct fb_var_screeninfo *var, + struct fb_info *info) +{ + return 0; +} + +static inline int drm_fb_helper_set_par(struct fb_info *info) +{ + return 0; +} + +static inline int drm_fb_helper_check_var(struct fb_var_screeninfo *var, + struct fb_info *info) +{ + return 0; +} + +static inline bool +drm_fb_helper_restore_fbdev_mode_unlocked(struct drm_fb_helper *fb_helper) +{ + return true; +} + +static inline void drm_fb_helper_fill_var(struct fb_info *info, + struct drm_fb_helper *fb_helper, + uint32_t fb_width, uint32_t fb_height) +{ +} + +static inline void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch, + uint32_t depth) +{ +} + +static inline int drm_fb_helper_setcmap(struct fb_cmap *cmap, + struct fb_info *info) +{ + return 0; +} + +static inline int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper) +{ + return 0; +} + +static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, + int bpp_sel) +{ + return 0; +} + +static inline int +drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper) +{ + return 0; +} + +static inline int drm_fb_helper_debug_enter(struct fb_info *info) +{ + return 0; +} + +static inline int drm_fb_helper_debug_leave(struct fb_info *info) +{ + return 0; +} + +static inline struct drm_display_mode * +drm_has_preferred_mode(struct drm_fb_helper_connector *fb_connector, + int width, int height) +{ + return NULL; +} + +static inline struct drm_display_mode * +drm_pick_cmdline_mode(struct drm_fb_helper_connector *fb_helper_conn, + int width, int height) +{ + return NULL; +} + +static inline int +drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, + struct drm_connector *connector) +{ + return 0; +} + +static inline int +drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, + struct drm_connector *connector) +{ + return 0; +} +#endif + #endif -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation