From patchwork Sat Jan 21 03:37: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: 46759 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp555200wrn; Fri, 20 Jan 2023 19:39:33 -0800 (PST) X-Google-Smtp-Source: AMrXdXuNRey8vdHGc8oTwIhPj7/j5dhSKcvX4JA23Q3RAghcPv8m3GH751xLKErMOpHZsq/uiskk X-Received: by 2002:a05:6a00:181f:b0:58b:d244:b525 with SMTP id y31-20020a056a00181f00b0058bd244b525mr26657720pfa.17.1674272373250; Fri, 20 Jan 2023 19:39:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674272373; cv=none; d=google.com; s=arc-20160816; b=NBUzr6JfRC8frREk2K/Ro5Z5VTdV0IUwORXoghGlJJFYRAsFTXETJn7aMni3jFst9U ogV56KmrIQL6I1EcpPnW0+7Ry1f7jUlSJALZW6SO5r41yJMVOemMsRfc5/JgOx0INZhE FtTxJP3lSwG42Sgo+NsoKL5uLuyyMXcvidju7v7rt1BKKWqRsz6/GFGro2GEMz+yEO/b VUYi7lA2SBeRyGwlAO1MFfBWoSUKtLD/HiHVhjTUTEaWf/ZJ2Z6J2mwULDtrBVWnAEYK GUNKUvCRJzVsdhbKD7IkBHu1k21z+DuQJK+9cRaOj6bNhLo3bZXf/NZahyiOdSJ+GekY 1c/A== 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=gvLz5EpneALf8gMIvoH0RczqaqMaGioD+qQKkSpfrL7KdAgtbpGxPTx/KadO2LQ+pg NyubguyG8z4LTmOewriA8jbPeN5Sy/QjT+ffxJMbz8yC9++2EE1h6t4Nj3RmGwf76CvK ypgLfXHIZscJ3SHGBjeVIF2VvIQI2xScV7QWaRRnqabs6YpCSZgsB113AujpAfEgMrrN MGDMc5IWNR0RVAD9S+ZIumhSptRT7kntLD7XWSoCqZlvs8G+VAnvflA2lktv4R98EGrJ m3bxquofug+cpSHXBftlidYx11WWRsZLNGyRvpMofkhdWzYAgbYWSB/NPWmLw/JEPsP2 B6FQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=RuHfwOT1; 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 v27-20020aa799db000000b0058bb792cdeesi24778124pfi.317.2023.01.20.19.39.21; Fri, 20 Jan 2023 19:39: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=RuHfwOT1; 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 S229450AbjAUDhd (ORCPT + 99 others); Fri, 20 Jan 2023 22:37:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48684 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229749AbjAUDhb (ORCPT ); Fri, 20 Jan 2023 22:37:31 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5CD9C79EBE; Fri, 20 Jan 2023 19:37:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674272251; x=1705808251; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IC4Krh/tkpVGXGBoGbbhsCsG+9lDFkR31NuApekcLbg=; b=RuHfwOT1NuZgns5F+O3g3ev4Hf00aSuNd27NqXB6sA9y3uuWclF/Gupw TT/W93IjcIBkK3kaOCmHfXk160kA7L/1eOEtPNqLj+lh+U6tOvUpmMuVR UL5Jw0jOng4nR6j2ST9tfuslyNbAInZiRgZ3+58phL9fCOcLhLkpyakUL RSNWqQ4I2TmgZJzZWnQlxVxVR4/Ww0gVzYfVFaQYaA84wQNOAQldsxL3t W1NycHTx26qwVCkecRS8ovlljoN3lsivUcMXJTtv6QEs4vWBiXwG0IJc4 MOzorKpufH0cH/bdJC8TUrwaPLgQsW0e9Xvt/1IhpNMeUrAmpEpSKGGAg g==; X-IronPort-AV: E=Sophos;i="5.97,234,1669100400"; d="scan'208";a="193243007" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Jan 2023 20:37:30 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 20 Jan 2023 20:37:29 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 20 Jan 2023 20:37:23 -0700 From: shravan kumar To: , , , , , CC: , , , , , , , , Jacopo Mondi , Jacopo Mondi Subject: [PATCH RESEND v10 1/5] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Sat, 21 Jan 2023 09:07:09 +0530 Message-ID: <20230121033713.3535351-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230121033713.3535351-1-shravan.chippa@microchip.com> References: <20230121033713.3535351-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,URIBL_BLOCKED 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?1755601827777279533?= X-GMAIL-MSGID: =?utf-8?q?1755601827777279533?= 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 Sat Jan 21 03:37: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: 46761 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp555414wrn; Fri, 20 Jan 2023 19:40:25 -0800 (PST) X-Google-Smtp-Source: AMrXdXtkfU37CKds3/3TrL71gQGRMlcLR8fePcH9yB9RGzja6lVWTQpedTfhHz58Q5HgvtxSNrq8 X-Received: by 2002:a17:903:2092:b0:192:d2d4:d6a8 with SMTP id d18-20020a170903209200b00192d2d4d6a8mr36450952plc.6.1674272425416; Fri, 20 Jan 2023 19:40:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674272425; cv=none; d=google.com; s=arc-20160816; b=Bb7Xo+M+u8aa3pdREgQXetCZ/BfR3z40VaupPvl9oMgyHhWGhCqrcUcxxUkL3eSYWp mw2FuJ0FlRxYhPxc05jCPC0tIzbb2Ry/zREuK3Kbjn6Ucsfxy3osaAcUC8XsAAKC8Bob Cp5H7O7GGvKyKt4gmuwscgfvHlfsQsIy6tYoDoRGG16qfsNzf44HtyKyZs8OHGSewmu8 HiUnj+9q1z9BeQpE3m0D3fQZFvEF0+9/AR5F8qI0lgfapnDTfsm4rU/RzsUcNIIPH9Gm SeopfqQxKokl+UpHhSr8I3AOsWDbYOqcUPcSiFZlGlLsg/ceJOHuLUOuMqLavuMGjTbJ z7Jg== 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=UgI7f6zhXBcYh09f91bVAGCgLKnS6HfXAzvU1JDUV6voWSfk2dimdyb6ZeW6+0sKVZ Fe2eEXiPqApRAr6YGwv31sqJAHI26/6dZBAzkwOJ4b5MTMEUHPj1tUdI+v+jSi0m6qJ9 MM+IbOooo6AWkInhYRrl6lTSqc4SZvGkH4GFsbHdbgNu8XVJn5Ubk/uZD13s8KhVNPS7 q7S2CikrLSbwE1cK78wP0iFJsaEt2TVpR6pUffZXzrT9FbsAQ8B7pkVWYJsf3eSrpcrZ eDHqlNHBl1NZqWdyDNxleM70l/cJjQy9n1i3I8jyY9HTpJ+Jy7gUblnCCt4cos63VhzS CVCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=eUFZwod3; 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 i3-20020a17090332c300b0019143677fd3si2493985plr.461.2023.01.20.19.40.13; Fri, 20 Jan 2023 19:40:25 -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=eUFZwod3; 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 S229768AbjAUDhr (ORCPT + 99 others); Fri, 20 Jan 2023 22:37:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229575AbjAUDhq (ORCPT ); Fri, 20 Jan 2023 22:37:46 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A20C037B5C; Fri, 20 Jan 2023 19:37:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674272259; x=1705808259; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+szvL+ndfqTkBWLkYZZHX8t/alFfcilUJhnbtl8bXGo=; b=eUFZwod3dhEGW/febsGX1cMu+JjHr0LuE95qZLyDP3HxM+drQpBY8hA/ 06NIs5A45Ud+CpaNlsrZpbHiMf1sNpGgoYJW4v/NhbL1j1UMnkp4wVBM8 kX9cC1KNRcMsZYLY0CNsLiK4hqjulAyzJpClf1aAXHGxtTMpU5bFoCKrn RABimhCqvvBL9wBlcTfQMq5OFhdypi1aCWtChBYjOc9rZLyf0ftI8IdFA a4BK2xt1RbAV1jf293Fm+oYizslp4cMWJ3wF1EQojS4llwxQP3fsfTblm DFPgDO5pAtfJrZW2Zy9pn8UecsAMIj9SaUmmiqPb5wdDBQkiBBpUGxXJe A==; X-IronPort-AV: E=Sophos;i="5.97,234,1669100400"; d="scan'208";a="196788416" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Jan 2023 20:37:38 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 20 Jan 2023 20:37:38 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 20 Jan 2023 20:37:32 -0700 From: shravan kumar To: , , , , , CC: , , , , , , , , Jacopo Mondi Subject: [PATCH RESEND v10 2/5] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Sat, 21 Jan 2023 09:07:10 +0530 Message-ID: <20230121033713.3535351-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230121033713.3535351-1-shravan.chippa@microchip.com> References: <20230121033713.3535351-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,URIBL_BLOCKED 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?1755601882457128494?= X-GMAIL-MSGID: =?utf-8?q?1755601882457128494?= 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 Sat Jan 21 03:37: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: 46760 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp555393wrn; Fri, 20 Jan 2023 19:40:22 -0800 (PST) X-Google-Smtp-Source: AMrXdXsoA+RSorJx3+XPtxbXpdUMR2dNzb50qxdqz5qj5Tsz55jfXV6tJv5V1EHL1kKTu0Jh4JTG X-Received: by 2002:a17:90a:19a:b0:22a:34a:badc with SMTP id 26-20020a17090a019a00b0022a034abadcmr6067119pjc.42.1674272421766; Fri, 20 Jan 2023 19:40:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674272421; cv=none; d=google.com; s=arc-20160816; b=EcDvunzAvdhsb7/6uU7bHqgfOcujyFpPiAcu0LPWTEWcMuREIh3b92Ae6Rqbm50pCv u4adQRpc9zCuoCvqGkKh6Xsif12x95+Xc0PWFLiVe6qR4JaN/SjcF9cpfruG23ig26Mb LYx4olWw/nVceHKOeap6fVFSQ2yR1DxPiMlo8u7rLtoq3fuw6i6UJT6Ax1ouMazN0EEl CnIOu1URUXR7kDfPCmanmTnjzvQVYuUGmtuD9XKb7EdE1eSsKnR7xBSSH0n0oQDjATog diXijdwf/boM6f4weMy/dDw2EqbA7oE5CiO15peuUe+zOmn/am630Mr1WJLfyfG5FxAg 0wDg== 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=PwhPRxR81OOwZvZGi18ZfnF1+VerkS+YI4n9kweokB51SflcCkVaWjJGrWNzhDIz6B +8Nv3bw1CK/W04Nu1LYFxQe4x0grHvU/qeNnERTs02r0EGO27x8146rJRZyvWrQuuIPC T4fNvRXjBPGpOojXIYQ+H+3Lyg1D3wg53cKLCasLTGD+ruylvyHOq+Ok5+JapCh+F+bu qjKQ5os6me3th/iUTF9intIgP8vt4NTOU8vySi1V/QXVv1fNrn7+ijHKz1fF+EsENdpg 4nnM2vpKqSBeCpVgjkf49Zy14lAAhWMOTPFWKrxNi53afQRxiXCsErUrtadSG22neMpW HWXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=j+34g4xZ; 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 1-20020a17090a0a8100b0022922c1069asi4283359pjw.165.2023.01.20.19.40.09; Fri, 20 Jan 2023 19:40:21 -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=j+34g4xZ; 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 S229575AbjAUDiG (ORCPT + 99 others); Fri, 20 Jan 2023 22:38:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50124 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjAUDiC (ORCPT ); Fri, 20 Jan 2023 22:38:02 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 749D729172; Fri, 20 Jan 2023 19:37:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674272268; x=1705808268; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qAjxmw0PJDYk+qdYQdozfLQCUcoTMpN9myt4W0vReqA=; b=j+34g4xZy2FYtezbNAh6LU0LJnqqgYzT3pyJU9m6oVisEcK45CHrJTLq s9Pr2iRvAqcygVP7LQM248GQuYHoUtDdKgoF1Mn3qDP26BP+38pBJMbk2 6KN7QM5Wx7VfrSup9FyDGdsk8yWBEPwu0jWELF1ypr3iHK354tMnX5vr/ lZrPo5VOkw4xeL0dfnYuUMG0E8N95NZsozqnXA8kd8aHAXJbvAUtrpPdk v1wrl05uIPShj0OymIRcCRdGCbhgPw3My4RLCr5bFJmAsW+gwAlrT37Sl xowiDVgoKXPJQqQqu45UQqwkHN2UMk6eau6B9cJAGKzU6Mp0qdulvy3U8 Q==; X-IronPort-AV: E=Sophos;i="5.97,234,1669100400"; d="scan'208";a="193243022" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Jan 2023 20:37:47 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 20 Jan 2023 20:37:46 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 20 Jan 2023 20:37:40 -0700 From: shravan kumar To: , , , , , CC: , , , , , , , , Jacopo Mondi , Conor Dooley , Prakash Battu Subject: [PATCH RESEND v10 3/5] media: i2c: imx334: support lower bandwidth mode Date: Sat, 21 Jan 2023 09:07:11 +0530 Message-ID: <20230121033713.3535351-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230121033713.3535351-1-shravan.chippa@microchip.com> References: <20230121033713.3535351-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,URIBL_BLOCKED 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?1755601804702808875?= X-GMAIL-MSGID: =?utf-8?q?1755601878979599532?= 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 Sat Jan 21 03:37: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: 46762 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp555654wrn; Fri, 20 Jan 2023 19:41:22 -0800 (PST) X-Google-Smtp-Source: AMrXdXsG/7AXmSAHaekIdxAT2dPZ+yVSyMDVPN7ZfVmas8+iZBjJMwbicVqTihlWkNA8qg9TPZlr X-Received: by 2002:a05:6402:2989:b0:461:1998:217f with SMTP id eq9-20020a056402298900b004611998217fmr16940916edb.4.1674272481880; Fri, 20 Jan 2023 19:41:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674272481; cv=none; d=google.com; s=arc-20160816; b=tmXOs8NZ0UdXo8/kvl+YffRb5A6C79Sj2TYm4NiRZuVBzuK95rsIsBwFb1cfxV5xj2 ZJ8Jhqv0CkCG+2oanx3FIhxBITkTE6UQ0IDJmureGM9shFEqs8jO0p+qWw249AAIKVfj pGRtCcoG5RoartDpr0LIQ93FzH1NqR2IAN4Z7HGJDX8XOvs38+YKNWtnjzHx470LFp2z cIwIda5+ntMBW/6ISur2wu7HXR8/u+ZO89dMs0fqRDp0pon9ACNM0q58k8fEvVogNjd7 L7ncocHhKpzVGkCDf5+8mL2MNFrQ+TAakRdHhlkKifv8sBBIv2p31xdTryCt2CwQF8JE jotw== 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=dOmPGOnCk3O1KjL6pC7uBmErzhA+z+ZHuQ/OWbvL+bE=; b=atjYxBna+0smuMetZIwMSPFg2OELHuAVFViwDlzh+i1A48lhtmLiTuu7mNgswFu0yV p/ADffq1KFrMvxKnEMmy8jl311xLqEPixPMt/lh8zt64T61qjV9WC+XxpHwHfipSW7qP sJynjBftGfWu2F3zT1/kOfSr7WduNz+B3deDyY54EIqprhEsTBvB+6mTNuyKsP7BNn6T rEUJM7eRgbp5MI4OW5UzbLbIUaJTjX5oxjfkY9tGTx6cDC2i7HRvyZco7K1UugMa+ynJ ZzbVlkh01TYQ9l6yem9yECzXgPElgQzJaimsToPuZsa7UYhxMNipDVQs02TlaX2HZA/k 275w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=ZBn+2uK4; 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 j12-20020aa7ca4c000000b0049e6a6bacd4si2636391edt.548.2023.01.20.19.40.58; Fri, 20 Jan 2023 19:41:21 -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=ZBn+2uK4; 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 S229789AbjAUDiQ (ORCPT + 99 others); Fri, 20 Jan 2023 22:38:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229764AbjAUDiO (ORCPT ); Fri, 20 Jan 2023 22:38:14 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 868F411EA9; Fri, 20 Jan 2023 19:37:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674272275; x=1705808275; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bvzL8yBXjkbs6PX1KeNsY7o8KthoIvKiuovYJNPFyVI=; b=ZBn+2uK4VVfq5Ze+USU7ifvYtpjDx1Gl77+ATdR2L5KZcQzcVNdWWPi2 9VJPFKnBaePuG21ghodszyfH9xBAt7aoQgWGmm2yahcVGEH2hGJf57T+L s/lLZ55L1xJyJGaeNhcIdK/kJiBAjrciKtiXmT6w2TUjZoakRRHzCBQ50 kfgkjGXL6ryw1nrJwKxyhPbndB6RWa3BOEIvajlm8liFs3Of5tQI/9Xr7 foV2U5MWQmlVbSixBj6Zs4SU//8mbBHGYDakZr5IUo6dC75bQvuwMGB2t oWf5AdAiandt8zsO1KPGbEwLOywoWzhUCWQYo0QK3Ah3si+F7iDVxz/rC A==; X-IronPort-AV: E=Sophos;i="5.97,234,1669100400"; d="scan'208";a="193243028" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Jan 2023 20:37:54 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.87.72) by chn-vm-ex02.mchp-main.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 20 Jan 2023 20:37:53 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 20 Jan 2023 20:37:48 -0700 From: shravan kumar To: , , , , , CC: , , , , , , , , Sakari Ailus Subject: [PATCH RESEND v10 4/5] dt-bindings: media: i2c: imx334 add new link_freq Date: Sat, 21 Jan 2023 09:07:12 +0530 Message-ID: <20230121033713.3535351-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230121033713.3535351-1-shravan.chippa@microchip.com> References: <20230121033713.3535351-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,URIBL_BLOCKED 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?1755601942163082097?= X-GMAIL-MSGID: =?utf-8?q?1755601942163082097?= 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 Sat Jan 21 03:37:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 46764 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp555783wrn; Fri, 20 Jan 2023 19:41:52 -0800 (PST) X-Google-Smtp-Source: AMrXdXuZUtYlRVSPeCX29af0MRX2EvFrsTH96hXC+XDkFaGxAL2wLIY5w9Y+pdjNXfE+dLuU3767 X-Received: by 2002:a50:ef13:0:b0:49b:67c3:39a7 with SMTP id m19-20020a50ef13000000b0049b67c339a7mr20431668eds.20.1674272512569; Fri, 20 Jan 2023 19:41:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674272512; cv=none; d=google.com; s=arc-20160816; b=zXJ5Gvwi6Xqr9nG867+AcPu6B5ggxzEc+e2QcSW7TcQPs2gikBoGmHUbaSHxZdTBEo S62/QdeCY0PAPMry/qWfTBpVe8PVcndcAj64L8qlMFzSU0dqW+AJvGX8yFfZqyijqkDG wk9YKghsJN3rMq9tYSnaWvI+p7bDRMZt47DIVDOLaOxjmq7dYuVCSus+Fj5s8Xo2T7bz OR3gafqPV2rh26GI1UbO2Co10K+6n4fRpERQnJ0u1twK3VGSd3Fx9FLLhZauesgnGVEp wxYDhh7sHhzdBtIJhdixN23L8ZQh1M4+ae14wo1UIzaePBhT16usOnppucvvTf3KcLnT fi4w== 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=P7T8I9zgYMAaltZdO/WWkU6Ot7CvGEaYisYf0ULunKw=; b=d4E1wp95XVzhVGIauRSCexhk+59aE0/0+WuVmntZ1hk9VCDQK0T3UY/q4H9KqA4ncf qoU/QMqDqgmVvvAE/srnCjeWRU40zneRyP6/V4Tp5VC/A17s7JR8Lt1xhEDTsgYR+hEw 5RJYYqkzofupGRvudqV9CFVJFvoq0vdD4FhFgf37FlVoHiViJBcA+weLD/InFluDX6na oRBWjQnHDxCvMFEF7mDeIStJYl1+Oj5r0cNd9s2Cwn2AVmoarvuxzye0RO43QBV85XA2 Cn7ClEcL4ovOOY/+uF49uMZ2P922sLdBaYG4vMHCB9rDXnGAbMtvFrWUZW6sseJ2l9gN hgSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=qVoWvNb2; 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 h11-20020aa7c94b000000b00498d00b6e05si35857714edt.58.2023.01.20.19.41.29; Fri, 20 Jan 2023 19:41:52 -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=qVoWvNb2; 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 S229787AbjAUDib (ORCPT + 99 others); Fri, 20 Jan 2023 22:38:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229764AbjAUDi3 (ORCPT ); Fri, 20 Jan 2023 22:38:29 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 46457360AD; Fri, 20 Jan 2023 19:38:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1674272287; x=1705808287; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=655Z2JTSd2ywx5suqnhifyZk+ujmUs8Vsg3kb8YRmZw=; b=qVoWvNb2Z21XNq4SW1t/CBNRFaBwzZlu0JzvelM5kF5W49+jHbuKO3Fb NbNQVSVohOqpa/jC8gyFYiRQgcXDj0cVc9o7f/jB/JheENxwkQrlHFfrJ PFPb3on3PzhMtuvBcBCaC2zhAaGCTDgeQiBWSl53pm3t+93H2PTU8MeS7 wfasgfZCWPXSa2IVAV6sbmZQQnnl6nj4hnpXX/TBGyqKfTE4fkK3rtNaR eTfpn9lhPeeT4Og64itTyeRkB/+L61O33voMz3Ti0mJtjzY/C0wNCQDIr y6T80T9wYgFwXXbcrONxKvk2UpzI6n6jKtlfiYVAqRvrxGjn5z0hnHM2L g==; X-IronPort-AV: E=Sophos;i="5.97,234,1669100400"; d="scan'208";a="193243046" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Jan 2023 20:38:06 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.87.72) by chn-vm-ex02.mchp-main.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 20 Jan 2023 20:38:05 -0700 Received: from microchip1-OptiPlex-9020.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Fri, 20 Jan 2023 20:37:59 -0700 From: shravan kumar To: , , , , , CC: , , , , , , , , Sakari Ailus Subject: [PATCH RESEND v10 5/5] media: i2c: imx334: update pixel and link frequency Date: Sat, 21 Jan 2023 09:07:13 +0530 Message-ID: <20230121033713.3535351-6-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230121033713.3535351-1-shravan.chippa@microchip.com> References: <20230121033713.3535351-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,URIBL_BLOCKED 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?1755601974383228482?= X-GMAIL-MSGID: =?utf-8?q?1755601974383228482?= 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;