Linux-Samsung-soc Archive on lore.kernel.org
 help / color / Atom feed
From: Jonathan Bakker <xc-racer2@live.ca>
To: kyungmin.park@samsung.com, s.nawrocki@samsung.com,
	mchehab@kernel.org, kgene@kernel.org, krzk@kernel.org,
	linux-media@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org, robh+dt@kernel.org,
	Jonathan Bakker <xc-racer2@live.ca>
Subject: [PATCH v2 03/11] media: exynos4-is: Fix nullptr when no CSIS device present
Date: Thu, 30 Jul 2020 16:01:06 -0700
Message-ID: <BN6PR04MB0660EEE45C82219F3E002013A3710@BN6PR04MB0660.namprd04.prod.outlook.com> (raw)
In-Reply-To: <20200730230114.8572-1-xc-racer2@live.ca>

Not all devices use the CSIS device, some may use the FIMC directly in
which case the CSIS device isn't registered.  This leads to a nullptr
exception when starting the stream as the CSIS device is always
referenced.  Instead, if getting the CSIS device fails, try getting the
FIMC directly to check if we are using the subdev API

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
Changes from v1:
- Added R-b tag
---
 drivers/media/platform/exynos4-is/media-dev.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c
index 9aaf3b8060d5..5c32abc7251b 100644
--- a/drivers/media/platform/exynos4-is/media-dev.c
+++ b/drivers/media/platform/exynos4-is/media-dev.c
@@ -289,11 +289,26 @@ static int __fimc_pipeline_s_stream(struct exynos_media_pipeline *ep, bool on)
 		{ IDX_CSIS, IDX_FLITE, IDX_FIMC, IDX_SENSOR, IDX_IS_ISP },
 	};
 	struct fimc_pipeline *p = to_fimc_pipeline(ep);
-	struct fimc_md *fmd = entity_to_fimc_mdev(&p->subdevs[IDX_CSIS]->entity);
 	enum fimc_subdev_index sd_id;
 	int i, ret = 0;
 
 	if (p->subdevs[IDX_SENSOR] == NULL) {
+		struct fimc_md *fmd;
+		struct v4l2_subdev *sd = p->subdevs[IDX_CSIS];
+
+		if (!sd)
+			sd = p->subdevs[IDX_FIMC];
+
+		if (!sd) {
+			/*
+			 * If neither CSIS nor FIMC was set up,
+			 * it's impossible to have any sensors
+			 */
+			return -ENODEV;
+		}
+
+		fmd = entity_to_fimc_mdev(&sd->entity);
+
 		if (!fmd->user_subdev_api) {
 			/*
 			 * Sensor must be already discovered if we
-- 
2.20.1


  parent reply index

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200730230114.8572-1-xc-racer2@live.ca>
2020-07-30 23:01 ` [PATCH v2 01/11] media: exynos4-is: Remove static driver data for S5PV210 FIMC variants Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 02/11] media: exynos4-is: Request syscon only if ISP writeback is present Jonathan Bakker
2020-07-30 23:01 ` Jonathan Bakker [this message]
2020-07-30 23:01 ` [PATCH v2 04/11] media: exynos4-is: Correct missing entity function initialization Jonathan Bakker
2020-07-31  9:41   ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 05/11] media: exynos4-is: Properly set JPEG options for parallel ports Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 06/11] media: exynos4-is: Use global num_sensors rather than local index Jonathan Bakker
2020-07-31  9:44   ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 07/11] media: exynos4-is: Add support for multiple sensors on one port Jonathan Bakker
2020-07-31  9:49   ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 08/11] media: exynos4-is: Remove inh_sensor_ctrls Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 09/11] media: exynos4-is: Remove unused struct member input_index Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 10/11] media: exynos4-is: Handle duplicate calls to vidioc_streamoff Jonathan Bakker
2020-07-31  9:54   ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 11/11] dt-bindings: media: Correct samsung-fimc parallel port numbering Jonathan Bakker
2020-07-31  9:59   ` Sylwester Nawrocki
2020-07-31 22:43   ` Rob Herring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BN6PR04MB0660EEE45C82219F3E002013A3710@BN6PR04MB0660.namprd04.prod.outlook.com \
    --to=xc-racer2@live.ca \
    --cc=devicetree@vger.kernel.org \
    --cc=kgene@kernel.org \
    --cc=krzk@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=s.nawrocki@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-Samsung-soc Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-samsung-soc/0 linux-samsung-soc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-samsung-soc linux-samsung-soc/ https://lore.kernel.org/linux-samsung-soc \
		linux-samsung-soc@vger.kernel.org
	public-inbox-index linux-samsung-soc

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-samsung-soc


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git