From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sakari Ailus Subject: [PATCH v3 18/23] v4l: fwnode: Use media bus type for bus parser selection Date: Thu, 13 Sep 2018 00:29:37 +0300 Message-ID: <20180912212942.19641-19-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 VXNlIHRoZSBtZWRpYSBidXMgdHlwZXMgaW5zdGVhZCBvZiB0aGUgZndub2RlIGJ1cyB0eXBlcyBp bnRlcm5hbGx5LiBUaGlzCmlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIGRyaXZlcnMgYXMgd2VsbCwg bWFraW5nIHRoZSB1c2Ugb2YgdGhlIGZ3bm9kZSBidXMKdHlwZXMgbW9yZSBsb2NhbGlzZWQgdG8g dGhlIFY0TDIgZndub2RlIGZyYW1ld29yay4KClNpZ25lZC1vZmYtYnk6IFNha2FyaSBBaWx1cyA8 c2FrYXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KVGVzdGVkLWJ5OiBTdGV2ZSBMb25nZXJiZWFt IDxzdGV2ZV9sb25nZXJiZWFtQG1lbnRvci5jb20+Ci0tLQogZHJpdmVycy9tZWRpYS92NGwyLWNv cmUvdjRsMi1md25vZGUuYyB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYyBiL2RyaXZlcnMv bWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMKaW5kZXggODI0NGE3Yjg0MTRlLi40YjU4ODQx ODA3NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMK KysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYwpAQCAtNDIsOSArNDIs NjYgQEAgZW51bSB2NGwyX2Z3bm9kZV9idXNfdHlwZSB7CiAJTlJfT0ZfVjRMMl9GV05PREVfQlVT X1RZUEUsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZndub2RlX2J1c19jb252IHsK KwllbnVtIHY0bDJfZndub2RlX2J1c190eXBlIGZ3bm9kZV9idXNfdHlwZTsKKwllbnVtIHY0bDJf bWJ1c190eXBlIG1idXNfdHlwZTsKKwljb25zdCBjaGFyICpuYW1lOworfSBidXNzZXNbXSA9IHsK Kwl7CisJCVY0TDJfRldOT0RFX0JVU19UWVBFX0dVRVNTLAorCQlWNEwyX01CVVNfVU5LTk9XTiwK KwkJIm5vdCBzcGVjaWZpZWQiLAorCX0sIHsKKwkJVjRMMl9GV05PREVfQlVTX1RZUEVfQ1NJMl9D UEhZLAorCQlWNEwyX01CVVNfQ1NJMl9DUEhZLAorCQkiTUlQSSBDU0ktMiBDLVBIWSIsCisJfSwg eworCQlWNEwyX0ZXTk9ERV9CVVNfVFlQRV9DU0kxLAorCQlWNEwyX01CVVNfQ1NJMSwKKwkJIk1J UEkgQ1NJLTEiLAorCX0sIHsKKwkJVjRMMl9GV05PREVfQlVTX1RZUEVfQ0NQMiwKKwkJVjRMMl9N QlVTX0NDUDIsCisJCSJjb21wYWN0IGNhbWVyYSBwb3J0IDIiLAorCX0sIHsKKwkJVjRMMl9GV05P REVfQlVTX1RZUEVfQ1NJMl9EUEhZLAorCQlWNEwyX01CVVNfQ1NJMl9EUEhZLAorCQkiTUlQSSBD U0ktMiBELVBIWSIsCisJfSwgeworCQlWNEwyX0ZXTk9ERV9CVVNfVFlQRV9QQVJBTExFTCwKKwkJ VjRMMl9NQlVTX1BBUkFMTEVMLAorCQkicGFyYWxsZWwiLAorCX0sIHsKKwkJVjRMMl9GV05PREVf QlVTX1RZUEVfQlQ2NTYsCisJCVY0TDJfTUJVU19CVDY1NiwKKwkJIkJ0LjY1NiIsCisJfQorfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2Z3bm9kZV9idXNfY29udiAqCitnZXRfdjRsMl9m d25vZGVfYnVzX2NvbnZfYnlfZndub2RlX2J1cyhlbnVtIHY0bDJfZndub2RlX2J1c190eXBlIHR5 cGUpCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShi dXNzZXMpOyBpKyspCisJCWlmIChidXNzZXNbaV0uZndub2RlX2J1c190eXBlID09IHR5cGUpCisJ CQlyZXR1cm4gJmJ1c3Nlc1tpXTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgZW51bSB2 NGwyX21idXNfdHlwZQordjRsMl9md25vZGVfYnVzX3R5cGVfdG9fbWJ1cyhlbnVtIHY0bDJfZndu b2RlX2J1c190eXBlIHR5cGUpCit7CisJY29uc3Qgc3RydWN0IHY0bDJfZndub2RlX2J1c19jb252 ICpjb252ID0KKwkJZ2V0X3Y0bDJfZndub2RlX2J1c19jb252X2J5X2Z3bm9kZV9idXModHlwZSk7 CisKKwlyZXR1cm4gY29udiA/IGNvbnYtPm1idXNfdHlwZSA6IFY0TDJfTUJVU19VTktOT1dOOwor fQorCiBzdGF0aWMgaW50IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX2NzaTJfYnVzKHN0cnVj dCBmd25vZGVfaGFuZGxlICpmd25vZGUsCiAJCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9md25vZGVf ZW5kcG9pbnQgKnZlcCwKLQkJCQkJICAgICAgIGVudW0gdjRsMl9md25vZGVfYnVzX3R5cGUgYnVz X3R5cGUpCisJCQkJCSAgICAgICBlbnVtIHY0bDJfbWJ1c190eXBlIGJ1c190eXBlKQogewogCXN0 cnVjdCB2NGwyX2Z3bm9kZV9idXNfbWlwaV9jc2kyICpidXMgPSAmdmVwLT5idXMubWlwaV9jc2ky OwogCWJvb2wgaGF2ZV9jbGtfbGFuZSA9IGZhbHNlLCBoYXZlX2RhdGFfbGFuZXMgPSBmYWxzZSwK QEAgLTU4LDcgKzExNSw3IEBAIHN0YXRpYyBpbnQgdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Vf Y3NpMl9idXMoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwKIAl1MzIgdjsKIAlpbnQgcnZh bDsKIAotCWlmIChidXNfdHlwZSA9PSBWNEwyX0ZXTk9ERV9CVVNfVFlQRV9DU0kyX0RQSFkpIHsK KwlpZiAoYnVzX3R5cGUgPT0gVjRMMl9NQlVTX0NTSTJfRFBIWSkgewogCQl1c2VfZGVmYXVsdF9s YW5lX21hcHBpbmcgPSB0cnVlOwogCiAJCW51bV9kYXRhX2xhbmVzID0gbWluX3QodTMyLCBidXMt Pm51bV9kYXRhX2xhbmVzLApAQCAtMTM0LDcgKzE5MSw3IEBAIHN0YXRpYyBpbnQgdjRsMl9md25v ZGVfZW5kcG9pbnRfcGFyc2VfY3NpMl9idXMoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwK IAkJZmxhZ3MgfD0gVjRMMl9NQlVTX0NTSTJfQ09OVElOVU9VU19DTE9DSzsKIAl9CiAKLQlpZiAo YnVzX3R5cGUgPT0gVjRMMl9GV05PREVfQlVTX1RZUEVfQ1NJMl9EUEhZIHx8IGxhbmVzX3VzZWQg fHwKKwlpZiAoYnVzX3R5cGUgPT0gVjRMMl9NQlVTX0NTSTJfRFBIWSB8fCBsYW5lc191c2VkIHx8 CiAJICAgIGhhdmVfY2xrX2xhbmUgfHwgKGZsYWdzICYgflY0TDJfTUJVU19DU0kyX0NPTlRJTlVP VVNfQ0xPQ0spKSB7CiAJCWJ1cy0+ZmxhZ3MgPSBmbGFnczsKIAkJdmVwLT5idXNfdHlwZSA9IFY0 TDJfTUJVU19DU0kyX0RQSFk7CkBAIC0xNzcsNyArMjM0LDcgQEAgc3RhdGljIGludCB2NGwyX2Z3 bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kyX2J1cyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2Rl LAogCiBzdGF0aWMgdm9pZCB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJhbGxlbF9idXMo CiAJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgc3RydWN0IHY0bDJfZndub2RlX2VuZHBv aW50ICp2ZXAsCi0JZW51bSB2NGwyX2Z3bm9kZV9idXNfdHlwZSBidXNfdHlwZSkKKwllbnVtIHY0 bDJfbWJ1c190eXBlIGJ1c190eXBlKQogewogCXN0cnVjdCB2NGwyX2Z3bm9kZV9idXNfcGFyYWxs ZWwgKmJ1cyA9ICZ2ZXAtPmJ1cy5wYXJhbGxlbDsKIAl1bnNpZ25lZCBpbnQgZmxhZ3MgPSAwOwpA QCAtMjc0LDExICszMzEsMTEgQEAgc3RhdGljIHZvaWQgdjRsMl9md25vZGVfZW5kcG9pbnRfcGFy c2VfcGFyYWxsZWxfYnVzKAogCQllbHNlCiAJCQl2ZXAtPmJ1c190eXBlID0gVjRMMl9NQlVTX0JU NjU2OwogCQlicmVhazsKLQljYXNlIFY0TDJfRldOT0RFX0JVU19UWVBFX1BBUkFMTEVMOgorCWNh c2UgVjRMMl9NQlVTX1BBUkFMTEVMOgogCQl2ZXAtPmJ1c190eXBlID0gVjRMMl9NQlVTX1BBUkFM TEVMOwogCQlidXMtPmZsYWdzID0gZmxhZ3M7CiAJCWJyZWFrOwotCWNhc2UgVjRMMl9GV05PREVf QlVTX1RZUEVfQlQ2NTY6CisJY2FzZSBWNEwyX01CVVNfQlQ2NTY6CiAJCXZlcC0+YnVzX3R5cGUg PSBWNEwyX01CVVNfQlQ2NTY7CiAJCWJ1cy0+ZmxhZ3MgPSBmbGFncyAmIH5QQVJBTExFTF9NQlVT X0ZMQUdTOwogCQlicmVhazsKQEAgLTI4OCw3ICszNDUsNyBAQCBzdGF0aWMgdm9pZCB2NGwyX2Z3 bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJhbGxlbF9idXMoCiBzdGF0aWMgdm9pZAogdjRsMl9md25v ZGVfZW5kcG9pbnRfcGFyc2VfY3NpMV9idXMoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwK IAkJCQkgICAgc3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50ICp2ZXAsCi0JCQkJICAgIGVudW0g djRsMl9md25vZGVfYnVzX3R5cGUgYnVzX3R5cGUpCisJCQkJICAgIGVudW0gdjRsMl9tYnVzX3R5 cGUgYnVzX3R5cGUpCiB7CiAJc3RydWN0IHY0bDJfZndub2RlX2J1c19taXBpX2NzaTEgKmJ1cyA9 ICZ2ZXAtPmJ1cy5taXBpX2NzaTE7CiAJdTMyIHY7CkBAIC0zMTMsNyArMzcwLDcgQEAgdjRsMl9m d25vZGVfZW5kcG9pbnRfcGFyc2VfY3NpMV9idXMoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9k ZSwKIAkJcHJfZGVidWcoImNsb2NrLWxhbmVzICV1XG4iLCB2KTsKIAl9CiAKLQlpZiAoYnVzX3R5 cGUgPT0gVjRMMl9GV05PREVfQlVTX1RZUEVfQ0NQMikKKwlpZiAoYnVzX3R5cGUgPT0gVjRMMl9N QlVTX0NDUDIpCiAJCXZlcC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQ0NQMjsKIAllbHNlCiAJCXZl cC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQ1NJMTsKQEAgLTMyMyw2ICszODAsNyBAQCBzdGF0aWMg aW50IF9fdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3 bm9kZSwKIAkJCQkJc3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50ICp2ZXApCiB7CiAJdTMyIGJ1 c190eXBlID0gMDsKKwllbnVtIHY0bDJfbWJ1c190eXBlIG1idXNfdHlwZTsKIAlpbnQgcnZhbDsK IAogCWlmICh2ZXAtPmJ1c190eXBlID09IFY0TDJfTUJVU19VTktOT1dOKSB7CkBAIC0zNDEsMTAg KzM5OSwxMiBAQCBzdGF0aWMgaW50IF9fdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uoc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwKIAogCWZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihmd25v ZGUsICJidXMtdHlwZSIsICZidXNfdHlwZSk7CiAKLQlzd2l0Y2ggKGJ1c190eXBlKSB7Ci0JY2Fz ZSBWNEwyX0ZXTk9ERV9CVVNfVFlQRV9HVUVTUzoKKwltYnVzX3R5cGUgPSB2NGwyX2Z3bm9kZV9i dXNfdHlwZV90b19tYnVzKGJ1c190eXBlKTsKKworCXN3aXRjaCAobWJ1c190eXBlKSB7CisJY2Fz ZSBWNEwyX01CVVNfVU5LTk9XTjoKIAkJcnZhbCA9IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNl X2NzaTJfYnVzKGZ3bm9kZSwgdmVwLAotCQkJCQkJCSAgIGJ1c190eXBlKTsKKwkJCQkJCQkgICBt YnVzX3R5cGUpOwogCQlpZiAocnZhbCkKIAkJCXJldHVybiBydmFsOwogCkBAIC0zNTMsMjYgKzQx MywyNiBAQCBzdGF0aWMgaW50IF9fdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uoc3RydWN0IGZ3 bm9kZV9oYW5kbGUgKmZ3bm9kZSwKIAkJCQlmd25vZGUsIHZlcCwgVjRMMl9NQlVTX1VOS05PV04p OwogCiAJCWJyZWFrOwotCWNhc2UgVjRMMl9GV05PREVfQlVTX1RZUEVfQ0NQMjoKLQljYXNlIFY0 TDJfRldOT0RFX0JVU19UWVBFX0NTSTE6Ci0JCXY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX2Nz aTFfYnVzKGZ3bm9kZSwgdmVwLCBidXNfdHlwZSk7CisJY2FzZSBWNEwyX01CVVNfQ0NQMjoKKwlj YXNlIFY0TDJfTUJVU19DU0kxOgorCQl2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kxX2J1 cyhmd25vZGUsIHZlcCwgbWJ1c190eXBlKTsKIAogCQlicmVhazsKLQljYXNlIFY0TDJfRldOT0RF X0JVU19UWVBFX0NTSTJfRFBIWToKKwljYXNlIFY0TDJfTUJVU19DU0kyX0RQSFk6CiAJCXZlcC0+ YnVzX3R5cGUgPSBWNEwyX01CVVNfQ1NJMl9EUEhZOwogCQlydmFsID0gdjRsMl9md25vZGVfZW5k cG9pbnRfcGFyc2VfY3NpMl9idXMoZndub2RlLCB2ZXAsCi0JCQkJCQkJICAgYnVzX3R5cGUpOwor CQkJCQkJCSAgIG1idXNfdHlwZSk7CiAJCWlmIChydmFsKQogCQkJcmV0dXJuIHJ2YWw7CiAKIAkJ YnJlYWs7Ci0JY2FzZSBWNEwyX0ZXTk9ERV9CVVNfVFlQRV9QQVJBTExFTDoKLQljYXNlIFY0TDJf RldOT0RFX0JVU19UWVBFX0JUNjU2OgotCQl2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJh bGxlbF9idXMoZndub2RlLCB2ZXAsIGJ1c190eXBlKTsKKwljYXNlIFY0TDJfTUJVU19QQVJBTExF TDoKKwljYXNlIFY0TDJfTUJVU19CVDY1NjoKKwkJdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Vf cGFyYWxsZWxfYnVzKGZ3bm9kZSwgdmVwLCBtYnVzX3R5cGUpOwogCiAJCWJyZWFrOwogCWRlZmF1 bHQ6Ci0JCXByX3dhcm4oInVuc3VwcG9ydGVkIGJ1cyB0eXBlICV1XG4iLCBidXNfdHlwZSk7CisJ CXByX3dhcm4oInVuc3VwcG9ydGVkIGJ1cyB0eXBlICV1XG4iLCBtYnVzX3R5cGUpOwogCQlyZXR1 cm4gLUVJTlZBTDsKIAl9CiAKLS0gCjIuMTEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:40982 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728267AbeIMCgL (ORCPT ); Wed, 12 Sep 2018 22:36:11 -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 18/23] v4l: fwnode: Use media bus type for bus parser selection Date: Thu, 13 Sep 2018 00:29:37 +0300 Message-Id: <20180912212942.19641-19-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: Use the media bus types instead of the fwnode bus types internally. This is the interface to the drivers as well, making the use of the fwnode bus types more localised to the V4L2 fwnode framework. Signed-off-by: Sakari Ailus Tested-by: Steve Longerbeam --- drivers/media/v4l2-core/v4l2-fwnode.c | 100 +++++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 20 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index 8244a7b8414e..4b588418074a 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -42,9 +42,66 @@ enum v4l2_fwnode_bus_type { NR_OF_V4L2_FWNODE_BUS_TYPE, }; +static const struct v4l2_fwnode_bus_conv { + enum v4l2_fwnode_bus_type fwnode_bus_type; + enum v4l2_mbus_type mbus_type; + const char *name; +} busses[] = { + { + V4L2_FWNODE_BUS_TYPE_GUESS, + V4L2_MBUS_UNKNOWN, + "not specified", + }, { + V4L2_FWNODE_BUS_TYPE_CSI2_CPHY, + V4L2_MBUS_CSI2_CPHY, + "MIPI CSI-2 C-PHY", + }, { + V4L2_FWNODE_BUS_TYPE_CSI1, + V4L2_MBUS_CSI1, + "MIPI CSI-1", + }, { + V4L2_FWNODE_BUS_TYPE_CCP2, + V4L2_MBUS_CCP2, + "compact camera port 2", + }, { + V4L2_FWNODE_BUS_TYPE_CSI2_DPHY, + V4L2_MBUS_CSI2_DPHY, + "MIPI CSI-2 D-PHY", + }, { + V4L2_FWNODE_BUS_TYPE_PARALLEL, + V4L2_MBUS_PARALLEL, + "parallel", + }, { + V4L2_FWNODE_BUS_TYPE_BT656, + V4L2_MBUS_BT656, + "Bt.656", + } +}; + +static const struct v4l2_fwnode_bus_conv * +get_v4l2_fwnode_bus_conv_by_fwnode_bus(enum v4l2_fwnode_bus_type type) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(busses); i++) + if (busses[i].fwnode_bus_type == type) + return &busses[i]; + + return NULL; +} + +static enum v4l2_mbus_type +v4l2_fwnode_bus_type_to_mbus(enum v4l2_fwnode_bus_type type) +{ + const struct v4l2_fwnode_bus_conv *conv = + get_v4l2_fwnode_bus_conv_by_fwnode_bus(type); + + return conv ? conv->mbus_type : V4L2_MBUS_UNKNOWN; +} + static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep, - enum v4l2_fwnode_bus_type bus_type) + enum v4l2_mbus_type bus_type) { struct v4l2_fwnode_bus_mipi_csi2 *bus = &vep->bus.mipi_csi2; bool have_clk_lane = false, have_data_lanes = false, @@ -58,7 +115,7 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, u32 v; int rval; - if (bus_type == V4L2_FWNODE_BUS_TYPE_CSI2_DPHY) { + if (bus_type == V4L2_MBUS_CSI2_DPHY) { use_default_lane_mapping = true; num_data_lanes = min_t(u32, bus->num_data_lanes, @@ -134,7 +191,7 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, flags |= V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; } - if (bus_type == V4L2_FWNODE_BUS_TYPE_CSI2_DPHY || lanes_used || + if (bus_type == V4L2_MBUS_CSI2_DPHY || lanes_used || have_clk_lane || (flags & ~V4L2_MBUS_CSI2_CONTINUOUS_CLOCK)) { bus->flags = flags; vep->bus_type = V4L2_MBUS_CSI2_DPHY; @@ -177,7 +234,7 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, static void v4l2_fwnode_endpoint_parse_parallel_bus( struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep, - enum v4l2_fwnode_bus_type bus_type) + enum v4l2_mbus_type bus_type) { struct v4l2_fwnode_bus_parallel *bus = &vep->bus.parallel; unsigned int flags = 0; @@ -274,11 +331,11 @@ static void v4l2_fwnode_endpoint_parse_parallel_bus( else vep->bus_type = V4L2_MBUS_BT656; break; - case V4L2_FWNODE_BUS_TYPE_PARALLEL: + case V4L2_MBUS_PARALLEL: vep->bus_type = V4L2_MBUS_PARALLEL; bus->flags = flags; break; - case V4L2_FWNODE_BUS_TYPE_BT656: + case V4L2_MBUS_BT656: vep->bus_type = V4L2_MBUS_BT656; bus->flags = flags & ~PARALLEL_MBUS_FLAGS; break; @@ -288,7 +345,7 @@ static void v4l2_fwnode_endpoint_parse_parallel_bus( static void v4l2_fwnode_endpoint_parse_csi1_bus(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep, - enum v4l2_fwnode_bus_type bus_type) + enum v4l2_mbus_type bus_type) { struct v4l2_fwnode_bus_mipi_csi1 *bus = &vep->bus.mipi_csi1; u32 v; @@ -313,7 +370,7 @@ v4l2_fwnode_endpoint_parse_csi1_bus(struct fwnode_handle *fwnode, pr_debug("clock-lanes %u\n", v); } - if (bus_type == V4L2_FWNODE_BUS_TYPE_CCP2) + if (bus_type == V4L2_MBUS_CCP2) vep->bus_type = V4L2_MBUS_CCP2; else vep->bus_type = V4L2_MBUS_CSI1; @@ -323,6 +380,7 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep) { u32 bus_type = 0; + enum v4l2_mbus_type mbus_type; int rval; if (vep->bus_type == V4L2_MBUS_UNKNOWN) { @@ -341,10 +399,12 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, fwnode_property_read_u32(fwnode, "bus-type", &bus_type); - switch (bus_type) { - case V4L2_FWNODE_BUS_TYPE_GUESS: + mbus_type = v4l2_fwnode_bus_type_to_mbus(bus_type); + + switch (mbus_type) { + case V4L2_MBUS_UNKNOWN: rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep, - bus_type); + mbus_type); if (rval) return rval; @@ -353,26 +413,26 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, fwnode, vep, V4L2_MBUS_UNKNOWN); break; - case V4L2_FWNODE_BUS_TYPE_CCP2: - case V4L2_FWNODE_BUS_TYPE_CSI1: - v4l2_fwnode_endpoint_parse_csi1_bus(fwnode, vep, bus_type); + case V4L2_MBUS_CCP2: + case V4L2_MBUS_CSI1: + v4l2_fwnode_endpoint_parse_csi1_bus(fwnode, vep, mbus_type); break; - case V4L2_FWNODE_BUS_TYPE_CSI2_DPHY: + case V4L2_MBUS_CSI2_DPHY: vep->bus_type = V4L2_MBUS_CSI2_DPHY; rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep, - bus_type); + mbus_type); if (rval) return rval; break; - case V4L2_FWNODE_BUS_TYPE_PARALLEL: - case V4L2_FWNODE_BUS_TYPE_BT656: - v4l2_fwnode_endpoint_parse_parallel_bus(fwnode, vep, bus_type); + case V4L2_MBUS_PARALLEL: + case V4L2_MBUS_BT656: + v4l2_fwnode_endpoint_parse_parallel_bus(fwnode, vep, mbus_type); break; default: - pr_warn("unsupported bus type %u\n", bus_type); + pr_warn("unsupported bus type %u\n", mbus_type); return -EINVAL; } -- 2.11.0