diff options
-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); |