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

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

drm/omap: dss: Move common device operations to common structure



The various types of omapdss_*_ops structures define multiple operations
that are not specific to a bus type. To simplify the code and remove
dependencies on specific bus types move those operations to a common
structure. Operations that are specific to a bus type are kept in the
specialized ops structures.

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 e10bd354
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ static int tvc_connect(struct omap_dss_device *dssdev)
		return PTR_ERR(in);
	}

	r = in->ops.atv->connect(in, dssdev);
	r = in->ops->connect(in, dssdev);
	if (r) {
		omap_dss_put_device(in);
		return r;
@@ -79,7 +79,7 @@ static void tvc_disconnect(struct omap_dss_device *dssdev)
	if (!omapdss_device_is_connected(dssdev))
		return;

	in->ops.atv->disconnect(in, dssdev);
	in->ops->disconnect(in, dssdev);

	omap_dss_put_device(in);
	ddata->in = NULL;
@@ -99,9 +99,9 @@ static int tvc_enable(struct omap_dss_device *dssdev)
	if (omapdss_device_is_enabled(dssdev))
		return 0;

	in->ops.atv->set_timings(in, &ddata->vm);
	in->ops->set_timings(in, &ddata->vm);

	r = in->ops.atv->enable(in);
	r = in->ops->enable(in);
	if (r)
		return r;

@@ -120,7 +120,7 @@ static void tvc_disable(struct omap_dss_device *dssdev)
	if (!omapdss_device_is_enabled(dssdev))
		return;

	in->ops.atv->disable(in);
	in->ops->disable(in);

	dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
@@ -133,7 +133,7 @@ static void tvc_set_timings(struct omap_dss_device *dssdev,

	ddata->vm = *vm;

	in->ops.atv->set_timings(in, vm);
	in->ops->set_timings(in, vm);
}

static void tvc_get_timings(struct omap_dss_device *dssdev,
@@ -150,7 +150,7 @@ static int tvc_check_timings(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	return in->ops.atv->check_timings(in, vm);
	return in->ops->check_timings(in, vm);
}

static const struct omap_dss_driver tvc_driver = {
+7 −7
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ static int dvic_connect(struct omap_dss_device *dssdev)
		return PTR_ERR(in);
	}

	r = in->ops.dvi->connect(in, dssdev);
	r = in->ops->connect(in, dssdev);
	if (r) {
		omap_dss_put_device(in);
		return r;
@@ -90,7 +90,7 @@ static void dvic_disconnect(struct omap_dss_device *dssdev)
	if (!omapdss_device_is_connected(dssdev))
		return;

	in->ops.dvi->disconnect(in, dssdev);
	in->ops->disconnect(in, dssdev);

	omap_dss_put_device(in);
	ddata->in = NULL;
@@ -108,9 +108,9 @@ static int dvic_enable(struct omap_dss_device *dssdev)
	if (omapdss_device_is_enabled(dssdev))
		return 0;

	in->ops.dvi->set_timings(in, &ddata->vm);
	in->ops->set_timings(in, &ddata->vm);

	r = in->ops.dvi->enable(in);
	r = in->ops->enable(in);
	if (r)
		return r;

@@ -127,7 +127,7 @@ static void dvic_disable(struct omap_dss_device *dssdev)
	if (!omapdss_device_is_enabled(dssdev))
		return;

	in->ops.dvi->disable(in);
	in->ops->disable(in);

	dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
@@ -140,7 +140,7 @@ static void dvic_set_timings(struct omap_dss_device *dssdev,

	ddata->vm = *vm;

	in->ops.dvi->set_timings(in, vm);
	in->ops->set_timings(in, vm);
}

static void dvic_get_timings(struct omap_dss_device *dssdev,
@@ -157,7 +157,7 @@ static int dvic_check_timings(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	return in->ops.dvi->check_timings(in, vm);
	return in->ops->check_timings(in, vm);
}

static int dvic_ddc_read(struct i2c_adapter *adapter,
+21 −21
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ static int hdmic_connect(struct omap_dss_device *dssdev)
		return PTR_ERR(in);
	}

	r = in->ops.hdmi->connect(in, dssdev);
	r = in->ops->connect(in, dssdev);
	if (r) {
		omap_dss_put_device(in);
		return r;
@@ -89,7 +89,7 @@ static void hdmic_disconnect(struct omap_dss_device *dssdev)
	if (!omapdss_device_is_connected(dssdev))
		return;

	in->ops.hdmi->disconnect(in, dssdev);
	in->ops->disconnect(in, dssdev);

	omap_dss_put_device(in);
	ddata->in = NULL;
@@ -109,9 +109,9 @@ static int hdmic_enable(struct omap_dss_device *dssdev)
	if (omapdss_device_is_enabled(dssdev))
		return 0;

	in->ops.hdmi->set_timings(in, &ddata->vm);
	in->ops->set_timings(in, &ddata->vm);

	r = in->ops.hdmi->enable(in);
	r = in->ops->enable(in);
	if (r)
		return r;

@@ -130,7 +130,7 @@ static void hdmic_disable(struct omap_dss_device *dssdev)
	if (!omapdss_device_is_enabled(dssdev))
		return;

	in->ops.hdmi->disable(in);
	in->ops->disable(in);

	dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
@@ -143,7 +143,7 @@ static void hdmic_set_timings(struct omap_dss_device *dssdev,

	ddata->vm = *vm;

	in->ops.hdmi->set_timings(in, vm);
	in->ops->set_timings(in, vm);
}

static void hdmic_get_timings(struct omap_dss_device *dssdev,
@@ -160,7 +160,7 @@ static int hdmic_check_timings(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	return in->ops.hdmi->check_timings(in, vm);
	return in->ops->check_timings(in, vm);
}

static int hdmic_read_edid(struct omap_dss_device *dssdev,
@@ -169,7 +169,7 @@ static int hdmic_read_edid(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	return in->ops.hdmi->read_edid(in, edid, len);
	return in->ops->hdmi.read_edid(in, edid, len);
}

static bool hdmic_detect(struct omap_dss_device *dssdev)
@@ -181,9 +181,9 @@ static bool hdmic_detect(struct omap_dss_device *dssdev)
	if (gpio_is_valid(ddata->hpd_gpio))
		connected = gpio_get_value_cansleep(ddata->hpd_gpio);
	else
		connected = in->ops.hdmi->detect(in);
	if (!connected && in->ops.hdmi->lost_hotplug)
		in->ops.hdmi->lost_hotplug(in);
		connected = in->ops->hdmi.detect(in);
	if (!connected && in->ops->hdmi.lost_hotplug)
		in->ops->hdmi.lost_hotplug(in);
	return connected;
}

@@ -201,8 +201,8 @@ static int hdmic_register_hpd_cb(struct omap_dss_device *dssdev,
		ddata->hpd_cb_data = cb_data;
		mutex_unlock(&ddata->hpd_lock);
		return 0;
	} else if (in->ops.hdmi->register_hpd_cb) {
		return in->ops.hdmi->register_hpd_cb(in, cb, cb_data);
	} else if (in->ops->hdmi.register_hpd_cb) {
		return in->ops->hdmi.register_hpd_cb(in, cb, cb_data);
	}

	return -ENOTSUPP;
@@ -218,8 +218,8 @@ static void hdmic_unregister_hpd_cb(struct omap_dss_device *dssdev)
		ddata->hpd_cb = NULL;
		ddata->hpd_cb_data = NULL;
		mutex_unlock(&ddata->hpd_lock);
	} else if (in->ops.hdmi->unregister_hpd_cb) {
		in->ops.hdmi->unregister_hpd_cb(in);
	} else if (in->ops->hdmi.unregister_hpd_cb) {
		in->ops->hdmi.unregister_hpd_cb(in);
	}
}

@@ -232,8 +232,8 @@ static void hdmic_enable_hpd(struct omap_dss_device *dssdev)
		mutex_lock(&ddata->hpd_lock);
		ddata->hpd_enabled = true;
		mutex_unlock(&ddata->hpd_lock);
	} else if (in->ops.hdmi->enable_hpd) {
		in->ops.hdmi->enable_hpd(in);
	} else if (in->ops->hdmi.enable_hpd) {
		in->ops->hdmi.enable_hpd(in);
	}
}

@@ -246,8 +246,8 @@ static void hdmic_disable_hpd(struct omap_dss_device *dssdev)
		mutex_lock(&ddata->hpd_lock);
		ddata->hpd_enabled = false;
		mutex_unlock(&ddata->hpd_lock);
	} else if (in->ops.hdmi->disable_hpd) {
		in->ops.hdmi->disable_hpd(in);
	} else if (in->ops->hdmi.disable_hpd) {
		in->ops->hdmi.disable_hpd(in);
	}
}

