diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/apply.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c index debd37aa9128..3fd2ea163f05 100644 --- a/drivers/video/omap2/dss/apply.c +++ b/drivers/video/omap2/dss/apply.c | |||
@@ -69,8 +69,6 @@ struct ovl_priv_data { | |||
69 | 69 | ||
70 | struct omap_overlay_info info; | 70 | struct omap_overlay_info info; |
71 | 71 | ||
72 | enum omap_channel channel; | ||
73 | |||
74 | u32 fifo_low; | 72 | u32 fifo_low; |
75 | u32 fifo_high; | 73 | u32 fifo_high; |
76 | 74 | ||
@@ -78,7 +76,7 @@ struct ovl_priv_data { | |||
78 | bool shadow_extra_info_dirty; | 76 | bool shadow_extra_info_dirty; |
79 | 77 | ||
80 | bool enabled; | 78 | bool enabled; |
81 | 79 | enum omap_channel channel; | |
82 | }; | 80 | }; |
83 | 81 | ||
84 | struct mgr_priv_data { | 82 | struct mgr_priv_data { |
@@ -384,8 +382,6 @@ static void dss_ovl_write_regs(struct omap_overlay *ovl) | |||
384 | 382 | ||
385 | ilace = ovl->manager->device->type == OMAP_DISPLAY_TYPE_VENC; | 383 | ilace = ovl->manager->device->type == OMAP_DISPLAY_TYPE_VENC; |
386 | 384 | ||
387 | dispc_ovl_set_channel_out(ovl->id, op->channel); | ||
388 | |||
389 | r = dispc_ovl_setup(ovl->id, oi, ilace, replication); | 385 | r = dispc_ovl_setup(ovl->id, oi, ilace, replication); |
390 | if (r) { | 386 | if (r) { |
391 | /* | 387 | /* |
@@ -423,6 +419,7 @@ static void dss_ovl_write_regs_extra(struct omap_overlay *ovl) | |||
423 | * disabled */ | 419 | * disabled */ |
424 | 420 | ||
425 | dispc_ovl_enable(ovl->id, op->enabled); | 421 | dispc_ovl_enable(ovl->id, op->enabled); |
422 | dispc_ovl_set_channel_out(ovl->id, op->channel); | ||
426 | 423 | ||
427 | mp = get_mgr_priv(ovl->manager); | 424 | mp = get_mgr_priv(ovl->manager); |
428 | 425 | ||
@@ -608,19 +605,12 @@ static void omap_dss_mgr_apply_ovl(struct omap_overlay *ovl) | |||
608 | 605 | ||
609 | op = get_ovl_priv(ovl); | 606 | op = get_ovl_priv(ovl); |
610 | 607 | ||
611 | if (ovl->manager_changed) { | ||
612 | ovl->manager_changed = false; | ||
613 | op->user_info_dirty = true; | ||
614 | } | ||
615 | |||
616 | if (!op->user_info_dirty) | 608 | if (!op->user_info_dirty) |
617 | return; | 609 | return; |
618 | 610 | ||
619 | op->user_info_dirty = false; | 611 | op->user_info_dirty = false; |
620 | op->dirty = true; | 612 | op->dirty = true; |
621 | op->info = op->user_info; | 613 | op->info = op->user_info; |
622 | |||
623 | op->channel = ovl->manager->id; | ||
624 | } | 614 | } |
625 | 615 | ||
626 | static void omap_dss_mgr_apply_mgr(struct omap_overlay_manager *mgr) | 616 | static void omap_dss_mgr_apply_mgr(struct omap_overlay_manager *mgr) |
@@ -910,9 +900,11 @@ int dss_ovl_set_manager(struct omap_overlay *ovl, | |||
910 | goto err; | 900 | goto err; |
911 | } | 901 | } |
912 | 902 | ||
903 | op->channel = mgr->id; | ||
904 | op->extra_info_dirty = true; | ||
905 | |||
913 | ovl->manager = mgr; | 906 | ovl->manager = mgr; |
914 | list_add_tail(&ovl->list, &mgr->overlays); | 907 | list_add_tail(&ovl->list, &mgr->overlays); |
915 | ovl->manager_changed = true; | ||
916 | 908 | ||
917 | spin_unlock_irqrestore(&data_lock, flags); | 909 | spin_unlock_irqrestore(&data_lock, flags); |
918 | 910 | ||
@@ -960,9 +952,10 @@ int dss_ovl_unset_manager(struct omap_overlay *ovl) | |||
960 | goto err; | 952 | goto err; |
961 | } | 953 | } |
962 | 954 | ||
955 | op->channel = -1; | ||
956 | |||
963 | ovl->manager = NULL; | 957 | ovl->manager = NULL; |
964 | list_del(&ovl->list); | 958 | list_del(&ovl->list); |
965 | ovl->manager_changed = true; | ||
966 | 959 | ||
967 | spin_unlock_irqrestore(&data_lock, flags); | 960 | spin_unlock_irqrestore(&data_lock, flags); |
968 | 961 | ||