Message ID | 20240306081038.212412-5-umang.jain@ideasonboard.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers |
Received: from am.mirrors.kernel.org ([147.75.80.249]) by linuxtv.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <linux-media+bounces-6545-patchwork=linuxtv.org@vger.kernel.org>) id 1rhmNy-0007AG-21 for patchwork@linuxtv.org; Wed, 06 Mar 2024 08:12:23 +0000 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 am.mirrors.kernel.org (Postfix) with ESMTPS id B32F11F270DE for <patchwork@linuxtv.org>; Wed, 6 Mar 2024 08:12:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BB9C15DF37; Wed, 6 Mar 2024 08:11:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="VGypEzCq" X-Original-To: linux-media@vger.kernel.org Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 013C15CDFF; Wed, 6 Mar 2024 08:11:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709712672; cv=none; b=MjtrLzUTcgrV5f2OvtoqRkr1QHquGpJ9AR0K4MgtDd8dkMvvCdKlY8lYu9Zzp1c1p/wZyGIl0yxm6lzcySqmmpNXbmqpDyr6JevommyO6s/0GBHI1T1SBrhMWmN3JUiAxw40n909YSvNORC1iHLL3ma5cjT++iO75GJOdCAoapw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709712672; c=relaxed/simple; bh=qhSfwgByJCp2UJ9Lmg9P2YciIUlKkzafGTiPwMse0eg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=taF0RdPp0v4LQSYsMhWmpymPrHA0EHHYHJvBAnThrlasVc3T3t1VUspS3VlfpQrwrzpBV+71kmg/SQpCuwOjtUP9+KX+ltWGKdYczeos+rRx0x++emzbugZqc/f5idXUs5aQyM+xoVYLbMjsEbPnMC71hQzMp/EAOdOl92o8kVg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=VGypEzCq; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Received: from umang.jain (unknown [103.251.226.70]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AA9E8C8A; Wed, 6 Mar 2024 09:10:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1709712651; bh=qhSfwgByJCp2UJ9Lmg9P2YciIUlKkzafGTiPwMse0eg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VGypEzCqD/L6eiGXH49W8rn9xZDVP0ph03UIdrwG76T1ktoj6b4RhWoka0LBw05dz 9OiqM9ZTn3JGvV7RmOwgaA2Nef1aiG0q2UtsJDzyOTsstERg5HDIL1UQC93NQZZoNJ an1XYhg5pjXM4oRUTUAFrTug1npWa+APJo7yAbz0= From: Umang Jain <umang.jain@ideasonboard.com> To: linux-media@vger.kernel.org Cc: Alexander Shiyan <eagle.alexander923@gmail.com>, Kieran Bingham <kieran.bingham@ideasonboard.com>, Mauro Carvalho Chehab <mchehab@kernel.org>, Sakari Ailus <sakari.ailus@linux.intel.com>, open list <linux-kernel@vger.kernel.org>, Umang Jain <umang.jain@ideasonboard.com> Subject: [PATCH 4/5] media: imx335: Fix active area height discrepency Date: Wed, 6 Mar 2024 13:40:37 +0530 Message-ID: <20240306081038.212412-5-umang.jain@ideasonboard.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240306081038.212412-1-umang.jain@ideasonboard.com> References: <20240306081038.212412-1-umang.jain@ideasonboard.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: <linux-media.vger.kernel.org> List-Subscribe: <mailto:linux-media+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-media+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-LSpam-Score: -1.4 (-) X-LSpam-Report: No, score=-1.4 required=5.0 tests=ARC_SIGNED=0.001,ARC_VALID=-0.1,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,DMARC_MISSING=0.001,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_LOW=-0.7,SPF_HELO_NONE=0.001,SPF_PASS=-0.001 autolearn=ham autolearn_force=no |
Series |
media: imx335: 2/4 lane ops and improvements
|
|
Commit Message
Umang Jain
March 6, 2024, 8:10 a.m. UTC
The imx335 reports a recommended pixel area of - 2592x1944.
The driver supported mode however limits it to height=1940.
Fix the height discrepency by correctly the value of height
(with updates to vblank and mode registers).
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
---
drivers/media/i2c/imx335.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
Comments
Quoting Umang Jain (2024-03-06 08:10:37) > The imx335 reports a recommended pixel area of - 2592x1944. > The driver supported mode however limits it to height=1940. Hrm, I think I would convert widths and sizes to decimal as a patch before this patch so the effect is clearer in this diff. > Fix the height discrepency by correctly the value of height > (with updates to vblank and mode registers). > > Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> > --- > drivers/media/i2c/imx335.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c > index 6ea09933e47b..c00e0c2be3f3 100644 > --- a/drivers/media/i2c/imx335.c > +++ b/drivers/media/i2c/imx335.c > @@ -246,13 +246,13 @@ static const int imx335_tpg_val[] = { > }; > > /* Sensor mode registers */ > -static const struct cci_reg_sequence mode_2592x1940_regs[] = { > +static const struct cci_reg_sequence mode_2592x1944_regs[] = { > {IMX335_REG_MODE_SELECT, 0x01}, > {IMX335_REG_MASTER_MODE, 0x00}, > - {IMX335_REG_WINMODE, 0x04}, > - {IMX335_REG_HTRIMMING_START, 0x0180}, > + {IMX335_REG_WINMODE, 0x00}, What's the distinction of the winmode here. What is 0x04 vs 0x00? Is this something that could be a defined value? Or is that not worth the effort? > + {IMX335_REG_HTRIMMING_START, 0x30}, HTRIMMING_START has moved a lot more than I would expect there. Is there a visual impact of any concern here? > {IMX335_REG_HNUM, 0x0a20}, > - {IMX335_REG_Y_OUT_SIZE, 0x0794}, > + {IMX335_REG_Y_OUT_SIZE, 0x0798}, This bit looks expected ;-) > {IMX335_REG_VCROP_POS, 0x00b0}, > {IMX335_REG_VCROP_SIZE, 0x0f58}, 0x0f58 = 3928. Does that correspond to anything on the pixel array size? We're modifying the vertical size, so I'm curious if the 'vcrop' is or should be impacted? > {IMX335_REG_OPB_SIZE_V, 0x00}, > @@ -403,14 +403,14 @@ static const u32 imx335_mbus_codes[] = { > /* Supported sensor mode configurations */ > static const struct imx335_mode supported_mode = { > .width = 2592, > - .height = 1940, > + .height = 1944, > .hblank = 342, > - .vblank = 2560, > - .vblank_min = 2560, > + .vblank = 2556, > + .vblank_min = 2556, > .vblank_max = 133060, > .reg_list = { > - .num_of_regs = ARRAY_SIZE(mode_2592x1940_regs), > - .regs = mode_2592x1940_regs, > + .num_of_regs = ARRAY_SIZE(mode_2592x1944_regs), > + .regs = mode_2592x1944_regs, > }, > }; > > -- > 2.43.0 >
Hi Kieran, On 06/03/24 10:35 pm, Kieran Bingham wrote: > Quoting Umang Jain (2024-03-06 08:10:37) >> The imx335 reports a recommended pixel area of - 2592x1944. >> The driver supported mode however limits it to height=1940. > Hrm, I think I would convert widths and sizes to decimal as a patch > before this patch so the effect is clearer in this diff. > >> Fix the height discrepency by correctly the value of height >> (with updates to vblank and mode registers). >> >> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> >> --- >> drivers/media/i2c/imx335.c | 18 +++++++++--------- >> 1 file changed, 9 insertions(+), 9 deletions(-) >> >> diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c >> index 6ea09933e47b..c00e0c2be3f3 100644 >> --- a/drivers/media/i2c/imx335.c >> +++ b/drivers/media/i2c/imx335.c >> @@ -246,13 +246,13 @@ static const int imx335_tpg_val[] = { >> }; >> >> /* Sensor mode registers */ >> -static const struct cci_reg_sequence mode_2592x1940_regs[] = { >> +static const struct cci_reg_sequence mode_2592x1944_regs[] = { >> {IMX335_REG_MODE_SELECT, 0x01}, >> {IMX335_REG_MASTER_MODE, 0x00}, >> - {IMX335_REG_WINMODE, 0x04}, >> - {IMX335_REG_HTRIMMING_START, 0x0180}, >> + {IMX335_REG_WINMODE, 0x00}, > What's the distinction of the winmode here. What is 0x04 vs 0x00? > > Is this something that could be a defined value? Or is that not worth > the effort? It can be split out as a define in later parts if we introduce more modes. currently this change fixes the sensor to be in 'all-pixel scan mode' hence you see the change in value of WINMODE. > >> + {IMX335_REG_HTRIMMING_START, 0x30}, > HTRIMMING_START has moved a lot more than I would expect there. > Is there a visual impact of any concern here? Value as per mentioned in the datasheet > >> {IMX335_REG_HNUM, 0x0a20}, >> - {IMX335_REG_Y_OUT_SIZE, 0x0794}, >> + {IMX335_REG_Y_OUT_SIZE, 0x0798}, > This bit looks expected ;-) > >> {IMX335_REG_VCROP_POS, 0x00b0}, >> {IMX335_REG_VCROP_SIZE, 0x0f58}, > 0x0f58 = 3928. Does that correspond to anything on the pixel array size? > We're modifying the vertical size, so I'm curious if the 'vcrop' is or > should be impacted? Probably I have not named this correctly, as VCROP_ This register (0x3076) is denotes the size of cropping rectangle Named as 'AREA3_WIDTH_1' with explaination 'cropping size designation (Vertical direction)' The value 0x0f58 is as per mentioned in the datasheet. I don't find any relation except 3928 is twice the IMX335_NATIVE_HEIGHT > >> {IMX335_REG_OPB_SIZE_V, 0x00}, >> @@ -403,14 +403,14 @@ static const u32 imx335_mbus_codes[] = { >> /* Supported sensor mode configurations */ >> static const struct imx335_mode supported_mode = { >> .width = 2592, >> - .height = 1940, >> + .height = 1944, >> .hblank = 342, >> - .vblank = 2560, >> - .vblank_min = 2560, >> + .vblank = 2556, >> + .vblank_min = 2556, >> .vblank_max = 133060, >> .reg_list = { >> - .num_of_regs = ARRAY_SIZE(mode_2592x1940_regs), >> - .regs = mode_2592x1940_regs, >> + .num_of_regs = ARRAY_SIZE(mode_2592x1944_regs), >> + .regs = mode_2592x1944_regs, >> }, >> }; >> >> -- >> 2.43.0 >>
diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c index 6ea09933e47b..c00e0c2be3f3 100644 --- a/drivers/media/i2c/imx335.c +++ b/drivers/media/i2c/imx335.c @@ -246,13 +246,13 @@ static const int imx335_tpg_val[] = { }; /* Sensor mode registers */ -static const struct cci_reg_sequence mode_2592x1940_regs[] = { +static const struct cci_reg_sequence mode_2592x1944_regs[] = { {IMX335_REG_MODE_SELECT, 0x01}, {IMX335_REG_MASTER_MODE, 0x00}, - {IMX335_REG_WINMODE, 0x04}, - {IMX335_REG_HTRIMMING_START, 0x0180}, + {IMX335_REG_WINMODE, 0x00}, + {IMX335_REG_HTRIMMING_START, 0x30}, {IMX335_REG_HNUM, 0x0a20}, - {IMX335_REG_Y_OUT_SIZE, 0x0794}, + {IMX335_REG_Y_OUT_SIZE, 0x0798}, {IMX335_REG_VCROP_POS, 0x00b0}, {IMX335_REG_VCROP_SIZE, 0x0f58}, {IMX335_REG_OPB_SIZE_V, 0x00}, @@ -403,14 +403,14 @@ static const u32 imx335_mbus_codes[] = { /* Supported sensor mode configurations */ static const struct imx335_mode supported_mode = { .width = 2592, - .height = 1940, + .height = 1944, .hblank = 342, - .vblank = 2560, - .vblank_min = 2560, + .vblank = 2556, + .vblank_min = 2556, .vblank_max = 133060, .reg_list = { - .num_of_regs = ARRAY_SIZE(mode_2592x1940_regs), - .regs = mode_2592x1940_regs, + .num_of_regs = ARRAY_SIZE(mode_2592x1944_regs), + .regs = mode_2592x1944_regs, }, };