Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb557171 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen
Browse files

drm/omap: dss: Move src and dst check and set to connection handlers



The encoders duplicate the same omap_dss_device src and dst fields set
and checks in their connect and disconnect handlers. Move the code to
the connect and disconnect wrappers.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 73fc0ac4
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -51,9 +51,6 @@ static int opa362_connect(struct omap_dss_device *dssdev,
		return r;
	}

	dst->src = dssdev;
	dssdev->dst = dst;

	ddata->in = in;
	return 0;
}
@@ -64,13 +61,6 @@ static void opa362_disconnect(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	WARN_ON(dst != dssdev->dst);
	if (dst != dssdev->dst)
		return;

	dst->src = NULL;
	dssdev->dst = NULL;

	omapdss_device_disconnect(in, &ddata->dssdev);

	omap_dss_put_device(in);
+0 −10
Original line number Diff line number Diff line
@@ -47,9 +47,6 @@ static int tfp410_connect(struct omap_dss_device *dssdev,
		return r;
	}

	dst->src = dssdev;
	dssdev->dst = dst;

	ddata->in = in;
	return 0;
}
@@ -60,13 +57,6 @@ static void tfp410_disconnect(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	WARN_ON(dst != dssdev->dst);
	if (dst != dssdev->dst)
		return;

	dst->src = NULL;
	dssdev->dst = NULL;

	omapdss_device_disconnect(in, &ddata->dssdev);

	omap_dss_put_device(in);
+0 −11
Original line number Diff line number Diff line
@@ -55,9 +55,6 @@ static int tpd_connect(struct omap_dss_device *dssdev,
		return r;
	}

	dst->src = dssdev;
	dssdev->dst = dst;

	gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1);
	gpiod_set_value_cansleep(ddata->ls_oe_gpio, 1);

@@ -74,17 +71,9 @@ static void tpd_disconnect(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	WARN_ON(dst != dssdev->dst);

	if (dst != dssdev->dst)
		return;

	gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
	gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0);

	dst->src = NULL;
	dssdev->dst = NULL;

	omapdss_device_disconnect(in, &ddata->dssdev);

	omap_dss_put_device(in);
+22 −2
Original line number Diff line number Diff line
@@ -105,15 +105,27 @@ struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src,
int omapdss_device_connect(struct omap_dss_device *src,
			   struct omap_dss_device *dst)
{
	int ret;

	dev_dbg(src->dev, "connect\n");

	if (omapdss_device_is_connected(src))
		return -EBUSY;

	if (src->driver)
		return src->driver->connect(src);
		ret = src->driver->connect(src);
	else
		return src->ops->connect(src, dst);
		ret = src->ops->connect(src, dst);

	if (ret < 0)
		return ret;

	if (dst) {
		dst->src = src;
		src->dst = dst;
	}

	return 0;
}
EXPORT_SYMBOL_GPL(omapdss_device_connect);

@@ -127,6 +139,14 @@ void omapdss_device_disconnect(struct omap_dss_device *src,
		return;
	}

	if (dst) {
		if (WARN_ON(dst != src->dst))
			return;

		dst->src = NULL;
		src->dst = NULL;
	}

	if (src->driver)
		src->driver->disconnect(src);
	else
+0 −5
Original line number Diff line number Diff line
@@ -671,11 +671,6 @@ static void dpi_disconnect(struct omap_dss_device *dssdev,
{
	struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);

	WARN_ON(dst != dssdev->dst);

	if (dst != dssdev->dst)
		return;

	omapdss_output_unset_device(dssdev);

	dss_mgr_disconnect(&dpi->output, dssdev);
Loading