FAILED: patch "[PATCH] media: imx: Don't register IPU subdevs/links if CSI port" failed to apply to 5.0-stable tree
Subsystems (5)
[email protected]
maintainerThe patch below does not apply to the 5.0-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From dee747f88167124884a918855c1f438e2f7f39e2 Mon Sep 17 00:00:00 2001
From: Steve Longerbeam <[email protected]>
Date: Wed, 20 Feb 2019 18:53:32 -0500
Subject: [PATCH] media: imx: Don't register IPU subdevs/links if CSI port
missing
The second IPU internal sub-devices were being registered and links to them created even when the second IPU is not present. This is wrong for i.MX6 S/DL and i.MX53 which have only a single IPU.
drivers/staging/media/imx/imx-media-dev.c +0 -7
@@ -477,13 +477,6 @@ static int imx_media_probe(struct platform_device *pdev) goto cleanup; } - ret =imx_media_add_ipu_internal_subdevs (imxmd); -if (ret) { -v4l2_err (&imxmd->v4l2_dev, -"add_ipu_internal_subdevs failed with %d\n" , ret); - goto cleanup; - } - ret =imx_media_dev_notifier_register (imxmd);if (ret) goto del_int;
drivers/staging/media/imx/imx-media-internal-sd.c +4 -18
@@ -298,13 +298,14 @@ static int add_internal_subdev(struct imx_media_dev *imxmd, }/* adds the internal subdevs in one ipu */ -static int add_ipu_internal_subdevs (struct imx_media_dev *imxmd,int ipu_id) +int imx_media_add_ipu_internal_subdevs (struct imx_media_dev *imxmd, +int ipu_id) {enum isd_enum i; +int ret;for (i =0 ; i < num_isd; i++) {const struct internal_subdev *isd = &int_subdev[i]; -int ret;/* * the CSIs are represented in the device-tree, so those
@@ -322,25 +323,10 @@ static int add_ipu_internal_subdevs(struct imx_media_dev *imxmd, int ipu_id) }if (ret) -return ret; + goto remove; }return 0 ; -} - -int imx_media_add_ipu_internal_subdevs (struct imx_media_dev *imxmd) -{ -int ret; - - ret =add_ipu_internal_subdevs (imxmd,0 ); -if (ret) - goto remove; - - ret =add_ipu_internal_subdevs (imxmd,1 ); -if (ret) - goto remove; - -return 0 ; remove:imx_media_remove_ipu_internal_subdevs (imxmd);
drivers/staging/media/imx/imx-media-of.c +39 -19
87 lines not on this page · raw message
drivers/staging/media/imx/imx-media.h +2 -1
@@ -252,7 +252,8 @@ struct imx_media_fim *imx_media_fim_init(struct v4l2_subdev *sd);void imx_media_fim_free (struct imx_media_fim *fim);/* imx-media-internal-sd.c */ -int imx_media_add_ipu_internal_subdevs (struct imx_media_dev *imxmd); +int imx_media_add_ipu_internal_subdevs (struct imx_media_dev *imxmd, +int ipu_id);int imx_media_create_ipu_internal_links (struct imx_media_dev *imxmd,struct v4l2_subdev *sd);void imx_media_remove_ipu_internal_subdevs (struct imx_media_dev *imxmd);
drivers/staging/media/imx/imx7-media-csi.c +1 -1
@@ -1271,7 +1271,7 @@ static int imx7_csi_probe(struct platform_device *pdev)platform_set_drvdata (pdev, &csi->sd); ret =imx_media_of_add_csi (imxmd, node); -if (ret <0 ) +if (ret <0 && ret != -ENODEV && ret != -EEXIST ) goto cleanup; ret =imx_media_dev_notifier_register (imxmd);