From patchwork Wed Mar 1 07:34:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 62778 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp3491554wrd; Tue, 28 Feb 2023 23:42:39 -0800 (PST) X-Google-Smtp-Source: AK7set9LDd7Zf1e97QW5aczJdRuSipagjSWU3zzYQMCxH15N7QwxwVktGiqwd0xb5rn3pZXN1AaA X-Received: by 2002:a05:6a20:8f09:b0:cb:77f0:9a42 with SMTP id b9-20020a056a208f0900b000cb77f09a42mr8592513pzk.33.1677656559237; Tue, 28 Feb 2023 23:42:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677656559; cv=none; d=google.com; s=arc-20160816; b=BzagSmmenJMgbVMixpdgvXJ03BRoW47QWOATaMEZHUe0lBXrw29f661IR3aL2pFErs dnd7qQnB1ljWmZG8+CfKRhAF/J3Pn8GiRZKY5sxIcftAy+EdOrlOncZiWDUh/jKLMZGj vlo6+6hNVZz9HpsokbV1wpt6on0SGetdxDQcKvlR1Lkr/fi3zbfYBB6ZlNaLqWNLBT+Q 7GXPtxhbxGa1Dqhx8KXBudgVf472+kGhZWUiKUogBR8C95j1srspLXW3RLbYzlrKd5dR METEorGohgrKoEogp7Stpq9SBfJKxIfG3C8t3rdVQhu+RhZaIdXZuM/wQdZ0kd1uWh2a Y+wA== 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=98zli5z0ihr1kKdZJcboTe+jzjNLnmtVI/lc8cSGp60=; b=n3dkbHlw9LmeQHzF/rPe9EtkFyn/r9CHX6aGbeWMy3PIJ+EZFBrpIw2O/PgQmM5QU3 G5EkTQ+vJFRgex0PNHo/JL9OBXpctayJUW+VfdSxW8j9WS6zWJZPl45Ak/ZGnmBaYXSy 74yRCBeadNcPFlnZwmu38k3RE5EUu9k100/dOy8u+fDIMPfAmYGGixXJ7AtRhY046v7Q W5+aHQbiPVGkbVOhJXQSr/o6PQ+2IhLbuuw0eaPjw0J1sJq8mxqpdmL07EemfltsPiVR xK2xv6ukUFDD3CI0ZpbSDhSGnO2uFHtX0pwQditookA1K9YobKKTmPdi/1upo18IqXXe 1m3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="zWo8bMb/"; 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 w11-20020a63c10b000000b004ff73120afbsi11673939pgf.103.2023.02.28.23.42.25; Tue, 28 Feb 2023 23:42:39 -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="zWo8bMb/"; 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 S229511AbjCAHev (ORCPT + 99 others); Wed, 1 Mar 2023 02:34:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229766AbjCAHer (ORCPT ); Wed, 1 Mar 2023 02:34:47 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D803539B9A; Tue, 28 Feb 2023 23:34:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677656080; x=1709192080; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IC4Krh/tkpVGXGBoGbbhsCsG+9lDFkR31NuApekcLbg=; b=zWo8bMb/BWmaNDlBI14ZImxUyLyNBVaKhR91EBLw2NXHeABK7ipDG8/I OgDTW3vGXXUzZTvzTImCCulhjj5aOoyYa32nSwsz/ycKM5QR0KSF9jT6O D7MnM6mfHYl1E4iHM1c9qlO5OmdO0vxesQwsCSAPIRrj2trKOweHyCxOM At6lKoIvtfnNLlw5CX3o4DEO4qeIIlP3SSJdJUoNRiXirNPBG5zsdWNUU BjUBd7/twr3LzsFSy2FtCTSh85NW/Rfh251bNd+36swZv0AYHc8Vx0QQj 0mr+40Jw1CeOKwNUIAZ/70NVExYVK2lsVx3Tgdr5iEnWJxVVfiCGgpSS2 A==; X-IronPort-AV: E=Sophos;i="5.98,224,1673938800"; d="scan'208";a="214162922" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Mar 2023 00:34:40 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Wed, 1 Mar 2023 00:34:38 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Wed, 1 Mar 2023 00:34:33 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Jacopo Mondi , Jacopo Mondi Subject: [PATCH v12 1/5] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Wed, 1 Mar 2023 13:04:08 +0530 Message-ID: <20230301073412.1204574-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301073412.1204574-1-shravan.chippa@microchip.com> References: <20230301073412.1204574-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?1759150404456571984?= X-GMAIL-MSGID: =?utf-8?q?1759150404456571984?= 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. Reviewed-by: Jacopo Mondi Suggested-by: Jacopo Mondi Signed-off-by: Shravan Chippa --- 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 Wed Mar 1 07:34:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 62781 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp3495494wrd; Tue, 28 Feb 2023 23:57:02 -0800 (PST) X-Google-Smtp-Source: AK7set9LV0ncSh78pHVscNLb5Wo9w6vjdg5hr4rF/dIHfGBWqoxh6WEyEmsFpqoINo+r2WgiAWiO X-Received: by 2002:a17:90b:390f:b0:236:9eef:e285 with SMTP id ob15-20020a17090b390f00b002369eefe285mr6781533pjb.35.1677657421756; Tue, 28 Feb 2023 23:57:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677657421; cv=none; d=google.com; s=arc-20160816; b=iKmgcDt1eRxVznqD4/9Py17QcV2DHcepNB9woEOwW6Jlt/2vgB3vKCEqa12dZGxQq4 5oJOHWhZCBW+xbtG5aTS6Dl0Azcfytmbq5G+1//7WEjRFihe53PGvB491St4i0Dvzouo XxH2CfOchgzW0HyhOxwxGPKnnXIJBOFoDsRyGUp2wzs0VgRS6mu+5Dn1S+nSgVhV2WJT 3BbK46f5zrJfea+65SDvGTI7y0DI+KcKzlwMkX/10JZIAI4Eg/pzL8MRKuGuVaelnbb4 xqtDPwNQN3ZFe9ZCyXjNVSt37obP1WSMkxYHCGTsJXZM43yaCCAsu6JN1TquDLaipwjx oaYA== 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=D0RMkkJyYLLQ6Jvv06kgI/tzhXgSZZbsYkbW07VVMIg=; b=cDOWwVDOmk9lKSptEiprnPVQQ1ilz0XQL0yDeTyEDV6xPmyDj6OX/KDm0d5IcF/8qF 1nxMMEeB675+o6UVVnJyL17Fepr7/Flm2U/p59FZ0HQsAPK3uxTb0ZFlqzfDe7xEZp3+ BvTYta7jM0H81x1uNiSXBjHKzGCFPs5Gzsc52zADPNe3rO9Qc3QVs3z+TF7YI9+DvzG+ 6cwATX6x/zFrU+wMvF/BIXeofH8CtNAnwBgDSXgbLpOOChW90I1tiMM69CxvazinYp3X V/4rT0gikZlcGPvwgl4oKWgdGXGs3ZEYEYpWaVR+csFBmwu2ACKdKfhuIBCb1+sulC5Y AbSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=nWbxUjEa; 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 b22-20020a17090a8c9600b0023a177c4951si605950pjo.39.2023.02.28.23.56.29; Tue, 28 Feb 2023 23:57:01 -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=nWbxUjEa; 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 S229561AbjCAHfB (ORCPT + 99 others); Wed, 1 Mar 2023 02:35:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229723AbjCAHe6 (ORCPT ); Wed, 1 Mar 2023 02:34:58 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E7D21517C; Tue, 28 Feb 2023 23:34:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677656090; x=1709192090; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+szvL+ndfqTkBWLkYZZHX8t/alFfcilUJhnbtl8bXGo=; b=nWbxUjEaeCQVWRrSUpXLR9qBB5eO7BEo/5onKPB4L6DlunTo2GJK0Lt6 Y8QSsWyngzv/nfFe4Ltx8mH35kACvZsaVxFZb1L9YFFMLZ4jq6SpfEezA kVbBXzrjRyPPTZjEsn4fVroLGQFCFy2ICKBOf5CohD7Jgwc0e2/Y78O44 TU24qsR2HUIoVu+gWiEJrrlfEDcix+m60EMXFfhFwBjDxTYFCeOAnDQKK +52gGyzwDJodNPisGCv1nMCJ+T+mOp6CMHykxNqiZM214/aI5YKn/TD+R /rqIAQu1MIfxHpzxWtk4M9LrQwItEtnngfefpnsdbvT+q94Iw44fLX8UO A==; X-IronPort-AV: E=Sophos;i="5.98,224,1673938800"; d="scan'208";a="139598969" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Mar 2023 00:34:47 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) 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; Wed, 1 Mar 2023 00:34:46 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Wed, 1 Mar 2023 00:34:41 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Jacopo Mondi Subject: [PATCH v12 2/5] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Wed, 1 Mar 2023 13:04:09 +0530 Message-ID: <20230301073412.1204574-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301073412.1204574-1-shravan.chippa@microchip.com> References: <20230301073412.1204574-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?1759151308555781886?= X-GMAIL-MSGID: =?utf-8?q?1759151308555781886?= 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[]. Reviewed-by: Jacopo Mondi Signed-off-by: Shravan Chippa --- 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 Wed Mar 1 07:34:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 62780 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp3495483wrd; Tue, 28 Feb 2023 23:56:58 -0800 (PST) X-Google-Smtp-Source: AK7set8F627Tb1lV3Yhj5QfcQCmqa1WU1h+BBTurLe9zLdsGfly5Yl6ModS0tcuttsqcwlUoyE/f X-Received: by 2002:a05:6a20:4f21:b0:cc:6859:a233 with SMTP id gi33-20020a056a204f2100b000cc6859a233mr5614726pzb.48.1677657418590; Tue, 28 Feb 2023 23:56:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677657418; cv=none; d=google.com; s=arc-20160816; b=00pZfwBdW48SGBClwPQw7aESGOXU4JN0T08mK50UtvIo4Nq0pyx+53ReGYNdFUnffq GVI5szaQMQz9iBggqdBJqLlFuINfIKSNwqEL1fAK0yAYibgstXgoAmxDVggqpahsuu61 Y/vBPSJYM+Gfd3q1fI4XeP+0FYUqTEKNmifj9yjp70p85MWbzgo/8Okji8MvXc/QKjj9 FMhta00TeV7MfYSgQKaBIwAb7By0HVGCKDAX15ddrW08ygx+PrLmtBWDwpNvS1kC4Qyg X/mCqSW/3Y9zWudMPVwL1NGsYekPp+6/eJ1byW+svPzOexYr9Rxo/fhNF4mIRWLM4pB/ CusQ== 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=6PrDgo9tLYNm1Nb3e3P/Mlx4Qp42EXyZPkXYc4RFwiw=; b=uPgfSgc/ubr+c/fD5WapnEchOYQpOlA66eJzgk/V6xV0wIMhEqiWNdZpPTZqvKmgJE 9WTkhoZo/vtHwHFj4O8kQxbA79D9No6+lbPdY65fwKkb5Ur98h1zWniuHeZL385eFo9U ygAFgTmP5Dlv/Uit6uP9tWa+ax0lfR62vzVnQLDbPY3uZmBMAT1uy4AZluTfx3nsy5F8 9JOPuaCdxzL7KNvVhXoF6m8nrcFQnJ/N984m2lNiegtK+JgQSkXKIQgO+p8/g/A6z4g7 CRjjGJhBBGSLlhNab8vnMeSTBPwXzNnvtjTjy4SkM4W4bdLJEgt8oCyzwcFltJwmke0F wVzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="VHUn8/R5"; 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 v7-20020a63f847000000b00502fd79e642si11840884pgj.696.2023.02.28.23.56.22; Tue, 28 Feb 2023 23:56:58 -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="VHUn8/R5"; 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 S229778AbjCAHfK (ORCPT + 99 others); Wed, 1 Mar 2023 02:35:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229720AbjCAHfE (ORCPT ); Wed, 1 Mar 2023 02:35:04 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2261739BA0; Tue, 28 Feb 2023 23:34:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677656095; x=1709192095; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qAjxmw0PJDYk+qdYQdozfLQCUcoTMpN9myt4W0vReqA=; b=VHUn8/R5P0mhb3dbK/xNJiYJAIAGaxl4PujD4wQPF56fDmAyJdvTPXy/ olLhlvTLqL3OwebFXN1p1FP0nZgB5HUupQSEuC5IlhCw3iigNgMwyJ+nz HmYlDDCVEi+5rYXjKd9T5fUjkghx2976vdvP4iifsM25PiPQFhQlWLtvD Rofni/7NgB2G18apgJ2CpDAGS3heX0Ambz5leZlJSZBgSBzQfxtmQBril CVd3eeGAcrWJ6Zr953opKhdYpOmVBKPU9uL/nMhnHaaYJIt2MjNiTJ4LM SCsQ77Os35aXtWCG81+60+y2D1pFYk6qNzbC8cEBssP2BnSQfF0595USS Q==; X-IronPort-AV: E=Sophos;i="5.98,224,1673938800"; d="scan'208";a="203036187" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Mar 2023 00:34:55 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Wed, 1 Mar 2023 00:34:53 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Wed, 1 Mar 2023 00:34:48 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Jacopo Mondi , Conor Dooley , Prakash Battu Subject: [PATCH v12 3/5] media: i2c: imx334: support lower bandwidth mode Date: Wed, 1 Mar 2023 13:04:10 +0530 Message-ID: <20230301073412.1204574-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301073412.1204574-1-shravan.chippa@microchip.com> References: <20230301073412.1204574-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?1759150307638165158?= X-GMAIL-MSGID: =?utf-8?q?1759151305281891131?= 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. Reviewed-by: Jacopo Mondi CC: Conor Dooley Signed-off-by: Prakash Battu Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 296 +++++++++++++++++++++++++++++++++---- 1 file changed, 269 insertions(+), 27 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 40ece08f20f5..309c706114d2 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,7 +147,170 @@ static const s64 link_freq[] = { IMX334_LINK_FREQ, }; -/* Sensor mode registers */ +/* Sensor mode registers for 1920x1080@30fps */ +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 for 3840x2160@30fps */ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3000, 0x01}, {0x3002, 0x00}, @@ -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,18 @@ 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) + return imx334_mbus_codes[i]; + } + + return imx334_mbus_codes[0]; +} + /** * imx334_enum_mbus_code() - Enumerate V4L2 sub-device mbus codes * @sd: pointer to imx334 V4L2 sub-device structure @@ -530,10 +738,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 +758,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 +790,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 +819,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,15 +846,21 @@ static int imx334_set_pad_format(struct v4l2_subdev *sd, mutex_lock(&imx334->mutex); - mode = &supported_mode; + 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); + fmt->format.code = imx334_get_format_code(imx334, fmt->format.code); if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { struct v4l2_mbus_framefmt *framefmt; 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 +885,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 +925,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 +1302,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 Wed Mar 1 07:34:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 62779 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp3493992wrd; Tue, 28 Feb 2023 23:51:33 -0800 (PST) X-Google-Smtp-Source: AK7set98SQgWYMSzScFQzqUArNRALvkeDLzHXeb2wO2qPWKsYR1fT2rP7/vtSwCX2kDKOZhl/MAP X-Received: by 2002:a17:902:ecd2:b0:19c:d7a9:8be1 with SMTP id a18-20020a170902ecd200b0019cd7a98be1mr6641452plh.61.1677657092906; Tue, 28 Feb 2023 23:51:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677657092; cv=none; d=google.com; s=arc-20160816; b=EaNML19mvE1abosTLGBDfcMJee+SDGUjSY3+ww8Mzng1NNBxHNi+hByJAw1aszaKux 0JA0rNTSjehbSZ1vlZ5ochrr14y9lWvodgClhh12IwP45lX/fdKkYhNm3qxw6hj2pUdD s5GMOR7ipPtU3FxSQX99M48KwV+8RpY/xIVYOgem4Nw00//j2EDnfGhGksy5506cWIOQ jUb2L3Euw43A6QBHnOqM7kdH07kFeGP/8qIVyLlUAf5pAm0HaNqEI/bn9ha3xCB1dcgC 48uUtgNjOzQ7fK4Cia8MKtvD6ePrX26ay567fSyOX8w0IhkKj0mH18Z3pr7G6mcIksJy 17SQ== 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=YPrXxy+81x19hKCaH7AI8O46pm1WUh8oY0lCahBGm2c=; b=klqyoSwiN6a7PjXVKcBLcYOpouI+2cZKAw7FiFkAxiVZ94/QtohzGQlgrOk/E4FA1V LSWb9nAFKcvC0q0gKr7vgu78nHseXD628nsM/n4sxcGsNPkNaCfc6gurUdxcqhJUN4pg 2YV7zVITMpxHymTegqyRBIdFM4Qw7rXnOaS7IsNvcNIWca07WQl+/9+BUzrW+RO3WzSL sqIEWgKIFTu680tdi29B70Tl2m0ZI5766S1GZBz5ISeM8yv9sf9C1C1TrIIpPrw8tWe0 kFYRTB5k5Y/Dq8BYcRzj8IF7YTz5ckWvDubrHzlw7FhlTe4ThpJPZwtMmdwhbzq+Uv1H LwGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=Dxg4kI2+; 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 v1-20020a170902b7c100b0019a9d83f8d9si11253961plz.458.2023.02.28.23.51.17; Tue, 28 Feb 2023 23:51:32 -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=Dxg4kI2+; 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 S229540AbjCAHfW (ORCPT + 99 others); Wed, 1 Mar 2023 02:35:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229496AbjCAHfU (ORCPT ); Wed, 1 Mar 2023 02:35:20 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DE2C38021; Tue, 28 Feb 2023 23:35:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677656102; x=1709192102; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fAj6J3f37Y66SAvoIaG966+1CCKAbDBv74KG41b5dj4=; b=Dxg4kI2+JbRd1VoBq9OEOrcGNqD3J4JDuGd0X6/PpyceMAJ+dpftTHX4 AHLMdGLosZ+9aodeU2jtNJ+21zUgbGss4Ljq+o8O5Eetz/7kQk0HkO0zB rt6TZ/cQTSxJLvoyOBval2ONamKfvEVHbYEmUOBgrX4cJyZ/J1urmCqo+ 7mgZ5oMK7VcHhHvzcGRUVQrEGhe226R/sidWUENnV2mPwQ4kktx0CFBNG +TiQshgjk7u4lSrxUdHtV8V34hrLaeuin8tH2C3fU2GcVRz3u+Wvz6ntR opsI3YpyxZJb/kYe56tdsIA4H+LL48EbXecG104T55jhIlRGostKhSuNQ w==; X-IronPort-AV: E=Sophos;i="5.98,224,1673938800"; d="scan'208";a="202714059" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Mar 2023 00:35:01 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) 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; Wed, 1 Mar 2023 00:35:00 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Wed, 1 Mar 2023 00:34:56 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Krzysztof Kozlowski , Sakari Ailus Subject: [PATCH v12 4/5] dt-bindings: media: i2c: imx334 add new link_freq Date: Wed, 1 Mar 2023 13:04:11 +0530 Message-ID: <20230301073412.1204574-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301073412.1204574-1-shravan.chippa@microchip.com> References: <20230301073412.1204574-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?1759150964054947821?= X-GMAIL-MSGID: =?utf-8?q?1759150964054947821?= From: Shravan Chippa Add new supported link frequency in dt example. Acked-by: Krzysztof Kozlowski Suggested-by: Sakari Ailus Signed-off-by: Shravan Chippa --- Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml index f5055b9db693..09533496b20c 100644 --- a/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml @@ -82,7 +82,7 @@ examples: imx334: endpoint { remote-endpoint = <&cam>; data-lanes = <1 2 3 4>; - link-frequencies = /bits/ 64 <891000000>; + link-frequencies = /bits/ 64 <891000000 445500000>; }; }; }; From patchwork Wed Mar 1 07:34:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 62782 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp3495647wrd; Tue, 28 Feb 2023 23:57:34 -0800 (PST) X-Google-Smtp-Source: AK7set/NYSEiGYWqcPajYatNsZPJVLrj9pEoVOunU/tJlkenIlEs78EN4ZWBpWxBKt2drvnqvN4S X-Received: by 2002:a17:902:cecc:b0:19e:23c1:4c2e with SMTP id d12-20020a170902cecc00b0019e23c14c2emr6519200plg.59.1677657453933; Tue, 28 Feb 2023 23:57:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677657453; cv=none; d=google.com; s=arc-20160816; b=bxcW2FsRlmHbiV3BVRaQIw9Yz3H+7I3zJfXKsrY8CvOVjZa7tZsyqonxR7lOj3aoqT 88KCmtGPXo2iwre0Rk9oOrxGv0+vMA/MF2P78RfY4bJnnv6HWcXNmcEugHLZ2zwqG8Mj Pup2eDCBBGN8/zp9rOQTT9+rgutqa1NXsR7SbW/vL8JNmUfsX4MW6pRNmX2l6mF2YOYV qnpBAB/7DgIMO2nUo7P/mztiUXCa53StYIVuXFGirFX0stT3p22eopgQ8M9NYiB3k8gm UgkUzXFMG4ucCAS1nus8jzbRjXnI0k2wP9x/RBatxWZxqr/AuhR54M6/1TkOzlh/09N9 D8sg== 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=3DSetgM+oH7KejU8C/FaY5cNRLnPaAN1OQdVmN0HBrg=; b=PENOfznBhPaLv2Pb6h91iWnGBVQE5OI9wEhQMEIcV7c1APZoykp2wQtZrXW5TWxcUX ac4V/Sd7L4OxGMB5Xp6xYU/ciYDab3gNDJgwDUog80MSZQPpW582nXXyGJXgYtXYUgnw unbhah0cnCmggfofuqorGglYh19Z2zCwfbJHrZ+YVybMG7HMscmWIHMIRtBp1YjzCwcG 8aO4Lpk15hEUhACijEgB+UleOiG8BFzCY9zVIOSXdVB3CBdpEgNUfzIZ6RLmCTCzHZJm o8rAPEHmjzYTcVkeY+CCv3HgDN9Gu55vShWk1ypJv1bJLM5Zj8FsI+DIK33v0NGZdXdB jKeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=ckNVekjS; 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 kj5-20020a17090306c500b0019ce0ea2b56si11251497plb.39.2023.02.28.23.57.20; Tue, 28 Feb 2023 23:57:33 -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=ckNVekjS; 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 S229451AbjCAHfs (ORCPT + 99 others); Wed, 1 Mar 2023 02:35:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229577AbjCAHfn (ORCPT ); Wed, 1 Mar 2023 02:35:43 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D28138B75; Tue, 28 Feb 2023 23:35:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677656122; x=1709192122; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QWj3wCogW4CjdLXlAk1HmMqBbuONBPdK6zGHEvWlB+4=; b=ckNVekjSWSpy054uSQgCeHuYMPoPBwfRtxhirTiCzzhZTWIBGVxttl3I Rq0ClgwG8SrOhT5LON0kBV1G9RYrPE0KLbG6i4V79wa8TZJ3McX8Eulxm Q0LVDs4tNizoUhXoGx+ZnIEUfuDSkK8cwORhCwKbwtR4ZGkapOcQ1KDRG YmyQozZKOFSHVUypJ8o0NXcOcJ09XmlbxLyb6zKAEJZh1cNjrTfJiwFH0 gmAyHLlbtJFhauH1XgCF8SExQaOzAEUzcUaJSHL0pCFuFtg9zv5mVYi7n km4rnF2eauzYC/XqpvqviA/RJ1bGhALyahjQ3ocDCKBolqdQrNQL5HiVD A==; X-IronPort-AV: E=Sophos;i="5.98,224,1673938800"; d="scan'208";a="139599308" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Mar 2023 00:35:11 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) 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; Wed, 1 Mar 2023 00:35:08 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Wed, 1 Mar 2023 00:35:03 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Sakari Ailus Subject: [PATCH v12 5/5] media: i2c: imx334: update pixel and link frequency Date: Wed, 1 Mar 2023 13:04:12 +0530 Message-ID: <20230301073412.1204574-6-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301073412.1204574-1-shravan.chippa@microchip.com> References: <20230301073412.1204574-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?1759151342043286418?= X-GMAIL-MSGID: =?utf-8?q?1759151342043286418?= From: Shravan Chippa Update pixel_rate and link frequency for 1920x1080@30 while changing mode. Add support to handle multiple link frequencies. Add dummy ctrl cases for pixel_rate and link frequency to avoid error while changing the modes dynamically. Update default link frequency from device tree max link frequency value. Update init_cfg() function to update the link frequency menu_skip_mask value. Suggested-by: Sakari Ailus Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 51 ++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 309c706114d2..7958c5b73f3e 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 @@ -139,12 +140,14 @@ struct imx334 { u32 vblank; const struct imx334_mode *cur_mode; struct mutex mutex; + unsigned long menu_skip_mask; u32 cur_code; bool streaming; }; static const s64 link_freq[] = { - IMX334_LINK_FREQ, + IMX334_LINK_FREQ_891M, + IMX334_LINK_FREQ_445M, }; /* Sensor mode registers for 1920x1080@30fps */ @@ -468,7 +471,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 +601,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 +706,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; @@ -885,7 +895,13 @@ 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_modes[0], &fmt); + fmt->format.code = imx334->cur_code; + imx334_fill_pad_format(imx334, imx334->cur_mode, &fmt); + + __v4l2_ctrl_modify_range(imx334->link_freq_ctrl, 0, + __fls(imx334->menu_skip_mask), + ~(imx334->menu_skip_mask), + __ffs(imx334->menu_skip_mask)); return imx334_set_pad_format(sd, sd_state, &fmt); } @@ -1046,8 +1062,8 @@ static int imx334_parse_hw_config(struct imx334 *imx334) }; struct fwnode_handle *ep; unsigned long rate; + unsigned int i, j; int ret; - int i; if (!fwnode) return -ENXIO; @@ -1097,11 +1113,20 @@ static int imx334_parse_hw_config(struct imx334 *imx334) goto done_endpoint_free; } - for (i = 0; i < bus_cfg.nr_of_link_frequencies; i++) - if (bus_cfg.link_frequencies[i] == IMX334_LINK_FREQ) + for (i = 0; i < bus_cfg.nr_of_link_frequencies; i++) { + for (j = 0; j < ARRAY_SIZE(link_freq); j++) { + if (bus_cfg.link_frequencies[i] == link_freq[j]) { + set_bit(j, &imx334->menu_skip_mask); + break; + } + } + + if (j == ARRAY_SIZE(link_freq)) { + ret = dev_err_probe(imx334->dev, -EINVAL, + "no supported link freq found\n"); goto done_endpoint_free; - - ret = -EINVAL; + } + } done_endpoint_free: v4l2_fwnode_endpoint_free(&bus_cfg); @@ -1232,10 +1257,10 @@ static int imx334_init_controls(struct imx334 *imx334) imx334->link_freq_ctrl = v4l2_ctrl_new_int_menu(ctrl_hdlr, &imx334_ctrl_ops, V4L2_CID_LINK_FREQ, - ARRAY_SIZE(link_freq) - - 1, - mode->link_freq_idx, + __fls(imx334->menu_skip_mask), + __ffs(imx334->menu_skip_mask), link_freq); + if (imx334->link_freq_ctrl) imx334->link_freq_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY; @@ -1302,7 +1327,7 @@ static int imx334_probe(struct i2c_client *client) } /* Set default mode to max resolution */ - imx334->cur_mode = &supported_modes[0]; + imx334->cur_mode = &supported_modes[__ffs(imx334->menu_skip_mask)]; imx334->cur_code = imx334_mbus_codes[0]; imx334->vblank = imx334->cur_mode->vblank;