diff options
author | Tomi Valkeinen <tomi.valkeinen@nokia.com> | 2010-02-17 06:36:48 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@nokia.com> | 2010-02-18 06:19:41 -0500 |
commit | e020f9af6d8311cd935217219f49175e161be100 (patch) | |
tree | 22fe43864e3238b8c51a12b3d4cf25202c7ec0f3 | |
parent | e296264977f68ddf395b8f93f8e174930f88499a (diff) |
OMAP: DSS2: remove sub-panel system
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>
-rw-r--r-- | arch/arm/plat-omap/include/plat/display.h | 3 | ||||
-rw-r--r-- | drivers/video/omap2/dss/core.c | 35 | ||||
-rw-r--r-- | drivers/video/omap2/dss/display.c | 32 |
3 files changed, 5 insertions, 65 deletions
diff --git a/arch/arm/plat-omap/include/plat/display.h b/arch/arm/plat-omap/include/plat/display.h index 8c3688b45f3d..0022f6c878c1 100644 --- a/arch/arm/plat-omap/include/plat/display.h +++ b/arch/arm/plat-omap/include/plat/display.h | |||
@@ -431,14 +431,11 @@ struct omap_dss_device { | |||
431 | enum omap_panel_config config; | 431 | enum omap_panel_config config; |
432 | 432 | ||
433 | u8 recommended_bpp; | 433 | u8 recommended_bpp; |
434 | |||
435 | struct omap_dss_device *ctrl; | ||
436 | } panel; | 434 | } panel; |
437 | 435 | ||
438 | struct { | 436 | struct { |
439 | u8 pixel_size; | 437 | u8 pixel_size; |
440 | struct rfbi_timings rfbi_timings; | 438 | struct rfbi_timings rfbi_timings; |
441 | struct omap_dss_device *panel; | ||
442 | } ctrl; | 439 | } ctrl; |
443 | 440 | ||
444 | int reset_gpio; | 441 | int reset_gpio; |
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index 72547dfc56b8..967cbda1fd72 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c | |||
@@ -771,11 +771,8 @@ static int dss_driver_probe(struct device *dev) | |||
771 | 771 | ||
772 | dss_init_device(core.pdev, dssdev); | 772 | dss_init_device(core.pdev, dssdev); |
773 | 773 | ||
774 | /* skip this if the device is behind a ctrl */ | 774 | force = pdata->default_device == dssdev; |
775 | if (!dssdev->panel.ctrl) { | 775 | dss_recheck_connections(dssdev, force); |
776 | force = pdata->default_device == dssdev; | ||
777 | dss_recheck_connections(dssdev, force); | ||
778 | } | ||
779 | 776 | ||
780 | r = dssdrv->probe(dssdev); | 777 | r = dssdrv->probe(dssdev); |
781 | 778 | ||
@@ -861,8 +858,6 @@ static void omap_dss_dev_release(struct device *dev) | |||
861 | int omap_dss_register_device(struct omap_dss_device *dssdev) | 858 | int omap_dss_register_device(struct omap_dss_device *dssdev) |
862 | { | 859 | { |
863 | static int dev_num; | 860 | static int dev_num; |
864 | static int panel_num; | ||
865 | int r; | ||
866 | 861 | ||
867 | WARN_ON(!dssdev->driver_name); | 862 | WARN_ON(!dssdev->driver_name); |
868 | 863 | ||
@@ -871,36 +866,12 @@ int omap_dss_register_device(struct omap_dss_device *dssdev) | |||
871 | dssdev->dev.parent = &dss_bus; | 866 | dssdev->dev.parent = &dss_bus; |
872 | dssdev->dev.release = omap_dss_dev_release; | 867 | dssdev->dev.release = omap_dss_dev_release; |
873 | dev_set_name(&dssdev->dev, "display%d", dev_num++); | 868 | dev_set_name(&dssdev->dev, "display%d", dev_num++); |
874 | r = device_register(&dssdev->dev); | 869 | return device_register(&dssdev->dev); |
875 | if (r) | ||
876 | return r; | ||
877 | |||
878 | if (dssdev->ctrl.panel) { | ||
879 | struct omap_dss_device *panel = dssdev->ctrl.panel; | ||
880 | |||
881 | panel->panel.ctrl = dssdev; | ||
882 | |||
883 | reset_device(&panel->dev, 1); | ||
884 | panel->dev.bus = &dss_bus_type; | ||
885 | panel->dev.parent = &dssdev->dev; | ||
886 | panel->dev.release = omap_dss_dev_release; | ||
887 | dev_set_name(&panel->dev, "panel%d", panel_num++); | ||
888 | r = device_register(&panel->dev); | ||
889 | if (r) | ||
890 | return r; | ||
891 | } | ||
892 | |||
893 | return 0; | ||
894 | } | 870 | } |
895 | 871 | ||
896 | void omap_dss_unregister_device(struct omap_dss_device *dssdev) | 872 | void omap_dss_unregister_device(struct omap_dss_device *dssdev) |
897 | { | 873 | { |
898 | device_unregister(&dssdev->dev); | 874 | device_unregister(&dssdev->dev); |
899 | |||
900 | if (dssdev->ctrl.panel) { | ||
901 | struct omap_dss_device *panel = dssdev->ctrl.panel; | ||
902 | device_unregister(&panel->dev); | ||
903 | } | ||
904 | } | 875 | } |
905 | 876 | ||
906 | /* BUS */ | 877 | /* BUS */ |
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c index 3b92b84b9560..3f345b8cbcb0 100644 --- a/drivers/video/omap2/dss/display.c +++ b/drivers/video/omap2/dss/display.c | |||
@@ -591,10 +591,6 @@ struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from) | |||
591 | 591 | ||
592 | int match(struct device *dev, void *data) | 592 | int match(struct device *dev, void *data) |
593 | { | 593 | { |
594 | /* skip panels connected to controllers */ | ||
595 | if (to_dss_device(dev)->panel.ctrl) | ||
596 | return 0; | ||
597 | |||
598 | return 1; | 594 | return 1; |
599 | } | 595 | } |
600 | 596 | ||
@@ -626,45 +622,21 @@ EXPORT_SYMBOL(omap_dss_find_device); | |||
626 | 622 | ||
627 | int omap_dss_start_device(struct omap_dss_device *dssdev) | 623 | int omap_dss_start_device(struct omap_dss_device *dssdev) |
628 | { | 624 | { |
629 | int r; | ||
630 | |||
631 | if (!dssdev->driver) { | 625 | if (!dssdev->driver) { |
632 | DSSDBG("no driver\n"); | 626 | DSSDBG("no driver\n"); |
633 | r = -ENODEV; | 627 | return -ENODEV; |
634 | goto err0; | ||
635 | } | ||
636 | |||
637 | if (dssdev->ctrl.panel && !dssdev->ctrl.panel->driver) { | ||
638 | DSSDBG("no panel driver\n"); | ||
639 | r = -ENODEV; | ||
640 | goto err0; | ||
641 | } | 628 | } |
642 | 629 | ||
643 | if (!try_module_get(dssdev->dev.driver->owner)) { | 630 | if (!try_module_get(dssdev->dev.driver->owner)) { |
644 | r = -ENODEV; | 631 | return -ENODEV; |
645 | goto err0; | ||
646 | } | ||
647 | |||
648 | if (dssdev->ctrl.panel) { | ||
649 | if (!try_module_get(dssdev->ctrl.panel->dev.driver->owner)) { | ||
650 | r = -ENODEV; | ||
651 | goto err1; | ||
652 | } | ||
653 | } | 632 | } |
654 | 633 | ||
655 | return 0; | 634 | return 0; |
656 | err1: | ||
657 | module_put(dssdev->dev.driver->owner); | ||
658 | err0: | ||
659 | return r; | ||
660 | } | 635 | } |
661 | EXPORT_SYMBOL(omap_dss_start_device); | 636 | EXPORT_SYMBOL(omap_dss_start_device); |
662 | 637 | ||
663 | void omap_dss_stop_device(struct omap_dss_device *dssdev) | 638 | void omap_dss_stop_device(struct omap_dss_device *dssdev) |
664 | { | 639 | { |
665 | if (dssdev->ctrl.panel) | ||
666 | module_put(dssdev->ctrl.panel->dev.driver->owner); | ||
667 | |||
668 | module_put(dssdev->dev.driver->owner); | 640 | module_put(dssdev->dev.driver->owner); |
669 | } | 641 | } |
670 | EXPORT_SYMBOL(omap_dss_stop_device); | 642 | EXPORT_SYMBOL(omap_dss_stop_device); |