[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: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
443f483aa2
commit
2fbdc9bd42
@@ -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)
|
|||||||
|
|
||||||
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));
|
||||||
|
Reference in New Issue
Block a user