From patchwork Fri Jan 13 01:01:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 42892 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp12331wrt; Thu, 12 Jan 2023 17:06:42 -0800 (PST) X-Google-Smtp-Source: AMrXdXsnIFYXcb1ouZ5K0deUMt6V3yMeLb9TWMKD2UZroVR87G1G2rZS03UJIT7wCnZ5yb6ALUxe X-Received: by 2002:a62:2744:0:b0:581:140:f3b6 with SMTP id n65-20020a622744000000b005810140f3b6mr56898773pfn.34.1673572001931; Thu, 12 Jan 2023 17:06:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673572001; cv=none; d=google.com; s=arc-20160816; b=OQBmMT6CnGwZMG4O8BBv0Mca39QiOBCuARIl73zX+SsuuiRonII5AfB7A2eCSA225n W0qRXnUTF1rT/6J5zxWWWtkInQwj/wF+0poPcFLw8LYzAO7lgWjl49i5oONb7693ofIX al301feg6Mn6T+dYa6Pp6zzVOxfCB6tokzQ74NEsB3LMXxv02H/fLUaDXBYfTWifIXBm LnYWWx2To9Lt4lHaDAS8hSbN2wbuecuZgory74ZnlTFWRB09WeqbxJQeXYdZTJtpMMqX 22mqBKTTG1NUxq51vYDfVXdevFTyxR/6KnPMRmXxzJgu0kr33JnPYvfjv2Au8+a7v0wm G/GQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cmP0J538ixr6ciNhT4HdZE3g1noWmkVi3KCVQkMuYac=; b=AwAHx3DHLmnlfVi+0RYiaVjTzSecveoXwM8ov/raj/NG8b0LF9dxmCaOb7bLxKW6n5 cQLgV0Y4mKcziZXUtbDsfYHMebggo7h/lhJ/xm8hRjLe8Txlc4cLDY/a2PWCy/HWprqh awrpxcLTJQGkkFmso0zb3yoWfYg/lmTowhGIZJNaDthRO2jX5M+/519szM/M04dDzg4s haBrF8xOoo/R62GwBoRrk2EfYakUYxhV+5rvYG0nsN0yyz60tPNH2V84u00SRSCk69kG ZgGqdAfFKP3+8bqywfiU1x9lGmFfB0SnJD+BINPjGQmS1k4GjfY0YEFnIcgdOUlCgx98 5cZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="L+jT/1yz"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s4-20020a056a0008c400b0057fe4c0dbe6si20208610pfu.298.2023.01.12.17.06.28; Thu, 12 Jan 2023 17:06:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="L+jT/1yz"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240194AbjAMBBx (ORCPT + 99 others); Thu, 12 Jan 2023 20:01:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232555AbjAMBBv (ORCPT ); Thu, 12 Jan 2023 20:01:51 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9CBF2E1C; Thu, 12 Jan 2023 17:01:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1673571710; x=1705107710; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GLXh+f0a72t6lGjD1FpAhiA+PzmF9uom00zJlSDPvwc=; b=L+jT/1yzCowUIxN8jbvZeRv0rv1oWKHe/eJp/eMYDLbExeuzj1ne/479 GamvGEqNrviE/u/uP35zIo1GJMmimdrDNgCgFpKZA0YhTifKa9oar7gQL C0ZJqSGypKpEmxyB0ALY5xXS0Q7KOXlnfHBfzZCcquUprnlzQ9LG0mxkI 1wNbiFqPybkwdQSuWikvxqBa8sTVa0uTLtZbqfc7A949j9lcINHBQhhnb ZxwCjoFOiOOTcOnFbfmvtjAhFeDItQjpDkMMmorXea406F2F4xABFrzkT WyhOP86lcL8Dn+EOAetgpiky5GtvVj6fM/SWZwZ+wV5vMkiP0441h82cd g==; X-IronPort-AV: E=Sophos;i="5.97,212,1669100400"; d="scan'208";a="207577061" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2023 18:01:49 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 12 Jan 2023 18:01:49 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 12 Jan 2023 18:01:46 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Jacopo Mondi Subject: [PATCH v9 1/4] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Fri, 13 Jan 2023 06:31:32 +0530 Message-ID: <20230113010135.2620818-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230113010135.2620818-1-shravan.chippa@microchip.com> References: <20230113010135.2620818-1-shravan.chippa@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754867435678290604?= X-GMAIL-MSGID: =?utf-8?q?1754867435678290604?= From: Shravan Chippa For evry mode we will get new set of values for hbalnk so use __v4l2_ctrl_modify_range() to support multi modes for hblank. The hblank value is readonly in the driver. because of this the function returns error if we try to change. so added dumy return case in imx334_set_ctrl function Suggested-by: Jacopo Mondi Signed-off-by: Shravan Chippa Reviewed-by: Jacopo Mondi --- drivers/media/i2c/imx334.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 7b0a9086447d..ebacba3059b3 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -382,7 +382,8 @@ static int imx334_update_controls(struct imx334 *imx334, if (ret) return ret; - ret = __v4l2_ctrl_s_ctrl(imx334->hblank_ctrl, mode->hblank); + ret = __v4l2_ctrl_modify_range(imx334->hblank_ctrl, mode->hblank, + mode->hblank, 1, mode->hblank); if (ret) return ret; @@ -480,6 +481,9 @@ static int imx334_set_ctrl(struct v4l2_ctrl *ctrl) pm_runtime_put(imx334->dev); + break; + case V4L2_CID_HBLANK: + ret = 0; break; default: dev_err(imx334->dev, "Invalid control %d", ctrl->id); From patchwork Fri Jan 13 01:01:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 42893 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp14005wrt; Thu, 12 Jan 2023 17:11:03 -0800 (PST) X-Google-Smtp-Source: AMrXdXtcks3hRa5gv+expqj5pmJpY/NYJzFxKlTwbyjZgmtVVsFoXicEs6d7IGmfAupH8zckEF2O X-Received: by 2002:a17:906:30d3:b0:7c0:a1f9:c778 with SMTP id b19-20020a17090630d300b007c0a1f9c778mr64911330ejb.13.1673572263344; Thu, 12 Jan 2023 17:11:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673572263; cv=none; d=google.com; s=arc-20160816; b=pe4icE+hvD4Asy2/SusE2vln7mf4GsoNwuUKwtUNaMHpMspz7/H5jzojOBEVeaTkDm YQ8SgZ9rcs3TEAxqyBPKccRCWzOcPn4CQbdgzNvaspYOBcSCr3tG9SWhE7g7LjfwJBLD dfUCR4suvihhMf2ijwOcvi5pwZ5zX6ovGEYMdgaEVPkNvNlBjvwrrkM0b9Erj6F+aTTJ V/1GoWEgk2nG5mtbbd/fsailHRf8ivP3NFLvMqOMkkh+fQm7yRj+cvNoDBeTTjUCKTkm 5lBVR8hw10hc/MsY7doXAgMllYZoysytWd+MhzjzQboxtNFjXCpqM61km3a+TzY+t2m5 Svew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=G2b/48VVc/3vHj9hyvGxY1KGvV/qhKdh7QH6oUTGr+4=; b=Xc2HHG0/V9eVfylubEyRY5IvJUuahGWXOEsjnf3P4sTERfasvrCE5/gumSMY/Zw6rR l0RFPlop0W4W/CRDfAHy4nqo/wJfBGzF/vsa6VjmO69GGe+U7ttdLMfoFM+FFrvMwdpC GwAUvEdoZ6I/uOWSffU/KXk/bUHjRJa57RlbmEvhhZ3fr80KjTnMSS/UZCA1dMa4SPyJ KXfemr92nbYc3dgRl537wW86hVVK3KCQqYePX6fY19XHZC6VM6L8pjqbj5J+D3whECd7 VPMkiRHGv+fFmQsvZIYefDwUXrAjkNa60ZldlHHjQjNmHg1JGL3Z1ctS9e2e0+WhPS3+ KLqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="qsgPQiL/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qw9-20020a1709066a0900b007c0969e429bsi20996117ejc.30.2023.01.12.17.10.14; Thu, 12 Jan 2023 17:11:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="qsgPQiL/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240329AbjAMBCA (ORCPT + 99 others); Thu, 12 Jan 2023 20:02:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232555AbjAMBB5 (ORCPT ); Thu, 12 Jan 2023 20:01:57 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31E3C10565; Thu, 12 Jan 2023 17:01:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1673571716; x=1705107716; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8hZYR6mCZHtPzq/G6x+FI5nzbU9MgjP/YOYCVuJplTE=; b=qsgPQiL/uYO8l/KLyWqv4fbdMhBXUOZgdLQbo6WAbw/qay6/mLCB7RpU v1dkJOjrtPQwNdm29XT5q/nP/zbI4TnxEqLvOz+iQVVckfkjjQmvuReKF J4s+qfnIi+KmgtHzuNo+giiI7KmpsdxxMcPw8EjHzxciaYktKrcjOJw+l 2TqMRf577Rt8WgFXkYA3F8sDzQl0z6m3/wP6+7VgUOk+FdX7274GIHL+V 08kPvIspMeP+BbIwGNohBNsH7thSLogdL+6+LOBmnkgpv4RoIu3ljQcDJ EJ6S7CbXQS6bobLANU8k5gpfWPYXs4DvphQWzrCUItb73wfvybP8/yVVZ A==; X-IronPort-AV: E=Sophos;i="5.97,212,1669100400"; d="scan'208";a="132123502" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2023 18:01:55 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 12 Jan 2023 18:01:53 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 12 Jan 2023 18:01:51 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" Subject: [PATCH v9 2/4] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Fri, 13 Jan 2023 06:31:33 +0530 Message-ID: <20230113010135.2620818-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230113010135.2620818-1-shravan.chippa@microchip.com> References: <20230113010135.2620818-1-shravan.chippa@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754867709456980025?= X-GMAIL-MSGID: =?utf-8?q?1754867709456980025?= From: Shravan Chippa There are some missing reset reg_mode values for the 3840x2160@60 resolution. The camera sensor still works in 3840x2160@60 resolution mode because of the register reset values. This is an issue when we change the modes dynamically. As an example, when we change the mode from 1920x1080@30 resolution to 3840x2160@60 resoultion then the mode values will be written to the registers from the array mode_3840x2160_regs[] which gives the wrong output which is incorrect resolution. So add the missing reset values to the mode_3840x2160_regs[]. Signed-off-by: Shravan Chippa Reviewed-by: Jacopo Mondi --- drivers/media/i2c/imx334.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index ebacba3059b3..40ece08f20f5 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -166,6 +166,7 @@ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3288, 0x21}, {0x328a, 0x02}, {0x302c, 0x3c}, + {0x302d, 0x00}, {0x302e, 0x00}, {0x302f, 0x0f}, {0x3076, 0x70}, @@ -240,7 +241,26 @@ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3794, 0x7a}, {0x3796, 0xa1}, {0x3e04, 0x0e}, + {0x319e, 0x00}, {0x3a00, 0x01}, + {0x3a18, 0xbf}, + {0x3a19, 0x00}, + {0x3a1a, 0x67}, + {0x3a1b, 0x00}, + {0x3a1c, 0x6f}, + {0x3a1d, 0x00}, + {0x3a1e, 0xd7}, + {0x3a1f, 0x01}, + {0x3a20, 0x6f}, + {0x3a21, 0x00}, + {0x3a22, 0xcf}, + {0x3a23, 0x00}, + {0x3a24, 0x6f}, + {0x3a25, 0x00}, + {0x3a26, 0xb7}, + {0x3a27, 0x00}, + {0x3a28, 0x5f}, + {0x3a29, 0x00}, }; /* Supported sensor mode configurations */ From patchwork Fri Jan 13 01:01:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 42894 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp14143wrt; Thu, 12 Jan 2023 17:11:23 -0800 (PST) X-Google-Smtp-Source: AMrXdXvasj8bjH7tVT5LzUu6jJ1xrm8aJ5wgO5FT+LWeh8LMFpqHHeThCcmnjvUjQEohzv2RuG1K X-Received: by 2002:a17:907:88cb:b0:7bf:1072:2246 with SMTP id rq11-20020a17090788cb00b007bf10722246mr67194223ejc.38.1673572283557; Thu, 12 Jan 2023 17:11:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673572283; cv=none; d=google.com; s=arc-20160816; b=MEAxmDNTuKWDhXcYZor8QUaipifVPpZ3OxVD77OOWmWaQE/6BOhTQYp1hD10WwCUqj FTJ/JTVbgyTplRfO0Omg9mfVH7P6evf+Vnlclwb0WJufNQCUUDnLqh+E1F7XkbiM5bcX jRUvrdGxoPWC3sLJ5zaV/BbMUotU2peTV0afasvHRAkQ9WXFVthfh5HNV36Eh3tojOtC cP6hake43jwsUlcxC3snp6d1BUmmYHC+5titJJ7yB5eT8hPSu+6Qr/V/PcsOI4+3Dh2f vqfwpQ1olJzJ4dQKRKlgh52lo684un9ui+zaVbiqdYU44IegMP+6ac+7y7y21J5rkCzE EZEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=f0hGZs9EH8K1L6MdvIChLhYAyM30XgKrkavsKlgy0bo=; b=xeNuQxtPELeeR2uuDf732gBFmF3gaiwDKWlJVaJNFCVpWvFrsGdK6at3BCq/Hhytf3 jEtSkxntO3EL/Ssb6iMxhlM6OZ7cxf3n8rGWxlD5iolh48hzgbSCFGqbhBzgilrDCseQ c6su7qN5jTYzurGrVqZrUjW9sF7Ie6sslWwHeIdcru9KBxHlXCCgVCvy8RDKtHZdtCmK jUsOLUUZhDvP/wcgzuoz/4jxt4GBa5FJE3ST1xYOQZSgDB1mbX4iKzMHWmtKZ45cNwi1 AJSU54I9DG985d+JvMENiUStAatJrq2x7DLLBSnm4U+KTBizmKAi1DpSykPc2GremM4J 2NDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=RQdw4gMl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wv4-20020a170907080400b007c10bb5b4b3si20209183ejb.681.2023.01.12.17.10.59; Thu, 12 Jan 2023 17:11:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=RQdw4gMl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240516AbjAMBCN (ORCPT + 99 others); Thu, 12 Jan 2023 20:02:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240314AbjAMBCA (ORCPT ); Thu, 12 Jan 2023 20:02:00 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5CA1E1AA17; Thu, 12 Jan 2023 17:01:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1673571718; x=1705107718; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d6anKc1LQH3wLgDWTXj1ulCkfHrkLRwy4Aa0+ZchWQg=; b=RQdw4gMl/Uk8lFMMuJ+Imza0d2Fl9A5kYugVtFCF6c2vzicD8sk+aGHW MHzj8tLTHofLEjb3gIiw3M8i9mgKQDOaZiP/pZotPEmrncy2NVN9yaU51 aUHBnrMre5uqtZD1FqwqlK5eclZK8p/Q76mz/p4+8zwbdXjPRSVvznOlw eYphOTf+I4zsJ4RSAJU06Faf34EWxPkLv+CKnG4IV5a996BGL+tQjeYRD pWtvAQl2zrWHCsCN368YA0ZfVcn4haENCavY9Teas2jDPvUluNUF+6e1Z w3u2yxfRN1DGSeLK3VdAkmrNWcrKlGmqYT3oJh4LijOu8Y+JWRrn6G9JB Q==; X-IronPort-AV: E=Sophos;i="5.97,212,1669100400"; d="scan'208";a="132123530" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2023 18:01:57 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 12 Jan 2023 18:01:57 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 12 Jan 2023 18:01:55 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Conor Dooley , Prakash Battu Subject: [PATCH v9 3/4] media: i2c: imx334: support lower bandwidth mode Date: Fri, 13 Jan 2023 06:31:34 +0530 Message-ID: <20230113010135.2620818-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230113010135.2620818-1-shravan.chippa@microchip.com> References: <20230113010135.2620818-1-shravan.chippa@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754867308595012746?= X-GMAIL-MSGID: =?utf-8?q?1754867731090770414?= From: Shravan Chippa Some platforms may not be capable of supporting the bandwidth required for 12 bit or 3840x2160@60 resolutions. Add support for dynamically selecting 10 bit and 1920x1080@30 resolutions while leaving the existing configuration as default CC: Conor Dooley Signed-off-by: Prakash Battu Signed-off-by: Shravan Chippa Reviewed-by: Jacopo Mondi --- drivers/media/i2c/imx334.c | 298 +++++++++++++++++++++++++++++++++---- 1 file changed, 272 insertions(+), 26 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 40ece08f20f5..4ab1b9eb9a64 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -79,7 +79,6 @@ struct imx334_reg_list { * struct imx334_mode - imx334 sensor mode structure * @width: Frame width * @height: Frame height - * @code: Format code * @hblank: Horizontal blanking in lines * @vblank: Vertical blanking in lines * @vblank_min: Minimal vertical blanking in lines @@ -91,7 +90,6 @@ struct imx334_reg_list { struct imx334_mode { u32 width; u32 height; - u32 code; u32 hblank; u32 vblank; u32 vblank_min; @@ -119,6 +117,7 @@ struct imx334_mode { * @vblank: Vertical blanking in lines * @cur_mode: Pointer to current selected sensor mode * @mutex: Mutex for serializing sensor controls + * @cur_code: current selected format code * @streaming: Flag indicating streaming state */ struct imx334 { @@ -140,6 +139,7 @@ struct imx334 { u32 vblank; const struct imx334_mode *cur_mode; struct mutex mutex; + u32 cur_code; bool streaming; }; @@ -147,6 +147,169 @@ static const s64 link_freq[] = { IMX334_LINK_FREQ, }; +/* Sensor mode registers */ +static const struct imx334_reg mode_1920x1080_regs[] = { + {0x3000, 0x01}, + {0x3018, 0x04}, + {0x3030, 0xca}, + {0x3031, 0x08}, + {0x3032, 0x00}, + {0x3034, 0x4c}, + {0x3035, 0x04}, + {0x302c, 0xf0}, + {0x302d, 0x03}, + {0x302e, 0x80}, + {0x302f, 0x07}, + {0x3074, 0xcc}, + {0x3075, 0x02}, + {0x308e, 0xcd}, + {0x308f, 0x02}, + {0x3076, 0x38}, + {0x3077, 0x04}, + {0x3090, 0x38}, + {0x3091, 0x04}, + {0x3308, 0x38}, + {0x3309, 0x04}, + {0x30C6, 0x00}, + {0x30c7, 0x00}, + {0x30ce, 0x00}, + {0x30cf, 0x00}, + {0x30d8, 0x18}, + {0x30d9, 0x0a}, + {0x304c, 0x00}, + {0x304e, 0x00}, + {0x304f, 0x00}, + {0x3050, 0x00}, + {0x30b6, 0x00}, + {0x30b7, 0x00}, + {0x3116, 0x08}, + {0x3117, 0x00}, + {0x31a0, 0x20}, + {0x31a1, 0x0f}, + {0x300c, 0x3b}, + {0x300d, 0x29}, + {0x314c, 0x29}, + {0x314d, 0x01}, + {0x315a, 0x06}, + {0x3168, 0xa0}, + {0x316a, 0x7e}, + {0x319e, 0x02}, + {0x3199, 0x00}, + {0x319d, 0x00}, + {0x31dd, 0x03}, + {0x3300, 0x00}, + {0x341c, 0xff}, + {0x341d, 0x01}, + {0x3a01, 0x03}, + {0x3a18, 0x7f}, + {0x3a19, 0x00}, + {0x3a1a, 0x37}, + {0x3a1b, 0x00}, + {0x3a1c, 0x37}, + {0x3a1d, 0x00}, + {0x3a1e, 0xf7}, + {0x3a1f, 0x00}, + {0x3a20, 0x3f}, + {0x3a21, 0x00}, + {0x3a20, 0x6f}, + {0x3a21, 0x00}, + {0x3a20, 0x3f}, + {0x3a21, 0x00}, + {0x3a20, 0x5f}, + {0x3a21, 0x00}, + {0x3a20, 0x2f}, + {0x3a21, 0x00}, + {0x3078, 0x02}, + {0x3079, 0x00}, + {0x307a, 0x00}, + {0x307b, 0x00}, + {0x3080, 0x02}, + {0x3081, 0x00}, + {0x3082, 0x00}, + {0x3083, 0x00}, + {0x3088, 0x02}, + {0x3094, 0x00}, + {0x3095, 0x00}, + {0x3096, 0x00}, + {0x309b, 0x02}, + {0x309c, 0x00}, + {0x309d, 0x00}, + {0x309e, 0x00}, + {0x30a4, 0x00}, + {0x30a5, 0x00}, + {0x3288, 0x21}, + {0x328a, 0x02}, + {0x3414, 0x05}, + {0x3416, 0x18}, + {0x35Ac, 0x0e}, + {0x3648, 0x01}, + {0x364a, 0x04}, + {0x364c, 0x04}, + {0x3678, 0x01}, + {0x367c, 0x31}, + {0x367e, 0x31}, + {0x3708, 0x02}, + {0x3714, 0x01}, + {0x3715, 0x02}, + {0x3716, 0x02}, + {0x3717, 0x02}, + {0x371c, 0x3d}, + {0x371d, 0x3f}, + {0x372c, 0x00}, + {0x372d, 0x00}, + {0x372e, 0x46}, + {0x372f, 0x00}, + {0x3730, 0x89}, + {0x3731, 0x00}, + {0x3732, 0x08}, + {0x3733, 0x01}, + {0x3734, 0xfe}, + {0x3735, 0x05}, + {0x375d, 0x00}, + {0x375e, 0x00}, + {0x375f, 0x61}, + {0x3760, 0x06}, + {0x3768, 0x1b}, + {0x3769, 0x1b}, + {0x376a, 0x1a}, + {0x376b, 0x19}, + {0x376c, 0x18}, + {0x376d, 0x14}, + {0x376e, 0x0f}, + {0x3776, 0x00}, + {0x3777, 0x00}, + {0x3778, 0x46}, + {0x3779, 0x00}, + {0x377a, 0x08}, + {0x377b, 0x01}, + {0x377c, 0x45}, + {0x377d, 0x01}, + {0x377e, 0x23}, + {0x377f, 0x02}, + {0x3780, 0xd9}, + {0x3781, 0x03}, + {0x3782, 0xf5}, + {0x3783, 0x06}, + {0x3784, 0xa5}, + {0x3788, 0x0f}, + {0x378a, 0xd9}, + {0x378b, 0x03}, + {0x378c, 0xeb}, + {0x378d, 0x05}, + {0x378e, 0x87}, + {0x378f, 0x06}, + {0x3790, 0xf5}, + {0x3792, 0x43}, + {0x3794, 0x7a}, + {0x3796, 0xa1}, + {0x37b0, 0x37}, + {0x3e04, 0x0e}, + {0x30e8, 0x50}, + {0x30e9, 0x00}, + {0x3e04, 0x0e}, + {0x3002, 0x00}, +}; + /* Sensor mode registers */ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3000, 0x01}, @@ -263,20 +426,53 @@ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3a29, 0x00}, }; +static const struct imx334_reg raw10_framefmt_regs[] = { + {0x3050, 0x00}, + {0x319d, 0x00}, + {0x341c, 0xff}, + {0x341d, 0x01}, +}; + +static const struct imx334_reg raw12_framefmt_regs[] = { + {0x3050, 0x01}, + {0x319d, 0x01}, + {0x341c, 0x47}, + {0x341d, 0x00}, +}; + +static const u32 imx334_mbus_codes[] = { + MEDIA_BUS_FMT_SRGGB12_1X12, + MEDIA_BUS_FMT_SRGGB10_1X10, +}; + /* Supported sensor mode configurations */ -static const struct imx334_mode supported_mode = { - .width = 3840, - .height = 2160, - .hblank = 560, - .vblank = 2340, - .vblank_min = 90, - .vblank_max = 132840, - .pclk = 594000000, - .link_freq_idx = 0, - .code = MEDIA_BUS_FMT_SRGGB12_1X12, - .reg_list = { - .num_of_regs = ARRAY_SIZE(mode_3840x2160_regs), - .regs = mode_3840x2160_regs, +static const struct imx334_mode supported_modes[] = { + { + .width = 3840, + .height = 2160, + .hblank = 560, + .vblank = 2340, + .vblank_min = 90, + .vblank_max = 132840, + .pclk = 594000000, + .link_freq_idx = 0, + .reg_list = { + .num_of_regs = ARRAY_SIZE(mode_3840x2160_regs), + .regs = mode_3840x2160_regs, + }, + }, { + .width = 1920, + .height = 1080, + .hblank = 2480, + .vblank = 1170, + .vblank_min = 45, + .vblank_max = 132840, + .pclk = 297000000, + .link_freq_idx = 0, + .reg_list = { + .num_of_regs = ARRAY_SIZE(mode_1920x1080_regs), + .regs = mode_1920x1080_regs, + }, }, }; @@ -518,6 +714,21 @@ static const struct v4l2_ctrl_ops imx334_ctrl_ops = { .s_ctrl = imx334_set_ctrl, }; +static int imx334_get_format_code(struct imx334 *imx334, u32 code) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(imx334_mbus_codes); i++) { + if (imx334_mbus_codes[i] == code) + break; + } + + if (i == ARRAY_SIZE(imx334_mbus_codes)) + i = 0; + + return imx334_mbus_codes[i]; +} + /** * imx334_enum_mbus_code() - Enumerate V4L2 sub-device mbus codes * @sd: pointer to imx334 V4L2 sub-device structure @@ -530,10 +741,10 @@ static int imx334_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) { - if (code->index > 0) + if (code->index >= ARRAY_SIZE(imx334_mbus_codes)) return -EINVAL; - code->code = supported_mode.code; + code->code = imx334_mbus_codes[code->index]; return 0; } @@ -550,15 +761,20 @@ static int imx334_enum_frame_size(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_frame_size_enum *fsize) { - if (fsize->index > 0) + struct imx334 *imx334 = to_imx334(sd); + u32 code; + + if (fsize->index >= ARRAY_SIZE(supported_modes)) return -EINVAL; - if (fsize->code != supported_mode.code) + code = imx334_get_format_code(imx334, fsize->code); + + if (fsize->code != code) return -EINVAL; - fsize->min_width = supported_mode.width; + fsize->min_width = supported_modes[fsize->index].width; fsize->max_width = fsize->min_width; - fsize->min_height = supported_mode.height; + fsize->min_height = supported_modes[fsize->index].height; fsize->max_height = fsize->min_height; return 0; @@ -577,7 +793,6 @@ static void imx334_fill_pad_format(struct imx334 *imx334, { fmt->format.width = mode->width; fmt->format.height = mode->height; - fmt->format.code = mode->code; fmt->format.field = V4L2_FIELD_NONE; fmt->format.colorspace = V4L2_COLORSPACE_RAW; fmt->format.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; @@ -607,6 +822,7 @@ static int imx334_get_pad_format(struct v4l2_subdev *sd, framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); fmt->format = *framefmt; } else { + fmt->format.code = imx334->cur_code; imx334_fill_pad_format(imx334, imx334->cur_mode, fmt); } @@ -633,7 +849,13 @@ static int imx334_set_pad_format(struct v4l2_subdev *sd, mutex_lock(&imx334->mutex); - mode = &supported_mode; + fmt->format.code = imx334_get_format_code(imx334, fmt->format.code); + + mode = v4l2_find_nearest_size(supported_modes, + ARRAY_SIZE(supported_modes), + width, height, + fmt->format.width, fmt->format.height); + imx334_fill_pad_format(imx334, mode, fmt); if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { @@ -641,7 +863,8 @@ static int imx334_set_pad_format(struct v4l2_subdev *sd, framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); *framefmt = fmt->format; - } else { + } else if (imx334->cur_mode != mode || imx334->cur_code != fmt->format.code) { + imx334->cur_code = fmt->format.code; ret = imx334_update_controls(imx334, mode); if (!ret) imx334->cur_mode = mode; @@ -666,11 +889,26 @@ static int imx334_init_pad_cfg(struct v4l2_subdev *sd, struct v4l2_subdev_format fmt = { 0 }; fmt.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY : V4L2_SUBDEV_FORMAT_ACTIVE; - imx334_fill_pad_format(imx334, &supported_mode, &fmt); + imx334_fill_pad_format(imx334, &supported_modes[0], &fmt); return imx334_set_pad_format(sd, sd_state, &fmt); } +static int imx334_set_framefmt(struct imx334 *imx334) +{ + switch (imx334->cur_code) { + case MEDIA_BUS_FMT_SRGGB10_1X10: + return imx334_write_regs(imx334, raw10_framefmt_regs, + ARRAY_SIZE(raw10_framefmt_regs)); + + case MEDIA_BUS_FMT_SRGGB12_1X12: + return imx334_write_regs(imx334, raw12_framefmt_regs, + ARRAY_SIZE(raw12_framefmt_regs)); + } + + return -EINVAL; +} + /** * imx334_start_streaming() - Start sensor stream * @imx334: pointer to imx334 device @@ -691,6 +929,13 @@ static int imx334_start_streaming(struct imx334 *imx334) return ret; } + ret = imx334_set_framefmt(imx334); + if (ret) { + dev_err(imx334->dev, "%s failed to set frame format: %d\n", + __func__, ret); + return ret; + } + /* Setup handler will write actual exposure and gain */ ret = __v4l2_ctrl_handler_setup(imx334->sd.ctrl_handler); if (ret) { @@ -1061,7 +1306,8 @@ static int imx334_probe(struct i2c_client *client) } /* Set default mode to max resolution */ - imx334->cur_mode = &supported_mode; + imx334->cur_mode = &supported_modes[0]; + imx334->cur_code = imx334_mbus_codes[0]; imx334->vblank = imx334->cur_mode->vblank; ret = imx334_init_controls(imx334); From patchwork Fri Jan 13 01:01:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 42895 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp14164wrt; Thu, 12 Jan 2023 17:11:27 -0800 (PST) X-Google-Smtp-Source: AMrXdXtc8X2B2QVI+CYSWxnRg7fpwkjR4fCOhmd2UebR8rbswc8FIabTXQu+00SiCW4xp2dUmab5 X-Received: by 2002:a05:6402:320e:b0:48e:c3f0:1b1b with SMTP id g14-20020a056402320e00b0048ec3f01b1bmr33375181eda.41.1673572287350; Thu, 12 Jan 2023 17:11:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673572287; cv=none; d=google.com; s=arc-20160816; b=z+Jf14VcKkP4FehGh0+z1l7QOH4R/wpcKrjgY/dng7aDVgZXujC1IGxNOIfc4KDyla GN2YRRlCrUU89Q+4RalBqXJGoZWOyewXv8WI11fJNe1R0Jbd6nNzPl+Rxnd/pmk/W6B/ 6p6xy2nDEAQi9er+mt9/Fby3IB8bc/GbseFNk1QyPUWpUCw/U3XgQbTLA1VJQscBsbM5 eNEUR3J/MFkgehxdT01/5OpHHfNQouJgqev4BsqffMW/j7Tl6qmpnzpbzlWe+d1kmf+V PnzPSgjEGSMlYSXgxuOczBeJtl3ctnY2DFO5ZcZ+x9feEhIJeSqC28Ebrp6oTDJ4Vv6v /fsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=g+KmFLHzj2+4an9vcpA6pANGM5Xk+4wZKt6RnVqMS9M=; b=cDcK5ods/gCH8NZIPvRmZJHwkZCNCtnvNYzDK5bWjXjo4S5b9g60Wuuw6Z6UeneKEg l/Gsw6sXjWWBQdEkIlTUJ0ufh7uAbL+v6PzAm4+Gm+KCq4Di5GmsStIOuW0gNes+iEZ4 35JQxI/njED4T+xyVFaXIuyD17bCYXpqBz3saH2jyw0Tkc/2MMWFYzvAUcvdagEjrX+c /CGPH/7xom/qt/UgAglP3Qc0HIFL/WbC8wo0UcayMtyPOHlqS1AbuI8bGmxooiRKQhjb 4/cvyQ+jg7R1NaC6abfmG/1yE1Tt6Sey5KHu1Bn1jA+5X8GlVwoLwrT6iQWgoJ7nRk0J r/xg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=XZay2370; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ds16-20020a0564021cd000b0049a06a001adsi5736437edb.155.2023.01.12.17.11.03; Thu, 12 Jan 2023 17:11:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=XZay2370; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240317AbjAMBCU (ORCPT + 99 others); Thu, 12 Jan 2023 20:02:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240363AbjAMBCJ (ORCPT ); Thu, 12 Jan 2023 20:02:09 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25DA141D5C; Thu, 12 Jan 2023 17:02:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1673571724; x=1705107724; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WfPV1BmOyya+FAsHZKNSHM3S5ihrRKEErtIUDEBUmWI=; b=XZay2370f925bpIUxvbiqsjLdHG5NZ+dhLY4zu1ciuNf/N9VjBSh0stm 9O9WyQ0Ta/VMfoFcuVsjROTpyqhKkD6PHwQWIUvr47jDuMB3RKaql/88t wq1Tp2dMP3pIylTtkIor4WDxUUJFfWTUEzbLojglWxJ3r2K4dyT20Ze7t FZ9Z2q86O9Mc0NSWK2D2hhPAv3ZCchE6ks0I58xutMZUmEx9Wgeqcvxc7 H8WKckdXw2CeEYHMc4uCc8d8GzpQPIUKbByf8aLcxZEOi7h8LulqA9wtw 8W5qAlRwiDxVtKQ0cszfhfRx7JEyOkWboL/34qArqgxyi/dIqJwY1NlSS A==; X-IronPort-AV: E=Sophos;i="5.97,212,1669100400"; d="scan'208";a="132123578" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2023 18:02:03 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 12 Jan 2023 18:02:02 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 12 Jan 2023 18:01:59 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Sakari Ailus Subject: [PATCH v9 4/4] media: i2c: imx334: update pixel and link frequency Date: Fri, 13 Jan 2023 06:31:35 +0530 Message-ID: <20230113010135.2620818-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230113010135.2620818-1-shravan.chippa@microchip.com> References: <20230113010135.2620818-1-shravan.chippa@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754867734626766298?= X-GMAIL-MSGID: =?utf-8?q?1754867734626766298?= From: Shravan Chippa Update pixel_rate and link frequency for 1920x1080@30 while changing mode. Add dummy ctrl cases for pixel_rate and link frequency to avoid error while changing the modes dynamically Suggested-by: Sakari Ailus Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 4ab1b9eb9a64..373022fbd6b2 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -49,7 +49,8 @@ #define IMX334_INCLK_RATE 24000000 /* CSI2 HW configuration */ -#define IMX334_LINK_FREQ 891000000 +#define IMX334_LINK_FREQ_891M 891000000 +#define IMX334_LINK_FREQ_445M 445500000 #define IMX334_NUM_DATA_LANES 4 #define IMX334_REG_MIN 0x00 @@ -144,7 +145,8 @@ struct imx334 { }; static const s64 link_freq[] = { - IMX334_LINK_FREQ, + IMX334_LINK_FREQ_891M, + IMX334_LINK_FREQ_445M, }; /* Sensor mode registers */ @@ -468,7 +470,7 @@ static const struct imx334_mode supported_modes[] = { .vblank_min = 45, .vblank_max = 132840, .pclk = 297000000, - .link_freq_idx = 0, + .link_freq_idx = 1, .reg_list = { .num_of_regs = ARRAY_SIZE(mode_1920x1080_regs), .regs = mode_1920x1080_regs, @@ -598,6 +600,11 @@ static int imx334_update_controls(struct imx334 *imx334, if (ret) return ret; + ret = __v4l2_ctrl_modify_range(imx334->pclk_ctrl, mode->pclk, + mode->pclk, 1, mode->pclk); + if (ret) + return ret; + ret = __v4l2_ctrl_modify_range(imx334->hblank_ctrl, mode->hblank, mode->hblank, 1, mode->hblank); if (ret) @@ -698,6 +705,8 @@ static int imx334_set_ctrl(struct v4l2_ctrl *ctrl) pm_runtime_put(imx334->dev); break; + case V4L2_CID_PIXEL_RATE: + case V4L2_CID_LINK_FREQ: case V4L2_CID_HBLANK: ret = 0; break; @@ -1102,7 +1111,7 @@ static int imx334_parse_hw_config(struct imx334 *imx334) } for (i = 0; i < bus_cfg.nr_of_link_frequencies; i++) - if (bus_cfg.link_frequencies[i] == IMX334_LINK_FREQ) + if (bus_cfg.link_frequencies[i] == IMX334_LINK_FREQ_891M) goto done_endpoint_free; ret = -EINVAL;