Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2575512lqp; Mon, 25 Mar 2024 03:12:57 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXxjtqySM48/41GAuTfZcUVulr1m25QHKw9fBE8pjONlJWzww9mdUUalZK1/IGRzk4pupa4tTLT4GjQg+Q//drWVOC3FpzMLh7QkQs7nQ== X-Google-Smtp-Source: AGHT+IHjfwFE41M1JQLs01ax8TfVHPW0crPLFYdYp5ol9y4B5uu040bduWsDU53+3SJB54VgSO/e X-Received: by 2002:a05:6871:340a:b0:22a:4ea0:d8ff with SMTP id nh10-20020a056871340a00b0022a4ea0d8ffmr539751oac.51.1711361577271; Mon, 25 Mar 2024 03:12:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711361577; cv=pass; d=google.com; s=arc-20160816; b=L46JXUDMZIeTAP3MfGKSR5C9+pSeRatJCpUHDqkEnDp7guHgeqQ4S0YKk2WV56nGEo qknHmwaBKqv7eNdlEFkSihivs2rRgO3r27WFMAYmK9McNlFv8AkHbEzEUxfRA0DElCzA aPRgiri/so4zScrOVe3uilg2UvE3O823Yh/qY+fCZjs3L5BQv11iFLbKVKtlaLYnu70d EHhmNR5TBb6PS61VKopISC3P0iMcQCbNiOX1RE85vFBY2ltfRoKIE3d6gsx4m9UGkeeV ZtMBcw/eoK+6rYKiIIITO0V+xOQqTzcXdAF1WyG68iq5GlpdxA0ZSboXAEgMasH0XCZG CWsw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=sL2TOWtdDmMSa6Pthz4z/HR7+JohGFS0R96wXooiOoY=; fh=qPC/o307FcKMX9e48ELEOR3WX9/nitAnIX4Zc73R9i4=; b=ZIBHa7CAvxHpoALLKh5RK54qmE6a5czqS8YJ3Hmq8hk+/y9cGNFyvkVHWF940aLFD2 qzSzPULX+eEV5onHMaI+1ZnwJWmhsfjQVdCjZQal9oByjkF/yh0MjZAiT8t840IHkFQF 3OnRsf25im+O722eppL3YRSfcfqB7RL95pIzqHOJogVsZaYzrfUv+gOZgg1ZCZuJCSAx 32UzO8/7d8O0COw+YvyCjUYyxXA/KR44zK7V6caOCQofMM5IC+XHOtJ0yrcU6rmSILKP Mu57WCUY2f73ulGqOIAwQIEPCAKX29459Hd042tOcaYW4LBGSA/O4f4pTD/P9xeukmQd Mctg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="ErgS/hqJ"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-116075-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116075-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id f4-20020a056a00238400b006eaae491c00si1278874pfc.16.2024.03.25.03.12.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 03:12:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-116075-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="ErgS/hqJ"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-116075-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116075-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 0874DB27B6B for ; Mon, 25 Mar 2024 08:26:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5D4BC28CE49; Mon, 25 Mar 2024 03:29:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ErgS/hqJ" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F5C71769FD; Sun, 24 Mar 2024 23:38:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323503; cv=none; b=ny5+01ggd81YnVpVo95Ns2r1vLDNX00fs4A1zFsfwjiWZ/jRfD46hKCsMewJ8W+MXe3+la5BsTGb69CesNpeMqMutxxqg07x/P98EORY2CdeojNvZGNsjjJQgN0ilYZIK4CK4w5O64ysqASbo9bZ0QrjlYNGoyCqkT78j0Ruyuw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323503; c=relaxed/simple; bh=vzvGbXL+49eDjUdw6sUa8nAJ5qfNhT2THOeIEtzub5M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mypi+hEq0DAwhEcfGGXfT7dOyGdIqYaDWR+F1bC1yPCzrlzBNEHmGDHgaDu+8tTY5QjAowu9yQOdudeAIexLmsHajvAnZnVnb3O/8yeqGtLafTEidxWoopL6dgnl0YwUB3rdHmrQyhr1wH6n+OsjVEEm+i58GPGZrcj8t/9sjkU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ErgS/hqJ; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4CB17C433C7; Sun, 24 Mar 2024 23:38:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711323501; bh=vzvGbXL+49eDjUdw6sUa8nAJ5qfNhT2THOeIEtzub5M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ErgS/hqJ3OAEIucrhdGZg2TSe9eTDKv6ojOqW9YDSMnBaAPGqIYnuqAU8VBbSeQOq Z/N8a6pj0R0C2DvSY619pw3PKtxOjWBRJmVfkY9lnqm3eWcwJN0+86x5YHuX+MAKoU QzUZHOAAtqZJa6F5HtxnrFH0SQnU8Ve4aKAIlovH9Hd9eFGRAP3C/uvpKi/4c1jjng hef5c064lmWcQdu8ZogwknBi/cIHaKT5H4YlIGbkt2IE6j6oydFePYsL9YWPwH83C7 0FeqHg36Ln91mLIjwjnFiI3aVCUmF9+M3Oax7l6m9uL+n6mEpWW7XQX1uuKJzgb2u2 GXT7ggi4DC7rA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jernej Skrabec , Hans Verkuil , Sasha Levin Subject: [PATCH 5.15 207/317] media: sun8i-di: Fix coefficient writes Date: Sun, 24 Mar 2024 19:33:07 -0400 Message-ID: <20240324233458.1352854-208-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324233458.1352854-1-sashal@kernel.org> References: <20240324233458.1352854-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Jernej Skrabec [ Upstream commit 794b581f8c6eb7b60fe468ccb96dd3cd38ff779f ] Currently coefficients are applied only once, since they don't change. However, this is done before enable bit is set and thus it doesn't get applied properly. Fix that by applying coefficients after enable bit is set. While this means that it will be done evey time, it doesn't bring much time penalty. Fixes: a4260ea49547 ("media: sun4i: Add H3 deinterlace driver") Signed-off-by: Jernej Skrabec Signed-off-by: Hans Verkuil Signed-off-by: Sasha Levin --- .../media/platform/sunxi/sun8i-di/sun8i-di.c | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/drivers/media/platform/sunxi/sun8i-di/sun8i-di.c b/drivers/media/platform/sunxi/sun8i-di/sun8i-di.c index 671e4a928993d..073a61c094183 100644 --- a/drivers/media/platform/sunxi/sun8i-di/sun8i-di.c +++ b/drivers/media/platform/sunxi/sun8i-di/sun8i-di.c @@ -66,6 +66,7 @@ static void deinterlace_device_run(void *priv) struct vb2_v4l2_buffer *src, *dst; unsigned int hstep, vstep; dma_addr_t addr; + int i; src = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx); dst = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx); @@ -160,6 +161,26 @@ static void deinterlace_device_run(void *priv) deinterlace_write(dev, DEINTERLACE_CH1_HORZ_FACT, hstep); deinterlace_write(dev, DEINTERLACE_CH1_VERT_FACT, vstep); + /* neutral filter coefficients */ + deinterlace_set_bits(dev, DEINTERLACE_FRM_CTRL, + DEINTERLACE_FRM_CTRL_COEF_ACCESS); + readl_poll_timeout(dev->base + DEINTERLACE_STATUS, val, + val & DEINTERLACE_STATUS_COEF_STATUS, 2, 40); + + for (i = 0; i < 32; i++) { + deinterlace_write(dev, DEINTERLACE_CH0_HORZ_COEF0 + i * 4, + DEINTERLACE_IDENTITY_COEF); + deinterlace_write(dev, DEINTERLACE_CH0_VERT_COEF + i * 4, + DEINTERLACE_IDENTITY_COEF); + deinterlace_write(dev, DEINTERLACE_CH1_HORZ_COEF0 + i * 4, + DEINTERLACE_IDENTITY_COEF); + deinterlace_write(dev, DEINTERLACE_CH1_VERT_COEF + i * 4, + DEINTERLACE_IDENTITY_COEF); + } + + deinterlace_clr_set_bits(dev, DEINTERLACE_FRM_CTRL, + DEINTERLACE_FRM_CTRL_COEF_ACCESS, 0); + deinterlace_clr_set_bits(dev, DEINTERLACE_FIELD_CTRL, DEINTERLACE_FIELD_CTRL_FIELD_CNT_MSK, DEINTERLACE_FIELD_CTRL_FIELD_CNT(ctx->field)); @@ -248,7 +269,6 @@ static irqreturn_t deinterlace_irq(int irq, void *data) static void deinterlace_init(struct deinterlace_dev *dev) { u32 val; - int i; deinterlace_write(dev, DEINTERLACE_BYPASS, DEINTERLACE_BYPASS_CSC); @@ -285,26 +305,6 @@ static void deinterlace_init(struct deinterlace_dev *dev) deinterlace_clr_set_bits(dev, DEINTERLACE_CHROMA_DIFF, DEINTERLACE_CHROMA_DIFF_TH_MSK, DEINTERLACE_CHROMA_DIFF_TH(5)); - - /* neutral filter coefficients */ - deinterlace_set_bits(dev, DEINTERLACE_FRM_CTRL, - DEINTERLACE_FRM_CTRL_COEF_ACCESS); - readl_poll_timeout(dev->base + DEINTERLACE_STATUS, val, - val & DEINTERLACE_STATUS_COEF_STATUS, 2, 40); - - for (i = 0; i < 32; i++) { - deinterlace_write(dev, DEINTERLACE_CH0_HORZ_COEF0 + i * 4, - DEINTERLACE_IDENTITY_COEF); - deinterlace_write(dev, DEINTERLACE_CH0_VERT_COEF + i * 4, - DEINTERLACE_IDENTITY_COEF); - deinterlace_write(dev, DEINTERLACE_CH1_HORZ_COEF0 + i * 4, - DEINTERLACE_IDENTITY_COEF); - deinterlace_write(dev, DEINTERLACE_CH1_VERT_COEF + i * 4, - DEINTERLACE_IDENTITY_COEF); - } - - deinterlace_clr_set_bits(dev, DEINTERLACE_FRM_CTRL, - DEINTERLACE_FRM_CTRL_COEF_ACCESS, 0); } static inline struct deinterlace_ctx *deinterlace_file2ctx(struct file *file) -- 2.43.0