From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sakari Ailus Subject: [PATCH v3 09/23] v4l: fwnode: Make use of newly specified bus types Date: Thu, 13 Sep 2018 00:29:28 +0300 Message-ID: <20180912212942.19641-10-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 QWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgQ1NJLTIgRC1QSFksIHBhcmFsbGVsIG9yIEJ0LjY1NiBi dXMgZXhwbGljaXRseS4KClNpZ25lZC1vZmYtYnk6IFNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVz QGxpbnV4LmludGVsLmNvbT4KVGVzdGVkLWJ5OiBTdGV2ZSBMb25nZXJiZWFtIDxzdGV2ZV9sb25n ZXJiZWFtQG1lbnRvci5jb20+Ci0tLQogZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25v ZGUuYyB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1j b3JlL3Y0bDItZndub2RlLmMKaW5kZXggYWEzZDI4YzRhNTBiLi43NGMyZjRlMDNlNTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMKKysrIGIvZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdjRsMi1md25vZGUuYwpAQCAtMTIzLDggKzEyMywxNiBAQCBzdGF0 aWMgaW50IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX2NzaTJfYnVzKHN0cnVjdCBmd25vZGVf aGFuZGxlICpmd25vZGUsCiAJcmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgUEFSQUxMRUxfTUJVU19G TEFHUyAoVjRMMl9NQlVTX0hTWU5DX0FDVElWRV9ISUdIIHwJXAorCQkJICAgICBWNEwyX01CVVNf SFNZTkNfQUNUSVZFX0xPVyB8CVwKKwkJCSAgICAgVjRMMl9NQlVTX1ZTWU5DX0FDVElWRV9ISUdI IHwJXAorCQkJICAgICBWNEwyX01CVVNfVlNZTkNfQUNUSVZFX0xPVyB8CVwKKwkJCSAgICAgVjRM Ml9NQlVTX0ZJRUxEX0VWRU5fSElHSCB8CVwKKwkJCSAgICAgVjRMMl9NQlVTX0ZJRUxEX0VWRU5f TE9XKQorCiBzdGF0aWMgdm9pZCB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJhbGxlbF9i dXMoCi0Jc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgc3RydWN0IHY0bDJfZndub2RlX2Vu ZHBvaW50ICp2ZXApCisJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgc3RydWN0IHY0bDJf Zndub2RlX2VuZHBvaW50ICp2ZXAsCisJZW51bSB2NGwyX2Z3bm9kZV9idXNfdHlwZSBidXNfdHlw ZSkKIHsKIAlzdHJ1Y3QgdjRsMl9md25vZGVfYnVzX3BhcmFsbGVsICpidXMgPSAmdmVwLT5idXMu cGFyYWxsZWw7CiAJdW5zaWduZWQgaW50IGZsYWdzID0gMDsKQEAgLTE4OSwxNiArMTk3LDI4IEBA IHN0YXRpYyB2b2lkIHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX3BhcmFsbGVsX2J1cygKIAkJ cHJfZGVidWcoImRhdGEtZW5hYmxlLWFjdGl2ZSAlc1xuIiwgdiA/ICJoaWdoIiA6ICJsb3ciKTsK IAl9CiAKLQlidXMtPmZsYWdzID0gZmxhZ3M7Ci0JaWYgKGZsYWdzICYgKFY0TDJfTUJVU19IU1lO Q19BQ1RJVkVfSElHSCB8Ci0JCSAgICAgVjRMMl9NQlVTX0hTWU5DX0FDVElWRV9MT1cgfAotCQkg ICAgIFY0TDJfTUJVU19WU1lOQ19BQ1RJVkVfSElHSCB8Ci0JCSAgICAgVjRMMl9NQlVTX1ZTWU5D X0FDVElWRV9MT1cgfAotCQkgICAgIFY0TDJfTUJVU19GSUVMRF9FVkVOX0hJR0ggfAotCQkgICAg IFY0TDJfTUJVU19GSUVMRF9FVkVOX0xPVykpCisJc3dpdGNoIChidXNfdHlwZSkgeworCWRlZmF1 bHQ6CisJCWJ1cy0+ZmxhZ3MgPSBmbGFnczsKKwkJaWYgKGZsYWdzICYgKFY0TDJfTUJVU19IU1lO Q19BQ1RJVkVfSElHSCB8CisJCQkgICAgIFY0TDJfTUJVU19IU1lOQ19BQ1RJVkVfTE9XIHwKKwkJ CSAgICAgVjRMMl9NQlVTX1ZTWU5DX0FDVElWRV9ISUdIIHwKKwkJCSAgICAgVjRMMl9NQlVTX1ZT WU5DX0FDVElWRV9MT1cgfAorCQkJICAgICBWNEwyX01CVVNfRklFTERfRVZFTl9ISUdIIHwKKwkJ CSAgICAgVjRMMl9NQlVTX0ZJRUxEX0VWRU5fTE9XKSkKKwkJCXZlcC0+YnVzX3R5cGUgPSBWNEwy X01CVVNfUEFSQUxMRUw7CisJCWVsc2UKKwkJCXZlcC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQlQ2 NTY7CisJCWJyZWFrOworCWNhc2UgVjRMMl9GV05PREVfQlVTX1RZUEVfUEFSQUxMRUw6CiAJCXZl cC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfUEFSQUxMRUw7Ci0JZWxzZQorCQlidXMtPmZsYWdzID0g ZmxhZ3M7CisJCWJyZWFrOworCWNhc2UgVjRMMl9GV05PREVfQlVTX1RZUEVfQlQ2NTY6CiAJCXZl cC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQlQ2NTY7CisJCWJ1cy0+ZmxhZ3MgPSBmbGFncyAmIH5Q QVJBTExFTF9NQlVTX0ZMQUdTOworCQlicmVhazsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0y NTgsNyArMjc4LDggQEAgc3RhdGljIGludCBfX3Y0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKHN0 cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsCiAJCQlyZXR1cm4gcnZhbDsKIAogCQlpZiAodmVw LT5idXNfdHlwZSA9PSBWNEwyX01CVVNfVU5LTk9XTikKLQkJCXY0bDJfZndub2RlX2VuZHBvaW50 X3BhcnNlX3BhcmFsbGVsX2J1cyhmd25vZGUsIHZlcCk7CisJCQl2NGwyX2Z3bm9kZV9lbmRwb2lu dF9wYXJzZV9wYXJhbGxlbF9idXMoCisJCQkJZndub2RlLCB2ZXAsIFY0TDJfTUJVU19VTktOT1dO KTsKIAogCQlicmVhazsKIAljYXNlIFY0TDJfRldOT0RFX0JVU19UWVBFX0NDUDI6CkBAIC0yNjYs NiArMjg3LDE4IEBAIHN0YXRpYyBpbnQgX192NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZShzdHJ1 Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLAogCQl2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9j c2kxX2J1cyhmd25vZGUsIHZlcCwgYnVzX3R5cGUpOwogCiAJCWJyZWFrOworCWNhc2UgVjRMMl9G V05PREVfQlVTX1RZUEVfQ1NJMl9EUEhZOgorCQl2ZXAtPmJ1c190eXBlID0gVjRMMl9NQlVTX0NT STJfRFBIWTsKKwkJcnZhbCA9IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX2NzaTJfYnVzKGZ3 bm9kZSwgdmVwKTsKKwkJaWYgKHJ2YWwpCisJCQlyZXR1cm4gcnZhbDsKKworCQlicmVhazsKKwlj YXNlIFY0TDJfRldOT0RFX0JVU19UWVBFX1BBUkFMTEVMOgorCWNhc2UgVjRMMl9GV05PREVfQlVT X1RZUEVfQlQ2NTY6CisJCXY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlX3BhcmFsbGVsX2J1cyhm d25vZGUsIHZlcCwgYnVzX3R5cGUpOworCisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByX3dhcm4o InVuc3VwcG9ydGVkIGJ1cyB0eXBlICV1XG4iLCBidXNfdHlwZSk7CiAJCXJldHVybiAtRUlOVkFM OwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:40966 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728237AbeIMCgK (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 09/23] v4l: fwnode: Make use of newly specified bus types Date: Thu, 13 Sep 2018 00:29:28 +0300 Message-Id: <20180912212942.19641-10-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: Add support for parsing CSI-2 D-PHY, parallel or Bt.656 bus explicitly. Signed-off-by: Sakari Ailus Tested-by: Steve Longerbeam --- drivers/media/v4l2-core/v4l2-fwnode.c | 53 ++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index aa3d28c4a50b..74c2f4e03e52 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -123,8 +123,16 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode, return 0; } +#define PARALLEL_MBUS_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) + static void v4l2_fwnode_endpoint_parse_parallel_bus( - struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep) + struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep, + enum v4l2_fwnode_bus_type bus_type) { struct v4l2_fwnode_bus_parallel *bus = &vep->bus.parallel; unsigned int flags = 0; @@ -189,16 +197,28 @@ static void v4l2_fwnode_endpoint_parse_parallel_bus( pr_debug("data-enable-active %s\n", v ? "high" : "low"); } - 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)) + switch (bus_type) { + default: + 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; + break; + case V4L2_FWNODE_BUS_TYPE_PARALLEL: vep->bus_type = V4L2_MBUS_PARALLEL; - else + bus->flags = flags; + break; + case V4L2_FWNODE_BUS_TYPE_BT656: vep->bus_type = V4L2_MBUS_BT656; + bus->flags = flags & ~PARALLEL_MBUS_FLAGS; + break; + } } static void @@ -258,7 +278,8 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, return rval; if (vep->bus_type == V4L2_MBUS_UNKNOWN) - v4l2_fwnode_endpoint_parse_parallel_bus(fwnode, vep); + v4l2_fwnode_endpoint_parse_parallel_bus( + fwnode, vep, V4L2_MBUS_UNKNOWN); break; case V4L2_FWNODE_BUS_TYPE_CCP2: @@ -266,6 +287,18 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, v4l2_fwnode_endpoint_parse_csi1_bus(fwnode, vep, bus_type); break; + case V4L2_FWNODE_BUS_TYPE_CSI2_DPHY: + vep->bus_type = V4L2_MBUS_CSI2_DPHY; + rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep); + 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); + + break; default: pr_warn("unsupported bus type %u\n", bus_type); return -EINVAL; -- 2.11.0