From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sakari Ailus Subject: [PATCH v3 20/23] v4l: fwnode: Use V4L2 fwnode endpoint media bus type if set Date: Thu, 13 Sep 2018 00:29:39 +0300 Message-ID: <20180912212942.19641-21-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 VXNlIHRoZSBnaXZlbiBtZWRpYSBidXMgdHlwZSBzZXQgYnkgdGhlIGNhbGxlci4gSWYgbm9uZSBp cyBnaXZlbiAoaS5lLiB0aGUKbWJ1cyB0eXBlIGlzIFY0TDJfTUJVU19VTktOT1dOLCBvciAwKSwg ZmFsbCBiYWNrIHRvIHRoZSBvbGQgYmVoYXZpb3VyLgpUaGlzIGlzIHRvIG9idGFpbiB0aGUgaW5m b3JtYXRpb24gZnJvbSB0aGUgRFQgb3IgdHJ5IHRvIGd1ZXNzIHRoZSBidXMKdHlwZS4KCi1FTlhJ TyBpcyByZXR1cm5lZCBpZiB0aGUgY2FsbGVyIHNldHMgdGhlIGJ1cyB0eXBlIGJ1dCB0aGF0IGRv ZXMgbm90IG1hdGNoCndpdGggd2hhdCdzIGluIERULiBBbHNvIHJldHVybiAtRU5YSU8gaWYgYnVz IHR5cGUgZGV0ZWN0aW9uIGZhaWxlZCB0bwpzZXBhcmF0ZSB0aGlzIGZyb20gdGhlIHJlc3Qgb2Yg dGhlIGVycm9ycy4KClNpZ25lZC1vZmYtYnk6IFNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGxp bnV4LmludGVsLmNvbT4KVGVzdGVkLWJ5OiBTdGV2ZSBMb25nZXJiZWFtIDxzdGV2ZV9sb25nZXJi ZWFtQG1lbnRvci5jb20+Ci0tLQogZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUu YyB8IDI3ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGlu c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92 NGwyLWNvcmUvdjRsMi1md25vZGUuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndu b2RlLmMKaW5kZXggNDhmYjkwNjYwYzZiLi5lMzc4MGZlNjI0YmQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1md25vZGUuYwpAQCAtNDA5LDcgKzQwOSw3IEBAIHY0bDJfZndub2RlX2VuZHBv aW50X3BhcnNlX2NzaTFfYnVzKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsCiBzdGF0aWMg aW50IF9fdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3 bm9kZSwKIAkJCQkJc3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50ICp2ZXApCiB7Ci0JdTMyIGJ1 c190eXBlID0gMDsKKwl1MzIgYnVzX3R5cGUgPSBWNEwyX0ZXTk9ERV9CVVNfVFlQRV9HVUVTUzsK IAllbnVtIHY0bDJfbWJ1c190eXBlIG1idXNfdHlwZTsKIAlpbnQgcnZhbDsKIApAQCAtNDMyLDEz ICs0MzIsMjQgQEAgc3RhdGljIGludCBfX3Y0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKHN0cnVj dCBmd25vZGVfaGFuZGxlICpmd25vZGUsCiAJCSB2NGwyX2Z3bm9kZV9idXNfdHlwZV90b19zdHJp bmcoYnVzX3R5cGUpLCBidXNfdHlwZSwKIAkJIHY0bDJfZndub2RlX21idXNfdHlwZV90b19zdHJp bmcodmVwLT5idXNfdHlwZSksCiAJCSB2ZXAtPmJ1c190eXBlKTsKLQogCW1idXNfdHlwZSA9IHY0 bDJfZndub2RlX2J1c190eXBlX3RvX21idXMoYnVzX3R5cGUpOwogCi0Jc3dpdGNoIChtYnVzX3R5 cGUpIHsKKwlpZiAodmVwLT5idXNfdHlwZSAhPSBWNEwyX01CVVNfVU5LTk9XTikgeworCQlpZiAo bWJ1c190eXBlICE9IFY0TDJfTUJVU19VTktOT1dOICYmCisJCSAgICB2ZXAtPmJ1c190eXBlICE9 IG1idXNfdHlwZSkgeworCQkJcHJfZGVidWcoImV4cGVjdGluZyBidXMgdHlwZSAlc1xuIiwKKwkJ CQkgdjRsMl9md25vZGVfbWJ1c190eXBlX3RvX3N0cmluZygKKwkJCQkJIHZlcC0+YnVzX3R5cGUp KTsKKwkJCXJldHVybiAtRU5YSU87CisJCX0KKwl9IGVsc2UgeworCQl2ZXAtPmJ1c190eXBlID0g bWJ1c190eXBlOworCX0KKworCXN3aXRjaCAodmVwLT5idXNfdHlwZSkgewogCWNhc2UgVjRMMl9N QlVTX1VOS05PV046CiAJCXJ2YWwgPSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kyX2J1 cyhmd25vZGUsIHZlcCwKLQkJCQkJCQkgICBtYnVzX3R5cGUpOworCQkJCQkJCSAgIFY0TDJfTUJV U19VTktOT1dOKTsKIAkJaWYgKHJ2YWwpCiAJCQlyZXR1cm4gcnZhbDsKIApAQCAtNDUzLDIwICs0 NjQsMjAgQEAgc3RhdGljIGludCBfX3Y0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKHN0cnVjdCBm d25vZGVfaGFuZGxlICpmd25vZGUsCiAJCWJyZWFrOwogCWNhc2UgVjRMMl9NQlVTX0NDUDI6CiAJ Y2FzZSBWNEwyX01CVVNfQ1NJMToKLQkJdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2VfY3NpMV9i dXMoZndub2RlLCB2ZXAsIG1idXNfdHlwZSk7CisJCXY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNl X2NzaTFfYnVzKGZ3bm9kZSwgdmVwLCB2ZXAtPmJ1c190eXBlKTsKIAogCQlicmVhazsKIAljYXNl IFY0TDJfTUJVU19DU0kyX0RQSFk6Ci0JCXZlcC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQ1NJMl9E UEhZOwogCQlydmFsID0gdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2VfY3NpMl9idXMoZndub2Rl LCB2ZXAsCi0JCQkJCQkJICAgbWJ1c190eXBlKTsKKwkJCQkJCQkgICB2ZXAtPmJ1c190eXBlKTsK IAkJaWYgKHJ2YWwpCiAJCQlyZXR1cm4gcnZhbDsKIAogCQlicmVhazsKIAljYXNlIFY0TDJfTUJV U19QQVJBTExFTDoKIAljYXNlIFY0TDJfTUJVU19CVDY1NjoKLQkJdjRsMl9md25vZGVfZW5kcG9p bnRfcGFyc2VfcGFyYWxsZWxfYnVzKGZ3bm9kZSwgdmVwLCBtYnVzX3R5cGUpOworCQl2NGwyX2Z3 bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJhbGxlbF9idXMoZndub2RlLCB2ZXAsCisJCQkJCQkJdmVw LT5idXNfdHlwZSk7CiAKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLS0gCjIuMTEuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:40964 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728268AbeIMCgL (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 20/23] v4l: fwnode: Use V4L2 fwnode endpoint media bus type if set Date: Thu, 13 Sep 2018 00:29:39 +0300 Message-Id: <20180912212942.19641-21-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 given media bus type set by the caller. If none is given (i.e. the mbus type is V4L2_MBUS_UNKNOWN, or 0), fall back to the old behaviour. This is to obtain the information from the DT or try to guess the bus type. -ENXIO is returned if the caller sets the bus type but that does not match with what's in DT. Also return -ENXIO if bus type detection failed to separate this from the rest of the errors. Signed-off-by: Sakari Ailus Tested-by: Steve Longerbeam --- drivers/media/v4l2-core/v4l2-fwnode.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index 48fb90660c6b..e3780fe624bd 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -409,7 +409,7 @@ v4l2_fwnode_endpoint_parse_csi1_bus(struct fwnode_handle *fwnode, static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep) { - u32 bus_type = 0; + u32 bus_type = V4L2_FWNODE_BUS_TYPE_GUESS; enum v4l2_mbus_type mbus_type; int rval; @@ -432,13 +432,24 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, v4l2_fwnode_bus_type_to_string(bus_type), bus_type, v4l2_fwnode_mbus_type_to_string(vep->bus_type), vep->bus_type); - mbus_type = v4l2_fwnode_bus_type_to_mbus(bus_type); - switch (mbus_type) { + if (vep->bus_type != V4L2_MBUS_UNKNOWN) { + if (mbus_type != V4L2_MBUS_UNKNOWN && + vep->bus_type != mbus_type) { + pr_debug("expecting bus type %s\n", + v4l2_fwnode_mbus_type_to_string( + vep->bus_type)); + return -ENXIO; + } + } else { + vep->bus_type = mbus_type; + } + + switch (vep->bus_type) { case V4L2_MBUS_UNKNOWN: rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep, - mbus_type); + V4L2_MBUS_UNKNOWN); if (rval) return rval; @@ -453,20 +464,20 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, break; case V4L2_MBUS_CCP2: case V4L2_MBUS_CSI1: - v4l2_fwnode_endpoint_parse_csi1_bus(fwnode, vep, mbus_type); + v4l2_fwnode_endpoint_parse_csi1_bus(fwnode, vep, vep->bus_type); break; case V4L2_MBUS_CSI2_DPHY: - vep->bus_type = V4L2_MBUS_CSI2_DPHY; rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep, - mbus_type); + vep->bus_type); if (rval) return rval; break; case V4L2_MBUS_PARALLEL: case V4L2_MBUS_BT656: - v4l2_fwnode_endpoint_parse_parallel_bus(fwnode, vep, mbus_type); + v4l2_fwnode_endpoint_parse_parallel_bus(fwnode, vep, + vep->bus_type); break; default: -- 2.11.0