From patchwork Thu Apr 11 16:12:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 10896399 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 70545186D for ; Thu, 11 Apr 2019 16:13:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 61EC52654B for ; Thu, 11 Apr 2019 16:13:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 56C2F28D16; Thu, 11 Apr 2019 16:13:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0E2292654B for ; Thu, 11 Apr 2019 16:13:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726818AbfDKQNG (ORCPT ); Thu, 11 Apr 2019 12:13:06 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:35636 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726757AbfDKQNF (ORCPT ); Thu, 11 Apr 2019 12:13:05 -0400 Received: from localhost.localdomain (cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5F5A41A4C; Thu, 11 Apr 2019 18:13:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1554999181; bh=jdD+5Efy+UtrEF9cneBBj3cLEPhRJLTKJSbwx+BGkfk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Gn1UWlMXStmDGHF7vuou8VHbiCV3+DZ/oqU9rsIR+0YBZBa/hvPhiqtauHqe0jis2 cxsmP1MPPIaCQB15U77dAlwt1Z/RFyl+uXUtymG1GxVy6/HmGWZv0aDyt9wawxvBwo rBZkhaOnj7O/c0vXgTeXdGpNTXYAiAxm3X/R77Ug= From: Kieran Bingham To: linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, Laurent Pinchart Cc: Kieran Bingham Subject: [PATCH v3 4/5] media: vsp1: Split out pre-filter multiplier Date: Thu, 11 Apr 2019 17:12:55 +0100 Message-Id: <20190411161256.19607-5-kieran.bingham+renesas@ideasonboard.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190411161256.19607-1-kieran.bingham+renesas@ideasonboard.com> References: <20190411161256.19607-1-kieran.bingham+renesas@ideasonboard.com> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The 'mp' value is used through many calculations in determining the scaling factors of the UDS. Factor this out so that it can be reused in further calculations, and also ensure that if the BLADV control is ever changed only a single function needs to be modified. Signed-off-by: Kieran Bingham --- drivers/media/platform/vsp1/vsp1_uds.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/vsp1/vsp1_uds.c b/drivers/media/platform/vsp1/vsp1_uds.c index 27012af973b2..c71c24363d54 100644 --- a/drivers/media/platform/vsp1/vsp1_uds.c +++ b/drivers/media/platform/vsp1/vsp1_uds.c @@ -46,6 +46,18 @@ void vsp1_uds_set_alpha(struct vsp1_entity *entity, struct vsp1_dl_body *dlb, alpha << VI6_UDS_ALPVAL_VAL0_SHIFT); } +/* + * Determine the pre-filter multiplication value. + * + * This calculation assumes that the BLADV control is unset. + */ +static unsigned int uds_multiplier(int ratio) +{ + unsigned int mp = ratio / 4096; + + return mp < 4 ? 1 : (mp < 8 ? 2 : 4); +} + /* * uds_output_size - Return the output size for an input size and scaling ratio * @input: input size in pixels @@ -55,10 +67,7 @@ static unsigned int uds_output_size(unsigned int input, unsigned int ratio) { if (ratio > 4096) { /* Down-scaling */ - unsigned int mp; - - mp = ratio / 4096; - mp = mp < 4 ? 1 : (mp < 8 ? 2 : 4); + unsigned int mp = uds_multiplier(ratio); return (input - 1) / mp * mp * 4096 / ratio + 1; } else { @@ -88,10 +97,7 @@ static unsigned int uds_passband_width(unsigned int ratio) { if (ratio >= 4096) { /* Down-scaling */ - unsigned int mp; - - mp = ratio / 4096; - mp = mp < 4 ? 1 : (mp < 8 ? 2 : 4); + unsigned int mp = uds_multiplier(ratio); return 64 * 4096 * mp / ratio; } else {