Received: by 2002:a25:d783:0:0:0:0:0 with SMTP id o125csp660214ybg; Thu, 19 Mar 2020 06:34:20 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvlsSEPgX24q9dw7abS2XeLmp5DcmiWdFDW5qP61V39gUdQU8pPuJorg4GcCpKHvrv0a6Ma X-Received: by 2002:aca:ef82:: with SMTP id n124mr2252502oih.73.1584624860002; Thu, 19 Mar 2020 06:34:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584624859; cv=none; d=google.com; s=arc-20160816; b=Ibmz2SbabOWxeAYUHKX15AdAe2S/jKL0QfXQGHTHHw3FoIYJHObhLDJxN3OxWpQBtD CRjBgCBHCqfz2e2DZVsFXFPS2c7QN4d7Sx9j4Bbrh1M18V4l+4CriP+VUAv/YuPL9unN a2P5rrdVjdtcdrVHA6uLzGp4j8lGyvKTZfOis13et72cfnObZ7GOwqjGpDpNklMfucih yr5DPOjdgT6cReVxadX8E/JrlT7umKJyD9YhwpCIf3Ez+5PPZ3wOmlqJkyjH8GpSLs23 5Zbl0nWfkP3AHjktGIbDj3xOtYKTN5Yjf1kMWTPGUcvenpGX3u4k8YD7VY/7Z3xwtLpD fIPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=lihn5FzD/6idQ4+0vgu8K5La8l3gtXOBL1sBTYbHOu8=; b=Pfu0v0xzkUbwQ8qoV/G3FCbPCrVfqesVx5Sq5yxgYvGRy3oTiRDAtwlkNDwidduImi A0xYR27mLASbCcunRA3toIOyvW0C/vWgQXqcjl8RJX0obMb0Np72XwsJGoYw8zY+wHBX gpU4ZuQpNE0dso5xgHkxE0/kVOOHQWRwO1blulz00kcLSiChXoHw3ThOlSZK2692fJC2 AYQL31+kSBorTEkwAmt723vV49mfXoWGfV2P+TjPULHwXivG5w2KZgMr6HY69JC8UEcI M6jprMmmcw6aLZLYXlofpUIoDt5a2cGWdzyeKFFwm/ve8opXDf8K9S/4PjOjQPztXA86 Ra1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ragnatech-se.20150623.gappssmtp.com header.s=20150623 header.b=UmhrWCo0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l75si1041450oig.59.2020.03.19.06.34.07; Thu, 19 Mar 2020 06:34:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ragnatech-se.20150623.gappssmtp.com header.s=20150623 header.b=UmhrWCo0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727770AbgCSNdw (ORCPT + 99 others); Thu, 19 Mar 2020 09:33:52 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:44992 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727228AbgCSNNP (ORCPT ); Thu, 19 Mar 2020 09:13:15 -0400 Received: by mail-lj1-f196.google.com with SMTP id w4so2378993lji.11 for ; Thu, 19 Mar 2020 06:13:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ragnatech-se.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=lihn5FzD/6idQ4+0vgu8K5La8l3gtXOBL1sBTYbHOu8=; b=UmhrWCo0xu/Iq1kPHHScxdzVFt26NhhlfDA3ZyotUREhHVnpR1ZlE+119e7SXfs/i4 S2Px3omtSK1ZeOlrOfuiNEHy9LgQciycw3xEN0+k7OhECVhpAP2SpiUh+j7yY7O8Sct4 8fiSr71XyQk3aT2MPv/nmE3kWZhUQk8LBp5y/HgQ9QZdsb9MGrsQHhfrfvouYnRX/lKE RbQRZm41lBjPwKegDkYHW1D34ZO0HEGX8Sdy5QZYUgE+WSnZA7RJU/ws/M0hF3VI9zyx PkNsTAQcL0U8dxztd9Xurhy9wZ0/2h5j+FClMG980PoPp85GgwVkGDLQWODB1rHY0dSC CtLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=lihn5FzD/6idQ4+0vgu8K5La8l3gtXOBL1sBTYbHOu8=; b=YdLvZnPUsKQYiLPnRsig8pkl7O7nhJ4n5ARDovvkN7hRb+Q069ah21j8pVlbAMswyC h8IGhEeeqz434lBkzUc7fSNDXNgtGhQCHOQidW4aXOail+F6fVe+e0RwyCbEE+SfAzKR Jx23gO+rrao0DMBkWlY/BcHeJ8dNKC6sSXHXAeFEHnZ+rQYL4ScWhBBvVRNyoqpK8CX9 atS7dhkqa4XJUba1G33QcEOAxjjWGMLskOjMOKzZc3xDAxzsh1kYPkwpSfk3D/s7c4Sr JopTc3x0lJuwmKMfZ7F+kCaicWcoFgcwrdp0ace8BwgPXgTfv2rYMKT+ZObMQ74w8f2Z Q1TQ== X-Gm-Message-State: ANhLgQ0FIqxz6Of/NxDexrkrf6PQyLePooyABR278BgbexY4b0pm6J0h xnUjoG2DPz1RZ7ITbVMDYEWNew== X-Received: by 2002:a2e:804b:: with SMTP id p11mr2185641ljg.50.1584623594050; Thu, 19 Mar 2020 06:13:14 -0700 (PDT) Received: from localhost (h-200-138.A463.priv.bahnhof.se. [176.10.200.138]) by smtp.gmail.com with ESMTPSA id g20sm1523376lfj.88.2020.03.19.06.13.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2020 06:13:13 -0700 (PDT) Date: Thu, 19 Mar 2020 14:13:12 +0100 From: Niklas To: Lad Prabhakar Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Lad Prabhakar Subject: Re: [PATCH v3 1/2] media: rcar-vin: Add support for MEDIA_BUS_FMT_SRGGB8_1X8 format Message-ID: <20200319131312.GA3192108@oden.dyn.berto.se> References: <20200318170638.18562-1-prabhakar.mahadev-lad.rj@bp.renesas.com> <20200318170638.18562-2-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200318170638.18562-2-prabhakar.mahadev-lad.rj@bp.renesas.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Prabhakar, Thanks for your work. On 2020-03-18 17:06:37 +0000, Lad Prabhakar wrote: > Add support for MEDIA_BUS_FMT_SRGGB8_1X8 format in rcar-vin by setting > format type to RAW8 in VNMC register and appropriately setting the > bpp, bytesperline to enable V4L2_PIX_FMT_SRGGB8. > For RAW8 format data is transferred by 4-Byte unit so VnIS register is > configured accordingly. > > Signed-off-by: Lad Prabhakar > --- > drivers/media/platform/rcar-vin/rcar-core.c | 1 + > drivers/media/platform/rcar-vin/rcar-dma.c | 11 ++++++++++- > drivers/media/platform/rcar-vin/rcar-v4l2.c | 4 ++++ > 3 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c > index 7440c8965d27..76daf2fe5bcd 100644 > --- a/drivers/media/platform/rcar-vin/rcar-core.c > +++ b/drivers/media/platform/rcar-vin/rcar-core.c > @@ -469,6 +469,7 @@ static int rvin_parallel_subdevice_attach(struct rvin_dev *vin, > case MEDIA_BUS_FMT_UYVY8_2X8: > case MEDIA_BUS_FMT_UYVY10_2X10: > case MEDIA_BUS_FMT_RGB888_1X24: > + case MEDIA_BUS_FMT_SRGGB8_1X8: This is wrong RAW formats are only supported on the CSI-2 interface and not the parallel one. This line shall be dropped. > vin->mbus_code = code.code; > vin_dbg(vin, "Found media bus format for %s: %d\n", > subdev->name, vin->mbus_code); > diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c > index 1a30cd036371..ec7b49c0b281 100644 > --- a/drivers/media/platform/rcar-vin/rcar-dma.c > +++ b/drivers/media/platform/rcar-vin/rcar-dma.c > @@ -85,6 +85,7 @@ > #define VNMC_INF_YUV8_BT601 (1 << 16) > #define VNMC_INF_YUV10_BT656 (2 << 16) > #define VNMC_INF_YUV10_BT601 (3 << 16) > +#define VNMC_INF_RAW8 (4 << 16) > #define VNMC_INF_YUV16 (5 << 16) > #define VNMC_INF_RGB888 (6 << 16) > #define VNMC_VUP (1 << 10) > @@ -587,13 +588,14 @@ void rvin_crop_scale_comp(struct rvin_dev *vin) > rvin_write(vin, vin->crop.top, VNSLPRC_REG); > rvin_write(vin, vin->crop.top + vin->crop.height - 1, VNELPRC_REG); > > - > /* TODO: Add support for the UDS scaler. */ > if (vin->info->model != RCAR_GEN3) > rvin_crop_scale_comp_gen2(vin); > > fmt = rvin_format_from_pixel(vin, vin->format.pixelformat); > stride = vin->format.bytesperline / fmt->bpp; > + if (vin->format.pixelformat == V4L2_PIX_FMT_SRGGB8) > + stride /= 2; I'm sorry this makes no sens to me. - The width of the image is number of pixels in the raw format. - In memory each row is either is either RGRGRG... or GBGBGB... - The pixel size is 1 byte per pixel. - We calculate bytesperline as ALIGN(width, align) * bpp, where align is how much we need to "adjust" the width to match the VNIS_REG reg value. We do this in rvin_format_bytesperline(). - We then remove bpp from bytesperline and we have a unit in pixels which is our stride. I can't see why you need to cut the stride in half. In my view you should add a check for V4L2_PIX_FMT_SRGGB8 in rvin_format_bytesperline() and pick an alignment value that matches the restrictions. I might miss something, but then I wish to learn. > rvin_write(vin, stride, VNIS_REG); > } > > @@ -676,6 +678,9 @@ static int rvin_setup(struct rvin_dev *vin) > > input_is_yuv = true; > break; > + case MEDIA_BUS_FMT_SRGGB8_1X8: > + vnmc |= VNMC_INF_RAW8; > + break; Here and ... > default: > break; > } > @@ -737,6 +742,9 @@ static int rvin_setup(struct rvin_dev *vin) > case V4L2_PIX_FMT_ABGR32: > dmr = VNDMR_A8BIT(vin->alpha) | VNDMR_EXRGB | VNDMR_DTMD_ARGB; > break; > + case V4L2_PIX_FMT_SRGGB8: > + dmr = 0; > + break; ... here we have a new problem, sorry for not thinking of it before. Up until now the VIN was capable to convert any of its supported input mbus formats to any of it's supported output pixel formats. With the addition of RAW formats this is no longer true. This new restriction needs to be added to the driver. Luck has it we can fix ... > default: > vin_err(vin, "Invalid pixelformat (0x%x)\n", > vin->format.pixelformat); > @@ -1110,6 +1118,7 @@ static int rvin_mc_validate_format(struct rvin_dev *vin, struct v4l2_subdev *sd, > case MEDIA_BUS_FMT_UYVY8_2X8: > case MEDIA_BUS_FMT_UYVY10_2X10: > case MEDIA_BUS_FMT_RGB888_1X24: > + case MEDIA_BUS_FMT_SRGGB8_1X8: > vin->mbus_code = fmt.format.code; ... this here by changes this to switch (fmt.format.code) { case MEDIA_BUS_FMT_YUYV8_1X16: case MEDIA_BUS_FMT_UYVY8_1X16: case MEDIA_BUS_FMT_UYVY8_2X8: case MEDIA_BUS_FMT_UYVY10_2X10: break; case MEDIA_BUS_FMT_RGB888_1X24: if (vin->format.pixelformat != V4L2_PIX_FMT_SRGGB8) return -EPIPE: break; default: return -EPIPE; } vin->mbus_code = fmt.format.code; > break; > default: > diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c > index 5151a3cd8a6e..ca542219e8ae 100644 > --- a/drivers/media/platform/rcar-vin/rcar-v4l2.c > +++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c > @@ -66,6 +66,10 @@ static const struct rvin_video_format rvin_formats[] = { > .fourcc = V4L2_PIX_FMT_ABGR32, > .bpp = 4, > }, > + { > + .fourcc = V4L2_PIX_FMT_SRGGB8, > + .bpp = 1, > + }, > }; > > const struct rvin_video_format *rvin_format_from_pixel(struct rvin_dev *vin, > -- > 2.20.1 > -- Regards, Niklas S?derlund