From patchwork Fri Nov 29 19:05:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 180495 Delivered-To: patch@linaro.org Received: by 2002:a92:3001:0:0:0:0:0 with SMTP id x1csp1972417ile; Fri, 29 Nov 2019 11:06:13 -0800 (PST) X-Google-Smtp-Source: APXvYqw9ODvw1aQpdoqevnEWpSbbjY1gembEFleyWja90T8rU7diPgWotS8sh0SDxGkI22Uwk/6e X-Received: by 2002:a17:906:16d1:: with SMTP id t17mr16100298ejd.41.1575054373575; Fri, 29 Nov 2019 11:06:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575054373; cv=none; d=google.com; s=arc-20160816; b=N3n4jPHUxnAOcnAnVZ/qqQaF8g462ZPsDFVUNHHnJWkSk57ETBZuQllYzh88ZSVTI5 +VsN120r/58bZMB7BlB1+/1a2MLr/uuN1r4KJ/VQ30oS3vvbkY4xrvVDM7Nnz3eD/6ZY /jFVL970rE8Jaj0LPB/NsEy8efSM48luCZT43xF4foqLvRTqChQe7CdqnQ+b4hnOvWvv pPT7by/4QcMDI27WOVMXMzvRr+NgGsDSsN5S5w1li+8eW4mPLfRcsOxjb2f10rcbAqZP w21jQZUbvHj/1N37jpHLvc/UhiR1y+XlxbFAuH/5mzuprdwuq6zZ+4f7kVM1cgPAws+M VffQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=DmYsGklBxODi9ZXzG+eZphEo00SJ3Wr36G+fPUJuOQI=; b=z+JSUrG+CtnzWnYcPze0Qmv3QtJpSHB5VvJxzIWMvZeqGQ5qdY/g8BQHMRL8Z9gyAR +HnuYQHf5rjTxz2V/4d7Xgk7NEG/6+CIBQdNb9JuEV5XxYyvTSFq17cvQXLWlVXHF4Tg mOZ+LKZbr6Ubt3kLjTrQnjeghMX2KM4ul0+RVQCvrJDCYKpRArOaOaiQqeMOxL0ROuzE QUSWM+nP7fWFbruE1D0jj3BL9AMvkc0AnCyrTZT8agFNIodD2RMUVI/pZ6Jyhg7xRanK Ofhs0gtewV0Dv/Nnywny0EVLnS7v9CWtQcLBRxOiJ8Ffvae/nnIJeXa22daqAoTT04aM ntSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=zT92KeHe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s19si17275317edw.235.2019.11.29.11.06.13; Fri, 29 Nov 2019 11:06:13 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=zT92KeHe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727198AbfK2TGM (ORCPT + 27 others); Fri, 29 Nov 2019 14:06:12 -0500 Received: from mail-pf1-f196.google.com ([209.85.210.196]:39123 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727096AbfK2TGL (ORCPT ); Fri, 29 Nov 2019 14:06:11 -0500 Received: by mail-pf1-f196.google.com with SMTP id x28so14996608pfo.6 for ; Fri, 29 Nov 2019 11:06:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DmYsGklBxODi9ZXzG+eZphEo00SJ3Wr36G+fPUJuOQI=; b=zT92KeHeKw8smYn0Wg/ZkYYS3HUIgVo/BEAonyLQotvdGPO9EoJrWytsnE7ricRaJE 4dmmdhb4xHRJX+WKgQfGSe87j8EJk7d7XspMM+7qbebFTHlJavhgkTy6RXPJIaYDb3yq tVRGekzSoLjKN/4vMCyMr7qynj7lOQCKfGYNmezHByEt4fVM9QbjTQBUo7G0A08urYjl XoQ071BJ4RlUh7bgcrpKik6D9P4l8BWS+I0XZ394b7OO5cadlj2iKTCWi/c1DMJkZIcX JpxqJ/nOA8jViQj6VyS4RXGUJUOm+kheO8cyp1mOWT4beaJ0EXk16are4Eoazv7Vf1SR Ufbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DmYsGklBxODi9ZXzG+eZphEo00SJ3Wr36G+fPUJuOQI=; b=Mg7zxoeHdMR61agvTfNvME0kLZ9arL5eJmqjq6QQp/fFtqI3pDoQHtRIMkR+41h7OB nfRJZfbC8qFfchIubxdOjNHRn1qY86ffOqmmaUYgTsHnJjPlcr/6DHd7BaMvGhy7SzM2 f4pKkMQXEJWUssPfCqKDHw+AOtRKeNQOXzXUmIVobolLfoAYqQAQzv5T2OAnnJuhpMjC 7GfQsqarQhJapys4E+OYHjJykjeJy6MolfKdF1eg8Lmz8PII8oS/jXlQU9YMkOTbzpWR fw2TKY9Coypwh/4yo1ZX8xfppMHD+We5/SYan8t8CabK10qWXR2KyAJCghfaW1iRqAAR 0EKw== X-Gm-Message-State: APjAAAVgfds2BWuIXLYRBiNOZvpmJaNHIkleuoJfqzAw7efaYPvJVBfi Ce74lFkLn3kyKFZGxIfUtpyL X-Received: by 2002:a65:5307:: with SMTP id m7mr18546705pgq.113.1575054370197; Fri, 29 Nov 2019 11:06:10 -0800 (PST) Received: from localhost.localdomain ([2409:4072:638d:cc55:d006:f721:cde2:1059]) by smtp.gmail.com with ESMTPSA id h9sm25159974pgk.84.2019.11.29.11.06.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Nov 2019 11:06:09 -0800 (PST) From: Manivannan Sadhasivam To: mchehab@kernel.org, sakari.ailus@iki.fi Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, c.barrett@framos.com, a.brela@framos.com, peter.griffin@linaro.org, Manivannan Sadhasivam Subject: [PATCH 3/5] media: i2c: imx290: Add RAW12 mode support Date: Sat, 30 Nov 2019 00:35:39 +0530 Message-Id: <20191129190541.30315-4-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191129190541.30315-1-manivannan.sadhasivam@linaro.org> References: <20191129190541.30315-1-manivannan.sadhasivam@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org IMX290 is capable of outputting frames in both Raw Bayer (packed) 10 and 12 bit formats. Since the driver already supports RAW10 mode, let's add the missing RAW12 mode as well. Signed-off-by: Manivannan Sadhasivam --- drivers/media/i2c/imx290.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) -- 2.17.1 diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c index e218c959a729..d5bb3a59ac46 100644 --- a/drivers/media/i2c/imx290.c +++ b/drivers/media/i2c/imx290.c @@ -75,6 +75,7 @@ struct imx290 { struct clk *xclk; struct regmap *regmap; int nlanes; + u8 bpp; struct v4l2_subdev sd; struct v4l2_fwnode_endpoint ep; @@ -98,6 +99,7 @@ struct imx290_pixfmt { static const struct imx290_pixfmt imx290_formats[] = { { MEDIA_BUS_FMT_SRGGB10_1X10 }, + { MEDIA_BUS_FMT_SRGGB12_1X12 }, }; static const struct regmap_config imx290_regmap_config = { @@ -265,6 +267,18 @@ static const struct imx290_regval imx290_10bit_settings[] = { { 0x300b, 0x00}, }; +static const struct imx290_regval imx290_12bit_settings[] = { + { 0x3005, 0x01 }, + { 0x3046, 0x01 }, + { 0x3129, 0x00 }, + { 0x317c, 0x00 }, + { 0x31ec, 0x0e }, + { 0x3441, 0x0c }, + { 0x3442, 0x0c }, + { 0x300a, 0xf0 }, + { 0x300b, 0x00 }, +}; + /* supported link frequencies */ static const s64 imx290_link_freq[] = { IMX290_DEFAULT_LINK_FREQ, @@ -550,6 +564,21 @@ static int imx290_write_current_format(struct imx290 *imx290, dev_err(imx290->dev, "Could not set format registers\n"); return ret; } + + imx290->bpp = 10; + + break; + case MEDIA_BUS_FMT_SRGGB12_1X12: + ret = imx290_set_register_array(imx290, imx290_12bit_settings, + ARRAY_SIZE( + imx290_12bit_settings)); + if (ret < 0) { + dev_err(imx290->dev, "Could not set format registers\n"); + return ret; + } + + imx290->bpp = 12; + break; default: dev_err(imx290->dev, "Unknown pixel format\n"); @@ -910,6 +939,9 @@ static int imx290_probe(struct i2c_client *client) goto free_err; } + /* Default bits per pixel value */ + imx290->bpp = 10; + mutex_init(&imx290->lock); v4l2_ctrl_handler_init(&imx290->ctrls, 4); From patchwork Fri Nov 29 19:05:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 180496 Delivered-To: patch@linaro.org Received: by 2002:a92:3001:0:0:0:0:0 with SMTP id x1csp1972527ile; Fri, 29 Nov 2019 11:06:18 -0800 (PST) X-Google-Smtp-Source: APXvYqzXbKlnErpkLZw//8uPOb2AcnxIRON395QwZoXcMEZuc273MuolgNWUochK7LSU0nljLYNi X-Received: by 2002:a17:906:3710:: with SMTP id d16mr63778533ejc.132.1575054378633; Fri, 29 Nov 2019 11:06:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575054378; cv=none; d=google.com; s=arc-20160816; b=Kxknjl41Q/3uwc8iZC5LGAnqSeaO+J2kHfU4KZRr3A+s2YmbHwlsaj8zIgCHYrXZNM N4uSZerQ3Yj6m5J1csMc7cypfdRMHZ848dlLpaSSreotpLw6Dzy75lRkLrJtvA1gXgwL KwvRck3ZI5HPxc5vk7uTs6lEZSeOkwfjBL3Jh0BjKLtHDuxgcwwCpcLqQtULwAMejRoV +ii116t7xKOp6RkVbyCvG2OW0oF68kAqn7XzvPUndnxn9O6EdEj3emSa6ytPsBwiNNYV 4RRclJ6uvYFe+OIPO1w+jbaiD34b8c6Qx6tH1sAYyj6rL2m8dP7vbQmiGYfPgT7TiLs8 dMKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=/FM9xo7QIIBKERzlsc9RY2lQmdtL0uWG+xaaghB/dV4=; b=l2Ecz3+3L30rWD3X9PYuxqTSNEElUWM9tQqUZsoo95fsUbtJ+aNkitiazQC8LYjc0l HulX9Et3G4EIHWDQSHBWBAdtrNzKbp401D3zm+sppq1qxLlJHGE/V0RG8aPvhHeDswEI esa1yXpUSYltewhzwVruKILtzPghlFBtrl4wC79TzgZonlyWLgShhu7FiSGeGioEn1WX o0sC18f8K0W3bBgLGFdcYxljoPAJ3Qeq67dylGTNnVwpdJHXuae0K0SOYyY38W0WssQj nwBUgvf7J0Q4yOXT8oHBmYZ13XM1524nhQstAkC+Z5tKO+cwjuQom/ktnvWhp+hx9fu+ vb0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=tNqp5p7d; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s19si17275317edw.235.2019.11.29.11.06.18; Fri, 29 Nov 2019 11:06:18 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=tNqp5p7d; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727227AbfK2TGR (ORCPT + 27 others); Fri, 29 Nov 2019 14:06:17 -0500 Received: from mail-pj1-f67.google.com ([209.85.216.67]:45888 "EHLO mail-pj1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727197AbfK2TGQ (ORCPT ); Fri, 29 Nov 2019 14:06:16 -0500 Received: by mail-pj1-f67.google.com with SMTP id r11so5794727pjp.12 for ; Fri, 29 Nov 2019 11:06:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/FM9xo7QIIBKERzlsc9RY2lQmdtL0uWG+xaaghB/dV4=; b=tNqp5p7dcPlaZftpP3TycmCHaYycdBuJHeVbtDykKAoJibe93S5N8XsAUYK9ayfAcl Iaw1JF/4vRMyErNfvVyZm2qWAKkrV0SakuAY7meg13MWatjW1Ob2Byu2+QJoeCPV+r0d VgnBSHlvUbgxIiU8k1S3UAy0/pnc0urZFPkQL/ChnqlyO1A3mv0znx6AU+mS5A+hUDBc 3NLPVkZE+F+tWYSGU2PlGSm3CSmuEPS/uVSKr+uIqkM8qaC8ilzsCLoI6utdaggXBFps Y+FUI2/lkIlOWLfNxaduQYR0K5UI4frt90Mc4OszFfpizS+NqPqTAbwEarlLoOmOkr3E 2KqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/FM9xo7QIIBKERzlsc9RY2lQmdtL0uWG+xaaghB/dV4=; b=g7Ftw7NvFUjdRYvX3/KLH4r93qjC9/Y+s3bOf/RF2ijeE+P+LxC1OxfR6CF4ISL8sJ tferjHCfY7gVQZYx8cMtWpyfnz2/f2J/KeTgDZ2VZk1b33qrzc0GGr3KKRp/iyy4/+fv OfOeOyoOEpL/AVewrA+i3fTKDvSGcEpayKqYlgdSq+ejiYbpybpCpB2WorrxsoTs89mc WFBnWKr3MzTYNwlBf54M2ej/5HLj/4zBZplIWZoM3RuhHCHVFaZq/gVPza5yab2Yh68e +Sa/Vk+gnpcBiPDWhbRVhLCddh2YGNKSx1dx7OKEkTIoVnT25P384SNHSew99HwopFw1 Xm2g== X-Gm-Message-State: APjAAAWfD/4LOFr7ogXWUsKvqdLDK43Ks8EotwJvq8OGkSK5JhR6E86+ nTP7vzIpheehgUt1I2+FWCQJ X-Received: by 2002:a17:902:820f:: with SMTP id x15mr16072824pln.125.1575054375293; Fri, 29 Nov 2019 11:06:15 -0800 (PST) Received: from localhost.localdomain ([2409:4072:638d:cc55:d006:f721:cde2:1059]) by smtp.gmail.com with ESMTPSA id h9sm25159974pgk.84.2019.11.29.11.06.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Nov 2019 11:06:14 -0800 (PST) From: Manivannan Sadhasivam To: mchehab@kernel.org, sakari.ailus@iki.fi Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, c.barrett@framos.com, a.brela@framos.com, peter.griffin@linaro.org, Manivannan Sadhasivam Subject: [PATCH 4/5] media: i2c: imx290: Add support to enumerate all frame sizes Date: Sat, 30 Nov 2019 00:35:40 +0530 Message-Id: <20191129190541.30315-5-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191129190541.30315-1-manivannan.sadhasivam@linaro.org> References: <20191129190541.30315-1-manivannan.sadhasivam@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support to enumerate all frame sizes supported by IMX290. This is required for using with userspace tools such as libcamera. Signed-off-by: Manivannan Sadhasivam --- drivers/media/i2c/imx290.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) -- 2.17.1 diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c index d5bb3a59ac46..f26c4a0ee0a0 100644 --- a/drivers/media/i2c/imx290.c +++ b/drivers/media/i2c/imx290.c @@ -468,6 +468,25 @@ static int imx290_enum_mbus_code(struct v4l2_subdev *sd, return 0; } +static int imx290_enum_frame_size(struct v4l2_subdev *subdev, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_frame_size_enum *fse) +{ + if ((fse->code != imx290_formats[0].code) && + (fse->code != imx290_formats[1].code)) + return -EINVAL; + + if (fse->index >= ARRAY_SIZE(imx290_modes)) + return -EINVAL; + + fse->min_width = imx290_modes[fse->index].width; + fse->max_width = imx290_modes[fse->index].width; + fse->min_height = imx290_modes[fse->index].height; + fse->max_height = imx290_modes[fse->index].height; + + return 0; +} + static int imx290_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, struct v4l2_subdev_format *fmt) @@ -820,6 +839,7 @@ static const struct v4l2_subdev_video_ops imx290_video_ops = { static const struct v4l2_subdev_pad_ops imx290_pad_ops = { .init_cfg = imx290_entity_init_cfg, .enum_mbus_code = imx290_enum_mbus_code, + .enum_frame_size = imx290_enum_frame_size, .get_fmt = imx290_get_fmt, .set_fmt = imx290_set_fmt, };