@@ -256,7 +256,7 @@ static int hdmic_set_hdmi_mode(struct omap_dss_device *dssdev, bool hdmi_mode)
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	return in->ops.hdmi->set_hdmi_mode(in, hdmi_mode);
	return in->ops->hdmi.set_hdmi_mode(in, hdmi_mode);
}

static int hdmic_set_infoframe(struct omap_dss_device *dssdev,
@@ -265,7 +265,7 @@ static int hdmic_set_infoframe(struct omap_dss_device *dssdev,
	struct panel_drv_data *ddata = to_panel_data(dssdev);
	struct omap_dss_device *in = ddata->in;

	return in->ops.hdmi->set_infoframe(in, avi);
	return in->ops->hdmi.set_infoframe(in, avi);
}

static const struct omap_dss_driver hdmic_driver = {
+9 −11
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ static int opa362_connect(struct omap_dss_device *dssdev,
		return PTR_ERR(in);
	}

	r = in->ops.atv->connect(in, dssdev);
	r = in->ops->connect(in, dssdev);
	if (r) {
		omap_dss_put_device(in);
		return r;
@@ -82,7 +82,7 @@ static void opa362_disconnect(struct omap_dss_device *dssdev,
	dst->src = NULL;
	dssdev->dst = NULL;

	in->ops.atv->disconnect(in, &ddata->dssdev);
	in->ops->disconnect(in, &ddata->dssdev);

	omap_dss_put_device(in);
	ddata->in = NULL;
@@ -102,9 +102,9 @@ static int opa362_enable(struct omap_dss_device *dssdev)
	if (omapdss_device_is_enabled(dssdev))
		return 0;

	in->ops.atv->set_timings(in, &ddata->vm);
	in->ops->set_timings(in, &ddata->vm);

	r = in->ops.atv->enable(in);
	r = in->ops->enable(in);
	if (r)
		return r;

@@ -129,7 +129,7 @@ static void opa362_disable(struct omap_dss_device *dssdev)
	if (ddata->enable_gpio)
		gpiod_set_value_cansleep(ddata->enable_gpio, 0);

	in->ops.atv->disable(in);
	in->ops->disable(in);

	dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
@@ -144,7 +144,7 @@ static void opa362_set_timings(struct omap_dss_device *dssdev,

	ddata->vm = *vm;

	in->ops.atv->set_timings(in, vm);
	in->ops->set_timings(in, vm);
}

static int opa362_check_timings(struct omap_dss_device *dssdev,
@@ -155,16 +155,14 @@ static int opa362_check_timings(struct omap_dss_device *dssdev,

	dev_dbg(dssdev->dev, "check_timings\n");

	return in->ops.atv->check_timings(in, vm);
	return in->ops->check_timings(in, vm);
}

static const struct omapdss_atv_ops opa362_atv_ops = {
static const struct omap_dss_device_ops opa362_ops = {
	.connect	= opa362_connect,
	.disconnect	= opa362_disconnect,

	.enable		= opa362_enable,
	.disable	= opa362_disable,

	.check_timings	= opa362_check_timings,
	.set_timings	= opa362_set_timings,
};
@@ -191,7 +189,7 @@ static int opa362_probe(struct platform_device *pdev)
	ddata->enable_gpio = gpio;

	dssdev = &ddata->dssdev;
	dssdev->ops.atv = &opa362_atv_ops;
	dssdev->ops = &opa362_ops;
	dssdev->dev = &pdev->dev;
	dssdev->type = OMAP_DISPLAY_TYPE_VENC;
	dssdev->output_type = OMAP_DISPLAY_TYPE_VENC;
+9 −11
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ static int tfp410_connect(struct omap_dss_device *dssdev,
		return PTR_ERR(in);
	}

	r = in->ops.dpi->connect(in, dssdev);
	r = in->ops->connect(in, dssdev);
	if (r) {
		omap_dss_put_device(in);
		return r;
@@ -74,7 +74,7 @@ static void tfp410_disconnect(struct omap_dss_device *dssdev,
	dst->src = NULL;
	dssdev->dst = NULL;

	in->ops.dpi->disconnect(in, &ddata->dssdev);
	in->ops->disconnect(in, &ddata->dssdev);

	omap_dss_put_device(in);
	ddata->in = NULL;
@@ -92,9 +92,9 @@ static int tfp410_enable(struct omap_dss_device *dssdev)
	if (omapdss_device_is_enabled(dssdev))
		return 0;

	in->ops.dpi->set_timings(in, &ddata->vm);
	in->ops->set_timings(in, &ddata->vm);

	r = in->ops.dpi->enable(in);
	r = in->ops->enable(in);
	if (r)
		return r;

@@ -117,7 +117,7 @@ static void tfp410_disable(struct omap_dss_device *dssdev)
	if (gpio_is_valid(ddata->pd_gpio))
		gpio_set_value_cansleep(ddata->pd_gpio, 0);

	in->ops.dpi->disable(in);
	in->ops->disable(in);

	dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
@@ -138,7 +138,7 @@ static void tfp410_set_timings(struct omap_dss_device *dssdev,

	ddata->vm = *vm;

	in->ops.dpi->set_timings(in, vm);
	in->ops->set_timings(in, vm);
}

static int tfp410_check_timings(struct omap_dss_device *dssdev,
@@ -149,16 +149,14 @@ static int tfp410_check_timings(struct omap_dss_device *dssdev,

	tfp410_fix_timings(vm);

	return in->ops.dpi->check_timings(in, vm);
	return in->ops->check_timings(in, vm);
}

static const struct omapdss_dvi_ops tfp410_dvi_ops = {
static const struct omap_dss_device_ops tfp410_ops = {
	.connect	= tfp410_connect,
	.disconnect	= tfp410_disconnect,

	.enable		= tfp410_enable,
	.disable	= tfp410_disable,

	.check_timings	= tfp410_check_timings,
	.set_timings	= tfp410_set_timings,
};
@@ -209,7 +207,7 @@ static int tfp410_probe(struct platform_device *pdev)
	}

	dssdev = &ddata->dssdev;
	dssdev->ops.dvi = &tfp410_dvi_ops;
	dssdev->ops = &tfp410_ops;
	dssdev->dev = &pdev->dev;
	dssdev->type = OMAP_DISPLAY_TYPE_DPI;
	dssdev->output_type = OMAP_DISPLAY_TYPE_DVI;
Loading