From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sakari Ailus Subject: [PATCH v3.1 09/23] v4l: fwnode: Make use of newly specified bus types Date: Thu, 13 Sep 2018 12:43:48 +0300 Message-ID: <20180913094348.10967-1-sakari.ailus@linux.intel.com> References: <20180913091452.GQ20333@w540> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180913091452.GQ20333@w540> 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+ClJldmlld2VkLWJ5OiBKYWNvcG8gTW9uZGkgPGphY29wbytyZW5l c2FzQGptb25kaS5vcmc+Ci0tLQpzaW5jZSB2MzoKCi0gVXNlIFBBUkFMTEVMX01CVVNfRkxBR1Mg d2hlcmUgYXBwcm9wcmlhdGUgLS0tIHRoYW5rcywgSmFjb3BvIQoKIGRyaXZlcnMvbWVkaWEvdjRs Mi1jb3JlL3Y0bDItZndub2RlLmMgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMgYi9kcml2 ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWZ3bm9kZS5jCmluZGV4IGFhM2QyOGM0YTUwYi4uMmQw ZDJmYWNmMjBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWZ3bm9k ZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZndub2RlLmMKQEAgLTEyMyw4 ICsxMjMsMTYgQEAgc3RhdGljIGludCB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kyX2J1 cyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLAogCXJldHVybiAwOwogfQogCisjZGVmaW5l IFBBUkFMTEVMX01CVVNfRkxBR1MgKFY0TDJfTUJVU19IU1lOQ19BQ1RJVkVfSElHSCB8CVwKKwkJ CSAgICAgVjRMMl9NQlVTX0hTWU5DX0FDVElWRV9MT1cgfAlcCisJCQkgICAgIFY0TDJfTUJVU19W U1lOQ19BQ1RJVkVfSElHSCB8CVwKKwkJCSAgICAgVjRMMl9NQlVTX1ZTWU5DX0FDVElWRV9MT1cg fAlcCisJCQkgICAgIFY0TDJfTUJVU19GSUVMRF9FVkVOX0hJR0ggfAlcCisJCQkgICAgIFY0TDJf TUJVU19GSUVMRF9FVkVOX0xPVykKKwogc3RhdGljIHZvaWQgdjRsMl9md25vZGVfZW5kcG9pbnRf cGFyc2VfcGFyYWxsZWxfYnVzKAotCXN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsIHN0cnVj dCB2NGwyX2Z3bm9kZV9lbmRwb2ludCAqdmVwKQorCXN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25v ZGUsIHN0cnVjdCB2NGwyX2Z3bm9kZV9lbmRwb2ludCAqdmVwLAorCWVudW0gdjRsMl9md25vZGVf YnVzX3R5cGUgYnVzX3R5cGUpCiB7CiAJc3RydWN0IHY0bDJfZndub2RlX2J1c19wYXJhbGxlbCAq YnVzID0gJnZlcC0+YnVzLnBhcmFsbGVsOwogCXVuc2lnbmVkIGludCBmbGFncyA9IDA7CkBAIC0x ODksMTYgKzE5NywyMyBAQCBzdGF0aWMgdm9pZCB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9w YXJhbGxlbF9idXMoCiAJCXByX2RlYnVnKCJkYXRhLWVuYWJsZS1hY3RpdmUgJXNcbiIsIHYgPyAi aGlnaCIgOiAibG93Iik7CiAJfQogCi0JYnVzLT5mbGFncyA9IGZsYWdzOwotCWlmIChmbGFncyAm IChWNEwyX01CVVNfSFNZTkNfQUNUSVZFX0hJR0ggfAotCQkgICAgIFY0TDJfTUJVU19IU1lOQ19B Q1RJVkVfTE9XIHwKLQkJICAgICBWNEwyX01CVVNfVlNZTkNfQUNUSVZFX0hJR0ggfAotCQkgICAg IFY0TDJfTUJVU19WU1lOQ19BQ1RJVkVfTE9XIHwKLQkJICAgICBWNEwyX01CVVNfRklFTERfRVZF Tl9ISUdIIHwKLQkJICAgICBWNEwyX01CVVNfRklFTERfRVZFTl9MT1cpKQorCXN3aXRjaCAoYnVz X3R5cGUpIHsKKwlkZWZhdWx0OgorCQlidXMtPmZsYWdzID0gZmxhZ3M7CisJCWlmIChmbGFncyAm IFBBUkFMTEVMX01CVVNfRkxBR1MpCisJCQl2ZXAtPmJ1c190eXBlID0gVjRMMl9NQlVTX1BBUkFM TEVMOworCQllbHNlCisJCQl2ZXAtPmJ1c190eXBlID0gVjRMMl9NQlVTX0JUNjU2OworCQlicmVh azsKKwljYXNlIFY0TDJfRldOT0RFX0JVU19UWVBFX1BBUkFMTEVMOgogCQl2ZXAtPmJ1c190eXBl ID0gVjRMMl9NQlVTX1BBUkFMTEVMOwotCWVsc2UKKwkJYnVzLT5mbGFncyA9IGZsYWdzOworCQli cmVhazsKKwljYXNlIFY0TDJfRldOT0RFX0JVU19UWVBFX0JUNjU2OgogCQl2ZXAtPmJ1c190eXBl ID0gVjRMMl9NQlVTX0JUNjU2OworCQlidXMtPmZsYWdzID0gZmxhZ3MgJiB+UEFSQUxMRUxfTUJV U19GTEFHUzsKKwkJYnJlYWs7CisJfQogfQogCiBzdGF0aWMgdm9pZApAQCAtMjU4LDcgKzI3Myw4 IEBAIHN0YXRpYyBpbnQgX192NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZShzdHJ1Y3QgZndub2Rl X2hhbmRsZSAqZndub2RlLAogCQkJcmV0dXJuIHJ2YWw7CiAKIAkJaWYgKHZlcC0+YnVzX3R5cGUg PT0gVjRMMl9NQlVTX1VOS05PV04pCi0JCQl2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJh bGxlbF9idXMoZndub2RlLCB2ZXApOworCQkJdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2VfcGFy YWxsZWxfYnVzKAorCQkJCWZ3bm9kZSwgdmVwLCBWNEwyX01CVVNfVU5LTk9XTik7CiAKIAkJYnJl YWs7CiAJY2FzZSBWNEwyX0ZXTk9ERV9CVVNfVFlQRV9DQ1AyOgpAQCAtMjY2LDYgKzI4MiwxOCBA QCBzdGF0aWMgaW50IF9fdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uoc3RydWN0IGZ3bm9kZV9o YW5kbGUgKmZ3bm9kZSwKIAkJdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2VfY3NpMV9idXMoZndu b2RlLCB2ZXAsIGJ1c190eXBlKTsKIAogCQlicmVhazsKKwljYXNlIFY0TDJfRldOT0RFX0JVU19U WVBFX0NTSTJfRFBIWToKKwkJdmVwLT5idXNfdHlwZSA9IFY0TDJfTUJVU19DU0kyX0RQSFk7CisJ CXJ2YWwgPSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9jc2kyX2J1cyhmd25vZGUsIHZlcCk7 CisJCWlmIChydmFsKQorCQkJcmV0dXJuIHJ2YWw7CisKKwkJYnJlYWs7CisJY2FzZSBWNEwyX0ZX Tk9ERV9CVVNfVFlQRV9QQVJBTExFTDoKKwljYXNlIFY0TDJfRldOT0RFX0JVU19UWVBFX0JUNjU2 OgorCQl2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZV9wYXJhbGxlbF9idXMoZndub2RlLCB2ZXAs IGJ1c190eXBlKTsKKworCQlicmVhazsKIAlkZWZhdWx0OgogCQlwcl93YXJuKCJ1bnN1cHBvcnRl ZCBidXMgdHlwZSAldVxuIiwgYnVzX3R5cGUpOwogCQlyZXR1cm4gLUVJTlZBTDsKLS0gCjIuMTEu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:44514 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726945AbeIMOwb (ORCPT ); Thu, 13 Sep 2018 10:52:31 -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.1 09/23] v4l: fwnode: Make use of newly specified bus types Date: Thu, 13 Sep 2018 12:43:48 +0300 Message-Id: <20180913094348.10967-1-sakari.ailus@linux.intel.com> In-Reply-To: <20180913091452.GQ20333@w540> References: <20180913091452.GQ20333@w540> 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 Reviewed-by: Jacopo Mondi --- since v3: - Use PARALLEL_MBUS_FLAGS where appropriate --- thanks, Jacopo! drivers/media/v4l2-core/v4l2-fwnode.c | 48 +++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index aa3d28c4a50b..2d0d2facf20f 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,23 @@ 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 & PARALLEL_MBUS_FLAGS) + 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 +273,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 +282,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