Commit 9d8232a7 authored by Tomi Valkeinen's avatar Tomi Valkeinen

OMAPDSS: init omap_dss_devices internally

Now that each output driver creates their own display devices, the
output drivers can also initialize those devices.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 35deca3d
...@@ -359,46 +359,6 @@ void dss_init_device(struct platform_device *pdev, ...@@ -359,46 +359,6 @@ void dss_init_device(struct platform_device *pdev,
int i; int i;
int r; int r;
switch (dssdev->type) {
#ifdef CONFIG_OMAP2_DSS_DPI
case OMAP_DISPLAY_TYPE_DPI:
r = dpi_init_display(dssdev);
break;
#endif
#ifdef CONFIG_OMAP2_DSS_RFBI
case OMAP_DISPLAY_TYPE_DBI:
r = rfbi_init_display(dssdev);
break;
#endif
#ifdef CONFIG_OMAP2_DSS_VENC
case OMAP_DISPLAY_TYPE_VENC:
r = venc_init_display(dssdev);
break;
#endif
#ifdef CONFIG_OMAP2_DSS_SDI
case OMAP_DISPLAY_TYPE_SDI:
r = sdi_init_display(dssdev);
break;
#endif
#ifdef CONFIG_OMAP2_DSS_DSI
case OMAP_DISPLAY_TYPE_DSI:
r = dsi_init_display(dssdev);
break;
#endif
case OMAP_DISPLAY_TYPE_HDMI:
r = hdmi_init_display(dssdev);
break;
default:
DSSERR("Support for display '%s' not compiled in.\n",
dssdev->name);
return;
}
if (r) {
DSSERR("failed to init display %s\n", dssdev->name);
return;
}
/* create device sysfs files */ /* create device sysfs files */
i = 0; i = 0;
while ((attr = display_sysfs_attrs[i++]) != NULL) { while ((attr = display_sysfs_attrs[i++]) != NULL) {
......
...@@ -339,7 +339,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev, ...@@ -339,7 +339,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
} }
EXPORT_SYMBOL(dpi_check_timings); EXPORT_SYMBOL(dpi_check_timings);
int dpi_init_display(struct omap_dss_device *dssdev) static int __init dpi_init_display(struct omap_dss_device *dssdev)
{ {
DSSDBG("init_display\n"); DSSDBG("init_display\n");
...@@ -376,6 +376,12 @@ static int __init omap_dpi_probe(struct platform_device *pdev) ...@@ -376,6 +376,12 @@ static int __init omap_dpi_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_DPI) if (dssdev->type != OMAP_DISPLAY_TYPE_DPI)
continue; continue;
r = dpi_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); r = omap_dss_register_device(dssdev, &pdev->dev, i);
if (r) if (r)
DSSERR("device %s register failed: %d\n", DSSERR("device %s register failed: %d\n",
......
...@@ -4454,7 +4454,7 @@ int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable) ...@@ -4454,7 +4454,7 @@ int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable)
} }
EXPORT_SYMBOL(omapdss_dsi_enable_te); EXPORT_SYMBOL(omapdss_dsi_enable_te);
int dsi_init_display(struct omap_dss_device *dssdev) static int __init dsi_init_display(struct omap_dss_device *dssdev)
{ {
struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev); struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev);
struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
...@@ -4710,6 +4710,12 @@ static int __init omap_dsihw_probe(struct platform_device *dsidev) ...@@ -4710,6 +4710,12 @@ static int __init omap_dsihw_probe(struct platform_device *dsidev)
if (dssdev->phy.dsi.module != dsi_module) if (dssdev->phy.dsi.module != dsi_module)
continue; 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); r = omap_dss_register_device(dssdev, &dsidev->dev, i);
if (r) if (r)
DSSERR("device %s register failed: %d\n", DSSERR("device %s register failed: %d\n",
......
...@@ -275,7 +275,6 @@ int dss_calc_clock_div(bool is_tft, unsigned long req_pck, ...@@ -275,7 +275,6 @@ int dss_calc_clock_div(bool is_tft, unsigned long req_pck,
/* SDI */ /* SDI */
int sdi_init_platform_driver(void) __init; int sdi_init_platform_driver(void) __init;
void sdi_uninit_platform_driver(void) __exit; void sdi_uninit_platform_driver(void) __exit;
int sdi_init_display(struct omap_dss_device *display);
/* DSI */ /* DSI */
#ifdef CONFIG_OMAP2_DSS_DSI #ifdef CONFIG_OMAP2_DSS_DSI
...@@ -291,7 +290,6 @@ void dsi_runtime_put(struct platform_device *dsidev); ...@@ -291,7 +290,6 @@ void dsi_runtime_put(struct platform_device *dsidev);
void dsi_dump_clocks(struct seq_file *s); void dsi_dump_clocks(struct seq_file *s);
int dsi_init_display(struct omap_dss_device *display);
void dsi_irq_handler(void); void dsi_irq_handler(void);
u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt); u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt);
...@@ -366,7 +364,6 @@ static inline struct platform_device *dsi_get_dsidev_from_id(int module) ...@@ -366,7 +364,6 @@ static inline struct platform_device *dsi_get_dsidev_from_id(int module)
/* DPI */ /* DPI */
int dpi_init_platform_driver(void) __init; int dpi_init_platform_driver(void) __init;
void dpi_uninit_platform_driver(void) __exit; void dpi_uninit_platform_driver(void) __exit;
int dpi_init_display(struct omap_dss_device *dssdev);
/* DISPC */ /* DISPC */
int dispc_init_platform_driver(void) __init; int dispc_init_platform_driver(void) __init;
...@@ -437,7 +434,6 @@ void dispc_mgr_setup(enum omap_channel channel, ...@@ -437,7 +434,6 @@ void dispc_mgr_setup(enum omap_channel channel,
#ifdef CONFIG_OMAP2_DSS_VENC #ifdef CONFIG_OMAP2_DSS_VENC
int venc_init_platform_driver(void) __init; int venc_init_platform_driver(void) __init;
void venc_uninit_platform_driver(void) __exit; void venc_uninit_platform_driver(void) __exit;
int venc_init_display(struct omap_dss_device *display);
unsigned long venc_get_pixel_clock(void); unsigned long venc_get_pixel_clock(void);
#else #else
static inline unsigned long venc_get_pixel_clock(void) static inline unsigned long venc_get_pixel_clock(void)
...@@ -451,13 +447,8 @@ static inline unsigned long venc_get_pixel_clock(void) ...@@ -451,13 +447,8 @@ static inline unsigned long venc_get_pixel_clock(void)
#ifdef CONFIG_OMAP4_DSS_HDMI #ifdef CONFIG_OMAP4_DSS_HDMI
int hdmi_init_platform_driver(void) __init; int hdmi_init_platform_driver(void) __init;
void hdmi_uninit_platform_driver(void) __exit; void hdmi_uninit_platform_driver(void) __exit;
int hdmi_init_display(struct omap_dss_device *dssdev);
unsigned long hdmi_get_pixel_clock(void); unsigned long hdmi_get_pixel_clock(void);
#else #else
static inline int hdmi_init_display(struct omap_dss_device *dssdev)
{
return 0;
}
static inline unsigned long hdmi_get_pixel_clock(void) static inline unsigned long hdmi_get_pixel_clock(void)
{ {
WARN("%s: HDMI not compiled in, returning pclk as 0\n", __func__); WARN("%s: HDMI not compiled in, returning pclk as 0\n", __func__);
...@@ -477,7 +468,6 @@ void hdmi_panel_exit(void); ...@@ -477,7 +468,6 @@ void hdmi_panel_exit(void);
/* RFBI */ /* RFBI */
int rfbi_init_platform_driver(void) __init; int rfbi_init_platform_driver(void) __init;
void rfbi_uninit_platform_driver(void) __exit; void rfbi_uninit_platform_driver(void) __exit;
int rfbi_init_display(struct omap_dss_device *display);
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS #ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
......
...@@ -147,7 +147,7 @@ static void hdmi_runtime_put(void) ...@@ -147,7 +147,7 @@ static void hdmi_runtime_put(void)
WARN_ON(r < 0); WARN_ON(r < 0);
} }
int hdmi_init_display(struct omap_dss_device *dssdev) static int __init hdmi_init_display(struct omap_dss_device *dssdev)
{ {
DSSDBG("init_display\n"); DSSDBG("init_display\n");
...@@ -819,6 +819,12 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev) ...@@ -819,6 +819,12 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_HDMI) if (dssdev->type != OMAP_DISPLAY_TYPE_HDMI)
continue; 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); r = omap_dss_register_device(dssdev, &pdev->dev, i);
if (r) if (r)
DSSERR("device %s register failed: %d\n", DSSERR("device %s register failed: %d\n",
......
...@@ -920,7 +920,7 @@ void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev) ...@@ -920,7 +920,7 @@ void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev)
} }
EXPORT_SYMBOL(omapdss_rfbi_display_disable); EXPORT_SYMBOL(omapdss_rfbi_display_disable);
int rfbi_init_display(struct omap_dss_device *dssdev) static int __init rfbi_init_display(struct omap_dss_device *dssdev)
{ {
rfbi.dssdev[dssdev->phy.rfbi.channel] = dssdev; rfbi.dssdev[dssdev->phy.rfbi.channel] = dssdev;
dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE;
...@@ -985,6 +985,12 @@ static int __init omap_rfbihw_probe(struct platform_device *pdev) ...@@ -985,6 +985,12 @@ static int __init omap_rfbihw_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_DBI) if (dssdev->type != OMAP_DISPLAY_TYPE_DBI)
continue; 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); r = omap_dss_register_device(dssdev, &pdev->dev, i);
if (r) if (r)
DSSERR("device %s register failed: %d\n", DSSERR("device %s register failed: %d\n",
......
...@@ -156,7 +156,7 @@ void omapdss_sdi_display_disable(struct omap_dss_device *dssdev) ...@@ -156,7 +156,7 @@ void omapdss_sdi_display_disable(struct omap_dss_device *dssdev)
} }
EXPORT_SYMBOL(omapdss_sdi_display_disable); EXPORT_SYMBOL(omapdss_sdi_display_disable);
int sdi_init_display(struct omap_dss_device *dssdev) static int __init sdi_init_display(struct omap_dss_device *dssdev)
{ {
DSSDBG("SDI init\n"); DSSDBG("SDI init\n");
...@@ -187,6 +187,12 @@ static int __init omap_sdi_probe(struct platform_device *pdev) ...@@ -187,6 +187,12 @@ static int __init omap_sdi_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_SDI) if (dssdev->type != OMAP_DISPLAY_TYPE_SDI)
continue; continue;
r = sdi_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); r = omap_dss_register_device(dssdev, &pdev->dev, i);
if (r) if (r)
DSSERR("device %s register failed: %d\n", DSSERR("device %s register failed: %d\n",
......
...@@ -725,7 +725,7 @@ static struct omap_dss_driver venc_driver = { ...@@ -725,7 +725,7 @@ static struct omap_dss_driver venc_driver = {
}; };
/* driver end */ /* driver end */
int venc_init_display(struct omap_dss_device *dssdev) static int __init venc_init_display(struct omap_dss_device *dssdev)
{ {
DSSDBG("init_display\n"); DSSDBG("init_display\n");
...@@ -883,6 +883,12 @@ static int __init omap_venchw_probe(struct platform_device *pdev) ...@@ -883,6 +883,12 @@ static int __init omap_venchw_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_VENC) if (dssdev->type != OMAP_DISPLAY_TYPE_VENC)
continue; continue;
r = venc_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); r = omap_dss_register_device(dssdev, &pdev->dev, i);
if (r) if (r)
DSSERR("device %s register failed: %d\n", DSSERR("device %s register failed: %d\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment