Skip to content

Commit

Permalink
OMAPDSS: init omap_dss_devices internally
Browse files Browse the repository at this point in the history
Now that each output driver creates their own display devices, the
output drivers can also initialize those devices.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Tomi Valkeinen committed May 11, 2012
1 parent 35deca3 commit 9d8232a
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 56 deletions.
40 changes: 0 additions & 40 deletions drivers/video/omap2/dss/display.c
Original file line number Diff line number Diff line change
Expand Up @@ -359,46 +359,6 @@ void dss_init_device(struct platform_device *pdev,
int i;
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 */
i = 0;
while ((attr = display_sysfs_attrs[i++]) != NULL) {
Expand Down
8 changes: 7 additions & 1 deletion drivers/video/omap2/dss/dpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
}
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");

Expand Down Expand Up @@ -376,6 +376,12 @@ static int __init omap_dpi_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_DPI)
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);
if (r)
DSSERR("device %s register failed: %d\n",
Expand Down
8 changes: 7 additions & 1 deletion drivers/video/omap2/dss/dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -4454,7 +4454,7 @@ int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable)
}
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 dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
Expand Down Expand Up @@ -4710,6 +4710,12 @@ static int __init omap_dsihw_probe(struct platform_device *dsidev)
if (dssdev->phy.dsi.module != dsi_module)
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",
Expand Down
10 changes: 0 additions & 10 deletions drivers/video/omap2/dss/dss.h
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,6 @@ int dss_calc_clock_div(bool is_tft, unsigned long req_pck,
/* SDI */
int sdi_init_platform_driver(void) __init;
void sdi_uninit_platform_driver(void) __exit;
int sdi_init_display(struct omap_dss_device *display);

/* DSI */
#ifdef CONFIG_OMAP2_DSS_DSI
Expand All @@ -291,7 +290,6 @@ void dsi_runtime_put(struct platform_device *dsidev);

void dsi_dump_clocks(struct seq_file *s);

int dsi_init_display(struct omap_dss_device *display);
void dsi_irq_handler(void);
u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt);

Expand Down Expand Up @@ -366,7 +364,6 @@ static inline struct platform_device *dsi_get_dsidev_from_id(int module)
/* DPI */
int dpi_init_platform_driver(void) __init;
void dpi_uninit_platform_driver(void) __exit;
int dpi_init_display(struct omap_dss_device *dssdev);

/* DISPC */
int dispc_init_platform_driver(void) __init;
Expand Down Expand Up @@ -437,7 +434,6 @@ void dispc_mgr_setup(enum omap_channel channel,
#ifdef CONFIG_OMAP2_DSS_VENC
int venc_init_platform_driver(void) __init;
void venc_uninit_platform_driver(void) __exit;
int venc_init_display(struct omap_dss_device *display);
unsigned long venc_get_pixel_clock(void);
#else
static inline unsigned long venc_get_pixel_clock(void)
Expand All @@ -451,13 +447,8 @@ static inline unsigned long venc_get_pixel_clock(void)
#ifdef CONFIG_OMAP4_DSS_HDMI
int hdmi_init_platform_driver(void) __init;
void hdmi_uninit_platform_driver(void) __exit;
int hdmi_init_display(struct omap_dss_device *dssdev);
unsigned long hdmi_get_pixel_clock(void);
#else
static inline int hdmi_init_display(struct omap_dss_device *dssdev)
{
return 0;
}
static inline unsigned long hdmi_get_pixel_clock(void)
{
WARN("%s: HDMI not compiled in, returning pclk as 0\n", __func__);
Expand All @@ -477,7 +468,6 @@ void hdmi_panel_exit(void);
/* RFBI */
int rfbi_init_platform_driver(void) __init;
void rfbi_uninit_platform_driver(void) __exit;
int rfbi_init_display(struct omap_dss_device *display);


#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
Expand Down
8 changes: 7 additions & 1 deletion drivers/video/omap2/dss/hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ static void hdmi_runtime_put(void)
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");

Expand Down Expand Up @@ -819,6 +819,12 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev)
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",
Expand Down
8 changes: 7 additions & 1 deletion drivers/video/omap2/dss/rfbi.c
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,7 @@ void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev)
}
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;
dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE;
Expand Down Expand Up @@ -985,6 +985,12 @@ static int __init omap_rfbihw_probe(struct platform_device *pdev)
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",
Expand Down
8 changes: 7 additions & 1 deletion drivers/video/omap2/dss/sdi.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ void omapdss_sdi_display_disable(struct omap_dss_device *dssdev)
}
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");

Expand Down Expand Up @@ -187,6 +187,12 @@ static int __init omap_sdi_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_SDI)
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);
if (r)
DSSERR("device %s register failed: %d\n",
Expand Down
8 changes: 7 additions & 1 deletion drivers/video/omap2/dss/venc.c
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,7 @@ static struct omap_dss_driver venc_driver = {
};
/* 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");

Expand Down Expand Up @@ -883,6 +883,12 @@ static int __init omap_venchw_probe(struct platform_device *pdev)
if (dssdev->type != OMAP_DISPLAY_TYPE_VENC)
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);
if (r)
DSSERR("device %s register failed: %d\n",
Expand Down

0 comments on commit 9d8232a

Please sign in to comment.