Skip to contentSkip to conversation

omapfb -- panel initialization inflexibility

PATCH Applied Brian Swetland 3 participants 4 messages Dec 3, 2005 – Dec 20, 2005 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

I have an lcd panel connected to a omap730 based system that *requires* that MCK, HSYNC, and VSYNC are active when it is powered on. It will not initialize correctly otherwise.

I've modified my omapfb driver so that there is a new OMAP_LCDC_* flag (OMAP_LCDC_PANEL_INIT_AFTER_LCDC) that determines if the enable hook is called where it is in the existing driver, or if it is called after omapfb_set_update_mode() returns.

Any objections to this workaround? Any suggestions for a better name for the flag? Is there a better value than 0x200 for the flag?

Thanks,

Brian

#1 lore raw

Actually there is no requirement on calling panel->enable() before omapfb_set_update_mode(), which enables the LCD DMA. It's even possible to enable / disable the panel while having the LCD DMA active.

So lets simply switch the order of the two calls in omapfb_probe and the suspend / resume functions. Please send a patch.

--Imre

Quoted 19 lines · ext Brian Swetland

I have an lcd panel connected to a omap730 based system that *requires* that MCK, HSYNC, and VSYNC are active when it is powered on. It will not initialize correctly otherwise.

I've modified my omapfb driver so that there is a new OMAP_LCDC_* flag (OMAP_LCDC_PANEL_INIT_AFTER_LCDC) that determines if the enable hook is called where it is in the existing driver, or if it is called after omapfb_set_update_mode() returns.

Any objections to this workaround? Any suggestions for a better name for the flag? Is there a better value than 0x200 for the flag?

Thanks,

Brian
_______________________________________________
Linux-omap-open-source mailing list
[email protected]
http://linux.omap.com/mailman/listinfo/linux-omap-open-source

#2 lore raw

PATCH 1/1 omapfb: panel enable/disable reordering

[Imre Deak <[email protected]>]

Quoted 6 lines

Actually there is no requirement on calling panel->enable() before omapfb_set_update_mode(), which enables the LCD DMA. It's even possible to enable / disable the panel while having the LCD DMA active.

So lets simply switch the order of the two calls in omapfb_probe and the suspend / resume functions. Please send a patch.

Sounds fine to me.

Here's such a patch.

Brian

drivers/video/omap/omapfb_main.c +12 -10
index 2c4098d..0eefec5 100644
@@ -349,9 +349,9 @@ static int omapfb_blank(int blank, struc
 	switch (blank) {
 	case VESA_NO_BLANKING:
 		if (fbdev->state == OMAPFB_SUSPENDED) {
-			fbdev->panel->enable();
 			if (fbdev->ctrl->resume)
 				fbdev->ctrl->resume();
+			fbdev->panel->enable();
 			fbdev->state = OMAPFB_ACTIVE;
 			if (fbdev->ctrl->get_update_mode() ==
 					OMAPFB_MANUAL_UPDATE)
@@ -360,9 +360,9 @@ static int omapfb_blank(int blank, struc
 		break;
 	case VESA_POWERDOWN:
 		if (fbdev->state == OMAPFB_ACTIVE) {
+			fbdev->panel->disable();
 			if (fbdev->ctrl->suspend)
 				fbdev->ctrl->suspend();
-			fbdev->panel->disable();
 			fbdev->state = OMAPFB_SUSPENDED;
 		}
 		break;
@@ -1108,11 +1108,12 @@ static void omapfb_free_resources(struct
 	switch (state) {
 	case OMAPFB_ACTIVE:
 		unregister_framebuffer(fbdev->fb_info);
-	case 6:
+	case 7:
 		omapfb_unregister_sysfs(fbdev);
-		omapfb_set_update_mode(fbdev, OMAPFB_UPDATE_DISABLED);
-	case 5:
+	case 6:
 		fbdev->panel->disable();
+	case 5:
+		omapfb_set_update_mode(fbdev, OMAPFB_UPDATE_DISABLED);
 	case 4:
 		fbinfo_cleanup(fbdev);
 	case 3:
@@ -1296,11 +1297,6 @@ static int omapfb_probe(struct platform_
 	omap_set_dma_priority(OMAP_DMA_PORT_EMIFF, 15);
 #endif
 
-	r = fbdev->panel->enable();
-	if (r)
-		goto cleanup;
-	init_state++;
-
 	r = ctrl_change_mode(fbdev);
 	if (r) {
 		pr_err("mode setting failed\n");
@@ -1311,6 +1307,12 @@ static int omapfb_probe(struct platform_
 
 	omapfb_set_update_mode(fbdev, manual_update ?
 				   OMAPFB_MANUAL_UPDATE : OMAPFB_AUTO_UPDATE);
+	init_state++;
+
+	r = fbdev->panel->enable();
+	if (r)
+		goto cleanup;
+	init_state++;
 
 	r = omapfb_register_sysfs(fbdev);
 	if (r)
#3 lore raw

Re: [PATCH] omapfb: panel enable/disable reordering

Quoted 10 lines · ext Brian Swetland
Quoted 6 lines

Actually there is no requirement on calling panel->enable() before omapfb_set_update_mode(), which enables the LCD DMA. It's even possible to enable / disable the panel while having the LCD DMA active.

So lets simply switch the order of the two calls in omapfb_probe and the suspend / resume functions. Please send a patch.

Sounds fine to me.

Here's such a patch.

Thanks, applied.

Cheers,
Juha