Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2298902pxa; Mon, 3 Aug 2020 12:28:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxIRhhu7yxTqUwu5ztH/UPj6pGR/AxnpZU1fVJrHSi95HJSqYCRS3C8zimliuhjUpEL79Rj X-Received: by 2002:a05:6402:3121:: with SMTP id dd1mr17696148edb.72.1596482927337; Mon, 03 Aug 2020 12:28:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596482927; cv=none; d=google.com; s=arc-20160816; b=dh1TJ+NwDd97SseEKGVOSDqJHqRDaUrDNWSKSFAigJQMq6IefiZgGivGATn0qP2leM Lv/xwsJqyzkAidiJazkcLYLApGwISAenUmFoOUHgwpFxhNtTA3dnEYW802Q+1KhL6emT +RXc5MdJxBr+hn1EUsPrD6yqC5UppeeOLcJEqSz3cwEHLERWrxaufmN9NSunhSheEJnH H60LgDekCQtYjwwE64TdYqE8sZMoqftMG+oPmJiFqtzzj8z+OCRhyxiQm3XtmEKiynt+ RbcVtkM3O5eGBxQcfRw7ErqNhUdFKh64BRsMrOb8QKeglnFWm94zme9qFKhT/1aqddvJ Mzkg== 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=5Y2X7yaPaqpV5N7ZSBlIfeWsAsh614hvLfSmUd/sIQo=; b=yuLSRVOOhXPmHubHKw1jgrWMzP64K3iWLKcJz5CMskNr2IaHjiFjvlnjf2Ux6QTQxh gelzOTi260Y0TASCTD5VYT4QFNlmpxFEerWWiDJq/xtgz42byZe3s5UUXsPVMLP7k05s pk/DqLFUeM3FNHdnLqPmeVkSJXbZKp/ucvK2QCyZYXWhRyY5yLQEfXFjUo40xMYie9Cu pWwKbMbrRpnfxMYk/GQ6QpXyf9peJVai9JeKTVMv979caoapv116yzldfhKtSw/FTjKO 9yBAFLMZI3GvGMDrhnPKrrPyrCluCO3W4GmpNwITAShCMrh5CdvffAT2vrekwAyT0FwK H8IQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ragnatech-se.20150623.gappssmtp.com header.s=20150623 header.b=DcazyOdl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id be4si11041743edb.51.2020.08.03.12.28.24; Mon, 03 Aug 2020 12:28:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ragnatech-se.20150623.gappssmtp.com header.s=20150623 header.b=DcazyOdl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728132AbgHCT2F (ORCPT + 99 others); Mon, 3 Aug 2020 15:28:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728107AbgHCT2F (ORCPT ); Mon, 3 Aug 2020 15:28:05 -0400 Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9AC62C061756 for ; Mon, 3 Aug 2020 12:28:04 -0700 (PDT) Received: by mail-lf1-x144.google.com with SMTP id d2so15440401lfj.1 for ; Mon, 03 Aug 2020 12:28:04 -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=5Y2X7yaPaqpV5N7ZSBlIfeWsAsh614hvLfSmUd/sIQo=; b=DcazyOdl1Cm0XVeXnwrui48N4ZaYguSdbKFvjsZ+0TYZDzyW/R3gtIpcuH/csONMfz aYTj6/SOVEKvPttzCLlGJiyn3iQ0AKkLxYAQCPpu3JHEhoZ6rjT8PP6s4JIV9lZkLlHU YN3/Ww5d+rDWIfMDNdMcUYL/FVe3Uo0W+cxFiOP1JXQ97KC+xQm51MiYa3YLS5APyGh3 c1Ms2CYLfZTIhpiMP8+ZYXdv790sAcVxvcCybG3w5Jf+iyCUBuENGyOfivXRvgW/NB/s Mrh8iETSI0JmvRGwuLBOHqwLnQWZV+w+VlgdTpOU8CVGsZogn1DTifyy7URJDSEJoG7b Vyjw== 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=5Y2X7yaPaqpV5N7ZSBlIfeWsAsh614hvLfSmUd/sIQo=; b=KP96hyEnkE6us9zPdAifj03adesNMt0aAc6rs1L5yIwqfQMoRmy7chizqJCIt/aywI nsKHvwoxCX9yDJRYRXcLs8ZQxeAxOq7nRGGF5ciZ8ez+z4epo+zFKTH3D8iFbdLsU2NO VdV3CT3SF4zHSwPf5xWdj3F/YASFVdfpbG1fjheBc1Hkz7E0jQWVfN8tYIG+cqqzdcMF Zzw4NT/1LTpULEMkqdziALeWPM+kgjB9HYNsglZoIFdwpI8xu6Tzl9XpNQxheGP6vIq2 vNO2R+j+dTscbeGiPqQ+YFglq9vQzpUXk57ttxX2gZuR8eciFk9kmDlCihFLzcVgN4gN GX5w== X-Gm-Message-State: AOAM530N988ytyw94sufpRS8fdFsgJK265gql6dw8UBm8mTQYel+3K9e pG/nKkS0KXUJh+5df25MzfNGRg== X-Received: by 2002:ac2:4d4f:: with SMTP id 15mr9131918lfp.163.1596482882861; Mon, 03 Aug 2020 12:28:02 -0700 (PDT) Received: from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203]) by smtp.gmail.com with ESMTPSA id g4sm5175913lfh.13.2020.08.03.12.28.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2020 12:28:02 -0700 (PDT) Date: Mon, 3 Aug 2020 21:28:01 +0200 From: Niklas To: "Lad, Prabhakar" Cc: Lad Prabhakar , Mauro Carvalho Chehab , linux-media , Linux-Renesas , LKML , Biju Das Subject: Re: [PATCH v2] media: rcar-vin: Add support to select data pins for YCbCr422-8bit input Message-ID: <20200803192801.GC2297236@oden.dyn.berto.se> References: <1596470573-15065-1-git-send-email-prabhakar.mahadev-lad.rj@bp.renesas.com> <20200803180618.GA2297236@oden.dyn.berto.se> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Lad, On 2020-08-03 20:17:54 +0100, Lad, Prabhakar wrote: > Hi Niklas, > > Thank you for the review. > > On Mon, Aug 3, 2020 at 7:06 PM Niklas wrote: > > > > Hi Lad, > > > > Thanks for your work. > > > > On 2020-08-03 17:02:53 +0100, Lad Prabhakar wrote: > > > Select the data pins for YCbCr422-8bit input format depending on > > > bus_width and data_shift passed as part of DT. > > > > > > Signed-off-by: Lad Prabhakar > > > Reviewed-by: Biju Das > > > --- > > > Changes for v2: > > > * Dropped DT binding documentation patch > > > * Select the data pins depending on bus-width and data-shift > > > > I like this v2 much better then v1, nice work! > > > > > > > > v1 - > > > https://patchwork.kernel.org/project/linux-renesas-soc/list/?series=323799 > > > --- > > > drivers/media/platform/rcar-vin/rcar-core.c | 5 +++++ > > > drivers/media/platform/rcar-vin/rcar-dma.c | 7 +++++++ > > > drivers/media/platform/rcar-vin/rcar-vin.h | 5 +++++ > > > 3 files changed, 17 insertions(+) > > > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c > > > index 7440c8965d27..55005d86928d 100644 > > > --- a/drivers/media/platform/rcar-vin/rcar-core.c > > > +++ b/drivers/media/platform/rcar-vin/rcar-core.c > > > @@ -624,6 +624,11 @@ static int rvin_parallel_parse_v4l2(struct device *dev, > > > vin->parallel = rvpe; > > > vin->parallel->mbus_type = vep->bus_type; > > > > > > + /* select VInDATA[15:8] pins for YCbCr422-8bit format */ > > > + if (vep->bus.parallel.bus_width == BUS_WIDTH_8 && > > > + vep->bus.parallel.data_shift == DATA_SHIFT_8) > > > + vin->parallel->ycbcr_8b_g = true; > > > + > > > > I would store the bus_width and bus_shift values in the struct > > rvin_parallel_entity and evaluate them in place rater then create a flag > > for this specific use-case.. > > > Ok will do that. > > > Also according to the documentation is the check correct? Do we not wish > > to use the new mode when bus_width == 16 and bus_shift == 8. The check > > you have here seems to describe a 8 lane bus where 0 lanes are used. > > > bus-width is the actual data lines used, so bus_width == 16 and > bus_shift == 8 would mean use lines 23:8, so just check for bus_width > == 8 and bus_shift == 8 should be sufficient. As you and Geert points out I was wrong, they should indeed both be 8. > > > I think you should also verify that bus_shift is either 0 or 8 as that > > is all the driver supports. > > > Not sure if thats correct.In that case this patch wont make sense, I > believed we agreed upon we determine the YDS depending on both > bus-width and bus-shift. I'm sorry I think I lost you :-) The driver is not capable of supporting bus_width = 8 and bus_shift = 2 right? Maybe we are talking about different things. What I tried to say (updated with the knowledge of that bus_width should indeed be 8 and not 16) was that would it make sens to with bus_width=8 allow for a bus_shift value other then 0 or 8? What for example would the driver do if the value was 2? > > On iWave G21D-Q7 for VI2 interface VI2_G* pins are connected to SoC > and for VIN3 interface Vi3_DATA* pins are connected. So in this case > the capture only works for VIN2 only if YDS bit is set for 8-bit 422, > and for VIN3 capture only works if YDS is 0 > > &vin2 { > status = "okay"; > pinctrl-0 = <&vin2_pins>; > pinctrl-names = "default"; > > port { > #address-cells = <1>; > #size-cells = <0>; > > vin2ep: endpoint { > remote-endpoint = <&ov7725_2>; > bus-width = <8>; > data-shift = <8>; > }; > }; > }; > > &vin3 { > status = "okay"; > pinctrl-0 = <&vin3_pins>; > pinctrl-names = "default"; > > port { > #address-cells = <1>; > #size-cells = <0>; > > vin3ep: endpoint { > remote-endpoint = <&ov7725_3>; > bus-width = <8>; > }; > }; > }; > > > > > switch (vin->parallel->mbus_type) { > > > case V4L2_MBUS_PARALLEL: > > > vin_dbg(vin, "Found PARALLEL media bus\n"); > > > diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c > > > index 1a30cd036371..5db483877d65 100644 > > > --- a/drivers/media/platform/rcar-vin/rcar-dma.c > > > +++ b/drivers/media/platform/rcar-vin/rcar-dma.c > > > @@ -127,6 +127,8 @@ > > > #define VNDMR2_FTEV (1 << 17) > > > #define VNDMR2_VLV(n) ((n & 0xf) << 12) > > > > > > +#define VNDMR2_YDS BIT(22) > > > > This should be grouped with the other VNDMR2_* macros and not on its > > own. Also it should be sorted so it should be inserted between > > VNDMR2_CES and VNDMR2_FTEV. > > > > Also I know BIT() is a nice macro but the rest of the driver uses (1 << > > 22), please do the same for this one. > > > Sure will take care of it. > > > > + > > > /* Video n CSI2 Interface Mode Register (Gen3) */ > > > #define VNCSI_IFMD_DES1 (1 << 26) > > > #define VNCSI_IFMD_DES0 (1 << 25) > > > @@ -698,6 +700,11 @@ static int rvin_setup(struct rvin_dev *vin) > > > /* Data Enable Polarity Select */ > > > if (vin->parallel->mbus_flags & V4L2_MBUS_DATA_ENABLE_LOW) > > > dmr2 |= VNDMR2_CES; > > > + > > > + if (vin->parallel->ycbcr_8b_g && vin->mbus_code == MEDIA_BUS_FMT_UYVY8_2X8) > > > + dmr2 |= VNDMR2_YDS; > > > + else > > > + dmr2 &= ~VNDMR2_YDS; > > > > dmr2 is already unitized and YDS is cleared, no need to clear it again > > if you don't wish to set it. Taking this and the comments above into > > account this would become something like (not tested), > > > Agreed. > > > switch (vin->mbus_code) { > > case MEDIA_BUS_FMT_UYVY8_2X8: > > if (vin->parallel->bus_width == 16 && vin->parallel->bus_shift == 8) > > dmr2 |= VNDMR2_YDS; > > break; > > default: > > break; > > } > > > > > } > > > > > > /* > > > diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h > > > index c19d077ce1cb..3126fee9a89b 100644 > > > --- a/drivers/media/platform/rcar-vin/rcar-vin.h > > > +++ b/drivers/media/platform/rcar-vin/rcar-vin.h > > > @@ -87,6 +87,9 @@ struct rvin_video_format { > > > u8 bpp; > > > }; > > > > > > +#define BUS_WIDTH_8 8 > > > +#define DATA_SHIFT_8 8 > > > > As pointed out by Geert, not so useful, use 8 in the code :-) > > > Agreed will drop it. > > Cheers, > Prabhakar -- Regards, Niklas S?derlund