From patchwork Sun Apr 16 17:35:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frank Schaefer X-Patchwork-Id: 40869 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from ) id 1czo63-0005O5-63; Sun, 16 Apr 2017 17:36:23 +0000 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.84_2/mailfrontend-7) with esmtp id 1czo60-0004qS-1v; Sun, 16 Apr 2017 19:36:23 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756594AbdDPRgK (ORCPT + 1 other); Sun, 16 Apr 2017 13:36:10 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:36590 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756567AbdDPRgF (ORCPT ); Sun, 16 Apr 2017 13:36:05 -0400 Received: by mail-wr0-f194.google.com with SMTP id o21so18012488wrb.3 for ; Sun, 16 Apr 2017 10:36:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8H9WeVTE08a4e+yykvvvWrK8TNWwAQ6DAUWz0kzISwU=; b=E6OdiqbYod9xh3Zt5Rb+WBmuOOY662Y8UK9VlSqo6i+kafjpW/fVND+YwTyQvbE7MQ /9L7vZwy2h3t6Ibxrp2rAw6AOgZ9Ns/Xtj4q1UH47A7Jek75r6CheMIVauunmte0C1wK CxqG8My26sy7TPzu//vfzyFU+s/VHHygyLgPa46pEFDxHUN3YaqEWQxAKr6AwT/OsLyI nW9PXykVoKnldcoAx/iTqRdxM/tbpjZFnHuInpytWcE58vw1EyF/GeAgQgRgBPJFWte/ USRhZKX79N5w5pQaqPmIOodnWK70vUPJ9Ch76hiEwPs5s1l1wtg9qnPCKu8ZqoFpfUv7 4K6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8H9WeVTE08a4e+yykvvvWrK8TNWwAQ6DAUWz0kzISwU=; b=BGDEoZjUOTrDiPgRisL4Isoe3DxhGhwb0P0qKPdYgq7qFiUIC/YpeIJXQvUcIDnnbf VRYNAAdeJLry0xMa5g3JJBagn0HvQBssEcNDn5xkEvRqIJy6wy9LOgZUDn1MUZ1Qat51 hDGxMP2MJnXC0DnJZHu+OoyENul6YZvQ6i8OWMvuvMzNmwXMbX8JjYV3g/OxMS+2P+2b PVLHtJE/GPz8d6OZumzdmEpWpgfpv8TIsf01E14e6COWWIWixjQlfFbtP/MttduXFEWE zzEjU399F4trOuOyvKrhqsYwn9J+LfF0f7q5iDCBgfglfhUh+rGIz0BKBPoz8K6fos79 r6Qg== X-Gm-Message-State: AN3rC/4KoSdi9L4WWyXHUKvaN5u/+eDWMZsF+0zgJW6felDWqh9x7fVL YWhK8UX1crRkTg== X-Received: by 10.223.134.74 with SMTP id 10mr15336195wrw.200.1492364164403; Sun, 16 Apr 2017 10:36:04 -0700 (PDT) Received: from Athlon64X2-5000.lan (ip-109-90-213-36.hsi11.unitymediagroup.de. [109.90.213.36]) by smtp.googlemail.com with ESMTPSA id l36sm8491642wrl.59.2017.04.16.10.36.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 16 Apr 2017 10:36:03 -0700 (PDT) From: =?UTF-8?q?Frank=20Sch=C3=A4fer?= To: linux-media@vger.kernel.org Cc: guennadi.liakhovetski@intel.com, hans.verkuil@cisco.com, =?UTF-8?q?Frank=20Sch=C3=A4fer?= Subject: [PATCH 7/7] ov2640: add support for MEDIA_BUS_FMT_YVYU8_2X8 and MEDIA_BUS_FMT_VYUY8_2X8 Date: Sun, 16 Apr 2017 19:35:46 +0200 Message-Id: <20170416173546.4317-8-fschaefer.oss@googlemail.com> X-Mailer: git-send-email 2.12.2 In-Reply-To: <20170416173546.4317-1-fschaefer.oss@googlemail.com> References: <20170416173546.4317-1-fschaefer.oss@googlemail.com> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2017.4.16.173016 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CT_TEXT_PLAIN_UTF8_CAPS 0, DKIM_SIGNATURE 0, IN_REP_TO 0, LEGITIMATE_SIGNS 0, MSG_THREAD 0, NO_URI_HTTPS 0, REFERENCES 0, __ANY_URI 0, __CC_NAME 0, __CC_NAME_DIFF_FROM_ACC 0, __CC_REAL_NAMES 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __FRAUD_BODY_WEBMAIL 0, __FRAUD_WEBMAIL 0, __FRAUD_WEBMAIL_FROM 0, __FROM_DOMAIN_IN_ANY_CC2 0, __FROM_DOMAIN_IN_RCPT 0, __HAS_CC_HDR 0, __HAS_FROM 0, __HAS_LIST_ID 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_TEXT_P 0, __MIME_TEXT_P1 0, __MIME_VERSION 0, __MULTIPLE_RCPTS_CC_X2 0, __NO_HTML_TAG_RAW 0, __PHISH_SPEAR_STRUCTURE_1 0, __REFERENCES 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS , __YOUTUBE_RCVD 0' Signed-off-by: Frank Schäfer --- drivers/media/i2c/ov2640.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c index 6aba0ffe486d..618230e782e7 100644 --- a/drivers/media/i2c/ov2640.c +++ b/drivers/media/i2c/ov2640.c @@ -634,6 +634,8 @@ static const struct regval_list ov2640_rgb565_le_regs[] = { static u32 ov2640_codes[] = { MEDIA_BUS_FMT_YUYV8_2X8, MEDIA_BUS_FMT_UYVY8_2X8, + MEDIA_BUS_FMT_YVYU8_2X8, + MEDIA_BUS_FMT_VYUY8_2X8, MEDIA_BUS_FMT_RGB565_2X8_BE, MEDIA_BUS_FMT_RGB565_2X8_LE, }; @@ -795,6 +797,7 @@ static int ov2640_set_params(struct i2c_client *client, { struct ov2640_priv *priv = to_ov2640(client); const struct regval_list *selected_cfmt_regs; + u8 val; int ret; /* select win */ @@ -820,6 +823,14 @@ static int ov2640_set_params(struct i2c_client *client, dev_dbg(&client->dev, "%s: Selected cfmt UYVY", __func__); selected_cfmt_regs = ov2640_uyvy_regs; break; + case MEDIA_BUS_FMT_YVYU8_2X8: + dev_dbg(&client->dev, "%s: Selected cfmt YVYU", __func__); + selected_cfmt_regs = ov2640_yuyv_regs; + break; + case MEDIA_BUS_FMT_VYUY8_2X8: + dev_dbg(&client->dev, "%s: Selected cfmt VYUY", __func__); + selected_cfmt_regs = ov2640_uyvy_regs; + break; } /* reset hardware */ @@ -852,6 +863,11 @@ static int ov2640_set_params(struct i2c_client *client, ret = ov2640_write_array(client, selected_cfmt_regs); if (ret < 0) goto err; + val = (code == MEDIA_BUS_FMT_YVYU8_2X8) + || (code == MEDIA_BUS_FMT_VYUY8_2X8) ? CTRL0_VFIRST : 0x00; + ret = ov2640_mask_set(client, CTRL0, CTRL0_VFIRST, val); + if (ret < 0) + goto err; priv->cfmt_code = code; @@ -914,6 +930,8 @@ static int ov2640_set_fmt(struct v4l2_subdev *sd, case MEDIA_BUS_FMT_RGB565_2X8_LE: case MEDIA_BUS_FMT_YUYV8_2X8: case MEDIA_BUS_FMT_UYVY8_2X8: + case MEDIA_BUS_FMT_YVYU8_2X8: + case MEDIA_BUS_FMT_VYUY8_2X8: break; default: mf->code = MEDIA_BUS_FMT_UYVY8_2X8;