From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Lechner Subject: [PATCH 3/3] drm/tinydrm: new driver for ILI9341 display panels Date: Mon, 14 May 2018 20:43:49 -0500 Message-ID: <20180515014349.26226-4-david@lechnology.com> References: <20180515014349.26226-1-david@lechnology.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180515014349.26226-1-david@lechnology.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, devicetree@vger.kernel.org Cc: Mark Rutland , limor@ladyada.net, David Lechner , linux-kernel@vger.kernel.org, Rob Herring , Nitin Patil List-Id: devicetree@vger.kernel.org VGhpcyBhZGRzIGEgbmV3IGRyaXZlciBmb3IgZGlzcGxheSBwYW5lbHMgdGhhdCB1c2UgdGhlIEls aXRlayBJTEk5MzQxCmNvbnRyb2xsZXIuIEl0IGN1cnJlbnRseSBzdXBwb3J0cyBhIHNpbmdsZSBk aXNwbGF5IHBhbmVsLCBuYW1lbHkKdGhlIFlYMjQwUVYyOS1UIChlLmcuIEFkYWZydWl0IDIuNCIg VEZUKS4KClRoZSBpbml0IHNlcXVlbmNlIGlzIGZyb20gdGhlIEFkYWZydWl0IFB5dGhvbiBsaWJy YXJ5IGZvciB0aGUgSUxJOTM0MQpjb250cm9sbGVyLiBodHRwczovL2dpdGh1Yi5jb20vYWRhZnJ1 aXQvQWRhZnJ1aXRfUHl0aG9uX0lMSTkzNDEKClNpZ25lZC1vZmYtYnk6IERhdmlkIExlY2huZXIg PGRhdmlkQGxlY2hub2xvZ3kuY29tPgotLS0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnICAgfCAgMTAgKysK IGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vdGlueWRybS9pbGk5MzQxLmMgfCAyMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiA0IGZpbGVzIGNoYW5nZWQsIDI1NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTM0MS5jCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5F UlMgYi9NQUlOVEFJTkVSUwppbmRleCBiYzIxOWRlOWNiZWUuLmZmYTA5OWFiYmQ3OSAxMDA2NDQK LS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTQ0ODAsNiArNDQ4MCwxMiBA QCBTOglNYWludGFpbmVkCiBGOglkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmMKIEY6 CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lsaXRlayxpbGk5MjI1 LnR4dAogCitEUk0gRFJJVkVSIEZPUiBJTElURUsgSUxJOTM0MSBQQU5FTFMKK006CURhdmlkIExl Y2huZXIgPGRhdmlkQGxlY2hub2xvZ3kuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9n cHUvZHJtL3Rpbnlkcm0vaWxpOTM0MS5jCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvZGlzcGxheS9pbGl0ZWssaWxpOTM0MS50eHQKKwogRFJNIERSSVZFUiBGT1IgSU5URUwg STgxMCBWSURFTyBDQVJEUwogUzoJT3JwaGFuIC8gT2Jzb2xldGUKIEY6CWRyaXZlcnMvZ3B1L2Ry bS9pODEwLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKaW5kZXggNDU5MmE1ZTNmMjBiLi43YTgwMDhi MDc4M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZwpAQCAtMjAsNiArMjAsMTYgQEAgY29uZmln IFRJTllEUk1fSUxJOTIyNQogCiAJICBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBi ZSBjYWxsZWQgaWxpOTIyNS4KIAorY29uZmlnIFRJTllEUk1fSUxJOTM0MQorCXRyaXN0YXRlICJE Uk0gc3VwcG9ydCBmb3IgSUxJOTM0MSBkaXNwbGF5IHBhbmVscyIKKwlkZXBlbmRzIG9uIERSTV9U SU5ZRFJNICYmIFNQSQorCXNlbGVjdCBUSU5ZRFJNX01JUElfREJJCisJaGVscAorCSAgRFJNIGRy aXZlciBmb3IgdGhlIGZvbGxvd2luZyBJbGl0ZWsgSUxJOTM0MSBwYW5lbHM6CisJICAqIFlYMjQw UVYyOS1UIDIuNCIgMjQweDMyMCBURlQgKEFkYWZydWl0IDIuNCIpCisKKwkgIElmIE0gaXMgc2Vs ZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbGk5MzQxLgorCiBjb25maWcgVElOWURS TV9NSTAyODNRVAogCXRyaXN0YXRlICJEUk0gc3VwcG9ydCBmb3IgTUkwMjgzUVQiCiAJZGVwZW5k cyBvbiBEUk1fVElOWURSTSAmJiBTUEkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55 ZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZpbGUKaW5kZXggNDlh MTExOTI5NzI0Li4xNGQ5OTA4MDY2NWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55 ZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCkBAIC01 LDYgKzUsNyBAQCBvYmotJChDT05GSUdfVElOWURSTV9NSVBJX0RCSSkJCSs9IG1pcGktZGJpLm8K IAogIyBEaXNwbGF5cwogb2JqLSQoQ09ORklHX1RJTllEUk1fSUxJOTIyNSkJCSs9IGlsaTkyMjUu bworb2JqLSQoQ09ORklHX1RJTllEUk1fSUxJOTM0MSkJCSs9IGlsaTkzNDEubwogb2JqLSQoQ09O RklHX1RJTllEUk1fTUkwMjgzUVQpCQkrPSBtaTAyODNxdC5vCiBvYmotJChDT05GSUdfVElOWURS TV9SRVBBUEVSKQkJKz0gcmVwYXBlci5vCiBvYmotJChDT05GSUdfVElOWURSTV9TVDc1ODYpCQkr PSBzdDc1ODYubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTM0MS5j IGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTM0MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMmNlNDI0NGE2OGMzCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTM0MS5jCkBAIC0wLDAgKzEsMjM5IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKy8qCisgKiBEUk0gZHJpdmVyIGZvciBJbGl0 ZWsgSUxJOTM0MSBwYW5lbHMKKyAqCisgKiBDb3B5cmlnaHQgMjAxOCBEYXZpZCBMZWNobmVyIDxk YXZpZEBsZWNobm9sb2d5LmNvbT4KKyAqCisgKiBCYXNlZCBvbiBtaTAyODNxdC5jOgorICogQ29w eXJpZ2h0IDIwMTYgTm9yYWxmIFRyw7hubmVzCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JhY2ts aWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3By b3BlcnR5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisjaW5jbHVk ZSA8bGludXgvc3BpL3NwaS5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX21vZGVzZXRfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1f ZnJhbWVidWZmZXJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaD4K KyNpbmNsdWRlIDxkcm0vdGlueWRybS90aW55ZHJtLWhlbHBlcnMuaD4KKyNpbmNsdWRlIDx2aWRl by9taXBpX2Rpc3BsYXkuaD4KKworI2RlZmluZSBJTEk5MzQxX0ZSTUNUUjEJCTB4YjEKKyNkZWZp bmUgSUxJOTM0MV9ESVNDVFJMCQkweGI2CisjZGVmaW5lIElMSTkzNDFfRVRNT0QJCTB4YjcKKwor I2RlZmluZSBJTEk5MzQxX1BXQ1RSTDEJCTB4YzAKKyNkZWZpbmUgSUxJOTM0MV9QV0NUUkwyCQkw eGMxCisjZGVmaW5lIElMSTkzNDFfVk1DVFJMMQkJMHhjNQorI2RlZmluZSBJTEk5MzQxX1ZNQ1RS TDIJCTB4YzcKKyNkZWZpbmUgSUxJOTM0MV9QV0NUUkxBCQkweGNiCisjZGVmaW5lIElMSTkzNDFf UFdDVFJMQgkJMHhjZgorCisjZGVmaW5lIElMSTkzNDFfUEdBTUNUUkwJMHhlMAorI2RlZmluZSBJ TEk5MzQxX05HQU1DVFJMCTB4ZTEKKyNkZWZpbmUgSUxJOTM0MV9EVENUUkxBCQkweGU4CisjZGVm aW5lIElMSTkzNDFfRFRDVFJMQgkJMHhlYQorI2RlZmluZSBJTEk5MzQxX1BXUlNFUQkJMHhlZAor CisjZGVmaW5lIElMSTkzNDFfRU4zR0FNCQkweGYyCisjZGVmaW5lIElMSTkzNDFfUFVNUENUUkwJ MHhmNworCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX0JHUglCSVQoMykKKyNkZWZpbmUgSUxJOTM0 MV9NQURDVExfTVYJQklUKDUpCisjZGVmaW5lIElMSTkzNDFfTUFEQ1RMX01YCUJJVCg2KQorI2Rl ZmluZSBJTEk5MzQxX01BRENUTF9NWQlCSVQoNykKKworc3RhdGljIHZvaWQgeXgyNDBxdjI5X2Vu YWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCisJCQkgICAgIHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCit7CisJc3RydWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2ID0gcGlw ZV90b190aW55ZHJtKHBpcGUpOworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IG1pcGlfZGJpX2Zy b21fdGlueWRybSh0ZGV2KTsKKwl1OCBhZGRyX21vZGU7CisJaW50IHJldDsKKworCURSTV9ERUJV R19LTVMoIlxuIik7CisKKwlyZXQgPSBtaXBpX2RiaV9wb3dlcm9uX2NvbmRpdGlvbmFsX3Jlc2V0 KG1pcGkpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm47CisJaWYgKHJldCA9PSAxKQorCQlnb3Rv IG91dF9lbmFibGU7CisKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIE1JUElfRENTX1NFVF9ESVNQ TEFZX09GRik7CisKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfUFdDVFJMQiwgMHgw MCwgMHhjMSwgMHgzMCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX1BXUlNFUSwg MHg2NCwgMHgwMywgMHgxMiwgMHg4MSk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQx X0RUQ1RSTEEsIDB4ODUsIDB4MDAsIDB4NzgpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJ OTM0MV9QV0NUUkxBLCAweDM5LCAweDJjLCAweDAwLCAweDM0LCAweDAyKTsKKwltaXBpX2RiaV9j b21tYW5kKG1pcGksIElMSTkzNDFfUFVNUENUUkwsIDB4MjApOworCW1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgSUxJOTM0MV9EVENUUkxCLCAweDAwLCAweDAwKTsKKworCS8qIFBvd2VyIENvbnRyb2wg Ki8KKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfUFdDVFJMMSwgMHgyMyk7CisJbWlw aV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX1BXQ1RSTDIsIDB4MTApOworCS8qIFZDT00gKi8K KwltaXBpX2RiaV9jb21tYW5kKG1pcGksIElMSTkzNDFfVk1DVFJMMSwgMHgzZSwgMHgyOCk7CisJ bWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX1ZNQ1RSTDIsIDB4ODYpOworCisJLyogTWVt b3J5IEFjY2VzcyBDb250cm9sICovCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19T RVRfUElYRUxfRk9STUFULCBNSVBJX0RDU19QSVhFTF9GTVRfMTZCSVQpOworCisJLyogRnJhbWUg UmF0ZSAqLworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9GUk1DVFIxLCAweDAwLCAw eDFiKTsKKworCS8qIEdhbW1hICovCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBJTEk5MzQxX0VO M0dBTSwgMHgwMCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfR0FNTUFf Q1VSVkUsIDB4MDEpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgSUxJOTM0MV9QR0FNQ1RSTCwK KwkJCSAweDBmLCAweDMxLCAweDJiLCAweDBjLCAweDBlLCAweDA4LCAweDRlLCAweGYxLAorCQkJ IDB4MzcsIDB4MDcsIDB4MTAsIDB4MDMsIDB4MGUsIDB4MDksIDB4MDApOworCW1pcGlfZGJpX2Nv bW1hbmQobWlwaSwgSUxJOTM0MV9OR0FNQ1RSTCwKKwkJCSAweDAwLCAweDBlLCAweDE0LCAweDAz LCAweDExLCAweDA3LCAweDMxLCAweGMxLAorCQkJIDB4NDgsIDB4MDgsIDB4MGYsIDB4MGMsIDB4 MzEsIDB4MzYsIDB4MGYpOworCisJLyogRERSQU0gKi8KKwltaXBpX2RiaV9jb21tYW5kKG1pcGks IElMSTkzNDFfRVRNT0QsIDB4MDcpOworCisJLyogRGlzcGxheSAqLworCW1pcGlfZGJpX2NvbW1h bmQobWlwaSwgSUxJOTM0MV9ESVNDVFJMLCAweDA4LCAweDgyLCAweDI3LCAweDAwKTsKKwltaXBp X2RiaV9jb21tYW5kKG1pcGksIE1JUElfRENTX0VYSVRfU0xFRVBfTU9ERSk7CisJbXNsZWVwKDEw MCk7CisKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIE1JUElfRENTX1NFVF9ESVNQTEFZX09OKTsK Kwltc2xlZXAoMTAwKTsKKworb3V0X2VuYWJsZToKKwlzd2l0Y2ggKG1pcGktPnJvdGF0aW9uKSB7 CisJZGVmYXVsdDoKKwkJYWRkcl9tb2RlID0gSUxJOTM0MV9NQURDVExfTVg7CisJCWJyZWFrOwor CWNhc2UgOTA6CisJCWFkZHJfbW9kZSA9IElMSTkzNDFfTUFEQ1RMX01WOworCQlicmVhazsKKwlj YXNlIDE4MDoKKwkJYWRkcl9tb2RlID0gSUxJOTM0MV9NQURDVExfTVk7CisJCWJyZWFrOworCWNh c2UgMjcwOgorCQlhZGRyX21vZGUgPSBJTEk5MzQxX01BRENUTF9NViB8IElMSTkzNDFfTUFEQ1RM X01ZIHwKKwkJCSAgICBJTEk5MzQxX01BRENUTF9NWDsKKwkJYnJlYWs7CisJfQorCWFkZHJfbW9k ZSB8PSBJTEk5MzQxX01BRENUTF9CR1I7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RD U19TRVRfQUREUkVTU19NT0RFLCBhZGRyX21vZGUpOworCW1pcGlfZGJpX2VuYWJsZV9mbHVzaCht aXBpLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgaWxpOTM0MV9waXBlX2Z1bmNzID0geworCS5l bmFibGUgPSB5eDI0MHF2MjlfZW5hYmxlLAorCS5kaXNhYmxlID0gbWlwaV9kYmlfcGlwZV9kaXNh YmxlLAorCS51cGRhdGUgPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV91cGRhdGUsCisJLnByZXBhcmVf ZmIgPSBkcm1fZ2VtX2ZiX3NpbXBsZV9kaXNwbGF5X3BpcGVfcHJlcGFyZV9mYiwKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSB5eDI0MHF2MjlfbW9kZSA9IHsKKwlU SU5ZRFJNX01PREUoMjQwLCAzMjAsIDM3LCA0OSksCit9OworCitERUZJTkVfRFJNX0dFTV9DTUFf Rk9QUyhpbGk5MzQxX2ZvcHMpOworCitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgaWxpOTM0MV9k cml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNF VCB8IERSSVZFUl9QUklNRSB8CisJCQkJICBEUklWRVJfQVRPTUlDLAorCS5mb3BzCQkJPSAmaWxp OTM0MV9mb3BzLAorCVRJTllEUk1fR0VNX0RSSVZFUl9PUFMsCisJLmxhc3RjbG9zZQkJPSBkcm1f ZmJfaGVscGVyX2xhc3RjbG9zZSwKKwkuZGVidWdmc19pbml0CQk9IG1pcGlfZGJpX2RlYnVnZnNf aW5pdCwKKwkubmFtZQkJCT0gImlsaTkzNDEiLAorCS5kZXNjCQkJPSAiSWxpdGVrIElMSTkzNDEi LAorCS5kYXRlCQkJPSAiMjAxODA1MTQiLAorCS5tYWpvcgkJCT0gMSwKKwkubWlub3IJCQk9IDAs Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbGk5MzQxX29mX21hdGNo W10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJub25hbWUseXgyNDBxdjI5IiB9LAorCXt9LAorfTsK K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlsaTkzNDFfb2ZfbWF0Y2gpOworCitzdGF0aWMgY29u c3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgaWxpOTM0MV9pZFtdID0geworCXsgInl4MjQwcXYyOSIs IDAgfSwKKwl7IH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGlsaTkzNDFfaWQpOwor CitzdGF0aWMgaW50IGlsaTkzNDFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmc3BpLT5kZXY7CisJc3RydWN0IG1pcGlfZGJpICptaXBpOwor CXN0cnVjdCBncGlvX2Rlc2MgKmRjOworCXUzMiByb3RhdGlvbiA9IDA7CisJaW50IHJldDsKKwor CW1pcGkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1pcGkpLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIW1pcGkpCisJCXJldHVybiAtRU5PTUVNOworCisJbWlwaS0+cmVzZXQgPSBkZXZtX2dwaW9k X2dldF9vcHRpb25hbChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJS KG1pcGktPnJlc2V0KSkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgIkZhaWxlZCB0byBnZXQgZ3Bp byAncmVzZXQnXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIobWlwaS0+cmVzZXQpOworCX0KKworCWRj ID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAiZGMiLCBHUElPRF9PVVRfTE9XKTsKKwlp ZiAoSVNfRVJSKGRjKSkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgIkZhaWxlZCB0byBnZXQgZ3Bp byAnZGMnXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZGMpOworCX0KKworCW1pcGktPnJlZ3VsYXRv ciA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJwb3dlciIpOworCWlmIChJU19FUlIobWlwaS0+ cmVndWxhdG9yKSkKKwkJcmV0dXJuIFBUUl9FUlIobWlwaS0+cmVndWxhdG9yKTsKKworCW1pcGkt PmJhY2tsaWdodCA9IGRldm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKKwlpZiAoSVNfRVJSKG1p cGktPmJhY2tsaWdodCkpCisJCXJldHVybiBQVFJfRVJSKG1pcGktPmJhY2tsaWdodCk7CisKKwlk ZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAicm90YXRpb24iLCAmcm90YXRpb24pOworCisJ cmV0ID0gbWlwaV9kYmlfc3BpX2luaXQoc3BpLCBtaXBpLCBkYyk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCXJldCA9IG1pcGlfZGJpX2luaXQoJnNwaS0+ZGV2LCBtaXBpLCAmaWxpOTM0 MV9waXBlX2Z1bmNzLAorCQkJICAgICZpbGk5MzQxX2RyaXZlciwgJnl4MjQwcXYyOV9tb2RlLCBy b3RhdGlvbik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXNwaV9zZXRfZHJ2ZGF0YShz cGksIG1pcGkpOworCisJcmV0dXJuIGRldm1fdGlueWRybV9yZWdpc3RlcigmbWlwaS0+dGlueWRy bSk7Cit9CisKK3N0YXRpYyB2b2lkIGlsaTkzNDFfc2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKK3sKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1pcGkgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsK KworCXRpbnlkcm1fc2h1dGRvd24oJm1pcGktPnRpbnlkcm0pOworfQorCitzdGF0aWMgc3RydWN0 IHNwaV9kcml2ZXIgaWxpOTM0MV9zcGlfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1l ID0gImlsaTkzNDEiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBpbGk5MzQxX29mX21hdGNoLAorCX0s CisJLmlkX3RhYmxlID0gaWxpOTM0MV9pZCwKKwkucHJvYmUgPSBpbGk5MzQxX3Byb2JlLAorCS5z aHV0ZG93biA9IGlsaTkzNDFfc2h1dGRvd24sCit9OworbW9kdWxlX3NwaV9kcml2ZXIoaWxpOTM0 MV9zcGlfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJJbGl0ZWsgSUxJOTM0MSBEUk0g ZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5 LmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLS0gCjIuMTcuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752518AbeEOBoz (ORCPT ); Mon, 14 May 2018 21:44:55 -0400 Received: from vern.gendns.com ([206.190.152.46]:58187 "EHLO vern.gendns.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752325AbeEOBo1 (ORCPT ); Mon, 14 May 2018 21:44:27 -0400 From: David Lechner To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: David Lechner , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Rob Herring , Mark Rutland , limor@ladyada.net, Nitin Patil , linux-kernel@vger.kernel.org Subject: [PATCH 3/3] drm/tinydrm: new driver for ILI9341 display panels Date: Mon, 14 May 2018 20:43:49 -0500 Message-Id: <20180515014349.26226-4-david@lechnology.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180515014349.26226-1-david@lechnology.com> References: <20180515014349.26226-1-david@lechnology.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vern.gendns.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lechnology.com X-Get-Message-Sender-Via: vern.gendns.com: authenticated_id: davidmain+lechnology.com/only user confirmed/virtual account not confirmed X-Authenticated-Sender: vern.gendns.com: davidmain@lechnology.com X-Source: X-Source-Args: X-Source-Dir: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds a new driver for display panels that use the Ilitek ILI9341 controller. It currently supports a single display panel, namely the YX240QV29-T (e.g. Adafruit 2.4" TFT). The init sequence is from the Adafruit Python library for the ILI9341 controller. https://github.com/adafruit/Adafruit_Python_ILI9341 Signed-off-by: David Lechner --- MAINTAINERS | 6 + drivers/gpu/drm/tinydrm/Kconfig | 10 ++ drivers/gpu/drm/tinydrm/Makefile | 1 + drivers/gpu/drm/tinydrm/ili9341.c | 239 ++++++++++++++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 drivers/gpu/drm/tinydrm/ili9341.c diff --git a/MAINTAINERS b/MAINTAINERS index bc219de9cbee..ffa099abbd79 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4480,6 +4480,12 @@ S: Maintained F: drivers/gpu/drm/tinydrm/ili9225.c F: Documentation/devicetree/bindings/display/ilitek,ili9225.txt +DRM DRIVER FOR ILITEK ILI9341 PANELS +M: David Lechner +S: Maintained +F: drivers/gpu/drm/tinydrm/ili9341.c +F: Documentation/devicetree/bindings/display/ilitek,ili9341.txt + DRM DRIVER FOR INTEL I810 VIDEO CARDS S: Orphan / Obsolete F: drivers/gpu/drm/i810/ diff --git a/drivers/gpu/drm/tinydrm/Kconfig b/drivers/gpu/drm/tinydrm/Kconfig index 4592a5e3f20b..7a8008b0783f 100644 --- a/drivers/gpu/drm/tinydrm/Kconfig +++ b/drivers/gpu/drm/tinydrm/Kconfig @@ -20,6 +20,16 @@ config TINYDRM_ILI9225 If M is selected the module will be called ili9225. +config TINYDRM_ILI9341 + tristate "DRM support for ILI9341 display panels" + depends on DRM_TINYDRM && SPI + select TINYDRM_MIPI_DBI + help + DRM driver for the following Ilitek ILI9341 panels: + * YX240QV29-T 2.4" 240x320 TFT (Adafruit 2.4") + + If M is selected the module will be called ili9341. + config TINYDRM_MI0283QT tristate "DRM support for MI0283QT" depends on DRM_TINYDRM && SPI diff --git a/drivers/gpu/drm/tinydrm/Makefile b/drivers/gpu/drm/tinydrm/Makefile index 49a111929724..14d99080665a 100644 --- a/drivers/gpu/drm/tinydrm/Makefile +++ b/drivers/gpu/drm/tinydrm/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_TINYDRM_MIPI_DBI) += mipi-dbi.o # Displays obj-$(CONFIG_TINYDRM_ILI9225) += ili9225.o +obj-$(CONFIG_TINYDRM_ILI9341) += ili9341.o obj-$(CONFIG_TINYDRM_MI0283QT) += mi0283qt.o obj-$(CONFIG_TINYDRM_REPAPER) += repaper.o obj-$(CONFIG_TINYDRM_ST7586) += st7586.o diff --git a/drivers/gpu/drm/tinydrm/ili9341.c b/drivers/gpu/drm/tinydrm/ili9341.c new file mode 100644 index 000000000000..2ce4244a68c3 --- /dev/null +++ b/drivers/gpu/drm/tinydrm/ili9341.c @@ -0,0 +1,239 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * DRM driver for Ilitek ILI9341 panels + * + * Copyright 2018 David Lechner + * + * Based on mi0283qt.c: + * Copyright 2016 Noralf Trønnes + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include