From patchwork Thu Jul 12 08:56:13 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martin X-Patchwork-Id: 13330 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1SpFCG-0000bY-Ae for patchwork@linuxtv.org; Thu, 12 Jul 2012 10:56:28 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.75/mailfrontend-4) with esmtp for id 1SpFCF-0006z6-BO; Thu, 12 Jul 2012 10:56:28 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932178Ab2GLI4Y (ORCPT ); Thu, 12 Jul 2012 04:56:24 -0400 Received: from mail-wg0-f44.google.com ([74.125.82.44]:55383 "EHLO mail-wg0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932131Ab2GLI4X (ORCPT ); Thu, 12 Jul 2012 04:56:23 -0400 Received: by wgbdr13 with SMTP id dr13so1879410wgb.1 for ; Thu, 12 Jul 2012 01:56:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=wvtzeeMhfoWkQYAPL1z+H9DK69JB/gqZ6zUVh6NtDW0=; b=lwuafqSAFH+PaVuKsBn49EgxurZenmavwfPfeMxXB/XdNOscI9yIVNCwd8k9mZtSpL S4II6JXCCQop+ZaA1DykBuJXeERAYDE8Yo09TZ1jpck1tamywaGlzclfGxQek4fgx9Ow qDZq6o/kexHZU5G9UXfiQMC9B+wC6wSMkZHkhHE8eNAjkvvWZ232MVbHURyeXRqd4Rgx ohpcX3aCXnSFpqgEneqxDUixs1zdsc3xK/sRqwr6zTn6zKmCuHxjAYxwQqV5vU4kA4ti MP6qf3+OtNn7vdqd8sP3THb7LPGlEDt6mHDSypb0s5LoaeZn3tHozSChFr6u1YwXsEwJ ZzUg== Received: by 10.180.105.163 with SMTP id gn3mr54125228wib.2.1342083381680; Thu, 12 Jul 2012 01:56:21 -0700 (PDT) Received: from piscis.vsilicon.net (96.252.106.212.dynamic.jazztel.es. [212.106.252.96]) by mx.google.com with ESMTPS id k20sm11192523wiv.11.2012.07.12.01.56.20 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 12 Jul 2012 01:56:20 -0700 (PDT) From: Javier Martin To: linux-media@vger.kernel.org Cc: fabio.estevam@freescale.com, laurent.pinchart@ideasonboard.com, g.liakhovetski@gmx.de, mchehab@infradead.org, Javier Martin Subject: [PATCH] media: mx2_camera: Add YUYV output format. Date: Thu, 12 Jul 2012 10:56:13 +0200 Message-Id: <1342083373-18245-1-git-send-email-javier.martin@vista-silicon.com> X-Mailer: git-send-email 1.7.9.5 X-Gm-Message-State: ALoCoQl6dunnYeJVpqlRwd/17QAXY3JBLNAs2x7txpYcdRoxmMNkTJquIkOSB/H1Tevhci24jAqL Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2012.7.12.84821 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, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_MEDIA_BODY 0, __CP_URI_IN_BODY 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __LINES_OF_YELLING 0, __MIME_TEXT_ONLY 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS ' Add explicit conversions from UYVY and YUYV to YUYV so that csicr1 configuration can be set properly for each format. Signed-off-by: Javier Martin --- drivers/media/video/mx2_camera.c | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c index 0f01e7b..2a33bcb 100644 --- a/drivers/media/video/mx2_camera.c +++ b/drivers/media/video/mx2_camera.c @@ -337,6 +337,34 @@ static struct mx2_fmt_cfg mx27_emma_prp_table[] = { } }, { + .in_fmt = V4L2_MBUS_FMT_UYVY8_2X8, + .out_fmt = V4L2_PIX_FMT_YUYV, + .cfg = { + .channel = 1, + .in_fmt = PRP_CNTL_DATA_IN_YUV422, + .out_fmt = PRP_CNTL_CH1_OUT_YUV422, + .src_pixel = 0x22000888, /* YUV422 (YUYV) */ + .ch1_pixel = 0x62000888, /* YUV422 (YUYV) */ + .irq_flags = PRP_INTR_RDERR | PRP_INTR_CH1WERR | + PRP_INTR_CH1FC | PRP_INTR_LBOVF, + .csicr1 = CSICR1_SWAP16_EN, + } + }, + { + .in_fmt = V4L2_MBUS_FMT_YUYV8_2X8, + .out_fmt = V4L2_PIX_FMT_YUYV, + .cfg = { + .channel = 1, + .in_fmt = PRP_CNTL_DATA_IN_YUV422, + .out_fmt = PRP_CNTL_CH1_OUT_YUV422, + .src_pixel = 0x22000888, /* YUV422 (YUYV) */ + .ch1_pixel = 0x62000888, /* YUV422 (YUYV) */ + .irq_flags = PRP_INTR_RDERR | PRP_INTR_CH1WERR | + PRP_INTR_CH1FC | PRP_INTR_LBOVF, + .csicr1 = CSICR1_PACK_DIR, + } + }, + { .in_fmt = V4L2_MBUS_FMT_YUYV8_2X8, .out_fmt = V4L2_PIX_FMT_YUV420, .cfg = { @@ -1146,6 +1174,18 @@ static int mx2_camera_get_formats(struct soc_camera_device *icd, } } + if (code == V4L2_MBUS_FMT_UYVY8_2X8) { + formats++; + if (xlate) { + xlate->host_fmt = + soc_mbus_get_fmtdesc(V4L2_MBUS_FMT_YUYV8_2X8); + xlate->code = code; + dev_dbg(dev, "Providing host format %s for sensor code %d\n", + xlate->host_fmt->name, code); + xlate++; + } + } + /* Generic pass-trough */ formats++; if (xlate) {