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

Commit 486c0e17 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

OMAPDSS: manage output-dssdev connection in output drivers



We currently attach an output to a dssdev in the initialization code for
dssdevices in display.c. This works, but doesn't quite make sense: an
output entity represents (surprisingly) an output of DSS, which is
managed by an output driver. The output driver also handles adding new
dssdev's for that particular output.

It makes more sense to make the output-dssdev connection in the output
driver. This is also in line with common display framework.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 09a8c45c
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -79,17 +79,8 @@ EXPORT_SYMBOL(omapdss_default_get_timings);
int dss_init_device(struct platform_device *pdev,
		struct omap_dss_device *dssdev)
{
	struct omap_dss_output *out;
	int r;

	out = omapdss_get_output_from_dssdev(dssdev);

	r = omapdss_output_set_device(out, dssdev);
	if (r) {
		DSSERR("failed to connect output to new device\n");
		return r;
	}

	r = display_init_sysfs(pdev, dssdev);
	if (r) {
		omapdss_output_unset_device(dssdev->output);
@@ -103,9 +94,6 @@ void dss_uninit_device(struct platform_device *pdev,
		struct omap_dss_device *dssdev)
{
	display_uninit_sysfs(pdev, dssdev);

	if (dssdev->output)
		omapdss_output_unset_device(dssdev->output);
}

static int dss_suspend_device(struct device *dev, void *data)
+9 −0
Original line number Diff line number Diff line
@@ -477,9 +477,18 @@ static void __init dpi_probe_pdata(struct platform_device *dpidev)
		return;
	}

	r = omapdss_output_set_device(&dpi.output, dssdev);
	if (r) {
		DSSERR("failed to connect output to new device: %s\n",
				dssdev->name);
		dss_put_device(dssdev);
		return;
	}

	r = dss_add_device(dssdev);
	if (r) {
		DSSERR("device %s register failed: %d\n", dssdev->name, r);
		omapdss_output_unset_device(&dpi.output);
		dss_put_device(dssdev);
		return;
	}
+10 −0
Original line number Diff line number Diff line
@@ -5146,6 +5146,7 @@ static struct omap_dss_device * __init dsi_find_dssdev(struct platform_device *p

static void __init dsi_probe_pdata(struct platform_device *dsidev)
{
	struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
	struct omap_dss_device *plat_dssdev;
	struct omap_dss_device *dssdev;
	int r;
@@ -5168,9 +5169,18 @@ static void __init dsi_probe_pdata(struct platform_device *dsidev)
		return;
	}

	r = omapdss_output_set_device(&dsi->output, dssdev);
	if (r) {
		DSSERR("failed to connect output to new device: %s\n",
				dssdev->name);
		dss_put_device(dssdev);
		return;
	}

	r = dss_add_device(dssdev);
	if (r) {
		DSSERR("device %s register failed: %d\n", dssdev->name, r);
		omapdss_output_unset_device(&dsi->output);
		dss_put_device(dssdev);
		return;
	}
+0 −1
Original line number Diff line number Diff line
@@ -212,7 +212,6 @@ int dss_ovl_unset_manager(struct omap_overlay *ovl);
/* output */
void dss_register_output(struct omap_dss_output *out);
void dss_unregister_output(struct omap_dss_output *out);
struct omap_dss_output *omapdss_get_output_from_dssdev(struct omap_dss_device *dssdev);

/* display */
int dss_suspend_all_devices(void);
+9 −0
Original line number Diff line number Diff line
@@ -1026,9 +1026,18 @@ static void __init hdmi_probe_pdata(struct platform_device *pdev)
		return;
	}

	r = omapdss_output_set_device(&hdmi.output, dssdev);
	if (r) {
		DSSERR("failed to connect output to new device: %s\n",
				dssdev->name);
		dss_put_device(dssdev);
		return;
	}

	r = dss_add_device(dssdev);
	if (r) {
		DSSERR("device %s register failed: %d\n", dssdev->name, r);
		omapdss_output_unset_device(&hdmi.output);
		hdmi_uninit_display(dssdev);
		dss_put_device(dssdev);
		return;
Loading