From patchwork Fri Feb 18 08:13:45 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 573581 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1I8Dptj027948 for ; Fri, 18 Feb 2011 08:13:51 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756230Ab1BRINt (ORCPT ); Fri, 18 Feb 2011 03:13:49 -0500 Received: from moutng.kundenserver.de ([212.227.126.186]:51705 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756106Ab1BRINr (ORCPT ); Fri, 18 Feb 2011 03:13:47 -0500 Received: from axis700.grange (pD9EB8B84.dip0.t-ipconnect.de [217.235.139.132]) by mrelayeu.kundenserver.de (node=mrbap1) with ESMTP (Nemesis) id 0LkSR1-1QNCFN1YGh-00c9Sz; Fri, 18 Feb 2011 09:13:46 +0100 Received: by axis700.grange (Postfix, from userid 1000) id 0C180189B80; Fri, 18 Feb 2011 09:13:46 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by axis700.grange (Postfix) with ESMTP id 09C1A189B7F; Fri, 18 Feb 2011 09:13:46 +0100 (CET) Date: Fri, 18 Feb 2011 09:13:45 +0100 (CET) From: Guennadi Liakhovetski X-X-Sender: lyakh@axis700.grange To: Linux Media Mailing List cc: linux-sh@vger.kernel.org Subject: [PATCH 4/4] V4l: sh_mobile_ceu_camera: fix cropping offset calculation In-Reply-To: Message-ID: References: MIME-Version: 1.0 X-Provags-ID: V02:K0:YKeM5CigH6KnlMU+SgN9jnFuRsIBxoLQNsM/HFAoivJ V4qU+htueqJwuHJPV/ew4xwdVT97xq082KSQc0e/Xc/o9GYXdX DgMRdb98MOsyd8lVpjIbyWQxAO8isvHE6H6Ma+4JwnuKk7Fx/F gA1zuR9fVgdx0G1Y1eRA3QZttq1w+wb3rV30gzGhh05dPpCmEm p0ElV1g7wXO3V6i+is7piq6WsSK/6vNWzT716dG7d8= Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 18 Feb 2011 08:13:51 +0000 (UTC) diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c index 325f50d..61f3701 100644 --- a/drivers/media/video/sh_mobile_ceu_camera.c +++ b/drivers/media/video/sh_mobile_ceu_camera.c @@ -1348,7 +1348,7 @@ static int sh_mobile_ceu_set_crop(struct soc_camera_device *icd, struct device *dev = icd->dev.parent; struct v4l2_mbus_framefmt mf; unsigned int scale_cam_h, scale_cam_v, scale_ceu_h, scale_ceu_v, - out_width, out_height, scale_h, scale_v; + out_width, out_height; int interm_width, interm_height; u32 capsr, cflcr; int ret; @@ -1406,10 +1406,6 @@ static int sh_mobile_ceu_set_crop(struct soc_camera_device *icd, scale_ceu_h = calc_scale(interm_width, &out_width); scale_ceu_v = calc_scale(interm_height, &out_height); - /* Calculate camera scales */ - scale_h = calc_generic_scale(cam_rect->width, out_width); - scale_v = calc_generic_scale(cam_rect->height, out_height); - dev_geo(dev, "5: CEU scales %u:%u\n", scale_ceu_h, scale_ceu_v); /* Apply CEU scales. */ @@ -1421,8 +1417,8 @@ static int sh_mobile_ceu_set_crop(struct soc_camera_device *icd, icd->user_width = out_width; icd->user_height = out_height; - cam->ceu_left = scale_down(rect->left - cam_rect->left, scale_h) & ~1; - cam->ceu_top = scale_down(rect->top - cam_rect->top, scale_v) & ~1; + cam->ceu_left = scale_down(rect->left - cam_rect->left, scale_cam_h) & ~1; + cam->ceu_top = scale_down(rect->top - cam_rect->top, scale_cam_v) & ~1; /* 6. Use CEU cropping to crop to the new window. */ sh_mobile_ceu_set_rect(icd); @@ -1433,7 +1429,7 @@ static int sh_mobile_ceu_set_crop(struct soc_camera_device *icd, icd->user_width, icd->user_height, cam->ceu_left, cam->ceu_top); - /* Restore capture */ + /* Restore capture. The CE bit can be cleared by the hardware */ if (pcdev->active) capsr |= 1; capture_restore(pcdev, capsr);