Commit 2fbdc9bd authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Mauro Carvalho Chehab

[media] V4L: sh_mobile_csi2: fix unbalanced pm_runtime_put()

If the sh_mobile_csi2 driver didn't attach to a client, normally, because
the respective device connects to the SoC over the parallel CEU interface
and doesn't use the CSI-2 controller, it also shouldn't call
pm_runtime_put() on attempted disconnect.
Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 443f483a
...@@ -208,6 +208,9 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv) ...@@ -208,6 +208,9 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv)
unsigned long common_flags, csi2_flags; unsigned long common_flags, csi2_flags;
int i, ret; int i, ret;
if (priv->client)
return -EBUSY;
for (i = 0; i < pdata->num_clients; i++) for (i = 0; i < pdata->num_clients; i++)
if (&pdata->clients[i].pdev->dev == icd->pdev) if (&pdata->clients[i].pdev->dev == icd->pdev)
break; break;
...@@ -262,6 +265,9 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv) ...@@ -262,6 +265,9 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv)
static void sh_csi2_client_disconnect(struct sh_csi2 *priv) static void sh_csi2_client_disconnect(struct sh_csi2 *priv)
{ {
if (!priv->client)
return;
priv->client = NULL; priv->client = NULL;
pm_runtime_put(v4l2_get_subdevdata(&priv->subdev)); pm_runtime_put(v4l2_get_subdevdata(&priv->subdev));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment