From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sakari Ailus Subject: [PATCH v3 08/23] v4l: fwnode: Detect bus type correctly Date: Thu, 13 Sep 2018 00:29:27 +0300 Message-ID: <20180912212942.19641-9-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 SW4gY2FzZSB0aGUgZGV2aWNlIHN1cHBvcnRzIG11bHRpcGxlIHZpZGVvIGJ1cyB0eXBlcyBvbiBh biBlbmRwb2ludCwgdGhlClY0TDIgZndub2RlIGZyYW1ld29yayBhdHRlbXB0cyB0byBkZXRlY3Qg dGhlIHR5cGUgYmFzZWQgb24gdGhlIGF2YWlsYWJsZQppbmZvcm1hdGlvbi4gVGhpcyB3YXNuJ3Qg d29ya2luZyByZWFsbHkgd2VsbCwgYW5kIHNvbWV0aW1lcyBjb3VsZCBsZWFkIHRvCnRoZSBWNEwy IGZ3bm9kZSBlbmRwb2ludCBzdHJ1Y3QgYXMgYmVpbmcgbWlzaGFuZGxlZCBiZXR3ZWVuIHRoZSBi dXMgdHlwZXMuCgpEZWZhdWx0IHRvIEJ0LjY1NiBpZiBubyBwcm9wZXJ0aWVzIHN1Z2dlc3Rpbmcg YSBidXMgdHlwZSBhcmUgZm91bmQuCgpTaWduZWQtb2ZmLWJ5OiBTYWthcmkgQWlsdXMgPHNha2Fy aS5haWx1c0BsaW51eC5pbnRlbC5jb20+ClRlc3RlZC1ieTogU3RldmUgTG9uZ2VyYmVhbSA8c3Rl dmVfbG9uZ2VyYmVhbUBtZW50b3IuY29tPgotLS0KIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0 bDItZndub2RlLmMgfCAzMSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBpbmNsdWRl L21lZGlhL3Y0bDItbWVkaWFidXMuaCAgICAgICAgIHwgIDIgKysKIDIgZmlsZXMgY2hhbmdlZCwg MTkgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0 bDItZndub2RlLmMKaW5kZXggZDZiYTNlNWQ0MzU2Li5hYTNkMjhjNGE1MGIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMKKysrIGIvZHJpdmVycy9tZWRp YS92NGwyLWNvcmUvdjRsMi1md25vZGUuYwpAQCAtMTE0LDggKzExNCwxMSBAQCBzdGF0aWMgaW50 IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX2NzaTJfYnVzKHN0cnVjdCBmd25vZGVfaGFuZGxl ICpmd25vZGUsCiAJCWZsYWdzIHw9IFY0TDJfTUJVU19DU0kyX0NPTlRJTlVPVVNfQ0xPQ0s7CiAJ fQogCi0JYnVzLT5mbGFncyA9IGZsYWdzOwotCXZlcC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQ1NJ Ml9EUEhZOworCWlmIChsYW5lc191c2VkIHx8IGhhdmVfY2xrX2xhbmUgfHwKKwkgICAgKGZsYWdz ICYgflY0TDJfTUJVU19DU0kyX0NPTlRJTlVPVVNfQ0xPQ0spKSB7CisJCWJ1cy0+ZmxhZ3MgPSBm bGFnczsKKwkJdmVwLT5idXNfdHlwZSA9IFY0TDJfTUJVU19DU0kyX0RQSFk7CisJfQogCiAJcmV0 dXJuIDA7CiB9CkBAIC0xNDUsMTEgKzE0OCw2IEBAIHN0YXRpYyB2b2lkIHY0bDJfZndub2RlX2Vu ZHBvaW50X3BhcnNlX3BhcmFsbGVsX2J1cygKIAkJcHJfZGVidWcoImZpZWxkLWV2ZW4tYWN0aXZl ICVzXG4iLCB2ID8gImhpZ2giIDogImxvdyIpOwogCX0KIAotCWlmIChmbGFncykKLQkJdmVwLT5i dXNfdHlwZSA9IFY0TDJfTUJVU19QQVJBTExFTDsKLQllbHNlCi0JCXZlcC0+YnVzX3R5cGUgPSBW NEwyX01CVVNfQlQ2NTY7Ci0KIAlpZiAoIWZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihmd25vZGUs ICJwY2xrLXNhbXBsZSIsICZ2KSkgewogCQlmbGFncyB8PSB2ID8gVjRMMl9NQlVTX1BDTEtfU0FN UExFX1JJU0lORyA6CiAJCQlWNEwyX01CVVNfUENMS19TQU1QTEVfRkFMTElORzsKQEAgLTE5Miwx MyArMTkwLDIxIEBAIHN0YXRpYyB2b2lkIHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX3BhcmFs bGVsX2J1cygKIAl9CiAKIAlidXMtPmZsYWdzID0gZmxhZ3M7Ci0KKwlpZiAoZmxhZ3MgJiAoVjRM Ml9NQlVTX0hTWU5DX0FDVElWRV9ISUdIIHwKKwkJICAgICBWNEwyX01CVVNfSFNZTkNfQUNUSVZF X0xPVyB8CisJCSAgICAgVjRMMl9NQlVTX1ZTWU5DX0FDVElWRV9ISUdIIHwKKwkJICAgICBWNEwy X01CVVNfVlNZTkNfQUNUSVZFX0xPVyB8CisJCSAgICAgVjRMMl9NQlVTX0ZJRUxEX0VWRU5fSElH SCB8CisJCSAgICAgVjRMMl9NQlVTX0ZJRUxEX0VWRU5fTE9XKSkKKwkJdmVwLT5idXNfdHlwZSA9 IFY0TDJfTUJVU19QQVJBTExFTDsKKwllbHNlCisJCXZlcC0+YnVzX3R5cGUgPSBWNEwyX01CVVNf QlQ2NTY7CiB9CiAKIHN0YXRpYyB2b2lkCiB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kx X2J1cyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLAogCQkJCSAgICBzdHJ1Y3QgdjRsMl9m d25vZGVfZW5kcG9pbnQgKnZlcCwKLQkJCQkgICAgdTMyIGJ1c190eXBlKQorCQkJCSAgICBlbnVt IHY0bDJfZndub2RlX2J1c190eXBlIGJ1c190eXBlKQogewogCXN0cnVjdCB2NGwyX2Z3bm9kZV9i dXNfbWlwaV9jc2kxICpidXMgPSAmdmVwLT5idXMubWlwaV9jc2kxOwogCXUzMiB2OwpAQCAtMjUw LDExICsyNTYsOCBAQCBzdGF0aWMgaW50IF9fdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uoc3Ry dWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwKIAkJcnZhbCA9IHY0bDJfZndub2RlX2VuZHBvaW50 X3BhcnNlX2NzaTJfYnVzKGZ3bm9kZSwgdmVwKTsKIAkJaWYgKHJ2YWwpCiAJCQlyZXR1cm4gcnZh bDsKLQkJLyoKLQkJICogUGFyc2UgdGhlIHBhcmFsbGVsIHZpZGVvIGJ1cyBwcm9wZXJ0aWVzIG9u bHkgaWYgbm9uZQotCQkgKiBvZiB0aGUgTUlQSSBDU0ktMiBzcGVjaWZpYyBwcm9wZXJ0aWVzIHdl cmUgZm91bmQuCi0JCSAqLwotCQlpZiAodmVwLT5idXMubWlwaV9jc2kyLmZsYWdzID09IDApCisK KwkJaWYgKHZlcC0+YnVzX3R5cGUgPT0gVjRMMl9NQlVTX1VOS05PV04pCiAJCQl2NGwyX2Z3bm9k ZV9lbmRwb2ludF9wYXJzZV9wYXJhbGxlbF9idXMoZndub2RlLCB2ZXApOwogCiAJCWJyZWFrOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS92NGwyLW1lZGlhYnVzLmggYi9pbmNsdWRlL21lZGlh L3Y0bDItbWVkaWFidXMuaAppbmRleCAyNmUxYzY0NGRlZDYuLmRmMWQ1NTJlOWRmNiAxMDA2NDQK LS0tIGEvaW5jbHVkZS9tZWRpYS92NGwyLW1lZGlhYnVzLmgKKysrIGIvaW5jbHVkZS9tZWRpYS92 NGwyLW1lZGlhYnVzLmgKQEAgLTcwLDYgKzcwLDcgQEAKIAogLyoqCiAgKiBlbnVtIHY0bDJfbWJ1 c190eXBlIC0gbWVkaWEgYnVzIHR5cGUKKyAqIEBWNEwyX01CVVNfVU5LTk9XTjoJdW5rbm93biBi dXMgdHlwZSwgbm8gVjRMMiBtZWRpYWJ1cyBjb25maWd1cmF0aW9uCiAgKiBAVjRMMl9NQlVTX1BB UkFMTEVMOglwYXJhbGxlbCBpbnRlcmZhY2Ugd2l0aCBoc3luYyBhbmQgdnN5bmMKICAqIEBWNEwy X01CVVNfQlQ2NTY6CXBhcmFsbGVsIGludGVyZmFjZSB3aXRoIGVtYmVkZGVkIHN5bmNocm9uaXNh dGlvbiwgY2FuCiAgKgkJCWFsc28gYmUgdXNlZCBmb3IgQlQuMTEyMApAQCAtNzksNiArODAsNyBA QAogICogQFY0TDJfTUJVU19DU0kyX0NQSFk6IE1JUEkgQ1NJLTIgc2VyaWFsIGludGVyZmFjZSwg d2l0aCBDLVBIWQogICovCiBlbnVtIHY0bDJfbWJ1c190eXBlIHsKKwlWNEwyX01CVVNfVU5LTk9X TiwKIAlWNEwyX01CVVNfUEFSQUxMRUwsCiAJVjRMMl9NQlVTX0JUNjU2LAogCVY0TDJfTUJVU19D U0kxLAotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f 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]:40962 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728229AbeIMCgJ (ORCPT ); Wed, 12 Sep 2018 22:36:09 -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 08/23] v4l: fwnode: Detect bus type correctly Date: Thu, 13 Sep 2018 00:29:27 +0300 Message-Id: <20180912212942.19641-9-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: In case the device supports multiple video bus types on an endpoint, the V4L2 fwnode framework attempts to detect the type based on the available information. This wasn't working really well, and sometimes could lead to the V4L2 fwnode endpoint struct as being mishandled between the bus types. Default to Bt.656 if no properties suggesting a bus type are found. Signed-off-by: Sakari Ailus Tested-by: Steve Longerbeam --- drivers/media/v4l2-core/v4l2-fwnode.c | 31 +++++++++++++++++-------------- include/media/v4l2-mediabus.h | 2 ++ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index d6ba3e5d4356..aa3d28c4a50b 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -114,8 +114,11 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, flags |= V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; } - bus->flags = flags; - vep->bus_type = V4L2_MBUS_CSI2_DPHY; + if (lanes_used || have_clk_lane || + (flags & ~V4L2_MBUS_CSI2_CONTINUOUS_CLOCK)) { + bus->flags = flags; + vep->bus_type = V4L2_MBUS_CSI2_DPHY; + } return 0; } @@ -145,11 +148,6 @@ static void v4l2_fwnode_endpoint_parse_parallel_bus( pr_debug("field-even-active %s\n", v ? "high" : "low"); } - if (flags) - vep->bus_type = V4L2_MBUS_PARALLEL; - else - vep->bus_type = V4L2_MBUS_BT656; - if (!fwnode_property_read_u32(fwnode, "pclk-sample", &v)) { flags |= v ? V4L2_MBUS_PCLK_SAMPLE_RISING : V4L2_MBUS_PCLK_SAMPLE_FALLING; @@ -192,13 +190,21 @@ static void v4l2_fwnode_endpoint_parse_parallel_bus( } bus->flags = flags; - + if (flags & (V4L2_MBUS_HSYNC_ACTIVE_HIGH | + V4L2_MBUS_HSYNC_ACTIVE_LOW | + V4L2_MBUS_VSYNC_ACTIVE_HIGH | + V4L2_MBUS_VSYNC_ACTIVE_LOW | + V4L2_MBUS_FIELD_EVEN_HIGH | + V4L2_MBUS_FIELD_EVEN_LOW)) + vep->bus_type = V4L2_MBUS_PARALLEL; + else + vep->bus_type = V4L2_MBUS_BT656; } static void v4l2_fwnode_endpoint_parse_csi1_bus(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep, - u32 bus_type) + enum v4l2_fwnode_bus_type bus_type) { struct v4l2_fwnode_bus_mipi_csi1 *bus = &vep->bus.mipi_csi1; u32 v; @@ -250,11 +256,8 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep); if (rval) return rval; - /* - * Parse the parallel video bus properties only if none - * of the MIPI CSI-2 specific properties were found. - */ - if (vep->bus.mipi_csi2.flags == 0) + + if (vep->bus_type == V4L2_MBUS_UNKNOWN) v4l2_fwnode_endpoint_parse_parallel_bus(fwnode, vep); break; diff --git a/include/media/v4l2-mediabus.h b/include/media/v4l2-mediabus.h index 26e1c644ded6..df1d552e9df6 100644 --- a/include/media/v4l2-mediabus.h +++ b/include/media/v4l2-mediabus.h @@ -70,6 +70,7 @@ /** * enum v4l2_mbus_type - media bus type + * @V4L2_MBUS_UNKNOWN: unknown bus type, no V4L2 mediabus configuration * @V4L2_MBUS_PARALLEL: parallel interface with hsync and vsync * @V4L2_MBUS_BT656: parallel interface with embedded synchronisation, can * also be used for BT.1120 @@ -79,6 +80,7 @@ * @V4L2_MBUS_CSI2_CPHY: MIPI CSI-2 serial interface, with C-PHY */ enum v4l2_mbus_type { + V4L2_MBUS_UNKNOWN, V4L2_MBUS_PARALLEL, V4L2_MBUS_BT656, V4L2_MBUS_CSI1, -- 2.11.0