From patchwork Wed Feb 8 05:09: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: 54180 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3262944wrn; Tue, 7 Feb 2023 21:13:30 -0800 (PST) X-Google-Smtp-Source: AK7set9ZKlU2G96inPIb89lc5jxtbTYJcc3o4tBfAoe459wxte9sFZrRiYRHDxmeh6w/CZ95v+5B X-Received: by 2002:a17:906:2984:b0:88c:a2cb:d06d with SMTP id x4-20020a170906298400b0088ca2cbd06dmr5633819eje.31.1675833210052; Tue, 07 Feb 2023 21:13:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675833210; cv=none; d=google.com; s=arc-20160816; b=M+hYEyKHDlwnqe32DzkkxjVqfksLhIjnOa4VZYXzP2CWU/YMLjLSWoRcwVTcGJ0qdP NHW6k2PFMamIie+Weadun5x4O/dZvSpOirTZZdoKVaCQvv6EaJqu780RcktOstHtMoWI lGZ5ibBSE4xblsxs5CwRBSveTvz13yg+lpEH+pwxqOW/JfqYcZqCeV2/jYrhXNH4ABf8 9x/di+mkwjFnAkNOKQc7omjOh87CDthHM4NrWo7KK58JhoF/SARBMmykdQ8Xo/iujuLe FZrr6ctVmuJL/VbsMrFsOz/O4ye+DWq7HjegddnVJBvt4X2T9pjEIQYEe6XDOaYiE27r SHdA== 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=VTovPGQfUynB2i76UWjZLYcp5pEtGZ8Nb3AmeG1tKAVGJpalDP8KGDJhWIk/EkxtMk uTXgiQ18reRm/y+6hjf1EHVDU+CvH5P2C6eWrilgzFSY9b2p81ebThybPhI0mRmH24dX wSma1o6rtD6FxJCxuU1Bb0/MrhVDdFaxkxvaTmNcfSKg6fU48mzlUuDHFuSURwFykSPj v/BkGL6T0FX/1jTDdnwNglOe2NKnElv0J0l5m4B/rmcJv0ELhHT3L5pRJAWORsYfPqSL 401th+5nkuZHnDwdheFCCBaPAB5kYh9CMfHp98r/CyW56YlXnR2RzhskgjnEMg0yNmPI NpKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=zfrvZQgv; 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 uk7-20020a170907ca0700b00896f611f54fsi13790916ejc.93.2023.02.07.21.13.07; Tue, 07 Feb 2023 21:13:30 -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=zfrvZQgv; 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 S230392AbjBHFJh (ORCPT + 99 others); Wed, 8 Feb 2023 00:09:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230391AbjBHFJe (ORCPT ); Wed, 8 Feb 2023 00:09:34 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 203B642DDE; Tue, 7 Feb 2023 21:09:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1675832973; x=1707368973; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IC4Krh/tkpVGXGBoGbbhsCsG+9lDFkR31NuApekcLbg=; b=zfrvZQgvcr8FLAkwULWoDPLV8pPAdg5rQzMuyQXkM9RcXIY2M2ZF8km1 e/pIqrlTUzTkbsKlJNmEauHPqa0ZdXTX+cPjSO80QxpjchWM3kG07SbLo QykhV3a/rSNukDn2HoETU1kT51hL0Zt15HhnMLP2YO+MO/qDQqRXgirYB Vxs75y5VUbJDZp0UUjvnLNA3obLFI06oEuJmWC3HRYopJ3VNGaD6IqRiM O01auERdQNdc/FueZwV1NcggIcjTwjC2jCnClgus/vmcKVNejYbqYnP0q 1UFpdjLWvJxDCgHHNcpoQg+iPmifoQsr8Gx2yrSStToXw1xPoeFNbdIcU Q==; X-IronPort-AV: E=Sophos;i="5.97,280,1669100400"; d="scan'208";a="199434362" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Feb 2023 22:09:32 -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; Tue, 7 Feb 2023 22:09:31 -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; Tue, 7 Feb 2023 22:09:26 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Jacopo Mondi , Jacopo Mondi Subject: [PATCH v11 1/5] media: i2c: imx334: replace __v4l2_ctrl_s_ctrl to __v4l2_ctrl_modify_range Date: Wed, 8 Feb 2023 10:39:11 +0530 Message-ID: <20230208050915.1958183-2-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230208050915.1958183-1-shravan.chippa@microchip.com> References: <20230208050915.1958183-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?1757238484234444093?= X-GMAIL-MSGID: =?utf-8?q?1757238484234444093?= From: Shravan Chippa For evry mode we will get new set of values for hbalnk so use __v4l2_ctrl_modify_range() to support multi modes for hblank. The hblank value is readonly in the driver. because of this the function returns error if we try to change. so added dumy return case in imx334_set_ctrl function. Reviewed-by: Jacopo Mondi Suggested-by: Jacopo Mondi Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 7b0a9086447d..ebacba3059b3 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -382,7 +382,8 @@ static int imx334_update_controls(struct imx334 *imx334, if (ret) return ret; - ret = __v4l2_ctrl_s_ctrl(imx334->hblank_ctrl, mode->hblank); + ret = __v4l2_ctrl_modify_range(imx334->hblank_ctrl, mode->hblank, + mode->hblank, 1, mode->hblank); if (ret) return ret; @@ -480,6 +481,9 @@ static int imx334_set_ctrl(struct v4l2_ctrl *ctrl) pm_runtime_put(imx334->dev); + break; + case V4L2_CID_HBLANK: + ret = 0; break; default: dev_err(imx334->dev, "Invalid control %d", ctrl->id); From patchwork Wed Feb 8 05:09: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: 54184 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3263746wrn; Tue, 7 Feb 2023 21:15:54 -0800 (PST) X-Google-Smtp-Source: AK7set/9JOWZr+HfPuxUU3Yg1CjImI2CzbwIsU2dGZOC5W1ZMk7qsBH88w6gygYQ62HLyT+zRkYX X-Received: by 2002:a17:90b:4acc:b0:231:113f:df76 with SMTP id mh12-20020a17090b4acc00b00231113fdf76mr1301314pjb.43.1675833354526; Tue, 07 Feb 2023 21:15:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675833354; cv=none; d=google.com; s=arc-20160816; b=lq72IFxbI24R3fLAj0pD9e3fcx6htCRxbiFO+zg4uo25r+M1lkMSc/7rMgU1nMjSNK tX6bJRtwB8YsUDgenEs+/nezxyp93HeFI2cbUvKb53Luua+T6m3jomrMYQYaWYb9pnMn w2FglS/c/CJ8HqOrM+Zb3xYm8lygrzjpsHE16AMtv3cUI1yDNUcr2XMAAlV9tL8JW3fu 1Ktdt2CGoRdKShWv8Y2irCBpffzT1a8xdMkBUjkIseC6o/PclDMGXH2wTePHWa4Ca1HZ l3iZSUWJyTYZYBU3P+E0T3n3VfNS65MJRRZcCw+e7A8bZa/WzmNN+j7nerdJ2iT3CDmF CBnw== 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=VDLWz1vT1/jBpBHH1N/aEBtAumVq7cjDtkIfq5HjD02yhhTmWZmsl48fWplQEUZLqa BKL+X1EeaSQpA41U87Lpe/lYrlgUGL99aObjFfpb43zLpTy0KE2FJOg1b0HgW3o/Z8rF O653vWchnwSw8MQC4agbjhQuh4fbXKHbVVJeZPz1KF0Ay0cYmpHaq+CqGgnNgqBG567T X+gSTS2CH9tQPhanV+28OFyb9ka4i/7Uup3bDH3TpxIJuu3UGQnve/RWajqy+7pZPJoS kLKZzzbEW+ZbX/JFHSCrsJMWlreSNAcXoHdYKtbdcZYCcp+h5sZ62RuYa0bbSf2BNnft HY8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=zOo5Y7Ae; 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 w185-20020a6382c2000000b004e14d7638c0si17553837pgd.44.2023.02.07.21.15.41; Tue, 07 Feb 2023 21:15:54 -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=zOo5Y7Ae; 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 S230467AbjBHFKY (ORCPT + 99 others); Wed, 8 Feb 2023 00:10:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230495AbjBHFKO (ORCPT ); Wed, 8 Feb 2023 00:10:14 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76F9E442C4; Tue, 7 Feb 2023 21:09: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=1675832999; x=1707368999; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+szvL+ndfqTkBWLkYZZHX8t/alFfcilUJhnbtl8bXGo=; b=zOo5Y7AeV1Dyz0wj2O+l+l8jRlRpJXp0pjY/cWN+RKxrRVj4HbGOLT13 90lUX8moIoWDLZ0smc6iVWcuXyF94mqjpkB5+tw3m1U8iXtDbZdQsrPmQ Sd0Xy7OINWJ36sfuHlMDSiC2FztJilv1qePHfpIu1QrOUNKCjOnnnOhAt m8S18Bw5JLgGWYVkjpF7pHvkgZa2CSZXNFVnDk3gboi/HyaG4GdNGoOs+ MC4DhQeByl8Cz6k6TwZYfa9bdPRn3FJ/o0O/+G5MylPphTPXniiPCswir Oyh76TDrAlt3VOC1+R7HvH9zSbnVvcWJXFPE2bn+GXY4YYRre/MNF2pGX Q==; X-IronPort-AV: E=Sophos;i="5.97,280,1669100400"; d="scan'208";a="136078388" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Feb 2023 22:09:48 -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; Tue, 7 Feb 2023 22:09: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; Tue, 7 Feb 2023 22:09:33 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Jacopo Mondi Subject: [PATCH v11 2/5] media: i2c: imx334: add missing reset values for mode 3840x2160_regs[] Date: Wed, 8 Feb 2023 10:39:12 +0530 Message-ID: <20230208050915.1958183-3-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230208050915.1958183-1-shravan.chippa@microchip.com> References: <20230208050915.1958183-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?1757238635574150718?= X-GMAIL-MSGID: =?utf-8?q?1757238635574150718?= From: Shravan Chippa There are some missing reset reg_mode values for the 3840x2160@60 resolution. The camera sensor still works in 3840x2160@60 resolution mode because of the register reset values. This is an issue when we change the modes dynamically. As an example, when we change the mode from 1920x1080@30 resolution to 3840x2160@60 resoultion then the mode values will be written to the registers from the array mode_3840x2160_regs[] which gives the wrong output which is incorrect resolution. So add the missing reset values to the mode_3840x2160_regs[]. Reviewed-by: Jacopo Mondi Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index ebacba3059b3..40ece08f20f5 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -166,6 +166,7 @@ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3288, 0x21}, {0x328a, 0x02}, {0x302c, 0x3c}, + {0x302d, 0x00}, {0x302e, 0x00}, {0x302f, 0x0f}, {0x3076, 0x70}, @@ -240,7 +241,26 @@ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3794, 0x7a}, {0x3796, 0xa1}, {0x3e04, 0x0e}, + {0x319e, 0x00}, {0x3a00, 0x01}, + {0x3a18, 0xbf}, + {0x3a19, 0x00}, + {0x3a1a, 0x67}, + {0x3a1b, 0x00}, + {0x3a1c, 0x6f}, + {0x3a1d, 0x00}, + {0x3a1e, 0xd7}, + {0x3a1f, 0x01}, + {0x3a20, 0x6f}, + {0x3a21, 0x00}, + {0x3a22, 0xcf}, + {0x3a23, 0x00}, + {0x3a24, 0x6f}, + {0x3a25, 0x00}, + {0x3a26, 0xb7}, + {0x3a27, 0x00}, + {0x3a28, 0x5f}, + {0x3a29, 0x00}, }; /* Supported sensor mode configurations */ From patchwork Wed Feb 8 05:09: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: 54181 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3263566wrn; Tue, 7 Feb 2023 21:15:21 -0800 (PST) X-Google-Smtp-Source: AK7set+AlBJWcEkNY8u1easceoO6y2XilKzlqbPSNyaZDrGp0G4bLY3oZurIYEG8SgQ2V0xrJWfw X-Received: by 2002:a17:906:8e97:b0:8aa:ead:16fa with SMTP id ru23-20020a1709068e9700b008aa0ead16famr5085584ejc.76.1675833321297; Tue, 07 Feb 2023 21:15:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675833321; cv=none; d=google.com; s=arc-20160816; b=uajudf3B+ajzA03hlTVbnd3QPrUygXoxZT7BPSjuwq+maafLHzlblM8d4+Br7HzSXG uZ+MSNrQd5DXNyCs8ZJi/5aCA2uOyhMexrhBrBqRqEPLgZSzFX92aDvbsfkrQ5n1D0d/ 4zfCwXfZCbYjXzoRjJo18CPy+rkflms6wzGNpGjDJfDAwocFAadil21rp0y8MDOgn0Cj r/7jU/V7xZSNcVGbZyXHcjq1JDMKKYMjf8W9EKVGyl/38WyytgcaxpgiW660xwhYeQFc ivlT6MVFIRD5Vg/x4PqfDCoSo/UjB0+bAYEh2tqJ830ClhsSVGkEE3yf383AJPvMMK0n x/Hw== 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=Nufo4P4mGL10WwXwJuqsGHJuPhDNCE2pMnjf0bZWXHtPyNtPDtBHZJc3W//I3iD4Qb XuckoNHKcSuZetUWdI9u3Z+mb0p73w3v+pBQAcb2PgMRzLnLnxn7OAKP5G0c9ZYUpyan QF454ZAN+3VUzYc4lBvgOWIbCToZmiTGDDEwCoAN7fEfQXt0l7o6HktVPqFIHuJls7m0 tuoccGpIJQAnRExigfMFII2ImiQ6RiKWBDe4AspKKADiTLAExdfHnlXo9Xo1i1PfD7S/ 6djl7iak7JgWYRFQyybQTzswSvYLL26mo7Z5XbhiBWRzLM3CAc3uWuqVmou0j38/woPD uD8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="Z/eI/WGX"; 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 h29-20020a0564020e9d00b004a20fa1a03dsi18196687eda.178.2023.02.07.21.14.58; Tue, 07 Feb 2023 21:15: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="Z/eI/WGX"; 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 S229797AbjBHFJ7 (ORCPT + 99 others); Wed, 8 Feb 2023 00:09:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230412AbjBHFJw (ORCPT ); Wed, 8 Feb 2023 00:09:52 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C3F0244A4; Tue, 7 Feb 2023 21:09: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=1675832987; x=1707368987; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qAjxmw0PJDYk+qdYQdozfLQCUcoTMpN9myt4W0vReqA=; b=Z/eI/WGXaG124qquy7emec3SAFMuFkFqnNoKv3co98Y2dmAaHS0zigHf wVEW6P4tGLc8lceqSU1IKZdQbDZcTMMy1ZgAxlFNV/ojkhLH2j/etCLj5 BGp96+mMdZO8XzTRmTKq82EueWXXbb+bxTLjzfdcfiKETKzHAOZzfQmaK 7DiNuGSXXC7bLKclNNQUpm3sDkR+zEPkVfbO20M8xcCicKRxkMlrz6hML 4UslBW2Yt8dRkWzOLt+YoYNuLDUj1nWbu9D8N5yC8ktP4Kq0BEDxN5oHb Sy2teaQGMJPlvnNmZukjpQS4XnEmKuWncZnBT/L+EvWMjdKWucicgZuWx g==; X-IronPort-AV: E=Sophos;i="5.97,280,1669100400"; d="scan'208";a="195866277" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Feb 2023 22:09:46 -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; Tue, 7 Feb 2023 22:09:45 -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; Tue, 7 Feb 2023 22:09:39 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Jacopo Mondi , Conor Dooley , Prakash Battu Subject: [PATCH v11 3/5] media: i2c: imx334: support lower bandwidth mode Date: Wed, 8 Feb 2023 10:39:13 +0530 Message-ID: <20230208050915.1958183-4-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230208050915.1958183-1-shravan.chippa@microchip.com> References: <20230208050915.1958183-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?1757238473647314563?= X-GMAIL-MSGID: =?utf-8?q?1757238600674547104?= From: Shravan Chippa Some platforms may not be capable of supporting the bandwidth required for 12 bit or 3840x2160@60 resolutions. Add support for dynamically selecting 10 bit and 1920x1080@30 resolutions while leaving the existing configuration as default. Reviewed-by: Jacopo Mondi CC: Conor Dooley Signed-off-by: Prakash Battu Signed-off-by: Shravan Chippa --- drivers/media/i2c/imx334.c | 296 +++++++++++++++++++++++++++++++++---- 1 file changed, 269 insertions(+), 27 deletions(-) diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 40ece08f20f5..309c706114d2 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -79,7 +79,6 @@ struct imx334_reg_list { * struct imx334_mode - imx334 sensor mode structure * @width: Frame width * @height: Frame height - * @code: Format code * @hblank: Horizontal blanking in lines * @vblank: Vertical blanking in lines * @vblank_min: Minimal vertical blanking in lines @@ -91,7 +90,6 @@ struct imx334_reg_list { struct imx334_mode { u32 width; u32 height; - u32 code; u32 hblank; u32 vblank; u32 vblank_min; @@ -119,6 +117,7 @@ struct imx334_mode { * @vblank: Vertical blanking in lines * @cur_mode: Pointer to current selected sensor mode * @mutex: Mutex for serializing sensor controls + * @cur_code: current selected format code * @streaming: Flag indicating streaming state */ struct imx334 { @@ -140,6 +139,7 @@ struct imx334 { u32 vblank; const struct imx334_mode *cur_mode; struct mutex mutex; + u32 cur_code; bool streaming; }; @@ -147,7 +147,170 @@ static const s64 link_freq[] = { IMX334_LINK_FREQ, }; -/* Sensor mode registers */ +/* Sensor mode registers for 1920x1080@30fps */ +static const struct imx334_reg mode_1920x1080_regs[] = { + {0x3000, 0x01}, + {0x3018, 0x04}, + {0x3030, 0xca}, + {0x3031, 0x08}, + {0x3032, 0x00}, + {0x3034, 0x4c}, + {0x3035, 0x04}, + {0x302c, 0xf0}, + {0x302d, 0x03}, + {0x302e, 0x80}, + {0x302f, 0x07}, + {0x3074, 0xcc}, + {0x3075, 0x02}, + {0x308e, 0xcd}, + {0x308f, 0x02}, + {0x3076, 0x38}, + {0x3077, 0x04}, + {0x3090, 0x38}, + {0x3091, 0x04}, + {0x3308, 0x38}, + {0x3309, 0x04}, + {0x30C6, 0x00}, + {0x30c7, 0x00}, + {0x30ce, 0x00}, + {0x30cf, 0x00}, + {0x30d8, 0x18}, + {0x30d9, 0x0a}, + {0x304c, 0x00}, + {0x304e, 0x00}, + {0x304f, 0x00}, + {0x3050, 0x00}, + {0x30b6, 0x00}, + {0x30b7, 0x00}, + {0x3116, 0x08}, + {0x3117, 0x00}, + {0x31a0, 0x20}, + {0x31a1, 0x0f}, + {0x300c, 0x3b}, + {0x300d, 0x29}, + {0x314c, 0x29}, + {0x314d, 0x01}, + {0x315a, 0x06}, + {0x3168, 0xa0}, + {0x316a, 0x7e}, + {0x319e, 0x02}, + {0x3199, 0x00}, + {0x319d, 0x00}, + {0x31dd, 0x03}, + {0x3300, 0x00}, + {0x341c, 0xff}, + {0x341d, 0x01}, + {0x3a01, 0x03}, + {0x3a18, 0x7f}, + {0x3a19, 0x00}, + {0x3a1a, 0x37}, + {0x3a1b, 0x00}, + {0x3a1c, 0x37}, + {0x3a1d, 0x00}, + {0x3a1e, 0xf7}, + {0x3a1f, 0x00}, + {0x3a20, 0x3f}, + {0x3a21, 0x00}, + {0x3a20, 0x6f}, + {0x3a21, 0x00}, + {0x3a20, 0x3f}, + {0x3a21, 0x00}, + {0x3a20, 0x5f}, + {0x3a21, 0x00}, + {0x3a20, 0x2f}, + {0x3a21, 0x00}, + {0x3078, 0x02}, + {0x3079, 0x00}, + {0x307a, 0x00}, + {0x307b, 0x00}, + {0x3080, 0x02}, + {0x3081, 0x00}, + {0x3082, 0x00}, + {0x3083, 0x00}, + {0x3088, 0x02}, + {0x3094, 0x00}, + {0x3095, 0x00}, + {0x3096, 0x00}, + {0x309b, 0x02}, + {0x309c, 0x00}, + {0x309d, 0x00}, + {0x309e, 0x00}, + {0x30a4, 0x00}, + {0x30a5, 0x00}, + {0x3288, 0x21}, + {0x328a, 0x02}, + {0x3414, 0x05}, + {0x3416, 0x18}, + {0x35Ac, 0x0e}, + {0x3648, 0x01}, + {0x364a, 0x04}, + {0x364c, 0x04}, + {0x3678, 0x01}, + {0x367c, 0x31}, + {0x367e, 0x31}, + {0x3708, 0x02}, + {0x3714, 0x01}, + {0x3715, 0x02}, + {0x3716, 0x02}, + {0x3717, 0x02}, + {0x371c, 0x3d}, + {0x371d, 0x3f}, + {0x372c, 0x00}, + {0x372d, 0x00}, + {0x372e, 0x46}, + {0x372f, 0x00}, + {0x3730, 0x89}, + {0x3731, 0x00}, + {0x3732, 0x08}, + {0x3733, 0x01}, + {0x3734, 0xfe}, + {0x3735, 0x05}, + {0x375d, 0x00}, + {0x375e, 0x00}, + {0x375f, 0x61}, + {0x3760, 0x06}, + {0x3768, 0x1b}, + {0x3769, 0x1b}, + {0x376a, 0x1a}, + {0x376b, 0x19}, + {0x376c, 0x18}, + {0x376d, 0x14}, + {0x376e, 0x0f}, + {0x3776, 0x00}, + {0x3777, 0x00}, + {0x3778, 0x46}, + {0x3779, 0x00}, + {0x377a, 0x08}, + {0x377b, 0x01}, + {0x377c, 0x45}, + {0x377d, 0x01}, + {0x377e, 0x23}, + {0x377f, 0x02}, + {0x3780, 0xd9}, + {0x3781, 0x03}, + {0x3782, 0xf5}, + {0x3783, 0x06}, + {0x3784, 0xa5}, + {0x3788, 0x0f}, + {0x378a, 0xd9}, + {0x378b, 0x03}, + {0x378c, 0xeb}, + {0x378d, 0x05}, + {0x378e, 0x87}, + {0x378f, 0x06}, + {0x3790, 0xf5}, + {0x3792, 0x43}, + {0x3794, 0x7a}, + {0x3796, 0xa1}, + {0x37b0, 0x37}, + {0x3e04, 0x0e}, + {0x30e8, 0x50}, + {0x30e9, 0x00}, + {0x3e04, 0x0e}, + {0x3002, 0x00}, +}; + +/* Sensor mode registers for 3840x2160@30fps */ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3000, 0x01}, {0x3002, 0x00}, @@ -263,20 +426,53 @@ static const struct imx334_reg mode_3840x2160_regs[] = { {0x3a29, 0x00}, }; +static const struct imx334_reg raw10_framefmt_regs[] = { + {0x3050, 0x00}, + {0x319d, 0x00}, + {0x341c, 0xff}, + {0x341d, 0x01}, +}; + +static const struct imx334_reg raw12_framefmt_regs[] = { + {0x3050, 0x01}, + {0x319d, 0x01}, + {0x341c, 0x47}, + {0x341d, 0x00}, +}; + +static const u32 imx334_mbus_codes[] = { + MEDIA_BUS_FMT_SRGGB12_1X12, + MEDIA_BUS_FMT_SRGGB10_1X10, +}; + /* Supported sensor mode configurations */ -static const struct imx334_mode supported_mode = { - .width = 3840, - .height = 2160, - .hblank = 560, - .vblank = 2340, - .vblank_min = 90, - .vblank_max = 132840, - .pclk = 594000000, - .link_freq_idx = 0, - .code = MEDIA_BUS_FMT_SRGGB12_1X12, - .reg_list = { - .num_of_regs = ARRAY_SIZE(mode_3840x2160_regs), - .regs = mode_3840x2160_regs, +static const struct imx334_mode supported_modes[] = { + { + .width = 3840, + .height = 2160, + .hblank = 560, + .vblank = 2340, + .vblank_min = 90, + .vblank_max = 132840, + .pclk = 594000000, + .link_freq_idx = 0, + .reg_list = { + .num_of_regs = ARRAY_SIZE(mode_3840x2160_regs), + .regs = mode_3840x2160_regs, + }, + }, { + .width = 1920, + .height = 1080, + .hblank = 2480, + .vblank = 1170, + .vblank_min = 45, + .vblank_max = 132840, + .pclk = 297000000, + .link_freq_idx = 0, + .reg_list = { + .num_of_regs = ARRAY_SIZE(mode_1920x1080_regs), + .regs = mode_1920x1080_regs, + }, }, }; @@ -518,6 +714,18 @@ static const struct v4l2_ctrl_ops imx334_ctrl_ops = { .s_ctrl = imx334_set_ctrl, }; +static int imx334_get_format_code(struct imx334 *imx334, u32 code) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(imx334_mbus_codes); i++) { + if (imx334_mbus_codes[i] == code) + return imx334_mbus_codes[i]; + } + + return imx334_mbus_codes[0]; +} + /** * imx334_enum_mbus_code() - Enumerate V4L2 sub-device mbus codes * @sd: pointer to imx334 V4L2 sub-device structure @@ -530,10 +738,10 @@ static int imx334_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) { - if (code->index > 0) + if (code->index >= ARRAY_SIZE(imx334_mbus_codes)) return -EINVAL; - code->code = supported_mode.code; + code->code = imx334_mbus_codes[code->index]; return 0; } @@ -550,15 +758,20 @@ static int imx334_enum_frame_size(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_frame_size_enum *fsize) { - if (fsize->index > 0) + struct imx334 *imx334 = to_imx334(sd); + u32 code; + + if (fsize->index >= ARRAY_SIZE(supported_modes)) return -EINVAL; - if (fsize->code != supported_mode.code) + code = imx334_get_format_code(imx334, fsize->code); + + if (fsize->code != code) return -EINVAL; - fsize->min_width = supported_mode.width; + fsize->min_width = supported_modes[fsize->index].width; fsize->max_width = fsize->min_width; - fsize->min_height = supported_mode.height; + fsize->min_height = supported_modes[fsize->index].height; fsize->max_height = fsize->min_height; return 0; @@ -577,7 +790,6 @@ static void imx334_fill_pad_format(struct imx334 *imx334, { fmt->format.width = mode->width; fmt->format.height = mode->height; - fmt->format.code = mode->code; fmt->format.field = V4L2_FIELD_NONE; fmt->format.colorspace = V4L2_COLORSPACE_RAW; fmt->format.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; @@ -607,6 +819,7 @@ static int imx334_get_pad_format(struct v4l2_subdev *sd, framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); fmt->format = *framefmt; } else { + fmt->format.code = imx334->cur_code; imx334_fill_pad_format(imx334, imx334->cur_mode, fmt); } @@ -633,15 +846,21 @@ static int imx334_set_pad_format(struct v4l2_subdev *sd, mutex_lock(&imx334->mutex); - mode = &supported_mode; + mode = v4l2_find_nearest_size(supported_modes, + ARRAY_SIZE(supported_modes), + width, height, + fmt->format.width, fmt->format.height); + imx334_fill_pad_format(imx334, mode, fmt); + fmt->format.code = imx334_get_format_code(imx334, fmt->format.code); if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { struct v4l2_mbus_framefmt *framefmt; framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); *framefmt = fmt->format; - } else { + } else if (imx334->cur_mode != mode || imx334->cur_code != fmt->format.code) { + imx334->cur_code = fmt->format.code; ret = imx334_update_controls(imx334, mode); if (!ret) imx334->cur_mode = mode; @@ -666,11 +885,26 @@ static int imx334_init_pad_cfg(struct v4l2_subdev *sd, struct v4l2_subdev_format fmt = { 0 }; fmt.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY : V4L2_SUBDEV_FORMAT_ACTIVE; - imx334_fill_pad_format(imx334, &supported_mode, &fmt); + imx334_fill_pad_format(imx334, &supported_modes[0], &fmt); return imx334_set_pad_format(sd, sd_state, &fmt); } +static int imx334_set_framefmt(struct imx334 *imx334) +{ + switch (imx334->cur_code) { + case MEDIA_BUS_FMT_SRGGB10_1X10: + return imx334_write_regs(imx334, raw10_framefmt_regs, + ARRAY_SIZE(raw10_framefmt_regs)); + + case MEDIA_BUS_FMT_SRGGB12_1X12: + return imx334_write_regs(imx334, raw12_framefmt_regs, + ARRAY_SIZE(raw12_framefmt_regs)); + } + + return -EINVAL; +} + /** * imx334_start_streaming() - Start sensor stream * @imx334: pointer to imx334 device @@ -691,6 +925,13 @@ static int imx334_start_streaming(struct imx334 *imx334) return ret; } + ret = imx334_set_framefmt(imx334); + if (ret) { + dev_err(imx334->dev, "%s failed to set frame format: %d\n", + __func__, ret); + return ret; + } + /* Setup handler will write actual exposure and gain */ ret = __v4l2_ctrl_handler_setup(imx334->sd.ctrl_handler); if (ret) { @@ -1061,7 +1302,8 @@ static int imx334_probe(struct i2c_client *client) } /* Set default mode to max resolution */ - imx334->cur_mode = &supported_mode; + imx334->cur_mode = &supported_modes[0]; + imx334->cur_code = imx334_mbus_codes[0]; imx334->vblank = imx334->cur_mode->vblank; ret = imx334_init_controls(imx334); From patchwork Wed Feb 8 05:09:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 54182 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3263635wrn; Tue, 7 Feb 2023 21:15:34 -0800 (PST) X-Google-Smtp-Source: AK7set9FW85y5aI/17lvj44IPG4SysI67nDFcnzPzlirNO1KwPJ5fW07u4DzGzjh9+dI05wAqQCY X-Received: by 2002:aa7:9d89:0:b0:5a8:44b1:7399 with SMTP id f9-20020aa79d89000000b005a844b17399mr788679pfq.15.1675833334157; Tue, 07 Feb 2023 21:15:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675833334; cv=none; d=google.com; s=arc-20160816; b=i697Eg090T2hKOf7n3E1W6gklJqCqz4BqN415QiZ1jbtAJU+H7znKKHf2tieUzbFnR 8IkX+wgGZc668DSm1dKCt1Mm8JFhw3JrG8QdWBP1B/dN/WMqB+ilPlHi4UAeTh6P/78v YYdjWsBaUMyQ7YI3HIHK1JHKauhuPigNx03R+5J6rWq1XmbG53Mqo+9w+hUEwip8oF9H dY32l3GNSeX4Q/UtwQv/BjauTloiOpgy/IjhNxpvzXGEFPVK9hhvQmu4uW1KAOxjjJgo C6b97ZmgxA3O4rgGYAimMAKI1EBoc648JhK/JV5TEzQc5dCbyhoWhDJsLPh+KmNGVBvn s2Jw== 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=kpaOAlzwnAMNGkNoh4m5CPzao3YqZHHpTHeoGxteqiOYj3oKACzalFsgFF+Zrs8U3C D/834OZbrM0nMQWu1dgvFBkADqt/uJqZzcxj3xk/9iXO5ymHKbFPiHnSbRRxdwANSYyS mRHGvW0gXLJJJU3sQHk3bYlVJvjjsjEgYm+zn/B8OjdkzvVX60hV7N6uPmpYVVWbwpqZ heyVAFjRiMvlSCKlI8+OL+g/2X8SUF21cv/P53ZcTxA9ACAej3+JMXkEWPGYdiizZhIr Za3izscyeFlArM4Qga/R5IvPlTXLdmVMVWN0HIdEA6IB+2bs0xr7JrYw9GdFOtSvJMBa wDBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=hXsNUL5V; 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 68-20020a621447000000b005659a66d652si17294165pfu.229.2023.02.07.21.15.19; Tue, 07 Feb 2023 21:15:34 -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=hXsNUL5V; 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 S230451AbjBHFKR (ORCPT + 99 others); Wed, 8 Feb 2023 00:10:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230448AbjBHFKC (ORCPT ); Wed, 8 Feb 2023 00:10:02 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 838B442BE0; Tue, 7 Feb 2023 21:09: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=1675832994; x=1707368994; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bvzL8yBXjkbs6PX1KeNsY7o8KthoIvKiuovYJNPFyVI=; b=hXsNUL5Vm55hJuXF6/PNwIbjku+kjcUJbszp+zXLYYVAVsK2d0A4WFpt Q6eyRHEGGaIRDvu7jdK6sLjNBwDwzTC2B0QPFiFW/7BLWsgbuB5d0RPPV WC+KxPM8M5uglgf/QGGu9L8dzs+3YhIDWHSmnANPaO8X/r8gTlwffJ+NW I/2DSyVKKibOdNoG5kYbSAILYYY17M4y2gdoxOyCMFQ3VPPAXiMHrvhhP IqPtzKFEKTSI0WkTpY//lvP7j3BCGaoYulPXAeObsboF8avlNiSEqzWnl 6gUyNUOlJrGY0ftpOjjwiR8mJFbillgfgEYsGXiGsoprBw7W4O8qrfulq A==; X-IronPort-AV: E=Sophos;i="5.97,280,1669100400"; d="scan'208";a="200025004" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Feb 2023 22:09: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; Tue, 7 Feb 2023 22:09:51 -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; Tue, 7 Feb 2023 22:09:47 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Sakari Ailus Subject: [PATCH v11 4/5] dt-bindings: media: i2c: imx334 add new link_freq Date: Wed, 8 Feb 2023 10:39:14 +0530 Message-ID: <20230208050915.1958183-5-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230208050915.1958183-1-shravan.chippa@microchip.com> References: <20230208050915.1958183-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?1757238614029646563?= X-GMAIL-MSGID: =?utf-8?q?1757238614029646563?= From: Shravan Chippa Add new supported link frequency in dt example. Suggested-by: Sakari Ailus Signed-off-by: Shravan Chippa Acked-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml index f5055b9db693..09533496b20c 100644 --- a/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml @@ -82,7 +82,7 @@ examples: imx334: endpoint { remote-endpoint = <&cam>; data-lanes = <1 2 3 4>; - link-frequencies = /bits/ 64 <891000000>; + link-frequencies = /bits/ 64 <891000000 445500000>; }; }; }; From patchwork Wed Feb 8 05:09:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: shravan chippa X-Patchwork-Id: 54183 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3263671wrn; Tue, 7 Feb 2023 21:15:40 -0800 (PST) X-Google-Smtp-Source: AK7set+OOIzIS58kRnEL23VGqk6Mudxlf/ZmbUJVWlcBmFPqqOFuRYDsTAb/lu41OYbGy+gQZ44D X-Received: by 2002:a05:6a21:78a9:b0:bc:e64b:e79b with SMTP id bf41-20020a056a2178a900b000bce64be79bmr8151889pzc.1.1675833340449; Tue, 07 Feb 2023 21:15:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675833340; cv=none; d=google.com; s=arc-20160816; b=lwNtr0HMWBMsg/V3dMsAQGR4Bv+6QdFDmfKKGtahnaH+aE9aZdQtcQHBWp9RQMqX8f TQpkr13H2xbcLnNSVqK5iHt6WJKkfwWfT06UA7onYZD+bkY1r4w5k3rQpxoSDiLW1VRp 6xiw07hwgWIGsLpYfjgi8lXom74bxbHCQdVLP7xVDf4onDot8Rnt+WzRASrM6fwFXc5h +PcwmGXZG3aT8B3hE3wGPNee3TKfTPv3qTac33RZngSmzr8corHXm78Oqa2rm0ewCF07 NXXjV+ehHKENFkSw2/5UylX8SUR4JBteefEd7ze0eUx0zInOu6uk7GfKfUjQXkc7f1yz H0Bw== 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=elVRaSAk1shQBnhsGWaCVReoN8FoI59rpJEutqrqqs0=; b=curSrEgLoJIvkuKkZ/HEj/9tz9eNuGNSNzLbT8Mq4lL2FdWITId2BGDgtDTm5qJIfd RpR6JJzxbDU2ND+/1wy7EQBC8FC3tvu2vWKN4wvOIzohTLSwbsiWch+4xuaYEoP9oSUd 5xEDOEBsjD6w6DoIXEdnMiGtkzEMLxdydw+VzkM92S4p/uWk5D3hGYCWUa53TQkkPk95 qd8V6xe/8E3EHwDpakXTMiTNqKGmvNwF29/AYoaG8b6VpEXf/gMAbJSWqAvW2uoSmuCA HRhtyVa/S3eUszYSns0JL5JTEIA0mUAZnLwlqJU6r9tZNXP9ibQEG2jXQ/ooKpQ93Fw3 PqKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=vRWKWmq0; 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 i4-20020a633c44000000b004b1d3738f5bsi17975280pgn.390.2023.02.07.21.15.27; Tue, 07 Feb 2023 21:15:40 -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=vRWKWmq0; 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 S230443AbjBHFLB (ORCPT + 99 others); Wed, 8 Feb 2023 00:11:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230364AbjBHFK4 (ORCPT ); Wed, 8 Feb 2023 00:10:56 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C8CE4391C; Tue, 7 Feb 2023 21:10:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1675833023; x=1707369023; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eabWP+1R4FUNDlpnbyktz4c0HZQQVdVpImW1iNk14sM=; b=vRWKWmq0A+i9GRJtMOhf/eexebDpNh4R7+fn7yBx9uxLBHYCHmGgDIAg ZIpI8AkJNF9BcV6ISclWmLz+Lx3/+iO7qE/mp/eQr0amIeON7SYvYvi/U /8mb2B+ueMG0NOMqxBkO2A+cJFnl/0s7ZphUx0NU97aQng8z54K+t/maD xY+zAOA6guV4s6fTOfOCKGih1KeNvXwwzNTGtMC3p3I4PyTiH07x+/vfn 93mnGSUMNczaUxiMqOKAvr5jFBUWARwfJLrDHAz93MheUXHD+s8S+OyvO rT45EvJ80cg4k6SWwbJCUU00z0hMDoEmXnuRYTNPPmGrPmyQke+4RzK6C Q==; X-IronPort-AV: E=Sophos;i="5.97,280,1669100400"; d="scan'208";a="195866299" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Feb 2023 22:10:22 -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; Tue, 7 Feb 2023 22:09:58 -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; Tue, 7 Feb 2023 22:09:54 -0700 From: shravan kumar To: , , , , , , CC: , , , , , , , , Sakari Ailus Subject: [PATCH v11 5/5] media: i2c: imx334: update pixel and link frequency Date: Wed, 8 Feb 2023 10:39:15 +0530 Message-ID: <20230208050915.1958183-6-shravan.chippa@microchip.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230208050915.1958183-1-shravan.chippa@microchip.com> References: <20230208050915.1958183-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?1757238621079452153?= X-GMAIL-MSGID: =?utf-8?q?1757238621079452153?= 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..4c99d5b7bb8d 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; @@ -1046,8 +1056,8 @@ static int imx334_parse_hw_config(struct imx334 *imx334) }; struct fwnode_handle *ep; unsigned long rate; + unsigned int i, j; int ret; - int i; if (!fwnode) return -ENXIO; @@ -1097,11 +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;