intel_extreme: Cleanup pipe enablement ordering

This commit is contained in:
Alexander von Gluck IV
2015-11-13 14:56:12 -06:00
parent fa45565eb7
commit 21e840d154
2 changed files with 13 additions and 3 deletions
@@ -94,9 +94,6 @@ DisplayPipe::Enable(display_mode* target, addr_t portAddress)
return;
}
// Enable display pipe
_Enable(true);
// Wait for the clocks to stabilize
spin(150);
@@ -123,6 +120,11 @@ DisplayPipe::Enable(display_mode* target, addr_t portAddress)
write32(fPipeBase + REGISTER_REGISTER(INTEL_DISPLAY_A_POS), 0);
// This is useful for debugging: it sets the border to red, so you
// can see what is border and what is porch (black area around the
// sync)
//write32(fPipeBase + REGISTER_REGISTER(INTEL_DISPLAY_A_RED), 0x00FF0000);
// TODO: Review these
write32(fPipeBase + REGISTER_REGISTER(INTEL_DISPLAY_A_IMAGE_SIZE),
((uint32)(target->virtual_width - 1) << 16)
@@ -138,6 +140,10 @@ DisplayPipe::Enable(display_mode* target, addr_t portAddress)
? DISPLAY_MONITOR_POSITIVE_HSYNC : 0)
| ((target->timing.flags & B_POSITIVE_VSYNC) != 0
? DISPLAY_MONITOR_POSITIVE_VSYNC : 0));
// Enable display pipe
_Enable(true);
}
@@ -100,6 +100,10 @@ Port::AssignPipe(pipe_index pipeIndex)
if (fDisplayPipe == NULL)
return B_NO_MEMORY;
// Disable display pipe until modesetting enables it
if (fDisplayPipe->IsEnabled())
fDisplayPipe->Disable();
read32(portRegister);
return B_OK;