From patchwork Fri Jan 6 07:29:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 39973 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp692678wrt; Thu, 5 Jan 2023 23:30:57 -0800 (PST) X-Google-Smtp-Source: AMrXdXsTQTyYIeCT+5wf6UXM/1Ge+KjviPsohjK/7d45cdL7MaJbWuiFw7/sJxJmbXcUXQWTJHQ+ X-Received: by 2002:a05:6a20:3d18:b0:aa:5fed:8d6 with SMTP id y24-20020a056a203d1800b000aa5fed08d6mr83091097pzi.15.1672990257018; Thu, 05 Jan 2023 23:30:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672990257; cv=none; d=google.com; s=arc-20160816; b=EngXOILNfR+TsSKAGETdhXpyBbPUdnFbIBtq/s26PTWc8YJbT89cuqSPLufWcFTn9P dCiD4BcI+0m9h1lwAhef4CAts6TXuTZEUd/isy2Fb0Ik4TIHeV2TkER9rws6Z84LYfkO MMylR0awf4EMGmE6xlUUXCaaHMaj4EGXN2ygkSO/5H0/rmokkf6tU8uLyEviZSSU9/YQ GFz7uYPU1cMVI10XHlkJNMRPYKxIR3eXA/yJ0rmlq7yROZz2XsJl4Q8hArugNgaTjKqn aGDwN0yyTmuzNsEzTb4Npe655y7e2Sb1Gyr/KWvwXT/ZaEiguMpL1t2v15albmy60IpD zwyQ== 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=h4OJavBN1oDFBxi0Lz0WPzlnRjvBOupcpsxyXqmigF1kMu2qDoid3as7bkh4ohlxIU 2X68VJbY2hmYbxdWfWT0nLUERrM643b1Mrau8zetg8oncrlcHfOT0mjXao42m2mmBIrW gV36gI78d4UQGOWIlNUAp6Je4FaXfdyrTNZdknB+xeXaG5jmxgO2s0HwerLY0tYuOCmO XfyxtcU+oQ0gJdwOSPlZIVTRifbOT+ZKafg6kB2qbEB3G+v9t1smwjEKkPdBicQiBr8j gdOwOexce6cIsr/RdRxqRASMfrdU19WTkCo19q0U7Svswbi8vvNDXbAT/yBmPq9zdCj9 dbPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=fc3tB4HR; 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 h19-20020a63e153000000b0047947d45f57si595448pgk.745.2023.01.05.23.30.44; Thu, 05 Jan 2023 23:30:56 -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=fc3tB4HR; 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 S231824AbjAFH3y (ORCPT + 99 others); Fri, 6 Jan 2023 02:29:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231202AbjAFH3p (ORCPT ); Fri, 6 Jan 2023 02:29:45 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67B286F97D; Thu, 5 Jan 2023 23:29:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1672990184; x=1704526184; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GLXh+f0a72t6lGjD1FpAhiA+PzmF9uom00zJlSDPvwc=; b=fc3tB4HRrIrdPPN0/6l7UhNNEhkUVRTEyehVO4b9LreWqCiY67O8l19e L/KxZKW4LMalm+1ugZq4JtAAZUr5+SZ+idjfa5XZBgoSR+QQ4YYEU58Pf raa8m0jx3AYvACsWaoBzAPe/01Xky5r8JWAhq30AFy1epTVGJS7x4SLoV cLgyPUievP7q7ndkQlwBgEnlAFX12KEdHfyXjX4GRA4SARj8zbi1FOTPX +MZem/3r9/ynwFJp/5XLXUstlHvffTjTVe+Oq+qS3xPmszm4bLgo4Ta6z Ra+KmkJhoYvKjcd/Vfco9WrhufUJizva/OQSdbDeJhHrqbP6SgbMOGhLg g==; X-IronPort-AV: E=Sophos;i="5.96,304,1665471600"; d="scan'208";a="194553457" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 06 Jan 2023 00:29:43 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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; Fri, 6 Jan 2023 00:29:43 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 6 Jan 2023 00:29:40 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Jacopo Mondi Subject: [PATCH v8 1/4] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Fri, 6 Jan 2023 12:59:28 +0530 Message-ID: <20230106072931.2317597-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230106072931.2317597-1-shravan.chippa@microchip.com> References: <20230106072931.2317597-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?1754257431395988822?= X-GMAIL-MSGID: =?utf-8?q?1754257431395988822?= 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 --- 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 6 07:29:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 39974 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp692717wrt; Thu, 5 Jan 2023 23:31:03 -0800 (PST) X-Google-Smtp-Source: AMrXdXuVNA/MHkr2Xm82UsRH4LuTsziao7ShaDruP5BEmf2vNW6gRj7aq+CIJdACco4iVEfXA4Rd X-Received: by 2002:a05:6a00:1485:b0:57f:ef11:acf6 with SMTP id v5-20020a056a00148500b0057fef11acf6mr65902802pfu.8.1672990262853; Thu, 05 Jan 2023 23:31:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672990262; cv=none; d=google.com; s=arc-20160816; b=Uc31A7f7TqcbY0FiK4WQR4lvNZRKEgvnOaa9J3fF3crEOnKExThyOrC/PsElLsPjQG Wn+sDDP7NzbpmLTQ+vtfGNfft8hxqHsemDGWora5O/RH3TGNe0CeU1JaEFJAZF7QuGYh YXdhcQe8g7Ko0jaHH8Us6JPwNDaekCqlvP3etzUg/vyERa9fqa6eRxWhIAn4PYbPGjYf RB9VaU5TvejspRCFqz5MNazpih0BW1WyyC76ycFn9Er4e3RtG20asMT82ie1a82EzKEw 1Er8SpZlNBMbUVXgJujglJwz6Bqt/x3FXPfHqmWwmuSsZXfbfV1rtrienWEl6UXL+Kw3 nJ0Q== 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=2eok36LxpbKDKl2WwiQ3yN2GdjhSm0SDidYbEb+Jx1Y=; b=hmHOlvPrZ6V4JXCjGOp+YpGI2m6BnXzJEkjJMiMrLN+IiwGwvKXKjaRjKtiAJ4l0wT DV7DZ9FZ4qJCvesWF1zpCBsUkhBZCcSdksmYtM5HopItBrvQB2eJUHe1aqyz6TJxXwh2 g5IuuHBlYLVERI5R/WLprF0smh28xl3vGBy3wn/I9/4AAravz3dO3++I1086LDs0FXIj zLOppZhHF12unJ2jiVufHRnJm5iU6uF37WFtvWcN/tgyyb32n+NO9w++Yht5Tbf1/3RL B32CJU/KyVEibwnh0f35WneuWPCQPBQ01vFm6xKeZtzd3iPaKw+FGVc76h/viz4HUY5z Sg5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=yw8utvxf; 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 8-20020a621708000000b00578b212e4e5si635091pfx.74.2023.01.05.23.30.50; Thu, 05 Jan 2023 23:31:02 -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=yw8utvxf; 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 S231831AbjAFH35 (ORCPT + 99 others); Fri, 6 Jan 2023 02:29:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231663AbjAFH3v (ORCPT ); Fri, 6 Jan 2023 02:29:51 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45B4971FDE; Thu, 5 Jan 2023 23:29: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=1672990190; x=1704526190; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4/SGhH4FsRjsw+rky4ZO/fBEOCSYA1HAoOeVNOBUVI0=; b=yw8utvxfdP/CzjgtR7B1d+UKbmpStT+WTARx7jhtaqYHBSCGxkhRKid7 q1tbc7x/o8xZ+om38iqGUcbYUNC458JKjlzEy7bZgHxX2oi/6Q4zkt+pt hxVwAG599F86fq4BMJTMSrNN2vFpfkoY4BG13UMYReFQJdE12UjlobIBx iduRIPvEWDaFcRtzlI/E6tOg9LaKNbYWHtOJNspWkvNNMxxi4pFHR42qM 6/uSDl/XDaJKV518h6mCSyRazKnmB10tKLB8nz6lISXErJqdzT2igYKvR sZmGFrpvWresPCcFCy4STpBWMdGulq3reDY1LDN3Yx1FpMYugb2CQl0YB w==; X-IronPort-AV: E=Sophos;i="5.96,304,1665471600"; d="scan'208";a="195658103" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 06 Jan 2023 00:29:49 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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; Fri, 6 Jan 2023 00:29:49 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 6 Jan 2023 00:29:46 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" Subject: [PATCH v8 2/4] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Fri, 6 Jan 2023 12:59:29 +0530 Message-ID: <20230106072931.2317597-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230106072931.2317597-1-shravan.chippa@microchip.com> References: <20230106072931.2317597-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?1754257438218104612?= X-GMAIL-MSGID: =?utf-8?q?1754257438218104612?= 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 --- 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..a4549d194cae 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 6 07:29:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 39975 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp692893wrt; Thu, 5 Jan 2023 23:31:31 -0800 (PST) X-Google-Smtp-Source: AMrXdXtm4/OKKP4bktvLrttjb/2o99OEu9LCa/N4LAxZiPZSGkmqyzYD6WAy0QoNQbfzMVClCPad X-Received: by 2002:a17:907:9716:b0:7c1:1b88:f5be with SMTP id jg22-20020a170907971600b007c11b88f5bemr50034436ejc.2.1672990291666; Thu, 05 Jan 2023 23:31:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672990291; cv=none; d=google.com; s=arc-20160816; b=IWDmKU7IPdYyyvBihtME357VOALjUq8o1co/e4eGSTLrWDnAIkpfaYHhPfAaKEjmtw X2QerySRoafLe0PtnUNS1flCCgHppgIgfO4W56zTIuWzs+2bcTzrT3197z/oxqt5z8+B SxlLWO8v3f7+Mv4eyANmXc2fE2512wBQBshJSzn8FN7uUjFXro5z5hZdvrLWhrvX0jj1 53o4xR11ohrTLO/FiNwEZAEE744A1fcqe3uXfE7sJv24b7UP5Du0auMz/AFd+645mTrV dHS9bb+P0vQ3mPhaqnVv4bkr7PbvZT1bH+1PLxIRyLpyixiTIj1t5CrcGjWX1o47EqCr QXJA== 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=GGgu4Kq5lq7GOEgbFr8tR9/M0kywr6ETIFzb0peptUo=; b=RHD/aEF9mZEWZ+D132jDMGgMumD0pEzXqd7qEVgHiAO6kdGNlqmlCFUpKvsYoPnN6k HxN6fZHWntg4TBlaZPisnwa4Ob7ckcSGdREnxLps/cLyF3QuU/13dJlyi21NqRwZG2uy 43CXZhmbB0iPjMSKYODefIGbdJi9lgVaq9p+fog1hAblW5R84VrG8+L0ZKx3ajXTIW63 1q/iNOAUGVtB8kKgWfeqlt3nXznqdTmvv0QVEm13iAWntKO5hMTWgW14gaX5yoHmJ3cC 8A3KdY3aW1GtP/loH0PXmk1A4bfUdz2DzcAs905zLSWIu5gaqNuyPeENyjUC7Co0m3/M X6rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=hNc5HcTB; 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 hw20-20020a170907a0d400b007c12c63d1f4si441708ejc.813.2023.01.05.23.31.06; Thu, 05 Jan 2023 23:31:31 -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=hNc5HcTB; 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 S231972AbjAFHaL (ORCPT + 99 others); Fri, 6 Jan 2023 02:30:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231888AbjAFHaB (ORCPT ); Fri, 6 Jan 2023 02:30:01 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2337C6F97D; Thu, 5 Jan 2023 23:30:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1672990199; x=1704526199; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g2fKeZb67427ShhByoMZSwUROGw4IRlWfB30+CR6HTM=; b=hNc5HcTBn9k7Imx8q3/capQUirus7N4df0x+Ss+nf5swkRviH/kPwaRy IPZWdeiCBxsY27mVmiXZRRVbNBMh8LuihEniAgV6BmC9yW/bS9tFYERmY NBZEHHGxLCPRbxmDOIc0zmzsDRSEBYQz7lNzIDuvGfBG7xU9LjyOESATn 9zxmRe0cPNnvCL1aD6WXlC5nPK5kyxn76hNrLK+yvUk4cALaWxjONSLhr hZhq4dsAPtE6rc51+7Z5ZELyClnFhTswq8affyvjRIVUuXXRlrP6dZDnW IlLlBB5O3XP87le77K7zWy+0ESom9QYxaNph7fYgb2m3rNGGh8Mq4++5u w==; X-IronPort-AV: E=Sophos;i="5.96,304,1665471600"; d="scan'208";a="131104698" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 06 Jan 2023 00:29:54 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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; Fri, 6 Jan 2023 00:29:54 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 6 Jan 2023 00:29:51 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Conor Dooley , Prakash Battu Subject: [PATCH v8 3/4] media: i2c: imx334: support lower bandwidth mode Date: Fri, 6 Jan 2023 12:59:30 +0530 Message-ID: <20230106072931.2317597-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230106072931.2317597-1-shravan.chippa@microchip.com> References: <20230106072931.2317597-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?1754257455210640682?= X-GMAIL-MSGID: =?utf-8?q?1754257468290700429?= 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 --- drivers/media/i2c/imx334.c | 300 +++++++++++++++++++++++++++++++++---- 1 file changed, 274 insertions(+), 26 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index a4549d194cae..0315e1c9541d 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 = 280, + .vblank = 1170, + .vblank_min = 90, + .vblank_max = 132840, + .pclk = 74250000, + .link_freq_idx = 0, + .reg_list = { + .num_of_regs = ARRAY_SIZE(mode_1920x1080_regs), + .regs = mode_1920x1080_regs, + }, }, }; @@ -518,6 +714,23 @@ 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; + + lockdep_assert_held(&imx334->mutex); + + 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 +743,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 +763,21 @@ 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) + mutex_lock(&imx334->mutex); + code = imx334_get_format_code(imx334, fsize->code); + mutex_unlock(&imx334->mutex); + 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 +796,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; @@ -633,7 +851,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 +865,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 +891,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 +931,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 +1308,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 6 07:29:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 39976 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp693155wrt; Thu, 5 Jan 2023 23:32:20 -0800 (PST) X-Google-Smtp-Source: AMrXdXv7fifTpAl/YSOysvCrJ0NjpxFMqxGC5S8epsR0fhE7EdzOXsggZxLx86XP38tdklykLPJh X-Received: by 2002:a17:906:7b8e:b0:7c1:3f04:efa2 with SMTP id s14-20020a1709067b8e00b007c13f04efa2mr51038596ejo.29.1672990340663; Thu, 05 Jan 2023 23:32:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672990340; cv=none; d=google.com; s=arc-20160816; b=BgVp3Ppes4h4qDNY3z3NHFtrvb7AJFq0kTRn615atDZtNhKtpQpF562oaKUHxuZv/Z YTS+dDgs38XXR2JhzbSFeNck3vb+l/jdwtPZ44oQz8/8pq8aEe6G672KqUen4Iu1/2PI V6QIW1nH85eG4r7qxzsOdp+e8klCQTjJcMKsFE3AClYRnW0Olr9Cnfx/qgxhaFr60c0J 2NJ/RQLyN2sLENzh0/BijmLZJZjFk9S7JcBNYL5SVOnfSoIq3ik+1CqPf583LlS243ZQ abO30HD8QisihT/+HxAgT/vFJTqFmk/X3wfbKgZQtUFhrxrajoEUgdbAGkmmMmQ75UUA 5COw== 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=ULy97/E/y1QLI5fVccu7RD7+QBdolRkMKNXUSNQNN9k=; b=KMqKNKSq1ReR+iGLK05hSRljJqNo5pXZhZupVTROmy2OWU4voMdU60i59w3KihjN0M xNbnZCa1dZ4i3nFERkaKDqdLZCqZMOC2fhsrrpnlR4S5H+v2vKE8K8OmW3xs0vLkc3FL kY2/LZI+I0rd/hSm2CM4kyKY7+y7gZVyEG5gG9WF6dmyboVZyVtz6Zhbgh1t/9hbpQDc e33iUxIiBYGOnyxaRDiNc5InRoOSrueBKhMBiXXHb8zBxKuN58L0Hqe+e4ejmZo2EVmK L19rDfq7DMkebwSREMbVaOkFfHBApI4Gks/qlv7rJF4WyZbZNgELY6uHWLZ9F/AZ4c49 zQLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=B20JRYT8; 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 gs40-20020a1709072d2800b007829f6fed9dsi721801ejc.232.2023.01.05.23.31.57; Thu, 05 Jan 2023 23:32:20 -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=B20JRYT8; 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 S231980AbjAFHaF (ORCPT + 99 others); Fri, 6 Jan 2023 02:30:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231663AbjAFHaA (ORCPT ); Fri, 6 Jan 2023 02:30:00 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84F9D6F943; Thu, 5 Jan 2023 23:29:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1672990199; x=1704526199; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DffC9CPOpTvTI4x91/PB9XTl2Oj+dLxT5MUVwREgeSs=; b=B20JRYT8GB2SSwUINvmP3dLitHDPovckdxTgJQUiw5b9vPqrk2HfOdvw VYCVHTnTbO4k3+gTj+8BAwIrdj0lkKB3XVZ1D+QKFZRxL8yLeHSDWvj1r VBALeGbwkENlsz/De9OjPCeMzRBMiqJ06EG7f3kPHsvrcRzvw0S7kmdyy qszvEy8P7CbiqN4ZWXCQtv7EK7jhtHb/cGgnfaW8MpTyhGbBYpNgAEIne 8+eExpcH7uAMkflyFL0fQylsW3zxsknd4ERRFY5BbhcxkWNju+nU2XqVc KwBZsu6D9xj5RismjYyL+VidWDBa59uDvof1Txl1QEDz6QGI9WfUQyn3d Q==; X-IronPort-AV: E=Sophos;i="5.96,304,1665471600"; d="scan'208";a="206640385" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 06 Jan 2023 00:29:58 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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; Fri, 6 Jan 2023 00:29:58 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 6 Jan 2023 00:29:56 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Sakari Ailus Subject: [PATCH v8 4/4] media: i2c: imx334: update pixel and link frequency Date: Fri, 6 Jan 2023 12:59:31 +0530 Message-ID: <20230106072931.2317597-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230106072931.2317597-1-shravan.chippa@microchip.com> References: <20230106072931.2317597-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?1754257519651537345?= X-GMAIL-MSGID: =?utf-8?q?1754257519651537345?= 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 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 0315e1c9541d..8c3ba660abae 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -50,6 +50,7 @@ /* CSI2 HW configuration */ #define IMX334_LINK_FREQ 891000000 +#define IMX334_LINK_FREQ_445M 445500000 #define IMX334_NUM_DATA_LANES 4 #define IMX334_REG_MIN 0x00 @@ -145,6 +146,7 @@ struct imx334 { static const s64 link_freq[] = { IMX334_LINK_FREQ, + IMX334_LINK_FREQ_445M, }; /* Sensor mode registers */ @@ -468,7 +470,7 @@ static const struct imx334_mode supported_modes[] = { .vblank_min = 90, .vblank_max = 132840, .pclk = 74250000, - .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;