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

Commit 38f3daf6 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

OMAPDSS: separate pdata based initialization



Move the platform-data based display device initialization into a
separate function, so that we may later add of-based initialization.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 11ee9606
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -365,7 +365,7 @@ static int __init dpi_init_display(struct omap_dss_device *dssdev)
	return 0;
}

static int __init omap_dpi_probe(struct platform_device *pdev)
static void __init dpi_probe_pdata(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int i, r;
@@ -387,6 +387,11 @@ static int __init omap_dpi_probe(struct platform_device *pdev)
			DSSERR("device %s register failed: %d\n",
					dssdev->name, r);
	}
}

static int __init omap_dpi_probe(struct platform_device *pdev)
{
	dpi_probe_pdata(pdev);

	return 0;
}
+29 −21
Original line number Diff line number Diff line
@@ -4602,6 +4602,34 @@ static void dsi_put_clocks(struct platform_device *dsidev)
		clk_put(dsi->sys_clk);
}

static void __init dsi_probe_pdata(struct platform_device *dsidev)
{
	struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
	struct omap_dss_board_info *pdata = dsidev->dev.platform_data;
	int i, r;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (dssdev->type != OMAP_DISPLAY_TYPE_DSI)
			continue;

		if (dssdev->phy.dsi.module != dsi->module_id)
			continue;

		r = dsi_init_display(dssdev);
		if (r) {
			DSSERR("device %s init failed: %d\n", dssdev->name, r);
			continue;
		}

		r = omap_dss_register_device(dssdev, &dsidev->dev, i);
		if (r)
			DSSERR("device %s register failed: %d\n",
					dssdev->name, r);
	}
}

/* DSI1 HW IP initialisation */
static int __init omap_dsihw_probe(struct platform_device *dsidev)
{
@@ -4609,7 +4637,6 @@ static int __init omap_dsihw_probe(struct platform_device *dsidev)
	int r, i;
	struct resource *dsi_mem;
	struct dsi_data *dsi;
	struct omap_dss_board_info *pdata = dsidev->dev.platform_data;

	dsi = devm_kzalloc(&dsidev->dev, sizeof(*dsi), GFP_KERNEL);
	if (!dsi)
@@ -4697,26 +4724,7 @@ static int __init omap_dsihw_probe(struct platform_device *dsidev)
	else
		dsi->num_lanes_supported = 3;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (dssdev->type != OMAP_DISPLAY_TYPE_DSI)
			continue;

		if (dssdev->phy.dsi.module != dsi->module_id)
			continue;

		r = dsi_init_display(dssdev);
		if (r) {
			DSSERR("device %s init failed: %d\n", dssdev->name, r);
			continue;
		}

		r = omap_dss_register_device(dssdev, &dsidev->dev, i);
		if (r)
			DSSERR("device %s register failed: %d\n",
				dssdev->name, r);
	}
	dsi_probe_pdata(dsidev);

	dsi_runtime_put(dsidev);

+26 −19
Original line number Diff line number Diff line
@@ -771,12 +771,35 @@ static void hdmi_put_clocks(void)
		clk_put(hdmi.sys_clk);
}

static void __init hdmi_probe_pdata(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int r, i;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (dssdev->type != OMAP_DISPLAY_TYPE_HDMI)
			continue;

		r = hdmi_init_display(dssdev);
		if (r) {
			DSSERR("device %s init failed: %d\n", dssdev->name, r);
			continue;
		}

		r = omap_dss_register_device(dssdev, &pdev->dev, i);
		if (r)
			DSSERR("device %s register failed: %d\n",
					dssdev->name, r);
	}
}

/* HDMI HW IP initialisation */
static int __init omapdss_hdmihw_probe(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	struct resource *hdmi_mem;
	int r, i;
	int r;

	hdmi.pdev = pdev;

@@ -813,23 +836,7 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev)

	dss_debugfs_create_file("hdmi", hdmi_dump_regs);

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (dssdev->type != OMAP_DISPLAY_TYPE_HDMI)
			continue;

		r = hdmi_init_display(dssdev);
		if (r) {
			DSSERR("device %s init failed: %d\n", dssdev->name, r);
			continue;
		}

		r = omap_dss_register_device(dssdev, &pdev->dev, i);
		if (r)
			DSSERR("device %s register failed: %d\n",
					dssdev->name, r);
	}
	hdmi_probe_pdata(pdev);

#if defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI) || \
	defined(CONFIG_SND_OMAP_SOC_OMAP4_HDMI_MODULE)
+26 −19
Original line number Diff line number Diff line
@@ -927,14 +927,37 @@ static int __init rfbi_init_display(struct omap_dss_device *dssdev)
	return 0;
}

static void __init rfbi_probe_pdata(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int i, r;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (dssdev->type != OMAP_DISPLAY_TYPE_DBI)
			continue;

		r = rfbi_init_display(dssdev);
		if (r) {
			DSSERR("device %s init failed: %d\n", dssdev->name, r);
			continue;
		}

		r = omap_dss_register_device(dssdev, &pdev->dev, i);
		if (r)
			DSSERR("device %s register failed: %d\n",
				dssdev->name, r);
	}
}

/* RFBI HW IP initialisation */
static int __init omap_rfbihw_probe(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	u32 rev;
	struct resource *rfbi_mem;
	struct clk *clk;
	int r, i;
	int r;

	rfbi.pdev = pdev;

@@ -979,23 +1002,7 @@ static int __init omap_rfbihw_probe(struct platform_device *pdev)

	dss_debugfs_create_file("rfbi", rfbi_dump_regs);

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (dssdev->type != OMAP_DISPLAY_TYPE_DBI)
			continue;

		r = rfbi_init_display(dssdev);
		if (r) {
			DSSERR("device %s init failed: %d\n", dssdev->name, r);
			continue;
		}

		r = omap_dss_register_device(dssdev, &pdev->dev, i);
		if (r)
			DSSERR("device %s register failed: %d\n",
				dssdev->name, r);
	}
	rfbi_probe_pdata(pdev);

	return 0;

+6 −1
Original line number Diff line number Diff line
@@ -176,7 +176,7 @@ static int __init sdi_init_display(struct omap_dss_device *dssdev)
	return 0;
}

static int __init omap_sdi_probe(struct platform_device *pdev)
static void __init sdi_probe_pdata(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int i, r;
@@ -198,6 +198,11 @@ static int __init omap_sdi_probe(struct platform_device *pdev)
			DSSERR("device %s register failed: %d\n",
					dssdev->name, r);
	}
}

static int __init omap_sdi_probe(struct platform_device *pdev)
{
	sdi_probe_pdata(pdev);

	return 0;
}
Loading