From patchwork Mon Dec 19 06:15:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 34400 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2220643wrn; Sun, 18 Dec 2022 22:18:14 -0800 (PST) X-Google-Smtp-Source: AMrXdXv9Pljc8ErErCgVesDZMKBSpjMM0AGwqMcJ+5dq4yQmAipjAv8RE5ho/cKaFqgR3pyVjb8V X-Received: by 2002:a05:6a20:671d:b0:af:7762:3c29 with SMTP id q29-20020a056a20671d00b000af77623c29mr9676370pzh.10.1671430694495; Sun, 18 Dec 2022 22:18:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671430694; cv=none; d=google.com; s=arc-20160816; b=dmr0coGbPQ1WljRIrdfri/jaFuNScG3y8rMNYIHJLJSZ8hTSZjh0xrXUe3/8Q+caPU eipbst8Tm1FEtEx8x/JG2h9pmEP6ziOoWgAJJk84I4FWYQRXAWHN2WxqP2pVcvBKJX25 tEQoerETseEVR/UzCvX/l8049o42FXrL7sXT8AKf5gvSkEO6wCilqMlcUUuhKRZUthaD wYQS0sdCsAtni7ipqeAvsc+2c66DeH0Q1cGbCf9YGIawbnmz2uAuElY2tZWDMK18ZEiC zfiEwjPxok4lISfZwikiSKoLcOYnIX7hhA4nuLbk2sMx9U1+V4+nKpvGDjy4FqlLBQrg EpJA== 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=ijruODm4GS6dEEnxau3YlvnuGP+6k0+hbcibj8T5L4Y=; b=VbcQoBKkKTGoYs5CKooNkcAk6wyuO1HeSnKALcFsK3KiWLF8qDwnXiD+4KXEEyEweZ 5R57Am1CgNX05hiie89WS/taLzzkcz3x2FyHGq0aKInvKOsEWLexTVW0YCjHOUdymgsU +ngktammEJ9kTBEoNifSWKTPPLUNISJdQIqy/efQWHKP1nWhx3T59e8VENHsPJG0ymmJ Wg6c1quIa4GQRn0PUxHMc9zYHfXqawuVHzmpAPtUxHyesOQ72EZbVtnKIlt9lWzXiYEI I7SZ+HjUo+Gmn79DiyikR8vo7gQTHF4fQtMi8MJvYs4s9BE80uWQVSXvmsN5hZ65st1n YalA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="vdDJ/vKy"; 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 g6-20020a636b06000000b004792389988asi9711920pgc.305.2022.12.18.22.18.01; Sun, 18 Dec 2022 22:18:14 -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="vdDJ/vKy"; 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 S231234AbiLSGPm (ORCPT + 99 others); Mon, 19 Dec 2022 01:15:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230126AbiLSGPh (ORCPT ); Mon, 19 Dec 2022 01:15:37 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 155E7AE53; Sun, 18 Dec 2022 22:15:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1671430536; x=1702966536; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=97m/dDy4gUxTGV0oPsWMYrepMwx9K5cDv4BzNhP8KWE=; b=vdDJ/vKyfS0uqtocE9q3Lma2ajFuUrx0x+GuLcQ0UOI4oTaQD5SGWOK6 Wh8vVBDFnZ+bffv6lVvWoANklBTPTmTeltbgS7l+OfrakDGUuYULfDdOh l9ax9+OIt5Vqc8rDCtq3eau55hI13JKo+riqYiWAv3qxKaojJmRwJoKN/ Hftjq5/bKPhw/R2AtbjnQlUW+afSRZVUuH3hiT3BXB8APWW7ISNRN2qN9 pXatrYXIAHLhxktNRE5+sgLEcvlG4UBKe+vuA+L6MQ5HobTEet4Z6+bha xWinhk7c1TqLfgk45ET8XE+N06yJJ4Be47j89uWMDDtXuajfAuSLcVIc5 g==; X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="204558703" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 18 Dec 2022 23:15:36 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Sun, 18 Dec 2022 23:15:36 -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; Sun, 18 Dec 2022 23:15:33 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" Subject: [PATCH v7 1/5] media: i2c: imx334: modify link frequency as for the configureation Date: Mon, 19 Dec 2022 11:45:22 +0530 Message-ID: <20221219061526.3169369-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221219061526.3169369-1-shravan.chippa@microchip.com> References: <20221219061526.3169369-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?1752622111940008128?= X-GMAIL-MSGID: =?utf-8?q?1752622111940008128?= From: Shravan Chippa Currently imx334 sensor driver is configured for 1782Mbps/lane for 3840x2160@60 resolution with reqired reg mode values but if we run the command "v4l2-ctl --all -d /dev/v4l-subdevX" it is showing incorrect link frequeny, This is because of the incorrect value of IMX334_LINK_FREQ witch is 891000000. it should be 1782000000. In general with the value of 891000000 link frequency it is not possible to configure 3840x2160@60 resolution. Fixes: 9746b11715c3 ("media: i2c: Add imx334 camera sensor driver") Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 7b0a9086447d..acc9f9f15e47 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -49,7 +49,7 @@ #define IMX334_INCLK_RATE 24000000 /* CSI2 HW configuration */ -#define IMX334_LINK_FREQ 891000000 +#define IMX334_LINK_FREQ 1782000000 #define IMX334_NUM_DATA_LANES 4 #define IMX334_REG_MIN 0x00 From patchwork Mon Dec 19 06:15:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 34401 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2220967wrn; Sun, 18 Dec 2022 22:19:22 -0800 (PST) X-Google-Smtp-Source: AA0mqf6OhO2NmEHZ0yzJnYJVRYGgZB5SJiloEROep+8XR/ZKRfsflWN0QrqQZVVcFWwMlqKWK2c1 X-Received: by 2002:aa7:c047:0:b0:46d:6efb:b47a with SMTP id k7-20020aa7c047000000b0046d6efbb47amr33169389edo.41.1671430762598; Sun, 18 Dec 2022 22:19:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671430762; cv=none; d=google.com; s=arc-20160816; b=xYysfqRU8yJG/PrgoOhXYMs2Cbn6VbsuZI0IUm6JLzsGZhTJiWQlYvGgdqTpKRCMer YvYoDPLaWaLh3VeRUoy8giWFGlepR8XpZfYMM6VpHDRZ7H2rs6Ri4nflV0zPEqu2n+qo oP3Lyhje7wFKxlWHV0ZRBodCFg+P9TdVfq5jjHktYriQs0qgGzDJAsLzJ9/NwaecIqBM tt1bLrji2ke7RiDgIFNgXq+VT2FBrSWgeYAGcaZRzdKEpwzM++0BUZYYsGes2yXsbaqR hBsa2v7CDixbIhLMwX5BNa5HI231a/Cqo4WSrmLOBsNzgyW3nshss5i/xrmshnsttpYl ppTg== 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=iclWbWphq1AjeEOfInG5jgMTLhbz0kYJaZ446wyIzMg=; b=MYTyZbzg6+kI3UhRzHhgHTgfF8gBTLdj2bP6XUUOuQO1bYhw+/Q3MKXF+8iFE1T5hZ jykozSPrDQ7XKgVBEYKhgXHwYLNPSyUCE4wgVtqJEBdhKEhRFwy1ZevU0JUrGg0ocZUs AP7/o5MzaIMvk1f+XMSm378sIs3p7//QOp+4M8pFBgj1j/6bjusT/2fIMdiVJ0r90kcQ B2VCl8++/hh0BFTz54jMhr8vR6kTY8lMcsD7tn2yoWiqL83FPxIKluHfK2zhmSdofNTm ZV7J3E5btb9Th2N4zG1gDyncjzcXddW+ZyYyVaSlpw4MVWUNVHtncDP6VZqEoLmXdbve 07Nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=0fec5J4H; 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 x16-20020a05640226d000b0045d189ac612si9618234edd.402.2022.12.18.22.18.56; Sun, 18 Dec 2022 22:19:22 -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=0fec5J4H; 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 S231301AbiLSGPr (ORCPT + 99 others); Mon, 19 Dec 2022 01:15:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231225AbiLSGPl (ORCPT ); Mon, 19 Dec 2022 01:15:41 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DDB1E10D; Sun, 18 Dec 2022 22:15:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1671430542; x=1702966542; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qsJvK2VpBu4Gb2ZvUzYx5074zsrdEggN0+SM/yXO0po=; b=0fec5J4Hmmpe1ku4XyKHGoJ6JuCuQtmRp5K19PzyfYJO8/pi7BNpJLKs F4EiYIHTW4CcSxGV49D7xaGimrVx7aNtnUQZOMOeZiaTwCMeg39cMTZbE J6+1NvImLiZ8HB2gyefyIMHHtU0aBQK/GqonDNMc+EKBo0DUkddL8xzSf saqwHavV+BMEvosHjbWyTVjaaTKv1pApjCiKg/T2aVQTsiEZPcGv6z2ue y+dQoGXnc+3gyj3Oqnyvc0g2ep1vNkyTf423RBQAUrzgwk6m4ni+2U/I9 owXiY+u1HA92Mu0EhQlHJKjgX2Kgv4O998weoy6TtQVvH39kAREz5Ro6w g==; X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="193603883" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 18 Dec 2022 23:15:41 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Sun, 18 Dec 2022 23:15:40 -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; Sun, 18 Dec 2022 23:15:37 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Jacopo Mondi Subject: [PATCH v7 2/5] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Mon, 19 Dec 2022 11:45:23 +0530 Message-ID: <20221219061526.3169369-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221219061526.3169369-1-shravan.chippa@microchip.com> References: <20221219061526.3169369-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?1752622183692463840?= X-GMAIL-MSGID: =?utf-8?q?1752622183692463840?= 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 acc9f9f15e47..a742b60ea3b0 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 Mon Dec 19 06:15:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 34403 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2221295wrn; Sun, 18 Dec 2022 22:20:03 -0800 (PST) X-Google-Smtp-Source: AA0mqf4UZuBR3ge6EwDETaMRiiA1kAEouczX6y5fT4rnXiaHYgoJZRhKfX6X9P/xqcBMduz1BnvS X-Received: by 2002:a05:6402:4493:b0:46d:9471:8d9f with SMTP id er19-20020a056402449300b0046d94718d9fmr34954390edb.5.1671430803540; Sun, 18 Dec 2022 22:20:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671430803; cv=none; d=google.com; s=arc-20160816; b=nKX0xdDD0U8bqBOhh49p0ynMYSt7vqjzCwTTmLU48tqruN07z24lmvZJ+tpdZpFAS6 fxPIuBLMbEHHgqTFKeRig1AHs9996Hv9jiu5iitHK34QVIMTmcj4opDvM/CqMD7xqj+M LkwrAXQZKEkZ9/d0/VHHPXbiyvmbz8x/nEzk/U40U2ykzomCJzus6uzdlWD0X4MloeXI avz7NVkYjRZiCEQ5uj8aURPbkrqKtdcCNGofBASsKiX9cKAiaciYIxl06odjk8OOvnDX KC5wQ9pTvAQ+dUSVxzpuj5rrjQqhPT+9bCLsho1FbAbX2o89uVjmn/v4evt9lOcSj1PJ tmPA== 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=zccu4wkL2s9H29Nk8Skjo4205lqVkdpaZKxEMZjSokU=; b=eXi08FbYyF8O4Vek3Shc4kxboHO+lMskP+qLBVnG7xVUWo20CwsZQXJ8mavnilm7qU HQkLqJ/6QmUyX3Eo35kKp0DzAksL/neLqmlEWPmIFW3NrUqLw6C2mT+wrq8YIFzKP1Ac bxh83byj4T831P4eacGiohj9ROPqCFg+Xo1K0j/rJl1oG536jg9qpRIu3wkrH7oL/opw VRGSG7z8x8fyZBHDP21B86DIfPEXFcDxc66ZwE4jiRiwGYZHEpc1/IxEZC5RDK0EVIva pwCmt15gPtVXaYf/Ym3SMjO+rdJIj3rqdCBBMh24wheQdU1lpb1e9J3qLiAllYA2sUme didw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="u/nt+iAM"; 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 gv11-20020a1709072bcb00b0079dc9dcbbb6si6832571ejc.337.2022.12.18.22.19.40; Sun, 18 Dec 2022 22:20:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="u/nt+iAM"; 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 S231302AbiLSGP6 (ORCPT + 99 others); Mon, 19 Dec 2022 01:15:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231307AbiLSGPy (ORCPT ); Mon, 19 Dec 2022 01:15:54 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB0B6394; Sun, 18 Dec 2022 22:15:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1671430548; x=1702966548; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=J+Pa5idsEsF21ZZmOnUuVtv+9iQnHLggG8V2rnsPm0I=; b=u/nt+iAMCs4U2NqNL1tNn37DOcjsn3Jm/X9ahAGcTes3bfSvdlBFC8Ye fpYXdypB6MRqVVLP7bAmJldDLHMqJ2wjRAPqVXaggDq/S3CSwaAyGsR5s Lc8CySjedHYr4bCIXoemQbjJSkV5j0ky8C2pymU4H0aQJgY/NKsScdEDl lpd7UXt/H2DSlcOUBhxMQgVq/jv2rGl1QQ7/Mue4AoRauycn7fKlAfiBY RhNSIsgXKkLeUkWNNbw1cD0JXZcrIKAzjvsYda/QWWmCGNkEnYre1/THf Fihu5BwRbwnwiZVyWwTQRXHn9UplZCbTxverne9S4xh2sOBDmqqxxUxCJ w==; X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="192277817" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 18 Dec 2022 23:15:47 -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; Sun, 18 Dec 2022 23:15: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; Sun, 18 Dec 2022 23:15:41 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" Subject: [PATCH v7 3/5] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Mon, 19 Dec 2022 11:45:24 +0530 Message-ID: <20221219061526.3169369-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221219061526.3169369-1-shravan.chippa@microchip.com> References: <20221219061526.3169369-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?1752622226524840282?= X-GMAIL-MSGID: =?utf-8?q?1752622226524840282?= 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 a742b60ea3b0..1fa7e3711c3d 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 Mon Dec 19 06:15:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 34402 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2221161wrn; Sun, 18 Dec 2022 22:19:52 -0800 (PST) X-Google-Smtp-Source: AMrXdXtaQtDMgl1wVPVpZLT5VpU6nPK0nFFgoWtkorZJfSIp47G8l3nZxKAFE+abpraV9ft5ddr6 X-Received: by 2002:a05:6a20:bb18:b0:ac:29b4:11bc with SMTP id fc24-20020a056a20bb1800b000ac29b411bcmr9244438pzb.21.1671430792011; Sun, 18 Dec 2022 22:19:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671430791; cv=none; d=google.com; s=arc-20160816; b=ibvtUK9AeitKM/m2noRWTJ2qPQ9vB+xXwVf78RxE3vFVU5uxzur5GiRERov1dkyHxG 729l5sOdpXmteotOmDqs90QzfEgk/sSghWTOrQn0nqrRw/Q0hmmm0f8ffKOhmpeZmqvf T4y7Gs2eQhaprbk3aUm78LZaorlE/LkAZLyKQuMVZ0SayKgky+TTQTgYEdo0OLD7gxMO hXzwZSxBLNEl8A0OrsJqEWWJK8lgdmnCNWqj+IyOdhDFntPHbLDXk/s6o0jvIjncFrOj 1z5GKem+3Mk1lAJFPb85i78d+zwXsH6TJVfBtHxmO4XPDukClK5rgFsM4BrL9RBO+iuh MnjA== 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=kjRx/dcF0LB4IRpFTFu2FAPRxn3kM1nta2iSxeFLIOY=; b=rHHL/2ltykH5vetHa96JfGsDoX5uC2ibYmf9jYpP3YgXeTeVV0CIp6U9ob+NQk2vlr Fj8kpE9ll+1y9uPMWs1mMGfDiLbSO/tHLmIniNaDMlV3vhDv70KZQDS/MlKpQprw7I3j hC5phwyrqV78dFWIQTwhkO11SHmtWkoQuimvEE69Mu/1XWJRosZXTUCzDCw2ay0ktDDa oWXfdJTqyqNW9Kvmbp/1qim2RKbDdcejldTG/9mIzDVGpECfaYWbD3IXZIuz5yl3Y1oF VkRt5yaUXLxnksNmhbqAOf/Mnk17nKbhT253K6LuhE/wKXl5lN1wJdZMP8HNi6/0Krs0 4JIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=oHUNRCMB; 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 g6-20020a636b06000000b004792389988asi9711920pgc.305.2022.12.18.22.19.38; Sun, 18 Dec 2022 22:19:51 -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=oHUNRCMB; 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 S229499AbiLSGQC (ORCPT + 99 others); Mon, 19 Dec 2022 01:16:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231290AbiLSGP4 (ORCPT ); Mon, 19 Dec 2022 01:15:56 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09D79B06; Sun, 18 Dec 2022 22:15:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1671430549; x=1702966549; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hRLncXxER4mzVdZctirrMCHTrL2ToOYRLg1ohgt+wyo=; b=oHUNRCMBplHt2GK01ADNSer6EfBy1prsf9cu2xA21cO3XyPIZ8jSkE+q pnHhng7632hBzGt3JON5UNE0t9pTpvAN6b7Oiv4oqVrpqLlzWWdf9gF9c LIco8iYRcwPkm9QbZnTAcAhwS5dcFsCFNSFO6FliXQVrr0Kn7CVH4ZTbl FtjxugVDPYUPlR0COwYvzJGiUDt15NjYZERjgqBhRkq89YIANmeShXsls deGKeYpsui9Tt6yCRxbQobzs57AaDhU1AlljYJnQT9H5pq0T94FHq1GHM UhM1KxRjs4m2bJEguVpfqiohY9Rw9Y0rR+luXxdsxYn2ulp8mhNLSG1n4 A==; X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="193572177" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 18 Dec 2022 23:15:49 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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; Sun, 18 Dec 2022 23:15:48 -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; Sun, 18 Dec 2022 23:15:45 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Conor Dooley , Prakash Battu Subject: [PATCH v7 4/5] media: i2c: imx334: support lower bandwidth mode Date: Mon, 19 Dec 2022 11:45:25 +0530 Message-ID: <20221219061526.3169369-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221219061526.3169369-1-shravan.chippa@microchip.com> References: <20221219061526.3169369-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?1752622089345750670?= X-GMAIL-MSGID: =?utf-8?q?1752622214210170050?= 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 1fa7e3711c3d..e6c97e5c42d2 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 Mon Dec 19 06:15:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 34404 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2223518wrn; Sun, 18 Dec 2022 22:25:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf4WwX9E/FIUT4XUg8Qgq5wDDNPzzbweI+1cqKU/Ybc65lNmIQL4Aj9sPLN3lggZd+fWtS4k X-Received: by 2002:a17:907:6743:b0:7c1:7c3a:5c65 with SMTP id qm3-20020a170907674300b007c17c3a5c65mr26381031ejc.4.1671431107418; Sun, 18 Dec 2022 22:25:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671431107; cv=none; d=google.com; s=arc-20160816; b=NNJJEgFJMai8OnBHWOzBiIu+xSY6aUSMoDK6FVOyTQgCC+3q4eUSWxlUxp73hBWRKe XJlrg/fBQ3Uo6N7fM3USWk8Bk/pyy3BC0kW9sPnHf76b7zMAglO3wBHXUlQmpf53weQM G0zUOYQsrKjOrvyCnbdgnA5p/SQYJI6pbL7eckhHGs5fBsh5B2WgQqYvOauWGxXeTJaI W4xxqVW6kH1LMtUaJgGlVvjbJsEJR8POztincDhaB1esnTC/n7jtAdLc+BKHY+MzFnkR YrFjDbtVFt6Y+EVHilcKoigv7Jc+jKuqIMxbpY/10fEC+wApdYXjybtMVWUaQlSP0NRV ou6Q== 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=2q9Xcd7aMC2/LQ4uvVnViFtiDawT6vCqs4MhqFJlA0k=; b=mAVx1O3SGj6+mLuva/slYHaIoH9HUm2/QrvN1aa5GdPG+9BEspIynvozRmnRvDtp9E VYW1t37xu8uTRqkh86yoKBCwrxQGlRPjiGVMd0ZRPRBlxG/12zCNzrwG2BvUkVxmca1c OSQm2Ajr3X4CxxKHIWTD5YLfaHczF4BXmAvpXQaCBl7MRBMykmkeJ5qoX5YI+/5iNXSb Qy5kV/lCfD+txC0nng1r6UTgzOXY69RNCURnv18DuwU6+YS52iW7q6fVwgFAn1+G0UXC olRFnhG6TXj+GyKI4BAiqXsz8giMu8eNCVG0JD5NFMhqhOo374DG+xl3n05igO4yPCoQ 4tbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=o5FBQNwu; 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 nc26-20020a1709071c1a00b007c1705dded9si9923240ejc.415.2022.12.18.22.24.43; Sun, 18 Dec 2022 22:25:07 -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=o5FBQNwu; 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 S231453AbiLSGQU (ORCPT + 99 others); Mon, 19 Dec 2022 01:16:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231362AbiLSGP6 (ORCPT ); Mon, 19 Dec 2022 01:15:58 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4387C46; Sun, 18 Dec 2022 22:15:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1671430553; x=1702966553; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zlh+o5nICLTxuKGUQiTPG7BOp4qsCUFdozUMfdt2II8=; b=o5FBQNwu0VPHjzBThp6f4yu6QGyuwz7LgTZeHJ44xNy24Jw9EC8KtgkT ddpdzCPJ6xy5Ui/U7TIlFkFnqPwrLiGCoyWUpv002HnciEPrbVZxcQfzM La+8sunptnIue+Sul9yTXJUnTcKMmEjyBA7QUxgiF5jP6yEWJzdx1FqFF L31E1NCGnnKoRWS+J0FApFRJAXClutsXFtnsrLvbOV4IVgRAktruKpbqJ qj2nupCowREcYU7ZBUr0qFwJuM/jyQecoFbcbsbLJqtATFMvYLSkwdO4k bXpaeCCF/OKyQr29KcaVj3jeuKSelAsPVrclnPmgxRGk6eNQz9KxXzq8b g==; X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="192277833" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 18 Dec 2022 23:15:53 -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; Sun, 18 Dec 2022 23:15:52 -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; Sun, 18 Dec 2022 23:15:49 -0700 From: shravan kumar To: , , CC: , , "shravan kumar" , Sakari Ailus Subject: [PATCH v7 5/5] media: i2c: imx334: update pixel and link frequency Date: Mon, 19 Dec 2022 11:45:26 +0530 Message-ID: <20221219061526.3169369-6-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221219061526.3169369-1-shravan.chippa@microchip.com> References: <20221219061526.3169369-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?1752622544585034202?= X-GMAIL-MSGID: =?utf-8?q?1752622544585034202?= 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 e6c97e5c42d2..4335c73f4d5c 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -50,6 +50,7 @@ /* CSI2 HW configuration */ #define IMX334_LINK_FREQ 1782000000 +#define IMX334_LINK_FREQ_891M 891000000 #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_891M, }; /* 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;