Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2165061pxa; Mon, 3 Aug 2020 09:03:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwwIgEDgwwh67sqICH4VV7+qB5nkcrhfMhuClQwH5Qhe2blan3D9S6IpwhOKEHLJBxg2BvT X-Received: by 2002:aa7:c049:: with SMTP id k9mr3780269edo.55.1596470628040; Mon, 03 Aug 2020 09:03:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596470628; cv=none; d=google.com; s=arc-20160816; b=TpigNAFbPpqkbza85t+usYXvVH8IDwsTIkPGwgMlR0XeXIuhiKrlkNn50PcXdPVJIj fm2jWnNCEWag61OQvakClsoUg0b66XMRJHvVBaBgknATZz64RjNdBkgFQdJJshD5DFIP uZHg9Ja+WiPrlIta9xR5ICj69Hr+Gwwd4AQMVI6qd2u0UqoZR4piRJ5C3mWlOpqUTGXv JkrbR8jy0GNmiQjFWFdSbPBrYRUI/56AY1p1KPyH/Lx6h2Sc+HP7JAgHaTrH74eRnDnm Eq6sdWLBxCimA0Y0ZHAAiW1OVkFC8k/7FdBZNObD33jCqFgUwOzSfKwEnRPD9c3eN5ma T60A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=frJLk7hL00KV6Z6us5lE6bKnzYN0tYBN1l8Sx8vww/I=; b=DZF4Enhu08HMY07ixBCWtymwegQvoCiuwum7rNAZZCwR4Kh+1agMbCjbqygmUgseIc K9d2SkYkSSUD4JDceHiphY1c+pJO2XMbnrhGTlVO58r6Ru2wJlFeS9BzMcYBlN+u95Hb ugaRhJfAHDEkTZ3OBjqBmrIPMPyIalzx3+yjzDSs1k6DH9S+QRjwHO/aMv1IbIOuocKc euQhyWoWTlS2mQAy6LHli2Zdwn3hr5y9x3EGnu6rlGX+Iz9kWLNcPjtie6ozD4kwA+78 7336WYzyT7iOb//vR/HyYo4vzdEe0uXXgpmsulR/fT8cHAjdWRW69KIQ8a6U0sYbuLq3 JRtw== ARC-Authentication-Results: i=1; mx.google.com; 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 a25si10771368edn.30.2020.08.03.09.03.24; Mon, 03 Aug 2020 09:03:48 -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; 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 S1728226AbgHCQDE (ORCPT + 99 others); Mon, 3 Aug 2020 12:03:04 -0400 Received: from relmlor1.renesas.com ([210.160.252.171]:40157 "EHLO relmlie5.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726457AbgHCQDE (ORCPT ); Mon, 3 Aug 2020 12:03:04 -0400 X-IronPort-AV: E=Sophos;i="5.75,430,1589209200"; d="scan'208";a="53754805" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 04 Aug 2020 01:03:02 +0900 Received: from localhost.localdomain (unknown [10.226.36.204]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 2643040062DB; Tue, 4 Aug 2020 01:03:00 +0900 (JST) From: Lad Prabhakar To: Niklas , Mauro Carvalho Chehab , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , Prabhakar , Lad Prabhakar Subject: [PATCH v2] media: rcar-vin: Add support to select data pins for YCbCr422-8bit input Date: Mon, 3 Aug 2020 17:02:53 +0100 Message-Id: <1596470573-15065-1-git-send-email-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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; + 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) + /* 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; } /* 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 + /** * struct rvin_parallel_entity - Parallel video input endpoint descriptor * @asd: sub-device descriptor for async framework @@ -95,6 +98,7 @@ struct rvin_video_format { * @mbus_flags: media bus configuration flags * @source_pad: source pad of remote subdevice * @sink_pad: sink pad of remote subdevice + * @ycbcr_8b_g: select data pins for YCbCr422-8bit * */ struct rvin_parallel_entity { @@ -106,6 +110,7 @@ struct rvin_parallel_entity { unsigned int source_pad; unsigned int sink_pad; + bool ycbcr_8b_g; }; /** -- 2.17.1