From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sakari Ailus Subject: [PATCH v3 06/23] v4l: mediabus: Recognise CSI-2 D-PHY and C-PHY Date: Thu, 13 Sep 2018 00:29:25 +0300 Message-ID: <20180912212942.19641-7-sakari.ailus@linux.intel.com> References: <20180912212942.19641-1-sakari.ailus@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180912212942.19641-1-sakari.ailus@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org Cc: devicetree@vger.kernel.org, jacopo@jmondi.org, dri-devel@lists.freedesktop.org, slongerbeam@gmail.com, niklas.soderlund@ragnatech.se List-Id: devicetree@vger.kernel.org VGhlIENTSS0yIGJ1cyBtYXkgdXNlIGVpdGhlciBELVBIWSBvciBDLVBIWS4gTWFrZSB0aGlzIHZp c2libGUgaW4gbWVkaWEKYnVzIGVudW0uCgpTaWduZWQtb2ZmLWJ5OiBTYWthcmkgQWlsdXMgPHNh a2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20+ClRlc3RlZC1ieTogU3RldmUgTG9uZ2VyYmVhbSA8 c3RldmVfbG9uZ2VyYmVhbUBtZW50b3IuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2lwdS12My9pcHUt Y3NpLmMgICAgICAgICAgICAgICAgICAgICB8IDYgKysrLS0tCiBkcml2ZXJzL21lZGlhL2kyYy9h ZHY3MTgwLmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL21lZGlhL2kyYy9v djU2NDAuYyAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KIGRyaXZlcnMvbWVkaWEvaTJj L292NTY0NS5jICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIGRyaXZlcnMvbWVkaWEvaTJj L292NzI1MS5jICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQogZHJpdmVycy9tZWRpYS9p MmMvczVjNzNtMy9zNWM3M20zLWNvcmUuYyAgICAgICAgIHwgMiArLQogZHJpdmVycy9tZWRpYS9p MmMvczVrNWJhZi5jICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCiBkcml2ZXJzL21lZGlh L2kyYy9zNWs2YWEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL21lZGlh L2kyYy9zbWlhcHAvc21pYXBwLWNvcmUuYyAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL21lZGlh L2kyYy9zb2NfY2FtZXJhL292NTY0Mi5jICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL21lZGlh L2kyYy90YzM1ODc0My5jICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KIGRyaXZlcnMvbWVk aWEvcGNpL2ludGVsL2lwdTMvaXB1My1jaW8yLmMgICAgICAgICB8IDIgKy0KIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vY2FkZW5jZS9jZG5zLWNzaTJyeC5jICAgICB8IDIgKy0KIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vY2FkZW5jZS9jZG5zLWNzaTJ0eC5jICAgICB8IDIgKy0KIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbWFydmVsbC1jY2ljL21jYW0tY29yZS5jICB8IDQgKystLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tYXJ2ZWxsLWNjaWMvbW1wLWRyaXZlci5jIHwgMiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9pc3AuYyAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9weGFfY2FtZXJhLmMgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9yY2FyLXZpbi9yY2FyLWNzaTIuYyAgICAgIHwgMiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9zb2NfY2FtZXJhL3NvY19tZWRpYWJ1cy5jIHwgMiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9zdG0zMi9zdG0zMi1kY21pLmMgICAgICAgIHwgMiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS90aS12cGUvY2FsLmMgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9t ZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYyAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9z dGFnaW5nL21lZGlhL2lteC9pbXgtbWVkaWEtY3NpLmMgICAgICAgIHwgMiArLQogZHJpdmVycy9z dGFnaW5nL21lZGlhL2lteC9pbXg2LW1pcGktY3NpMi5jICAgICAgIHwgMiArLQogZHJpdmVycy9z dGFnaW5nL21lZGlhL2lteDA3NC9pbXgwNzQuYyAgICAgICAgICAgIHwgMiArLQogaW5jbHVkZS9t ZWRpYS92NGwyLW1lZGlhYnVzLmggICAgICAgICAgICAgICAgICAgIHwgNiArKysrLS0KIDI3IGZp bGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtY3NpLmMgYi9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1 LWNzaS5jCmluZGV4IDk1NGVlZmUxNDRlMi4uYWEwZTMwYTJiYTE4IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9pcHUtdjMvaXB1LWNzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtY3Np LmMKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgaW50IG1idXNfY29kZV90b19idXNfY2ZnKHN0 cnVjdCBpcHVfY3NpX2J1c19jb25maWcgKmNmZywgdTMyIG1idXNfY29kZSwKIAljYXNlIE1FRElB X0JVU19GTVRfQkdSNTY1XzJYOF9MRToKIAljYXNlIE1FRElBX0JVU19GTVRfUkdCNTY1XzJYOF9C RToKIAljYXNlIE1FRElBX0JVU19GTVRfUkdCNTY1XzJYOF9MRToKLQkJaWYgKG1idXNfdHlwZSA9 PSBWNEwyX01CVVNfQ1NJMikKKwkJaWYgKG1idXNfdHlwZSA9PSBWNEwyX01CVVNfQ1NJMl9EUEhZ KQogCQkJY2ZnLT5kYXRhX2ZtdCA9IENTSV9TRU5TX0NPTkZfREFUQV9GTVRfUkdCNTY1OwogCQll bHNlCiAJCQljZmctPmRhdGFfZm10ID0gQ1NJX1NFTlNfQ09ORl9EQVRBX0ZNVF9CQVlFUjsKQEAg LTM1OSw3ICszNTksNyBAQCBzdGF0aWMgaW50IGZpbGxfY3NpX2J1c19jZmcoc3RydWN0IGlwdV9j c2lfYnVzX2NvbmZpZyAqY3NpY2ZnLAogCQllbHNlCiAJCQljc2ljZmctPmNsa19tb2RlID0gSVBV X0NTSV9DTEtfTU9ERV9DQ0lSNjU2X1BST0dSRVNTSVZFOwogCQlicmVhazsKLQljYXNlIFY0TDJf TUJVU19DU0kyOgorCWNhc2UgVjRMMl9NQlVTX0NTSTJfRFBIWToKIAkJLyoKIAkJICogTUlQSSBD U0ktMiByZXF1aXJlcyBub24gZ2F0ZWQgY2xvY2sgbW9kZSwgYWxsIG90aGVyCiAJCSAqIHBhcmFt ZXRlcnMgYXJlIG5vdCBhcHBsaWNhYmxlIGZvciBNSVBJIENTSS0yIGJ1cy4KQEAgLTYxMSw3ICs2 MTEsNyBAQCBpbnQgaXB1X2NzaV9zZXRfbWlwaV9kYXRhdHlwZShzdHJ1Y3QgaXB1X2NzaSAqY3Np LCB1MzIgdmMsCiAJaWYgKHZjID4gMykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXQgPSBtYnVz X2NvZGVfdG9fYnVzX2NmZygmY2ZnLCBtYnVzX2ZtdC0+Y29kZSwgVjRMMl9NQlVTX0NTSTIpOwor CXJldCA9IG1idXNfY29kZV90b19idXNfY2ZnKCZjZmcsIG1idXNfZm10LT5jb2RlLCBWNEwyX01C VVNfQ1NJMl9EUEhZKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE4MC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE4 MC5jCmluZGV4IGRlMTAzNjdkNTUwYi4uMjg0OGE0NmQxNDlhIDEwMDY0NAotLS0gYS9kcml2ZXJz L21lZGlhL2kyYy9hZHY3MTgwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE4MC5jCkBA IC03NjEsNyArNzYxLDcgQEAgc3RhdGljIGludCBhZHY3MTgwX2dfbWJ1c19jb25maWcoc3RydWN0 IHY0bDJfc3ViZGV2ICpzZCwKIAlzdHJ1Y3QgYWR2NzE4MF9zdGF0ZSAqc3RhdGUgPSB0b19zdGF0 ZShzZCk7CiAKIAlpZiAoc3RhdGUtPmNoaXBfaW5mby0+ZmxhZ3MgJiBBRFY3MTgwX0ZMQUdfTUlQ SV9DU0kyKSB7Ci0JCWNmZy0+dHlwZSA9IFY0TDJfTUJVU19DU0kyOworCQljZmctPnR5cGUgPSBW NEwyX01CVVNfQ1NJMl9EUEhZOwogCQljZmctPmZsYWdzID0gVjRMMl9NQlVTX0NTSTJfMV9MQU5F IHwKIAkJCQlWNEwyX01CVVNfQ1NJMl9DSEFOTkVMXzAgfAogCQkJCVY0TDJfTUJVU19DU0kyX0NP TlRJTlVPVVNfQ0xPQ0s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYyBi L2RyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jCmluZGV4IDJkZGQ4NmRkZjY0OS4uYjY1NzU5MjYw MmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYworKysgYi9kcml2ZXJz L21lZGlhL2kyYy9vdjU2NDAuYwpAQCAtMTc4Nyw3ICsxNzg3LDcgQEAgc3RhdGljIGludCBvdjU2 NDBfc2V0X3Bvd2VyKHN0cnVjdCBvdjU2NDBfZGV2ICpzZW5zb3IsIGJvb2wgb24pCiAJCWlmIChy ZXQpCiAJCQlnb3RvIHBvd2VyX29mZjsKIAotCQlpZiAoc2Vuc29yLT5lcC5idXNfdHlwZSA9PSBW NEwyX01CVVNfQ1NJMikgeworCQlpZiAoc2Vuc29yLT5lcC5idXNfdHlwZSA9PSBWNEwyX01CVVNf Q1NJMl9EUEhZKSB7CiAJCQkvKgogCQkJICogc3RhcnQgc3RyZWFtaW5nIGJyaWVmbHkgZm9sbG93 ZWQgYnkgc3RyZWFtIG9mZiBpbgogCQkJICogb3JkZXIgdG8gY29heCB0aGUgY2xvY2sgbGFuZSBp bnRvIExQLTExIHN0YXRlLgpAQCAtMjU1Nyw3ICsyNTU3LDcgQEAgc3RhdGljIGludCBvdjU2NDBf c19zdHJlYW0oc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgaW50IGVuYWJsZSkKIAkJCXNlbnNvci0+ cGVuZGluZ19mbXRfY2hhbmdlID0gZmFsc2U7CiAJCX0KIAotCQlpZiAoc2Vuc29yLT5lcC5idXNf dHlwZSA9PSBWNEwyX01CVVNfQ1NJMikKKwkJaWYgKHNlbnNvci0+ZXAuYnVzX3R5cGUgPT0gVjRM Ml9NQlVTX0NTSTJfRFBIWSkKIAkJCXJldCA9IG92NTY0MF9zZXRfc3RyZWFtX21pcGkoc2Vuc29y LCBlbmFibGUpOwogCQllbHNlCiAJCQlyZXQgPSBvdjU2NDBfc2V0X3N0cmVhbV9kdnAoc2Vuc29y LCBlbmFibGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ1LmMgYi9kcml2 ZXJzL21lZGlhL2kyYy9vdjU2NDUuYwppbmRleCAxNzIyY2RhYjBkYWYuLjVlYmE4ZGQ3MjIyYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ1LmMKKysrIGIvZHJpdmVycy9tZWRp YS9pMmMvb3Y1NjQ1LmMKQEAgLTExMjcsNyArMTEyNyw3IEBAIHN0YXRpYyBpbnQgb3Y1NjQ1X3By b2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWYg KG92NTY0NS0+ZXAuYnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAob3Y1NjQ1LT5l cC5idXNfdHlwZSAhPSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7CiAJCWRldl9lcnIoZGV2LCAiaW52 YWxpZCBidXMgdHlwZSwgbXVzdCBiZSBDU0kyXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y3MjUxLmMgYi9kcml2ZXJzL21lZGlhL2ky Yy9vdjcyNTEuYwppbmRleCBkM2ViYjc1MjlmY2EuLjBjMTAyMDNmODIyYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvb3Y3MjUxLmMKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y3MjUx LmMKQEAgLTEyNzksOSArMTI3OSw5IEBAIHN0YXRpYyBpbnQgb3Y3MjUxX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWYgKG92NzI1MS0+ZXAu YnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAob3Y3MjUxLT5lcC5idXNfdHlwZSAh PSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7CiAJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBidXMgdHlw ZSAoJXUpLCBtdXN0IGJlIENTSTIgKCV1KVxuIiwKLQkJCW92NzI1MS0+ZXAuYnVzX3R5cGUsIFY0 TDJfTUJVU19DU0kyKTsKKwkJCW92NzI1MS0+ZXAuYnVzX3R5cGUsIFY0TDJfTUJVU19DU0kyX0RQ SFkpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv aTJjL3M1YzczbTMvczVjNzNtMy1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1 YzczbTMtY29yZS5jCmluZGV4IDIxY2E1MTg2ZjllZC4uNDc5Yzk3NTNlODYzIDEwMDY0NAotLS0g YS9kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY29yZS5jCisrKyBiL2RyaXZlcnMv bWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jb3JlLmMKQEAgLTE2NDQsNyArMTY0NCw3IEBAIHN0 YXRpYyBpbnQgczVjNzNtM19nZXRfcGxhdGZvcm1fZGF0YShzdHJ1Y3QgczVjNzNtMyAqc3RhdGUp CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmIChlcC5idXNfdHlwZSAhPSBWNEwyX01C VVNfQ1NJMikgeworCWlmIChlcC5idXNfdHlwZSAhPSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7CiAJ CWRldl9lcnIoZGV2LCAidW5zdXBwb3J0ZWQgYnVzIHR5cGVcbiIpOwogCQlyZXR1cm4gLUVJTlZB TDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9zNWs1YmFmLmMgYi9kcml2ZXJz L21lZGlhL2kyYy9zNWs1YmFmLmMKaW5kZXggNTAwN2M5NjU5MzQyLi40YzQxYTc3MGIxMzIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYworKysgYi9kcml2ZXJzL21lZGlh L2kyYy9zNWs1YmFmLmMKQEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMgaW50IHM1azViYWZfaHdf c2V0X3ZpZGVvX2J1cyhzdHJ1Y3QgczVrNWJhZiAqc3RhdGUpCiB7CiAJdTE2IGVuX3BrdHM7CiAK LQlpZiAoc3RhdGUtPmJ1c190eXBlID09IFY0TDJfTUJVU19DU0kyKQorCWlmIChzdGF0ZS0+YnVz X3R5cGUgPT0gVjRMMl9NQlVTX0NTSTJfRFBIWSkKIAkJZW5fcGt0cyA9IEVOX1BBQ0tFVFNfQ1NJ MjsKIAllbHNlCiAJCWVuX3BrdHMgPSAwOwpAQCAtMTg3NSw3ICsxODc1LDcgQEAgc3RhdGljIGlu dCBzNWs1YmFmX3BhcnNlX2RldmljZV9ub2RlKHN0cnVjdCBzNWs1YmFmICpzdGF0ZSwgc3RydWN0 IGRldmljZSAqZGV2KQogCXN0YXRlLT5idXNfdHlwZSA9IGVwLmJ1c190eXBlOwogCiAJc3dpdGNo IChzdGF0ZS0+YnVzX3R5cGUpIHsKLQljYXNlIFY0TDJfTUJVU19DU0kyOgorCWNhc2UgVjRMMl9N QlVTX0NTSTJfRFBIWToKIAkJc3RhdGUtPm5sYW5lcyA9IGVwLmJ1cy5taXBpX2NzaTIubnVtX2Rh dGFfbGFuZXM7CiAJCWJyZWFrOwogCWNhc2UgVjRMMl9NQlVTX1BBUkFMTEVMOgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvczVrNmFhLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9zNWs2YWEu YwppbmRleCA1MmNhMDMzZjcwNjkuLjg3ZjkzNTE2NzhmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZWRpYS9pMmMvczVrNmFhLmMKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvczVrNmFhLmMKQEAgLTY4 OCw3ICs2ODgsNyBAQCBzdGF0aWMgaW50IHM1azZhYV9jb25maWd1cmVfdmlkZW9fYnVzKHN0cnVj dCBzNWs2YWEgKnM1azZhYSwKIAkgKiBidXQgdGhlcmUgaXMgbm90aGluZyBpbmRpY2F0aW5nIGhv dyB0byBzd2l0Y2ggYmV0d2VlbiBib3RoCiAJICogaW4gdGhlIGRhdGFzaGVldC4gRm9yIG5vdyBk ZWZhdWx0IEJULjYwMSBpbnRlcmZhY2UgaXMgYXNzdW1lZC4KIAkgKi8KLQlpZiAoYnVzX3R5cGUg PT0gVjRMMl9NQlVTX0NTSTIpCisJaWYgKGJ1c190eXBlID09IFY0TDJfTUJVU19DU0kyX0RQSFkp CiAJCWNmZyA9IG5sYW5lczsKIAllbHNlIGlmIChidXNfdHlwZSAhPSBWNEwyX01CVVNfUEFSQUxM RUwpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvc21p YXBwL3NtaWFwcC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9zbWlhcHAvc21pYXBwLWNvcmUu YwppbmRleCAxMjM2NjgzZGE4ZjcuLjllMzNjMjAwOGJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZWRpYS9pMmMvc21pYXBwL3NtaWFwcC1jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvc21p YXBwL3NtaWFwcC1jb3JlLmMKQEAgLTI3ODQsNyArMjc4NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc21p YXBwX2h3Y29uZmlnICpzbWlhcHBfZ2V0X2h3Y29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJ Z290byBvdXRfZXJyOwogCiAJc3dpdGNoIChidXNfY2ZnLT5idXNfdHlwZSkgewotCWNhc2UgVjRM Ml9NQlVTX0NTSTI6CisJY2FzZSBWNEwyX01CVVNfQ1NJMl9EUEhZOgogCQlod2NmZy0+Y3NpX3Np Z25hbGxpbmdfbW9kZSA9IFNNSUFQUF9DU0lfU0lHTkFMTElOR19NT0RFX0NTSTI7CiAJCWh3Y2Zn LT5sYW5lcyA9IGJ1c19jZmctPmJ1cy5taXBpX2NzaTIubnVtX2RhdGFfbGFuZXM7CiAJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvc29jX2NhbWVyYS9vdjU2NDIuYyBiL2Ry aXZlcnMvbWVkaWEvaTJjL3NvY19jYW1lcmEvb3Y1NjQyLmMKaW5kZXggMzlmNDIwZGI5YzcwLi5i YzA0NTI1OTUxMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3NvY19jYW1lcmEvb3Y1 NjQyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvc29jX2NhbWVyYS9vdjU2NDIuYwpAQCAtOTEz LDcgKzkxMyw3IEBAIHN0YXRpYyBpbnQgb3Y1NjQyX2dldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJf c3ViZGV2ICpzZCwKIHN0YXRpYyBpbnQgb3Y1NjQyX2dfbWJ1c19jb25maWcoc3RydWN0IHY0bDJf c3ViZGV2ICpzZCwKIAkJCQlzdHJ1Y3QgdjRsMl9tYnVzX2NvbmZpZyAqY2ZnKQogewotCWNmZy0+ dHlwZSA9IFY0TDJfTUJVU19DU0kyOworCWNmZy0+dHlwZSA9IFY0TDJfTUJVU19DU0kyX0RQSFk7 CiAJY2ZnLT5mbGFncyA9IFY0TDJfTUJVU19DU0kyXzJfTEFORSB8IFY0TDJfTUJVU19DU0kyX0NI QU5ORUxfMCB8CiAJCQkJCVY0TDJfTUJVU19DU0kyX0NPTlRJTlVPVVNfQ0xPQ0s7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL3RjMzU4NzQzLmMgYi9kcml2ZXJzL21lZGlhL2kyYy90 YzM1ODc0My5jCmluZGV4IDQ0YzQxOTMzNDE1YS4uNmEyMDY0NTk3MTI0IDEwMDY0NAotLS0gYS9k cml2ZXJzL21lZGlhL2kyYy90YzM1ODc0My5jCisrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3RjMzU4 NzQzLmMKQEAgLTE2MDcsNyArMTYwNyw3IEBAIHN0YXRpYyBpbnQgdGMzNTg3NDNfZ19tYnVzX2Nv bmZpZyhzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLAogewogCXN0cnVjdCB0YzM1ODc0M19zdGF0ZSAq c3RhdGUgPSB0b19zdGF0ZShzZCk7CiAKLQljZmctPnR5cGUgPSBWNEwyX01CVVNfQ1NJMjsKKwlj ZmctPnR5cGUgPSBWNEwyX01CVVNfQ1NJMl9EUEhZOwogCiAJLyogU3VwcG9ydCBmb3Igbm9uLWNv bnRpbnVvdXMgQ1NJLTIgY2xvY2sgaXMgbWlzc2luZyBpbiB0aGUgZHJpdmVyICovCiAJY2ZnLT5m bGFncyA9IFY0TDJfTUJVU19DU0kyX0NPTlRJTlVPVVNfQ0xPQ0s7CkBAIC0xOTIyLDcgKzE5MjIs NyBAQCBzdGF0aWMgaW50IHRjMzU4NzQzX3Byb2JlX29mKHN0cnVjdCB0YzM1ODc0M19zdGF0ZSAq c3RhdGUpCiAJCWdvdG8gcHV0X25vZGU7CiAJfQogCi0JaWYgKGVuZHBvaW50LT5idXNfdHlwZSAh PSBWNEwyX01CVVNfQ1NJMiB8fAorCWlmIChlbmRwb2ludC0+YnVzX3R5cGUgIT0gVjRMMl9NQlVT X0NTSTJfRFBIWSB8fAogCSAgICBlbmRwb2ludC0+YnVzLm1pcGlfY3NpMi5udW1fZGF0YV9sYW5l cyA9PSAwIHx8CiAJICAgIGVuZHBvaW50LT5ucl9vZl9saW5rX2ZyZXF1ZW5jaWVzID09IDApIHsK IAkJZGV2X2VycihkZXYsICJtaXNzaW5nIENTSS0yIHByb3BlcnRpZXMgaW4gZW5kcG9pbnRcbiIp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1My9pcHUzLWNpbzIuYyBi L2RyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdTMvaXB1My1jaW8yLmMKaW5kZXggMDZiNDIyMjMz MjE1Li40NTJlYjliNDIxNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lw dTMvaXB1My1jaW8yLmMKKysrIGIvZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1My9pcHUzLWNp bzIuYwpAQCAtMTQ4Miw3ICsxNDgyLDcgQEAgc3RhdGljIGludCBjaW8yX2Z3bm9kZV9wYXJzZShz dHJ1Y3QgZGV2aWNlICpkZXYsCiAJc3RydWN0IHNlbnNvcl9hc3luY19zdWJkZXYgKnNfYXNkID0K IAkJCWNvbnRhaW5lcl9vZihhc2QsIHN0cnVjdCBzZW5zb3JfYXN5bmNfc3ViZGV2LCBhc2QpOwog Ci0JaWYgKHZlcC0+YnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAodmVwLT5idXNf dHlwZSAhPSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7CiAJCWRldl9lcnIoZGV2LCAiT25seSBDU0ky IGJ1cyB0eXBlIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWRcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsK IAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2NhZGVuY2UvY2Rucy1jc2ky cnguYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vY2FkZW5jZS9jZG5zLWNzaTJyeC5jCmluZGV4 IGRhM2ViMzQ5NzE2Zi4uMDc3NmEzNGYyOGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2NhZGVuY2UvY2Rucy1jc2kycnguYworKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L2NhZGVuY2UvY2Rucy1jc2kycnguYwpAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBpbnQgY3Np MnJ4X3BhcnNlX2R0KHN0cnVjdCBjc2kycnhfcHJpdiAqY3NpMnJ4KQogCQlyZXR1cm4gcmV0Owog CX0KIAotCWlmICh2NGwyX2VwLmJ1c190eXBlICE9IFY0TDJfTUJVU19DU0kyKSB7CisJaWYgKHY0 bDJfZXAuYnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTJfRFBIWSkgewogCQlkZXZfZXJyKGNzaTJy eC0+ZGV2LCAiVW5zdXBwb3J0ZWQgbWVkaWEgYnVzIHR5cGU6IDB4JXhcbiIsCiAJCQl2NGwyX2Vw LmJ1c190eXBlKTsKIAkJb2Zfbm9kZV9wdXQoZXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9jYWRlbmNlL2NkbnMtY3NpMnR4LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L2NhZGVuY2UvY2Rucy1jc2kydHguYwppbmRleCA0MGQwZGU2OTBmZjQuLjYyMjRkYWY4OTFkNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jYWRlbmNlL2NkbnMtY3NpMnR4LmMK KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jYWRlbmNlL2NkbnMtY3NpMnR4LmMKQEAgLTQ0 Niw3ICs0NDYsNyBAQCBzdGF0aWMgaW50IGNzaTJ0eF9jaGVja19sYW5lcyhzdHJ1Y3QgY3NpMnR4 X3ByaXYgKmNzaTJ0eCkKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKHY0bDJfZXAuYnVzX3R5cGUg IT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAodjRsMl9lcC5idXNfdHlwZSAhPSBWNEwyX01CVVNf Q1NJMl9EUEhZKSB7CiAJCWRldl9lcnIoY3NpMnR4LT5kZXYsICJVbnN1cHBvcnRlZCBtZWRpYSBi dXMgdHlwZTogMHgleFxuIiwKIAkJCXY0bDJfZXAuYnVzX3R5cGUpOwogCQlyZXQgPSAtRUlOVkFM OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tYXJ2ZWxsLWNjaWMvbWNhbS1j b3JlLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21hcnZlbGwtY2NpYy9tY2FtLWNvcmUuYwpp bmRleCBmOGUxYWYxMDE4MTcuLmYxYjMwMTgxMDI2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tYXJ2ZWxsLWNjaWMvbWNhbS1jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tYXJ2ZWxsLWNjaWMvbWNhbS1jb3JlLmMKQEAgLTc5NCw3ICs3OTQsNyBAQCBzdGF0 aWMgdm9pZCBtY2FtX2N0bHJfaW1hZ2Uoc3RydWN0IG1jYW1fY2FtZXJhICpjYW0pCiAJLyoKIAkg KiBUaGlzIGZpZWxkIGNvbnRyb2xzIHRoZSBnZW5lcmF0aW9uIG9mIEVPRihEVlAgb25seSkKIAkg Ki8KLQlpZiAoY2FtLT5idXNfdHlwZSAhPSBWNEwyX01CVVNfQ1NJMikKKwlpZiAoY2FtLT5idXNf dHlwZSAhPSBWNEwyX01CVVNfQ1NJMl9EUEhZKQogCQltY2FtX3JlZ19zZXRfYml0KGNhbSwgUkVH X0NUUkwwLAogCQkJCUMwX0VPRl9WU1lOQyB8IEMwX1ZFREdFX0NUUkwpOwogfQpAQCAtMTAyMyw3 ICsxMDIzLDcgQEAgc3RhdGljIGludCBtY2FtX3JlYWRfc2V0dXAoc3RydWN0IG1jYW1fY2FtZXJh ICpjYW0pCiAJCWNhbS0+Y2FsY19kcGh5KGNhbSk7CiAJY2FtX2RiZyhjYW0sICJjYW1lcmE6IERQ SFkgc2V0czogZHBoeTM9MHgleCwgZHBoeTU9MHgleCwgZHBoeTY9MHgleFxuIiwKIAkJCWNhbS0+ ZHBoeVswXSwgY2FtLT5kcGh5WzFdLCBjYW0tPmRwaHlbMl0pOwotCWlmIChjYW0tPmJ1c190eXBl ID09IFY0TDJfTUJVU19DU0kyKQorCWlmIChjYW0tPmJ1c190eXBlID09IFY0TDJfTUJVU19DU0ky X0RQSFkpCiAJCW1jYW1fZW5hYmxlX21pcGkoY2FtKTsKIAllbHNlCiAJCW1jYW1fZGlzYWJsZV9t aXBpKGNhbSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21hcnZlbGwtY2Np Yy9tbXAtZHJpdmVyLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21hcnZlbGwtY2NpYy9tbXAt ZHJpdmVyLmMKaW5kZXggNDE5NjhjZDM4OGFjLi43MGEyODMzZGIwZDEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbWFydmVsbC1jY2ljL21tcC1kcml2ZXIuYworKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL21hcnZlbGwtY2NpYy9tbXAtZHJpdmVyLmMKQEAgLTM2Miw3ICsz NjIsNyBAQCBzdGF0aWMgaW50IG1tcGNhbV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogCW1jYW0tPm1jbGtfZGl2ID0gcGRhdGEtPm1jbGtfZGl2OwogCW1jYW0tPmJ1c190eXBl ID0gcGRhdGEtPmJ1c190eXBlOwogCW1jYW0tPmRwaHkgPSBwZGF0YS0+ZHBoeTsKLQlpZiAobWNh bS0+YnVzX3R5cGUgPT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAobWNhbS0+YnVzX3R5cGUgPT0g VjRMMl9NQlVTX0NTSTJfRFBIWSkgewogCQljYW0tPm1pcGlfY2xrID0gZGV2bV9jbGtfZ2V0KG1j YW0tPmRldiwgIm1pcGkiKTsKIAkJaWYgKChJU19FUlIoY2FtLT5taXBpX2NsaykgJiYgbWNhbS0+ ZHBoeVsyXSA9PSAwKSkKIAkJCXJldHVybiBQVFJfRVJSKGNhbS0+bWlwaV9jbGspOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9pc3AuYyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vb21hcDNpc3AvaXNwLmMKaW5kZXggZjVkZGU4Nzc0Mzk5Li43N2ZiNzk4N2I0 MmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vb21hcDNpc3AvaXNwLmMKKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC9pc3AuYwpAQCAtMjA1NCw3ICsyMDU0 LDcgQEAgc3RhdGljIGludCBpc3BfZndub2RlX3BhcnNlKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJ CWRldl9kYmcoZGV2LCAiQ1NJLTEvQ0NQLTIgY29uZmlndXJhdGlvblxuIik7CiAJCQljc2kxID0g dHJ1ZTsKIAkJCWJyZWFrOwotCQljYXNlIFY0TDJfTUJVU19DU0kyOgorCQljYXNlIFY0TDJfTUJV U19DU0kyX0RQSFk6CiAJCQlkZXZfZGJnKGRldiwgIkNTSS0yIGNvbmZpZ3VyYXRpb25cbiIpOwog CQkJY3NpMSA9IGZhbHNlOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3B4YV9jYW1lcmEuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcHhhX2NhbWVyYS5j CmluZGV4IDZmNTU5M2M4YzRjNi4uYTQ3YmUxMjQyY2Y0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3B4YV9jYW1lcmEuYworKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3B4 YV9jYW1lcmEuYwpAQCAtNjMzLDcgKzYzMyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcHhhX21i dXNfY29uZmlnX2NvbXBhdGlibGUoY29uc3Qgc3RydWN0IHY0bDJfbWJ1c19jb25maWcgKmNmCiAJ CW1vZGUgPSBjb21tb25fZmxhZ3MgJiAoVjRMMl9NQlVTX01BU1RFUiB8IFY0TDJfTUJVU19TTEFW RSk7CiAJCXJldHVybiAoIWhzeW5jIHx8ICF2c3luYyB8fCAhcGNsayB8fCAhZGF0YSB8fCAhbW9k ZSkgPwogCQkJMCA6IGNvbW1vbl9mbGFnczsKLQljYXNlIFY0TDJfTUJVU19DU0kyOgorCWNhc2Ug VjRMMl9NQlVTX0NTSTJfRFBIWToKIAkJbWlwaV9sYW5lcyA9IGNvbW1vbl9mbGFncyAmIFY0TDJf TUJVU19DU0kyX0xBTkVTOwogCQltaXBpX2Nsb2NrID0gY29tbW9uX2ZsYWdzICYgKFY0TDJfTUJV U19DU0kyX05PTkNPTlRJTlVPVVNfQ0xPQ0sgfAogCQkJCQkgICAgIFY0TDJfTUJVU19DU0kyX0NP TlRJTlVPVVNfQ0xPQ0spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yY2Fy LXZpbi9yY2FyLWNzaTIuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmNhci12aW4vcmNhci1j c2kyLmMKaW5kZXggNzVlYmQ5YzIzODEzLi4yNWVkYzJlZGQxOTcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vcmNhci12aW4vcmNhci1jc2kyLmMKKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9yY2FyLXZpbi9yY2FyLWNzaTIuYwpAQCAtNzE0LDcgKzcxNCw3IEBAIHN0YXRp YyBpbnQgcmNzaTJfcGFyc2VfdjRsMihzdHJ1Y3QgcmNhcl9jc2kyICpwcml2LAogCWlmICh2ZXAt PmJhc2UucG9ydCB8fCB2ZXAtPmJhc2UuaWQpCiAJCXJldHVybiAtRU5PVENPTk47CiAKLQlpZiAo dmVwLT5idXNfdHlwZSAhPSBWNEwyX01CVVNfQ1NJMikgeworCWlmICh2ZXAtPmJ1c190eXBlICE9 IFY0TDJfTUJVU19DU0kyX0RQSFkpIHsKIAkJZGV2X2Vycihwcml2LT5kZXYsICJVbnN1cHBvcnRl ZCBidXM6ICV1XG4iLCB2ZXAtPmJ1c190eXBlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zb2NfY2FtZXJhL3NvY19tZWRpYWJ1cy5j IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zb2NfY2FtZXJhL3NvY19tZWRpYWJ1cy5jCmluZGV4 IDBhZDRiMjgyNjZlNC4uYmU3NDAwOGVjMGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3NvY19jYW1lcmEvc29jX21lZGlhYnVzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9zb2NfY2FtZXJhL3NvY19tZWRpYWJ1cy5jCkBAIC01MDMsNyArNTAzLDcgQEAgdW5zaWdu ZWQgaW50IHNvY19tYnVzX2NvbmZpZ19jb21wYXRpYmxlKGNvbnN0IHN0cnVjdCB2NGwyX21idXNf Y29uZmlnICpjZmcsCiAJCW1vZGUgPSBjb21tb25fZmxhZ3MgJiAoVjRMMl9NQlVTX01BU1RFUiB8 IFY0TDJfTUJVU19TTEFWRSk7CiAJCXJldHVybiAoIWhzeW5jIHx8ICF2c3luYyB8fCAhcGNsayB8 fCAhZGF0YSB8fCAhbW9kZSkgPwogCQkJMCA6IGNvbW1vbl9mbGFnczsKLQljYXNlIFY0TDJfTUJV U19DU0kyOgorCWNhc2UgVjRMMl9NQlVTX0NTSTJfRFBIWToKIAkJbWlwaV9sYW5lcyA9IGNvbW1v bl9mbGFncyAmIFY0TDJfTUJVU19DU0kyX0xBTkVTOwogCQltaXBpX2Nsb2NrID0gY29tbW9uX2Zs YWdzICYgKFY0TDJfTUJVU19DU0kyX05PTkNPTlRJTlVPVVNfQ0xPQ0sgfAogCQkJCQkgICAgIFY0 TDJfTUJVU19DU0kyX0NPTlRJTlVPVVNfQ0xPQ0spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9zdG0zMi9zdG0zMi1kY21pLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N0 bTMyL3N0bTMyLWRjbWkuYwppbmRleCA0NTFlNmYzMDYwNGQuLmRhMjk2YTJhZmMyZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdG0zMi9zdG0zMi1kY21pLmMKKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9zdG0zMi9zdG0zMi1kY21pLmMKQEAgLTE2NjAsNyArMTY2MCw3 IEBAIHN0YXRpYyBpbnQgZGNtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQog CQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKLQlpZiAoZXAuYnVzX3R5cGUgPT0gVjRMMl9NQlVTX0NT STIpIHsKKwlpZiAoZXAuYnVzX3R5cGUgPT0gVjRMMl9NQlVTX0NTSTJfRFBIWSkgewogCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJDU0kgYnVzIG5vdCBzdXBwb3J0ZWRcbiIpOwogCQlyZXR1cm4gLUVO T0RFVjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3RpLXZwZS9jYWwu YyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdGktdnBlL2NhbC5jCmluZGV4IDgwZmQ1OWE0YjBm ZC4uODhkYTA1ZTFjMWY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3RpLXZw ZS9jYWwuYworKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3RpLXZwZS9jYWwuYwpAQCAtMTcx MCw3ICsxNzEwLDcgQEAgc3RhdGljIGludCBvZl9jYWxfY3JlYXRlX2luc3RhbmNlKHN0cnVjdCBj YWxfY3R4ICpjdHgsIGludCBpbnN0KQogCX0KIAl2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZShv Zl9md25vZGVfaGFuZGxlKHJlbW90ZV9lcCksIGVuZHBvaW50KTsKIAotCWlmIChlbmRwb2ludC0+ YnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAoZW5kcG9pbnQtPmJ1c190eXBlICE9 IFY0TDJfTUJVU19DU0kyX0RQSFkpIHsKIAkJY3R4X2VycihjdHgsICJQb3J0OiVkIHN1Yi1kZXZp Y2UgJXMgaXMgbm90IGEgQ1NJMiBkZXZpY2VcbiIsCiAJCQlpbnN0LCBzZW5zb3Jfbm9kZS0+bmFt ZSk7CiAJCWdvdG8gZXJyX3B1dF9yZW1vdGVfZXA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3Y0bDItY29yZS92NGwyLWZ3bm9kZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1m d25vZGUuYwppbmRleCAxMDRlZjdmMTc1NGQuLjU0MTYyMjE3YmIzNiAxMDA2NDQKLS0tIGEvZHJp dmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYworKysgYi9kcml2ZXJzL21lZGlhL3Y0 bDItY29yZS92NGwyLWZ3bm9kZS5jCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGludCB2NGwy X2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kyX2J1cyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndu b2RlLAogCX0KIAogCWJ1cy0+ZmxhZ3MgPSBmbGFnczsKLQl2ZXAtPmJ1c190eXBlID0gVjRMMl9N QlVTX0NTSTI7CisJdmVwLT5idXNfdHlwZSA9IFY0TDJfTUJVU19DU0kyX0RQSFk7CiAKIAlyZXR1 cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9pbXgvaW14LW1lZGlh LWNzaS5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteC9pbXgtbWVkaWEtY3NpLmMKaW5kZXgg OGU3NDlmZGVjOGQxLi41MzkxNTlkOWFmNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9pbXgvaW14LW1lZGlhLWNzaS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9pbXgv aW14LW1lZGlhLWNzaS5jCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qg Y3NpX3ByaXYgKnNkX3RvX2RldihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkZXYpCiAKIHN0YXRpYyBp bmxpbmUgYm9vbCBpc19wYXJhbGxlbF9idXMoc3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50ICpl cCkKIHsKLQlyZXR1cm4gZXAtPmJ1c190eXBlICE9IFY0TDJfTUJVU19DU0kyOworCXJldHVybiBl cC0+YnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTJfRFBIWTsKIH0KIAogc3RhdGljIGlubGluZSBi b29sIGlzX3BhcmFsbGVsXzE2Yml0X2J1cyhzdHJ1Y3QgdjRsMl9md25vZGVfZW5kcG9pbnQgKmVw KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteC9pbXg2LW1pcGktY3NpMi5j IGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteC9pbXg2LW1pcGktY3NpMi5jCmluZGV4IGQ2MGE1 MmNmYzY5Yy4uNmExY2VlNTVhNDliIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEv aW14L2lteDYtbWlwaS1jc2kyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteC9pbXg2 LW1pcGktY3NpMi5jCkBAIC01NjMsNyArNTYzLDcgQEAgc3RhdGljIGludCBjc2kyX3BhcnNlX2Vu ZHBvaW50KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JaWYg KHZlcC0+YnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTIpIHsKKwlpZiAodmVwLT5idXNfdHlwZSAh PSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7CiAJCXY0bDJfZXJyKCZjc2kyLT5zZCwgImludmFsaWQg YnVzIHR5cGUsIG11c3QgYmUgTUlQSSBDU0kyXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteDA3NC9pbXgwNzQuYyBiL2RyaXZl cnMvc3RhZ2luZy9tZWRpYS9pbXgwNzQvaW14MDc0LmMKaW5kZXggNzdmMWUwMjQzZDZlLi4wZWVl OWYwZGVmNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9pbXgwNzQvaW14MDc0 LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteDA3NC9pbXgwNzQuYwpAQCAtMjYzLDcg KzI2Myw3IEBAIHN0YXRpYyBpbnQgaW14MDc0X3NfcG93ZXIoc3RydWN0IHY0bDJfc3ViZGV2ICpz ZCwgaW50IG9uKQogc3RhdGljIGludCBpbXgwNzRfZ19tYnVzX2NvbmZpZyhzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkLAogCQkJCXN0cnVjdCB2NGwyX21idXNfY29uZmlnICpjZmcpCiB7Ci0JY2ZnLT50 eXBlID0gVjRMMl9NQlVTX0NTSTI7CisJY2ZnLT50eXBlID0gVjRMMl9NQlVTX0NTSTJfRFBIWTsK IAljZmctPmZsYWdzID0gVjRMMl9NQlVTX0NTSTJfMl9MQU5FIHwKIAkJVjRMMl9NQlVTX0NTSTJf Q0hBTk5FTF8wIHwKIAkJVjRMMl9NQlVTX0NTSTJfQ09OVElOVU9VU19DTE9DSzsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbWVkaWEvdjRsMi1tZWRpYWJ1cy5oIGIvaW5jbHVkZS9tZWRpYS92NGwyLW1l ZGlhYnVzLmgKaW5kZXggNGJiYjVmM2QyYjAyLi4yNmUxYzY0NGRlZDYgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbWVkaWEvdjRsMi1tZWRpYWJ1cy5oCisrKyBiL2luY2x1ZGUvbWVkaWEvdjRsMi1tZWRp YWJ1cy5oCkBAIC03NSwxNCArNzUsMTYgQEAKICAqCQkJYWxzbyBiZSB1c2VkIGZvciBCVC4xMTIw CiAgKiBAVjRMMl9NQlVTX0NTSTE6CU1JUEkgQ1NJLTEgc2VyaWFsIGludGVyZmFjZQogICogQFY0 TDJfTUJVU19DQ1AyOglDQ1AyIChDb21wYWN0IENhbWVyYSBQb3J0IDIpCi0gKiBAVjRMMl9NQlVT X0NTSTI6CU1JUEkgQ1NJLTIgc2VyaWFsIGludGVyZmFjZQorICogQFY0TDJfTUJVU19DU0kyX0RQ SFk6IE1JUEkgQ1NJLTIgc2VyaWFsIGludGVyZmFjZSwgd2l0aCBELVBIWQorICogQFY0TDJfTUJV U19DU0kyX0NQSFk6IE1JUEkgQ1NJLTIgc2VyaWFsIGludGVyZmFjZSwgd2l0aCBDLVBIWQogICov CiBlbnVtIHY0bDJfbWJ1c190eXBlIHsKIAlWNEwyX01CVVNfUEFSQUxMRUwsCiAJVjRMMl9NQlVT X0JUNjU2LAogCVY0TDJfTUJVU19DU0kxLAogCVY0TDJfTUJVU19DQ1AyLAotCVY0TDJfTUJVU19D U0kyLAorCVY0TDJfTUJVU19DU0kyX0RQSFksCisJVjRMMl9NQlVTX0NTSTJfQ1BIWSwKIH07CiAK IC8qKgotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:40956 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727854AbeIMCgK (ORCPT ); Wed, 12 Sep 2018 22:36:10 -0400 From: Sakari Ailus To: linux-media@vger.kernel.org Cc: devicetree@vger.kernel.org, slongerbeam@gmail.com, niklas.soderlund@ragnatech.se, jacopo@jmondi.org, p.zabel@pengutronix.de, dri-devel@lists.freedesktop.org Subject: [PATCH v3 06/23] v4l: mediabus: Recognise CSI-2 D-PHY and C-PHY Date: Thu, 13 Sep 2018 00:29:25 +0300 Message-Id: <20180912212942.19641-7-sakari.ailus@linux.intel.com> In-Reply-To: <20180912212942.19641-1-sakari.ailus@linux.intel.com> References: <20180912212942.19641-1-sakari.ailus@linux.intel.com> Sender: linux-media-owner@vger.kernel.org List-ID: The CSI-2 bus may use either D-PHY or C-PHY. Make this visible in media bus enum. Signed-off-by: Sakari Ailus Tested-by: Steve Longerbeam --- drivers/gpu/ipu-v3/ipu-csi.c | 6 +++--- drivers/media/i2c/adv7180.c | 2 +- drivers/media/i2c/ov5640.c | 4 ++-- drivers/media/i2c/ov5645.c | 2 +- drivers/media/i2c/ov7251.c | 4 ++-- drivers/media/i2c/s5c73m3/s5c73m3-core.c | 2 +- drivers/media/i2c/s5k5baf.c | 4 ++-- drivers/media/i2c/s5k6aa.c | 2 +- drivers/media/i2c/smiapp/smiapp-core.c | 2 +- drivers/media/i2c/soc_camera/ov5642.c | 2 +- drivers/media/i2c/tc358743.c | 4 ++-- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 2 +- drivers/media/platform/cadence/cdns-csi2rx.c | 2 +- drivers/media/platform/cadence/cdns-csi2tx.c | 2 +- drivers/media/platform/marvell-ccic/mcam-core.c | 4 ++-- drivers/media/platform/marvell-ccic/mmp-driver.c | 2 +- drivers/media/platform/omap3isp/isp.c | 2 +- drivers/media/platform/pxa_camera.c | 2 +- drivers/media/platform/rcar-vin/rcar-csi2.c | 2 +- drivers/media/platform/soc_camera/soc_mediabus.c | 2 +- drivers/media/platform/stm32/stm32-dcmi.c | 2 +- drivers/media/platform/ti-vpe/cal.c | 2 +- drivers/media/v4l2-core/v4l2-fwnode.c | 2 +- drivers/staging/media/imx/imx-media-csi.c | 2 +- drivers/staging/media/imx/imx6-mipi-csi2.c | 2 +- drivers/staging/media/imx074/imx074.c | 2 +- include/media/v4l2-mediabus.h | 6 ++++-- 27 files changed, 37 insertions(+), 35 deletions(-) diff --git a/drivers/gpu/ipu-v3/ipu-csi.c b/drivers/gpu/ipu-v3/ipu-csi.c index 954eefe144e2..aa0e30a2ba18 100644 --- a/drivers/gpu/ipu-v3/ipu-csi.c +++ b/drivers/gpu/ipu-v3/ipu-csi.c @@ -232,7 +232,7 @@ static int mbus_code_to_bus_cfg(struct ipu_csi_bus_config *cfg, u32 mbus_code, case MEDIA_BUS_FMT_BGR565_2X8_LE: case MEDIA_BUS_FMT_RGB565_2X8_BE: case MEDIA_BUS_FMT_RGB565_2X8_LE: - if (mbus_type == V4L2_MBUS_CSI2) + if (mbus_type == V4L2_MBUS_CSI2_DPHY) cfg->data_fmt = CSI_SENS_CONF_DATA_FMT_RGB565; else cfg->data_fmt = CSI_SENS_CONF_DATA_FMT_BAYER; @@ -359,7 +359,7 @@ static int fill_csi_bus_cfg(struct ipu_csi_bus_config *csicfg, else csicfg->clk_mode = IPU_CSI_CLK_MODE_CCIR656_PROGRESSIVE; break; - case V4L2_MBUS_CSI2: + case V4L2_MBUS_CSI2_DPHY: /* * MIPI CSI-2 requires non gated clock mode, all other * parameters are not applicable for MIPI CSI-2 bus. @@ -611,7 +611,7 @@ int ipu_csi_set_mipi_datatype(struct ipu_csi *csi, u32 vc, if (vc > 3) return -EINVAL; - ret = mbus_code_to_bus_cfg(&cfg, mbus_fmt->code, V4L2_MBUS_CSI2); + ret = mbus_code_to_bus_cfg(&cfg, mbus_fmt->code, V4L2_MBUS_CSI2_DPHY); if (ret < 0) return ret; diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c index de10367d550b..2848a46d149a 100644 --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c @@ -761,7 +761,7 @@ static int adv7180_g_mbus_config(struct v4l2_subdev *sd, struct adv7180_state *state = to_state(sd); if (state->chip_info->flags & ADV7180_FLAG_MIPI_CSI2) { - cfg->type = V4L2_MBUS_CSI2; + cfg->type = V4L2_MBUS_CSI2_DPHY; cfg->flags = V4L2_MBUS_CSI2_1_LANE | V4L2_MBUS_CSI2_CHANNEL_0 | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c index 2ddd86ddf649..b657592602f9 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -1787,7 +1787,7 @@ static int ov5640_set_power(struct ov5640_dev *sensor, bool on) if (ret) goto power_off; - if (sensor->ep.bus_type == V4L2_MBUS_CSI2) { + if (sensor->ep.bus_type == V4L2_MBUS_CSI2_DPHY) { /* * start streaming briefly followed by stream off in * order to coax the clock lane into LP-11 state. @@ -2557,7 +2557,7 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable) sensor->pending_fmt_change = false; } - if (sensor->ep.bus_type == V4L2_MBUS_CSI2) + if (sensor->ep.bus_type == V4L2_MBUS_CSI2_DPHY) ret = ov5640_set_stream_mipi(sensor, enable); else ret = ov5640_set_stream_dvp(sensor, enable); diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c index 1722cdab0daf..5eba8dd7222b 100644 --- a/drivers/media/i2c/ov5645.c +++ b/drivers/media/i2c/ov5645.c @@ -1127,7 +1127,7 @@ static int ov5645_probe(struct i2c_client *client, return ret; } - if (ov5645->ep.bus_type != V4L2_MBUS_CSI2) { + if (ov5645->ep.bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(dev, "invalid bus type, must be CSI2\n"); return -EINVAL; } diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c index d3ebb7529fca..0c10203f822b 100644 --- a/drivers/media/i2c/ov7251.c +++ b/drivers/media/i2c/ov7251.c @@ -1279,9 +1279,9 @@ static int ov7251_probe(struct i2c_client *client) return ret; } - if (ov7251->ep.bus_type != V4L2_MBUS_CSI2) { + if (ov7251->ep.bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(dev, "invalid bus type (%u), must be CSI2 (%u)\n", - ov7251->ep.bus_type, V4L2_MBUS_CSI2); + ov7251->ep.bus_type, V4L2_MBUS_CSI2_DPHY); return -EINVAL; } diff --git a/drivers/media/i2c/s5c73m3/s5c73m3-core.c b/drivers/media/i2c/s5c73m3/s5c73m3-core.c index 21ca5186f9ed..479c9753e863 100644 --- a/drivers/media/i2c/s5c73m3/s5c73m3-core.c +++ b/drivers/media/i2c/s5c73m3/s5c73m3-core.c @@ -1644,7 +1644,7 @@ static int s5c73m3_get_platform_data(struct s5c73m3 *state) if (ret) return ret; - if (ep.bus_type != V4L2_MBUS_CSI2) { + if (ep.bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(dev, "unsupported bus type\n"); return -EINVAL; } diff --git a/drivers/media/i2c/s5k5baf.c b/drivers/media/i2c/s5k5baf.c index 5007c9659342..4c41a770b132 100644 --- a/drivers/media/i2c/s5k5baf.c +++ b/drivers/media/i2c/s5k5baf.c @@ -766,7 +766,7 @@ static int s5k5baf_hw_set_video_bus(struct s5k5baf *state) { u16 en_pkts; - if (state->bus_type == V4L2_MBUS_CSI2) + if (state->bus_type == V4L2_MBUS_CSI2_DPHY) en_pkts = EN_PACKETS_CSI2; else en_pkts = 0; @@ -1875,7 +1875,7 @@ static int s5k5baf_parse_device_node(struct s5k5baf *state, struct device *dev) state->bus_type = ep.bus_type; switch (state->bus_type) { - case V4L2_MBUS_CSI2: + case V4L2_MBUS_CSI2_DPHY: state->nlanes = ep.bus.mipi_csi2.num_data_lanes; break; case V4L2_MBUS_PARALLEL: diff --git a/drivers/media/i2c/s5k6aa.c b/drivers/media/i2c/s5k6aa.c index 52ca033f7069..87f9351678fa 100644 --- a/drivers/media/i2c/s5k6aa.c +++ b/drivers/media/i2c/s5k6aa.c @@ -688,7 +688,7 @@ static int s5k6aa_configure_video_bus(struct s5k6aa *s5k6aa, * but there is nothing indicating how to switch between both * in the datasheet. For now default BT.601 interface is assumed. */ - if (bus_type == V4L2_MBUS_CSI2) + if (bus_type == V4L2_MBUS_CSI2_DPHY) cfg = nlanes; else if (bus_type != V4L2_MBUS_PARALLEL) return -EINVAL; diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c index 1236683da8f7..9e33c2008ba6 100644 --- a/drivers/media/i2c/smiapp/smiapp-core.c +++ b/drivers/media/i2c/smiapp/smiapp-core.c @@ -2784,7 +2784,7 @@ static struct smiapp_hwconfig *smiapp_get_hwconfig(struct device *dev) goto out_err; switch (bus_cfg->bus_type) { - case V4L2_MBUS_CSI2: + case V4L2_MBUS_CSI2_DPHY: hwcfg->csi_signalling_mode = SMIAPP_CSI_SIGNALLING_MODE_CSI2; hwcfg->lanes = bus_cfg->bus.mipi_csi2.num_data_lanes; break; diff --git a/drivers/media/i2c/soc_camera/ov5642.c b/drivers/media/i2c/soc_camera/ov5642.c index 39f420db9c70..bc045259510d 100644 --- a/drivers/media/i2c/soc_camera/ov5642.c +++ b/drivers/media/i2c/soc_camera/ov5642.c @@ -913,7 +913,7 @@ static int ov5642_get_selection(struct v4l2_subdev *sd, static int ov5642_g_mbus_config(struct v4l2_subdev *sd, struct v4l2_mbus_config *cfg) { - cfg->type = V4L2_MBUS_CSI2; + cfg->type = V4L2_MBUS_CSI2_DPHY; cfg->flags = V4L2_MBUS_CSI2_2_LANE | V4L2_MBUS_CSI2_CHANNEL_0 | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c index 44c41933415a..6a2064597124 100644 --- a/drivers/media/i2c/tc358743.c +++ b/drivers/media/i2c/tc358743.c @@ -1607,7 +1607,7 @@ static int tc358743_g_mbus_config(struct v4l2_subdev *sd, { struct tc358743_state *state = to_state(sd); - cfg->type = V4L2_MBUS_CSI2; + cfg->type = V4L2_MBUS_CSI2_DPHY; /* Support for non-continuous CSI-2 clock is missing in the driver */ cfg->flags = V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; @@ -1922,7 +1922,7 @@ static int tc358743_probe_of(struct tc358743_state *state) goto put_node; } - if (endpoint->bus_type != V4L2_MBUS_CSI2 || + if (endpoint->bus_type != V4L2_MBUS_CSI2_DPHY || endpoint->bus.mipi_csi2.num_data_lanes == 0 || endpoint->nr_of_link_frequencies == 0) { dev_err(dev, "missing CSI-2 properties in endpoint\n"); diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c index 06b422233215..452eb9b42140 100644 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c @@ -1482,7 +1482,7 @@ static int cio2_fwnode_parse(struct device *dev, struct sensor_async_subdev *s_asd = container_of(asd, struct sensor_async_subdev, asd); - if (vep->bus_type != V4L2_MBUS_CSI2) { + if (vep->bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(dev, "Only CSI2 bus type is currently supported\n"); return -EINVAL; } diff --git a/drivers/media/platform/cadence/cdns-csi2rx.c b/drivers/media/platform/cadence/cdns-csi2rx.c index da3eb349716f..0776a34f28ee 100644 --- a/drivers/media/platform/cadence/cdns-csi2rx.c +++ b/drivers/media/platform/cadence/cdns-csi2rx.c @@ -378,7 +378,7 @@ static int csi2rx_parse_dt(struct csi2rx_priv *csi2rx) return ret; } - if (v4l2_ep.bus_type != V4L2_MBUS_CSI2) { + if (v4l2_ep.bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(csi2rx->dev, "Unsupported media bus type: 0x%x\n", v4l2_ep.bus_type); of_node_put(ep); diff --git a/drivers/media/platform/cadence/cdns-csi2tx.c b/drivers/media/platform/cadence/cdns-csi2tx.c index 40d0de690ff4..6224daf891d7 100644 --- a/drivers/media/platform/cadence/cdns-csi2tx.c +++ b/drivers/media/platform/cadence/cdns-csi2tx.c @@ -446,7 +446,7 @@ static int csi2tx_check_lanes(struct csi2tx_priv *csi2tx) goto out; } - if (v4l2_ep.bus_type != V4L2_MBUS_CSI2) { + if (v4l2_ep.bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(csi2tx->dev, "Unsupported media bus type: 0x%x\n", v4l2_ep.bus_type); ret = -EINVAL; diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c index f8e1af101817..f1b301810260 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core.c +++ b/drivers/media/platform/marvell-ccic/mcam-core.c @@ -794,7 +794,7 @@ static void mcam_ctlr_image(struct mcam_camera *cam) /* * This field controls the generation of EOF(DVP only) */ - if (cam->bus_type != V4L2_MBUS_CSI2) + if (cam->bus_type != V4L2_MBUS_CSI2_DPHY) mcam_reg_set_bit(cam, REG_CTRL0, C0_EOF_VSYNC | C0_VEDGE_CTRL); } @@ -1023,7 +1023,7 @@ static int mcam_read_setup(struct mcam_camera *cam) cam->calc_dphy(cam); cam_dbg(cam, "camera: DPHY sets: dphy3=0x%x, dphy5=0x%x, dphy6=0x%x\n", cam->dphy[0], cam->dphy[1], cam->dphy[2]); - if (cam->bus_type == V4L2_MBUS_CSI2) + if (cam->bus_type == V4L2_MBUS_CSI2_DPHY) mcam_enable_mipi(cam); else mcam_disable_mipi(cam); diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c index 41968cd388ac..70a2833db0d1 100644 --- a/drivers/media/platform/marvell-ccic/mmp-driver.c +++ b/drivers/media/platform/marvell-ccic/mmp-driver.c @@ -362,7 +362,7 @@ static int mmpcam_probe(struct platform_device *pdev) mcam->mclk_div = pdata->mclk_div; mcam->bus_type = pdata->bus_type; mcam->dphy = pdata->dphy; - if (mcam->bus_type == V4L2_MBUS_CSI2) { + if (mcam->bus_type == V4L2_MBUS_CSI2_DPHY) { cam->mipi_clk = devm_clk_get(mcam->dev, "mipi"); if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0)) return PTR_ERR(cam->mipi_clk); diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c index f5dde8774399..77fb7987b42f 100644 --- a/drivers/media/platform/omap3isp/isp.c +++ b/drivers/media/platform/omap3isp/isp.c @@ -2054,7 +2054,7 @@ static int isp_fwnode_parse(struct device *dev, dev_dbg(dev, "CSI-1/CCP-2 configuration\n"); csi1 = true; break; - case V4L2_MBUS_CSI2: + case V4L2_MBUS_CSI2_DPHY: dev_dbg(dev, "CSI-2 configuration\n"); csi1 = false; break; diff --git a/drivers/media/platform/pxa_camera.c b/drivers/media/platform/pxa_camera.c index 6f5593c8c4c6..a47be1242cf4 100644 --- a/drivers/media/platform/pxa_camera.c +++ b/drivers/media/platform/pxa_camera.c @@ -633,7 +633,7 @@ static unsigned int pxa_mbus_config_compatible(const struct v4l2_mbus_config *cf mode = common_flags & (V4L2_MBUS_MASTER | V4L2_MBUS_SLAVE); return (!hsync || !vsync || !pclk || !data || !mode) ? 0 : common_flags; - case V4L2_MBUS_CSI2: + case V4L2_MBUS_CSI2_DPHY: mipi_lanes = common_flags & V4L2_MBUS_CSI2_LANES; mipi_clock = common_flags & (V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK); diff --git a/drivers/media/platform/rcar-vin/rcar-csi2.c b/drivers/media/platform/rcar-vin/rcar-csi2.c index 75ebd9c23813..25edc2edd197 100644 --- a/drivers/media/platform/rcar-vin/rcar-csi2.c +++ b/drivers/media/platform/rcar-vin/rcar-csi2.c @@ -714,7 +714,7 @@ static int rcsi2_parse_v4l2(struct rcar_csi2 *priv, if (vep->base.port || vep->base.id) return -ENOTCONN; - if (vep->bus_type != V4L2_MBUS_CSI2) { + if (vep->bus_type != V4L2_MBUS_CSI2_DPHY) { dev_err(priv->dev, "Unsupported bus: %u\n", vep->bus_type); return -EINVAL; } diff --git a/drivers/media/platform/soc_camera/soc_mediabus.c b/drivers/media/platform/soc_camera/soc_mediabus.c index 0ad4b28266e4..be74008ec0ca 100644 --- a/drivers/media/platform/soc_camera/soc_mediabus.c +++ b/drivers/media/platform/soc_camera/soc_mediabus.c @@ -503,7 +503,7 @@ unsigned int soc_mbus_config_compatible(const struct v4l2_mbus_config *cfg, mode = common_flags & (V4L2_MBUS_MASTER | V4L2_MBUS_SLAVE); return (!hsync || !vsync || !pclk || !data || !mode) ? 0 : common_flags; - case V4L2_MBUS_CSI2: + case V4L2_MBUS_CSI2_DPHY: mipi_lanes = common_flags & V4L2_MBUS_CSI2_LANES; mipi_clock = common_flags & (V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK); diff --git a/drivers/media/platform/stm32/stm32-dcmi.c b/drivers/media/platform/stm32/stm32-dcmi.c index 451e6f30604d..da296a2afc2e 100644 --- a/drivers/media/platform/stm32/stm32-dcmi.c +++ b/drivers/media/platform/stm32/stm32-dcmi.c @@ -1660,7 +1660,7 @@ static int dcmi_probe(struct platform_device *pdev) return -ENODEV; } - if (ep.bus_type == V4L2_MBUS_CSI2) { + if (ep.bus_type == V4L2_MBUS_CSI2_DPHY) { dev_err(&pdev->dev, "CSI bus not supported\n"); return -ENODEV; } diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c index 80fd59a4b0fd..88da05e1c1f4 100644 --- a/drivers/media/platform/ti-vpe/cal.c +++ b/drivers/media/platform/ti-vpe/cal.c @@ -1710,7 +1710,7 @@ static int of_cal_create_instance(struct cal_ctx *ctx, int inst) } v4l2_fwnode_endpoint_parse(of_fwnode_handle(remote_ep), endpoint); - if (endpoint->bus_type != V4L2_MBUS_CSI2) { + if (endpoint->bus_type != V4L2_MBUS_CSI2_DPHY) { ctx_err(ctx, "Port:%d sub-device %s is not a CSI2 device\n", inst, sensor_node->name); goto err_put_remote_ep; diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index 104ef7f1754d..54162217bb36 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -115,7 +115,7 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, } bus->flags = flags; - vep->bus_type = V4L2_MBUS_CSI2; + vep->bus_type = V4L2_MBUS_CSI2_DPHY; return 0; } diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c index 8e749fdec8d1..539159d9af6b 100644 --- a/drivers/staging/media/imx/imx-media-csi.c +++ b/drivers/staging/media/imx/imx-media-csi.c @@ -124,7 +124,7 @@ static inline struct csi_priv *sd_to_dev(struct v4l2_subdev *sdev) static inline bool is_parallel_bus(struct v4l2_fwnode_endpoint *ep) { - return ep->bus_type != V4L2_MBUS_CSI2; + return ep->bus_type != V4L2_MBUS_CSI2_DPHY; } static inline bool is_parallel_16bit_bus(struct v4l2_fwnode_endpoint *ep) diff --git a/drivers/staging/media/imx/imx6-mipi-csi2.c b/drivers/staging/media/imx/imx6-mipi-csi2.c index d60a52cfc69c..6a1cee55a49b 100644 --- a/drivers/staging/media/imx/imx6-mipi-csi2.c +++ b/drivers/staging/media/imx/imx6-mipi-csi2.c @@ -563,7 +563,7 @@ static int csi2_parse_endpoint(struct device *dev, return -EINVAL; } - if (vep->bus_type != V4L2_MBUS_CSI2) { + if (vep->bus_type != V4L2_MBUS_CSI2_DPHY) { v4l2_err(&csi2->sd, "invalid bus type, must be MIPI CSI2\n"); return -EINVAL; } diff --git a/drivers/staging/media/imx074/imx074.c b/drivers/staging/media/imx074/imx074.c index 77f1e0243d6e..0eee9f0def4d 100644 --- a/drivers/staging/media/imx074/imx074.c +++ b/drivers/staging/media/imx074/imx074.c @@ -263,7 +263,7 @@ static int imx074_s_power(struct v4l2_subdev *sd, int on) static int imx074_g_mbus_config(struct v4l2_subdev *sd, struct v4l2_mbus_config *cfg) { - cfg->type = V4L2_MBUS_CSI2; + cfg->type = V4L2_MBUS_CSI2_DPHY; cfg->flags = V4L2_MBUS_CSI2_2_LANE | V4L2_MBUS_CSI2_CHANNEL_0 | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; diff --git a/include/media/v4l2-mediabus.h b/include/media/v4l2-mediabus.h index 4bbb5f3d2b02..26e1c644ded6 100644 --- a/include/media/v4l2-mediabus.h +++ b/include/media/v4l2-mediabus.h @@ -75,14 +75,16 @@ * also be used for BT.1120 * @V4L2_MBUS_CSI1: MIPI CSI-1 serial interface * @V4L2_MBUS_CCP2: CCP2 (Compact Camera Port 2) - * @V4L2_MBUS_CSI2: MIPI CSI-2 serial interface + * @V4L2_MBUS_CSI2_DPHY: MIPI CSI-2 serial interface, with D-PHY + * @V4L2_MBUS_CSI2_CPHY: MIPI CSI-2 serial interface, with C-PHY */ enum v4l2_mbus_type { V4L2_MBUS_PARALLEL, V4L2_MBUS_BT656, V4L2_MBUS_CSI1, V4L2_MBUS_CCP2, - V4L2_MBUS_CSI2, + V4L2_MBUS_CSI2_DPHY, + V4L2_MBUS_CSI2_CPHY, }; /** -- 2.11.0