Skip to content

Commit

Permalink
OMAP: DSS2: remove sub-panel system
Browse files Browse the repository at this point in the history
The system to allow panel drivers to exists as attached to ctrl drivers
did never work very well. It is not useed, and this patch removes it to
make the driver cleaner.

For now, controller drivers need to include also the panel driver code. In
the future a proper mechanism for this should be developed, perhaps by
creating busses for controllers.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
  • Loading branch information
Tomi Valkeinen committed Feb 18, 2010
1 parent e296264 commit e020f9a
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 65 deletions.
3 changes: 0 additions & 3 deletions arch/arm/plat-omap/include/plat/display.h
Original file line number Diff line number Diff line change
Expand Up @@ -431,14 +431,11 @@ struct omap_dss_device {
enum omap_panel_config config;

u8 recommended_bpp;

struct omap_dss_device *ctrl;
} panel;

struct {
u8 pixel_size;
struct rfbi_timings rfbi_timings;
struct omap_dss_device *panel;
} ctrl;

int reset_gpio;
Expand Down
35 changes: 3 additions & 32 deletions drivers/video/omap2/dss/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -771,11 +771,8 @@ static int dss_driver_probe(struct device *dev)

dss_init_device(core.pdev, dssdev);

/* skip this if the device is behind a ctrl */
if (!dssdev->panel.ctrl) {
force = pdata->default_device == dssdev;
dss_recheck_connections(dssdev, force);
}
force = pdata->default_device == dssdev;
dss_recheck_connections(dssdev, force);

r = dssdrv->probe(dssdev);

Expand Down Expand Up @@ -861,8 +858,6 @@ static void omap_dss_dev_release(struct device *dev)
int omap_dss_register_device(struct omap_dss_device *dssdev)
{
static int dev_num;
static int panel_num;
int r;

WARN_ON(!dssdev->driver_name);

Expand All @@ -871,36 +866,12 @@ int omap_dss_register_device(struct omap_dss_device *dssdev)
dssdev->dev.parent = &dss_bus;
dssdev->dev.release = omap_dss_dev_release;
dev_set_name(&dssdev->dev, "display%d", dev_num++);
r = device_register(&dssdev->dev);
if (r)
return r;

if (dssdev->ctrl.panel) {
struct omap_dss_device *panel = dssdev->ctrl.panel;

panel->panel.ctrl = dssdev;

reset_device(&panel->dev, 1);
panel->dev.bus = &dss_bus_type;
panel->dev.parent = &dssdev->dev;
panel->dev.release = omap_dss_dev_release;
dev_set_name(&panel->dev, "panel%d", panel_num++);
r = device_register(&panel->dev);
if (r)
return r;
}

return 0;
return device_register(&dssdev->dev);
}

void omap_dss_unregister_device(struct omap_dss_device *dssdev)
{
device_unregister(&dssdev->dev);

if (dssdev->ctrl.panel) {
struct omap_dss_device *panel = dssdev->ctrl.panel;
device_unregister(&panel->dev);
}
}

/* BUS */
Expand Down
32 changes: 2 additions & 30 deletions drivers/video/omap2/dss/display.c
Original file line number Diff line number Diff line change
Expand Up @@ -591,10 +591,6 @@ struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from)

int match(struct device *dev, void *data)
{
/* skip panels connected to controllers */
if (to_dss_device(dev)->panel.ctrl)
return 0;

return 1;
}

Expand Down Expand Up @@ -626,45 +622,21 @@ EXPORT_SYMBOL(omap_dss_find_device);

int omap_dss_start_device(struct omap_dss_device *dssdev)
{
int r;

if (!dssdev->driver) {
DSSDBG("no driver\n");
r = -ENODEV;
goto err0;
}

if (dssdev->ctrl.panel && !dssdev->ctrl.panel->driver) {
DSSDBG("no panel driver\n");
r = -ENODEV;
goto err0;
return -ENODEV;
}

if (!try_module_get(dssdev->dev.driver->owner)) {
r = -ENODEV;
goto err0;
}

if (dssdev->ctrl.panel) {
if (!try_module_get(dssdev->ctrl.panel->dev.driver->owner)) {
r = -ENODEV;
goto err1;
}
return -ENODEV;
}

return 0;
err1:
module_put(dssdev->dev.driver->owner);
err0:
return r;
}
EXPORT_SYMBOL(omap_dss_start_device);

void omap_dss_stop_device(struct omap_dss_device *dssdev)
{
if (dssdev->ctrl.panel)
module_put(dssdev->ctrl.panel->dev.driver->owner);

module_put(dssdev->dev.driver->owner);
}
EXPORT_SYMBOL(omap_dss_stop_device);
Expand Down

0 comments on commit e020f9a

Please sign in to comment.