[prev in list] [next in list] [prev in thread] [next in thread]
List: haiku-commits
Subject: [haiku-commits] r42509 - in haiku/trunk: headers/private/graphics/radeon_hd src/add-ons/accelerants/
From: kallisti5 () unixzen ! com
Date: 2011-07-29 6:10:52
Message-ID: 20110729061052.E5C4F68222 () vmsvn ! haiku-os ! org
[Download RAW message or body]
Author: kallisti5
Date: 2011-07-29 08:10:52 +0200 (Fri, 29 Jul 2011)
New Revision: 42509
Changeset: https://dev.haiku-os.org/changeset/42509
Modified:
haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h
haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.cpp
haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.h
haiku/trunk/src/add-ons/accelerants/radeon_hd/mc.cpp
haiku/trunk/src/add-ons/accelerants/radeon_hd/mode.cpp
haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.cpp
haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.h
haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
Log:
* Little cleanup
* Add missing Idle call for connectors
* Reformulate blanking.. this should match what the
register is after the GTF vesa call
* Set FrameBuffer to card internal address
Modified: haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h
===================================================================
--- haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h 2011-07-29 03:32:01 \
UTC (rev 42508)
+++ haiku/trunk/headers/private/graphics/radeon_hd/radeon_hd.h 2011-07-29 06:10:52 \
UTC (rev 42509) @@ -83,6 +83,7 @@
addr_t frame_buffer_phys; // card PCI BAR address of FB
area_id frame_buffer_area; // area of memory mapped FB
+ uint32 frame_buffer_int; // card internal FB location
uint32 frame_buffer_size; // card internal FB aperture size
uint8* frame_buffer; // virtual memory mapped FB
Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.cpp 2011-07-29 03:32:01 UTC \
(rev 42508)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.cpp 2011-07-29 06:10:52 UTC \
(rev 42509) @@ -258,3 +258,10 @@
return B_OK;
}
+
+
+void
+LVDSAllIdle()
+{
+ LVDSPower(1, RHD_POWER_RESET);
+}
Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.h
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.h 2011-07-29 03:32:01 UTC (rev \
42508)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/lvds.h 2011-07-29 06:10:52 UTC (rev \
42509) @@ -28,6 +28,7 @@
void LVDSVoltageControl(uint8 lvdsIndex);
void LVDSPower(uint8 lvdsIndex, int command);
status_t LVDSSet(uint8 lvdsIndex, display_mode *mode);
+void LVDSAllIdle();
#endif /* RADEON_HD_LVDS_H */
Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/mc.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/mc.cpp 2011-07-29 03:32:01 UTC (rev \
42508)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/mc.cpp 2011-07-29 06:10:52 UTC (rev \
42509) @@ -65,9 +65,10 @@
return B_OK;
}
- if (oldFbLocation >> 32)
+ if (oldFbLocation >> 32) {
TRACE("%s: board claims to use a frame buffer address > 32-bits\n",
__func__);
+ }
uint32 idleState = MCIdle();
if (idleState > 0) {
Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/mode.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/mode.cpp 2011-07-29 03:32:01 UTC \
(rev 42508)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/mode.cpp 2011-07-29 06:10:52 UTC \
(rev 42509) @@ -128,6 +128,7 @@
static void
CardBlankSet(uint8 crtid, bool blank)
{
+ return;
int blackColorReg
= crtid == 1 ? D2CRTC_BLACK_COLOR : D1CRTC_BLACK_COLOR;
int blankControlReg
@@ -149,34 +150,34 @@
get_color_space_format(*mode, colorMode, bytesPerRow, bitsPerPixel);
- #if 0
- // TMDSAllIdle // DVI / HDMI
- // LVTMAAllIdle // DVI
+ LVDSAllIdle();
+ // DVI / HDMI / LCD
+ TMDSAllIdle();
+ // DVI / HDMI
DACAllIdle();
+ // VGA
+ // framebuffersize = w * h * bpp = fb bits / 8 = bytes needed
+ //uint64 fbAddress = gInfo->shared_info->frame_buffer_phys;
+ uint64 fbAddressInt = gInfo->shared_info->frame_buffer_int;
+
// Set the inital frame buffer location in the memory controler
uint32 mcFbSize;
- MCFBLocation(0, &mcFbSize);
- MCFBSetup(Read32(OUT, R6XX_CONFIG_FB_BASE), mcFbSize);
- #endif
+ MCFBLocation(fbAddressInt, &mcFbSize);
+ //MCFBSetup(gInfo->shared_info->frame_buffer_int, mcFbSize);
Write32(CRT, regs->grphUpdate, (1<<16));
// Lock for update (isn't this normally the other way around on VGA?
- // framebuffersize = w * h * bpp = fb bits / 8 = bytes needed
- uint64_t fbAddress = gInfo->shared_info->frame_buffer_phys;
-
// Tell GPU which frame buffer address to draw from
- Write32(CRT, regs->grphPrimarySurfaceAddr,
- fbAddress & 0xffffffff);
- Write32(CRT, regs->grphSecondarySurfaceAddr,
- fbAddress & 0xffffffff);
+ Write32(CRT, regs->grphPrimarySurfaceAddr, fbAddressInt & 0xffffffff);
+ Write32(CRT, regs->grphSecondarySurfaceAddr, fbAddressInt & 0xffffffff);
if (gInfo->shared_info->device_chipset >= (RADEON_R700 | 0x70)) {
Write32(CRT, regs->grphPrimarySurfaceAddrHigh,
- (fbAddress >> 32) & 0xf);
+ (fbAddressInt >> 32) & 0xf);
Write32(CRT, regs->grphSecondarySurfaceAddrHigh,
- (fbAddress >> 32) & 0xf);
+ (fbAddressInt >> 32) & 0xf);
}
Write32(CRT, regs->grphControl, 0);
@@ -248,10 +249,9 @@
displayTiming.h_total - 1);
// Blanking
- uint16 blankStart = MIN(displayTiming.h_sync_start,
- displayTiming.h_display);
- uint16 blankEnd = MAX(displayTiming.h_sync_end,
- displayTiming.h_total);
+ uint16 blankStart = displayTiming.h_total - displayTiming.h_sync_start;
+ uint16 blankEnd = displayTiming.h_total
+ + displayTiming.h_display - displayTiming.h_sync_start;
Write32(CRT, regs->crtHBlank,
blankStart | (blankEnd << 16));
@@ -267,10 +267,10 @@
Write32(CRT, regs->crtVTotal,
displayTiming.v_total - 1);
- blankStart = MIN(displayTiming.v_sync_start,
- displayTiming.v_display);
- blankEnd = MAX(displayTiming.v_sync_end,
- displayTiming.v_total);
+ // Blanking
+ blankStart = displayTiming.v_total - displayTiming.v_sync_start;
+ blankEnd = displayTiming.v_total
+ + displayTiming.v_display - displayTiming.v_sync_start;
Write32(CRT, regs->crtVBlank,
blankStart | (blankEnd << 16));
Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.cpp 2011-07-29 03:32:01 UTC \
(rev 42508)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.cpp 2011-07-29 06:10:52 UTC \
(rev 42509) @@ -224,3 +224,10 @@
// TODO : HdmiSetMode(mode)
return B_OK;
}
+
+
+void
+TMDSAllIdle()
+{
+ TMDSPower(0, RHD_POWER_RESET);
+}
Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.h
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.h 2011-07-29 03:32:01 UTC (rev \
42508)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/tmds.h 2011-07-29 06:10:52 UTC (rev \
42509) @@ -13,6 +13,7 @@
bool TMDSSense(uint8 tmdsIndex);
status_t TMDSPower(uint8 tmdsIndex, int command);
status_t TMDSSet(uint8 tmdsIndex, display_mode *mode);
+void TMDSAllIdle();
#endif
Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp 2011-07-29 \
03:32:01 UTC (rev 42508)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp 2011-07-29 \
06:10:52 UTC (rev 42509) @@ -99,6 +99,8 @@
info.shared_info->frame_buffer_area = info.framebuffer_area;
info.shared_info->frame_buffer_phys
= info.pci->u.h0.base_registers[RHD_FB_BAR];
+ info.shared_info->frame_buffer_int
+ = read32(info.registers + R6XX_CONFIG_FB_BASE);
// Pull active monitor VESA EDID from boot loader
edid1_info* edidInfo = (edid1_info*)get_boot_item(EDID_BOOT_INFO,
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic