From patchwork Thu Jan 19 11:28:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 45701 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp273547wrn; Thu, 19 Jan 2023 03:30:23 -0800 (PST) X-Google-Smtp-Source: AMrXdXs+Yy4sB6QqNjPbR8k19MQMDCtfcJlSZwqVy6AZpl9Md/TzYDmXaUUjBz7+f2QgRYQYsiVm X-Received: by 2002:a05:6402:1f87:b0:49d:221b:4b3f with SMTP id c7-20020a0564021f8700b0049d221b4b3fmr11543846edc.21.1674127823501; Thu, 19 Jan 2023 03:30:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674127823; cv=none; d=google.com; s=arc-20160816; b=q6H20PFsXD9whj6u8q33szSKCqMJfbh5MC0xU5pH5+c5KSgLWzbVeEXeyid/CrCHqa oLnH5R/8WY5/hB26geNisXM2oXrNUmc14M2R3rhSzcJk6xDjOOp4d9J+YNiOzG2JdeUw WRCIFhw6VL7tZg/RcqnUKDVasLJs32K6BJLvdYiqW42IKttZ/TnjEr2bB7yVzgEBeGCG Wba0pi5hHal8auTDUttYMSI2sOfYQIc+cQb0EShy8J1tyu7yKTsL9G0sxqDwsGRYzQ4t cmBkQebSZq6CeX6YAuSdYuCRTYPS9D6XMTP0rxDJ10DUblkxAE1fAzkaI/hX3OSRcjFU Q0zg== 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=6EDw5rBjSkzMOROlrI+DWEcFDa2E1vUuyz3vqGhRpIo=; b=ToQirbJdLWyv7N3dtxNE8ymJ+I2xh8ATEcMx9J4qJW4QrAh3foXwK4RLsv4B4gGul6 xICS5GOqj7itt1phY9GhnNdb9PX8Xumz9G9+/YB++Uk5uNCQKXXmO3ZInsZK8GSLF2ou E3f86OTan0Oqok7VYhfwVfu5K/H/VEObqwm5N+kMI1LjQGRSUb80oFot0zZj8OgwjIGc UKAaDsnuI2PZT7unLLVa2mPALGs0//VSX/EHTGL4u6DQOB6uzuuz7DrbStAeVPodTBdT FXv3XIx5BgruGTFPK+Hn8YN4kyuZwQ9gxeIvCRZgamreSfM/dGl4MkbAqfCNQcs3LPwW A2eg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=ALIzkBOk; 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 t4-20020a056402240400b00499b52316fesi35081446eda.326.2023.01.19.03.29.45; Thu, 19 Jan 2023 03:30: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=ALIzkBOk; 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 S230301AbjASL3Y (ORCPT + 99 others); Thu, 19 Jan 2023 06:29:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230322AbjASL3P (ORCPT ); Thu, 19 Jan 2023 06:29:15 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E52D574E8A; Thu, 19 Jan 2023 03:29:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674127744; x=1705663744; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Yf5LSd0K4veL2v2QK5mw0TYsSMmiyQm3DO8DFlTtnu0=; b=ALIzkBOkLGwfmAv3NZj9JANa7qC0WfgIqrET91Pa/cn6NwC/QO7UqIv3 dTNcw5HxGUyTJH4ILpvK4vCsFiuLErF6WRUw1CFIKzXdz1ZF4UECArl6b bG3KVbG4WZ4eJ8xGS5VhDIbh46KjlcRUQNgTmP86AQHHKc2W0TnT+yXWR hFnVE3XjofIIptg1FaRdjuAqrjQ8bbi2BttxBElOCt/E7Ob7gY+t3muxr 6jcs3ByXF5Y3YmndPGzCfeathjmWPCUtQRdIntny/clX/np4XG397cR0C paCD7oPZyNvvTnhJPqKI+RJXeIJDvy0zBsOCecwrYUh3Ew48W6wsc/21Z w==; X-IronPort-AV: E=Sophos;i="5.97,229,1669100400"; d="scan'208";a="133097884" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Jan 2023 04:29:00 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) 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, 19 Jan 2023 04:29:00 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 19 Jan 2023 04:28:57 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Jacopo Mondi , Jacopo Mondi Subject: [PATCH v10 1/5] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Thu, 19 Jan 2023 16:58:44 +0530 Message-ID: <20230119112848.3523273-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230119112848.3523273-1-shravan.chippa@microchip.com> References: <20230119112848.3523273-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?1755450257032600331?= X-GMAIL-MSGID: =?utf-8?q?1755450257032600331?= 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 Thu Jan 19 11:28:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 45700 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp273513wrn; Thu, 19 Jan 2023 03:30:18 -0800 (PST) X-Google-Smtp-Source: AMrXdXv5bTl9DefplK96zB3n72sXXD1hiHI0tMnvNvd9Pq7ztoqnVAxnQQ5fu6RBobZ6pVqUyF+y X-Received: by 2002:a17:907:90cf:b0:871:cba6:4bb1 with SMTP id gk15-20020a17090790cf00b00871cba64bb1mr9029920ejb.70.1674127818127; Thu, 19 Jan 2023 03:30:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674127818; cv=none; d=google.com; s=arc-20160816; b=g6rJLBM8LqIrpt+lmoL/a+Y5fD+w3NoZ/LX3xuqm+L9X2YlduIDmw35Wk0QOGtGeyr +OxPeSPLJTtz+StwnlV11cvnry3Fcyunt9bqnm+ixaVJ33Z48V8PGeVLvp0K1Ebnq3Iq FT1kTifj1DI0vQMSYmrkxLX8JzsEWrh/jHMG5nYQKdtPaTj0Ijyn7ZICStHqoQBqjMkO 4YgASrgBUmuU/VSVfP7uYsVMTDyS1v6JkowwlUXOkhM0x0vDxJkN/KZVpWkKNY26C/e5 w/EL/iQ4An3xwSA7Y8AgA99wiU2APwf7rk7X1+yaamXtgJwwHe9KU6YxzLWor+2ykDKK VsFw== 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=KqEDsEF+aLJIIxHTTONmpGjHuCAt/zOx5GK4loOjG8ocKtJhLb3CYh+d4YRE2dJLPW 8BtbaJ9Kur3dpAXNvZ+mAXkC+cZ6a48fpOznWaAbMDrzH/dx6P1PXW3ua3/wKRiwtPG5 AEpI7epkedGMwcDgQsUBSn7PapG7wXhfYPvSay/5/7FPgL6vO9a3NLLkU2tYjg6q0n2C bswW1gBfDJZ1XVNm8WN7dPOc5D0K06KhN4vXLa1y1S7eHGXhhDQzBuu62qJA/6W1k4oY Lx9hKCbhfVpv91j092wXOQDxUW5fGUEp6HmW49+jLECr5XNR0WeYIp91XXz2J4z2K+54 MnXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=wjF+mY1c; 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 cw4-20020a170906478400b0087782edfa38si698753ejc.478.2023.01.19.03.29.54; Thu, 19 Jan 2023 03:30:18 -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=wjF+mY1c; 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 S230239AbjASL32 (ORCPT + 99 others); Thu, 19 Jan 2023 06:29:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230126AbjASL3Q (ORCPT ); Thu, 19 Jan 2023 06:29:16 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0EA474E9B; Thu, 19 Jan 2023 03:29:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674127749; x=1705663749; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+szvL+ndfqTkBWLkYZZHX8t/alFfcilUJhnbtl8bXGo=; b=wjF+mY1cqCjD5KQlDzt/3KnizYGHVpXAQ8FXS5Ii0sdjbzR8D+cHS3xJ SshE9IbHJ5lT/RdnwpsmEPi2xNsyhFjqTb+sWeoESzf9BImlDUIM309PY Uq4L1pKvW/ggfWiMOBJPGgMwk3q04DPca57xwPQ4zVjCPJmluuqb2UyX8 RHBjfOi6VqnAvCg8gkKklF4ia2lIcER84WvjR7FJMEpEXcFfbEkpfU0Cd j0Lpv3HDY2tgMCHpoyhNzkqbtqrwwApdAF8dcQ/r2iQE5LtxsI5GQFD1Q GZNZSFBTlzHDARDdfDCLAvJNhDjZVWXmBvlHHyuhMvzM8nxTPFlRdPx+U A==; X-IronPort-AV: E=Sophos;i="5.97,228,1669100400"; d="scan'208";a="192971311" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Jan 2023 04:29:08 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) 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, 19 Jan 2023 04:29:04 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 19 Jan 2023 04:29:01 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Jacopo Mondi Subject: [PATCH v10 2/5] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Thu, 19 Jan 2023 16:58:45 +0530 Message-ID: <20230119112848.3523273-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230119112848.3523273-1-shravan.chippa@microchip.com> References: <20230119112848.3523273-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?1755450250825750550?= X-GMAIL-MSGID: =?utf-8?q?1755450250825750550?= 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 Thu Jan 19 11:28:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 45702 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp273887wrn; Thu, 19 Jan 2023 03:31:05 -0800 (PST) X-Google-Smtp-Source: AMrXdXtJLbEzlHhyyiyj5g3wAYu6Him4kATwD7d0R7E/f4ZCrCA6pDe77MiEXdwgHCKa8li/5xoQ X-Received: by 2002:a17:907:1dcd:b0:877:6288:eff2 with SMTP id og13-20020a1709071dcd00b008776288eff2mr5228111ejc.75.1674127865436; Thu, 19 Jan 2023 03:31:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674127865; cv=none; d=google.com; s=arc-20160816; b=ia1BC8afrH3F+gz9D+dWyehfSvkTaJZplJxEBxWAXQJ4Vcoi+q5cs7k3kis8aYf46I 1dfNqXZ3J1EP2sLMRcusCdKfOKdp4kPc7Ku0KmtehcCSfmMih/b0RdhAan4CR9LqSTeI pEd2/BoknDPGixPcJDZTwzjLOb0EhkYPdrma8G0aVMdIqiBr5YXdaw7NNrRiavZaRhOu SqQPT85dS8LYjklYLoAzV7qVh3Kk0mUjsS77eFdTXgtGBIP5vF/0bjaBV19w13pxomTw /h9T/JBvCXN7cvOf6jfTXFRHsKcWUReaH9QNYPpFZwgCS0OhEk4yRWXARlI8Cor7J3Br +diQ== 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=1TjssCqenwMnvVu3MEQ/33ym13quC56WVdWPcLylrxg=; b=WsKnbOT0uRDFHLsBhM3VA6mFWW9mV4nTmtkx09URD/lYJNzHOGm7I5KSmYfH9tShwI HLJwfFfx92kQnRKzVd9erqyZpthGbi39TZ1PGk2KGJtxLysUgkuIP+odSiEV/gyF1wwS ezRN8c4oeNs1yAzSOyZroIg/qfxa8tFVqVlnKsjh9xhGju0TarJOaqi4eCEK1LX12lwh tvx5wDcw4sDdUfsHX6/J93peLp3wkxF0CUZpmnm3dIFrOo5T0sLluHh9VYmA5nTajce9 AGTc/KAbZA4MeHeng4iuRV5z+m6ERyezuL37mQmykuF6IMsopJkfxfhEtCr3nZDCqP4Z Ulfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=IwXU1TU8; 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 ho7-20020a1709070e8700b0086cb8db39dcsi12283682ejc.98.2023.01.19.03.30.40; Thu, 19 Jan 2023 03:31:05 -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=IwXU1TU8; 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 S230341AbjASL3b (ORCPT + 99 others); Thu, 19 Jan 2023 06:29:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230251AbjASL3T (ORCPT ); Thu, 19 Jan 2023 06:29:19 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BAA357495D; Thu, 19 Jan 2023 03:29:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674127749; x=1705663749; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=h76uIRtA1SB3Hz4CTJgxl3kCbMQGAL66Dl/fQLhakSk=; b=IwXU1TU8KiJkrqHBr73pxoCfxAZSOYmsc6rYyi0azHhudLVIzzPqQExn NoFOxs+AigvHmmd90LKx/K5ZXfrvA2cs5bTTw4u3LIeUecfSiureBj60/ plDosoSuTvKEFucFknmCtCJqyWd1JAr2u1Do5GgUYUz1yG6BBkGpmo/Xl pvOMhhMQgCQhqJ7R7A/84/b+ZLr0+U6djM5iPmZAyEJyb1Qjwkrd+8o4K aAtPk7NcSk6VSSZ3QBmdIBvm+OWT9WD9qBx7g8Pj1yQVX/Cx6x1jwymAJ WIiU4TLbI3VNt5fbikfvHDeZIFYcZJuXMjvmyxq5QLBXMi6S5KE9wPpQT w==; X-IronPort-AV: E=Sophos;i="5.97,229,1669100400"; d="scan'208";a="197282261" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Jan 2023 04:29:08 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 19 Jan 2023 04:29:08 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 19 Jan 2023 04:29:05 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Jacopo Mondi , Conor Dooley , Prakash Battu Subject: [PATCH v10 3/5] media: i2c: imx334: support lower bandwidth mode Date: Thu, 19 Jan 2023 16:58:46 +0530 Message-ID: <20230119112848.3523273-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230119112848.3523273-1-shravan.chippa@microchip.com> References: <20230119112848.3523273-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?1755450227315860605?= X-GMAIL-MSGID: =?utf-8?q?1755450300697864672?= 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 Thu Jan 19 11:28:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 45703 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp273918wrn; Thu, 19 Jan 2023 03:31:10 -0800 (PST) X-Google-Smtp-Source: AMrXdXtq1eA9HT7W00RHOx5OAzLu8jukuassERnE+YySH6zJWu8sKLGfRFZRC09Xu2NZIuFPK08M X-Received: by 2002:a17:907:8b8a:b0:82e:a57b:cc9b with SMTP id tb10-20020a1709078b8a00b0082ea57bcc9bmr27635872ejc.24.1674127869953; Thu, 19 Jan 2023 03:31:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674127869; cv=none; d=google.com; s=arc-20160816; b=MVyztGrc0wyW1Qfq2HUKiop6klDIxcHQS4+ZUnnRLCvIZuFydGDcEclzfnTYB2UHrp 6I6pl9TRZRArjCRNrFc7+G6b9F7J+bl4e7vvY08uWdf4bDNONhO2Oy1evK4QBaOxUz0P tfuKN186yknmPl39BVhkVhW0Z6gXgdoajiz07poAUdvxsHm2DJQkoF6sjYZ2v4h/9b4w HI1RQU8igydtFo1t8EQiFX58gRijWcM73leT5bq6QZ14dsjKYUX3kiDyratvfbvp4qgb Pm8BtM1KGalzgradJfKzeHnBgUiJefkbcZRMESMOko++3p0+Y4l+GFE4DC3jncVR+hpg EFEQ== 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=H+U7jGLeMFAX7+jVPXQ1ZkRJ7B6M0yuaYzhYEpKQ1SI=; b=fWmVhAtGpeKfyuJ4+EDWeKQRM3g9Z7YKkOc1QEF9YpoMOjGXNrE10oq8lOuDgRV6E8 NKvrXrwa6ZDpFIEmmx+dfY8aj9byGZOoLb/pSOAmka8x01W3vjuTGU1GP9HfBElFgFJt yn7TOfMeeP4DWpI5wfX/SLC1X9c4G/gSUgsL3Vp6AZSFqLrkGUv2nizZn2rQdZLlbY0g dKgv7m2BfkbXfc0kfHteqrYLPmUT5IHMXEH2+Tb1xoKr7u3oPaclJfiB8Rm/NhsHYE5B u0StIrC6MsFuhYGl+OfUxijSbKlaFWNfiTPUloOL7F5C52AAYXDW+7m+kBVIa61P1hxq VJuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="nuRqAmY/"; 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 sb16-20020a1709076d9000b00872733f3b8esi9488207ejc.231.2023.01.19.03.30.45; Thu, 19 Jan 2023 03:31:09 -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="nuRqAmY/"; 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 S230404AbjASL3m (ORCPT + 99 others); Thu, 19 Jan 2023 06:29:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230254AbjASL30 (ORCPT ); Thu, 19 Jan 2023 06:29:26 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 536A274967; Thu, 19 Jan 2023 03:29:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674127754; x=1705663754; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1g0b3K27ODV8mWb+vk+Wg3fKm7I/wms8Et9Amh8ls0g=; b=nuRqAmY/s7CqVPqR/tg9O523bDh4jt/VFPGedN7pwewq87J+OUU5CPmZ HM+xACMkcU6MQXX0OzB83fIMSVyAjBkGXqD3Nf2eWJR/axDGxBMXc2XcC uT5crz15T8bU/fO98IeocGz6L6zOalIx6VtP+7+vj9xVMU+zP7mBgj2SX ffpkF45OGFyUexyvifpk+CeWVIIANVeMWZcPbi+f+17Qn8Lj4k1W0tEoH E9SS8fBiD3NBHY9XF2v7zSs0A36Z03GxRjO3FCjawk7631rZ54hZWnhbG 3tteIjie8zwFY9fYuXpwVUBRhtCZwY5fehEeXsj1f5KoEGfp/rkqFKFJq w==; X-IronPort-AV: E=Sophos;i="5.97,229,1669100400"; d="scan'208";a="197282266" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Jan 2023 04:29:12 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 19 Jan 2023 04:29:12 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 19 Jan 2023 04:29:09 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Sakari Ailus Subject: [PATCH v10 4/5] dt-bindings: media: i2c: imx334 add new link_freq Date: Thu, 19 Jan 2023 16:58:47 +0530 Message-ID: <20230119112848.3523273-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230119112848.3523273-1-shravan.chippa@microchip.com> References: <20230119112848.3523273-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?1755450305166348628?= X-GMAIL-MSGID: =?utf-8?q?1755450305166348628?= From: Shravan Chippa add new supported link frequency in dt example 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 Thu Jan 19 11:28:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 45704 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp274304wrn; Thu, 19 Jan 2023 03:32:05 -0800 (PST) X-Google-Smtp-Source: AMrXdXvstnqX1FAnw2s9Ekqs5w4PIP5HWpee9dBk0epIfmlrK4G/erk0aZZAqatf568YAzKXxHcI X-Received: by 2002:a05:6402:401b:b0:46f:d386:117d with SMTP id d27-20020a056402401b00b0046fd386117dmr11744090eda.33.1674127924881; Thu, 19 Jan 2023 03:32:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674127924; cv=none; d=google.com; s=arc-20160816; b=ommZf+Jg2e+y0pL7/hzSu5tIbIZfK6sz3qJiFGaoee3FM0qCjO+MP1pMVvP1Oy+4Sn vtSXWBslHk6Yw+OASdcjqBOAHyt4zUAokvPYVIB1I2HWir6HMfzxO8Et6CrGrfGzz0wL KT75Eco3QqriNj35MyXpChYJG48JSp49cn3tPL5u0Cp7AK4e+Q5zMREMuT61QSEYV7h3 IMTwgbfHoENxNITkQgPlC/cShD/kxIH1vECcXeDmGtzb2rWA1uRFRWN5hFp8OYrbtzY0 Y+y5/2qvdHBkH6vjhXAvR9rHELwxBqW6FcKk7sneRvSSxjvBCuvgsOmAHGhoP51tL1pp DIkw== 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=05TrxpFZKe6MJ5120A8YA6W1K+VAimvOZagbr1zRrbE=; b=OarLek4mdBb43lRztGpOgXaYzeYsqBf9sH8K+1C+ZeHiihZdKeQx1J7onOJ3jZnU27 X1ViEvz+ySA6NJi+MGP0LwGA1UMl3aLijGWqE6uhiTIO8237Yk3Eb6nERH/jjOSDuhVN WPcvK17d7t8Jci9jA+ht38olCebZ/gzP91kRr7z+xJB6/B3stQKIv2mi/m/6P1gkaa8I Ec89s/ulWduP1anb+LFvRTh6P+UE0b7+cx+MZYME7ybCtL2Kg1tRg9mTU8OtWxEaBTPh y4LBVIY6ncJXKfvl6B/31mwDRM/N/GrYmdMqcmuw1RsO7ktPpsqaySZ9Etrzw37gaI8p ycfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=EmVMtgyB; 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 a16-20020aa7cf10000000b0049e37585a7bsi7161051edy.196.2023.01.19.03.31.40; Thu, 19 Jan 2023 03:32:04 -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=EmVMtgyB; 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 S230356AbjASL3q (ORCPT + 99 others); Thu, 19 Jan 2023 06:29:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230353AbjASL3d (ORCPT ); Thu, 19 Jan 2023 06:29:33 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49A016F8A7; Thu, 19 Jan 2023 03:29:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674127757; x=1705663757; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QPl/84At/7CklOKY4iDHADsrN39puNNjvYV0F53XPa4=; b=EmVMtgyBFupaBiBJHO8f9Wy64S47uKQURAunygoSGsKwmI6qWUGdWu61 WlcUfWwFnI3S155l+kBMPjmSNEmtjHvwMK9qMUorQdntMKjj4hz3kJMB+ WuxBihm9jNEoLCgQWbPdc/+hbTqGQmGAYi7iQvzqSxyX7plbpH+SttK8D 5DW8u9wAADxgSOiaPU9tWkobeZSuIIAT+1UlIyu4QF+Ggs46HkAdUcwlw 3asTp08YCnyPbgKXCdZ3wZCnhT/J5QGhOvVOPxR7CybalZ+6scvJA2U5m 65H9j3awolDDQfkg9xsRc6lWNzWN3Pac6Tgzpm1Bme9yEcAsxySWHkZ+0 Q==; X-IronPort-AV: E=Sophos;i="5.97,228,1669100400"; d="scan'208";a="208443550" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Jan 2023 04:29:16 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 19 Jan 2023 04:29:16 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Thu, 19 Jan 2023 04:29:13 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Sakari Ailus Subject: [PATCH v10 5/5] media: i2c: imx334: update pixel and link frequency Date: Thu, 19 Jan 2023 16:58:48 +0530 Message-ID: <20230119112848.3523273-6-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230119112848.3523273-1-shravan.chippa@microchip.com> References: <20230119112848.3523273-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?1755450362966413555?= X-GMAIL-MSGID: =?utf-8?q?1755450362966413555?= 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 add support to handle multiple link frequencies Suggested-by: Sakari Ailus Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 41 ++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 309c706114d2..62b104eaa437 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; @@ -1047,7 +1057,7 @@ static int imx334_parse_hw_config(struct imx334 *imx334) struct fwnode_handle *ep; unsigned long rate; int ret; - int i; + int i, j; if (!fwnode) return -ENXIO; @@ -1097,11 +1107,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 +1251,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;