Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1599358imd; Sun, 4 Nov 2018 06:05:53 -0800 (PST) X-Google-Smtp-Source: AJdET5do5BylQ+pekgjsDLXDQ5O+6yGLAiTXElUzVI1oOPjyxArmcKPD+wKBDaKYRS2ChoHKjqj4 X-Received: by 2002:a17:902:8210:: with SMTP id x16-v6mr19148209pln.229.1541340353059; Sun, 04 Nov 2018 06:05:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541340353; cv=none; d=google.com; s=arc-20160816; b=YQhj9fOqJkzm9RkPbRc/CthHRZtLhXgrUvoXGC80bqOVzMFH5qq1/yE4JfdyTy54DD zWo5j8JKt4SaJ04ItPSIlZGGfyBAHTl1NzljB1WEqDeLhwCx88HFx0vYEHT65H13BMF+ YPDMZT+tw3pMESCFdRzjNTPDnvYrO4FSFsvFpuzCdMqrxGQdxldp5w54LC8FMQHFBZk4 1+aILNYN7OvLm6YMlpBULUl7z1xShj+Q7NcHC2MUpwySD0ePTEDdmtfCb7u2tn+6gaL0 R8jlPyNjXWeecwVH75K3YZNFt0GA15pEc7tmRn3XpL2434bdeJJ+luFdgmIcikBjBP9T Xt3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=t+hzJDASD+IcY8ii3SC69rbUM1w3g55Ts8HHh+VYGyw=; b=wsn0voyB9YugBWV3s5bk5pYE0v9pXMWQkjGdScA2aBC2ah6/3SQOynGZfVLotknk95 KHQEseUxe2peMXYLIsUxdmS8984EAsQOZrPAhIHITB4w5qlnFuoFNfD7j5FWPsyeUFnh XOS2ACKeTgl8HdDrg1onLNT0HAMh7GBukAhMChJ6kAb6qOx1dl8YZFzFQ2CIe1h68MyD q6fHCLzlMo0q8CoE7h88QbIeIuO3YgAf/SQxWaLlZDnKt76xiDN1/StkuzCVA8JiKJ4z MHLSHroGlNgFCkc45vQeAabTMGW3etok+6Th5pUus8FWHtZim4ED5WolsSazkPQxpomT l9HQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wlhI3oO5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6-v6si3110296plt.212.2018.11.04.06.05.38; Sun, 04 Nov 2018 06:05:53 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wlhI3oO5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730545AbeKDXHn (ORCPT + 99 others); Sun, 4 Nov 2018 18:07:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:45756 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730437AbeKDXHl (ORCPT ); Sun, 4 Nov 2018 18:07:41 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8E49D20868; Sun, 4 Nov 2018 13:52:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541339557; bh=riIHcRL70OuaNbGnZ9hkWU4cP1Idaoz5og/jlexgcZs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wlhI3oO5RfgojUu1bVVb5RErbA7OpMZVR/7739m7aFauXZAVxsaKiE/K4A/hf6pRo xyhGdyf4A8gGEtEsGk6DjAqozBQgtQoJE4BshKLzUXKmIHHkfbmuWOHRD15aYg1Hv1 FZhcWHsWw5OIjRMrH2fmTGCLP3nZdmJHiMsEmFYQ= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Hugues Fruchet , Sakari Ailus , Mauro Carvalho Chehab , Sasha Levin Subject: [PATCH AUTOSEL 4.19 54/57] media: ov5640: fix mode change regression Date: Sun, 4 Nov 2018 08:51:41 -0500 Message-Id: <20181104135144.88324-54-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181104135144.88324-1-sashal@kernel.org> References: <20181104135144.88324-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hugues Fruchet [ Upstream commit fb98e29ff1ea5a8118265d11f0e03bc8608a49cb ] fixes: 6949d864776e ("media: ov5640: do not change mode if format or frame interval is unchanged"). Symptom was fuzzy image because of JPEG default format not being changed according to new format selected, fix this. Init sequence initialises format to YUV422 UYVY but sensor->fmt initial value was set to JPEG, fix this. Signed-off-by: Hugues Fruchet Signed-off-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Sasha Levin --- drivers/media/i2c/ov5640.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c index 071f4bc240ca..2ddd86ddf649 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -223,6 +223,7 @@ struct ov5640_dev { int power_count; struct v4l2_mbus_framefmt fmt; + bool pending_fmt_change; const struct ov5640_mode_info *current_mode; enum ov5640_frame_rate current_fr; @@ -255,7 +256,7 @@ static inline struct v4l2_subdev *ctrl_to_sd(struct v4l2_ctrl *ctrl) * should be identified and removed to speed register load time * over i2c. */ - +/* YUV422 UYVY VGA@30fps */ static const struct reg_value ov5640_init_setting_30fps_VGA[] = { {0x3103, 0x11, 0, 0}, {0x3008, 0x82, 0, 5}, {0x3008, 0x42, 0, 0}, {0x3103, 0x03, 0, 0}, {0x3017, 0x00, 0, 0}, {0x3018, 0x00, 0, 0}, @@ -1968,9 +1969,12 @@ static int ov5640_set_fmt(struct v4l2_subdev *sd, if (new_mode != sensor->current_mode) { sensor->current_mode = new_mode; - sensor->fmt = *mbus_fmt; sensor->pending_mode_change = true; } + if (mbus_fmt->code != sensor->fmt.code) { + sensor->fmt = *mbus_fmt; + sensor->pending_fmt_change = true; + } out: mutex_unlock(&sensor->lock); return ret; @@ -2544,10 +2548,13 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable) ret = ov5640_set_mode(sensor, sensor->current_mode); if (ret) goto out; + } + if (enable && sensor->pending_fmt_change) { ret = ov5640_set_framefmt(sensor, &sensor->fmt); if (ret) goto out; + sensor->pending_fmt_change = false; } if (sensor->ep.bus_type == V4L2_MBUS_CSI2) @@ -2642,9 +2649,14 @@ static int ov5640_probe(struct i2c_client *client, return -ENOMEM; sensor->i2c_client = client; + + /* + * default init sequence initialize sensor to + * YUV422 UYVY VGA@30fps + */ fmt = &sensor->fmt; - fmt->code = ov5640_formats[0].code; - fmt->colorspace = ov5640_formats[0].colorspace; + fmt->code = MEDIA_BUS_FMT_UYVY8_2X8; + fmt->colorspace = V4L2_COLORSPACE_SRGB; fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace); fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE; fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace); @@ -2656,7 +2668,6 @@ static int ov5640_probe(struct i2c_client *client, sensor->current_fr = OV5640_30_FPS; sensor->current_mode = &ov5640_mode_data[OV5640_30_FPS][OV5640_MODE_VGA_640_480]; - sensor->pending_mode_change = true; sensor->ae_target = 52; -- 2.17.1