rendered paste bodydiff --git a/src/revenge_detect.c b/src/revenge_detect.c
index bfeb3fa..da5aeb0 100644
--- a/src/revenge_detect.c
+++ b/src/revenge_detect.c
@@ -117,18 +117,27 @@ void
detect_fb_aperture (void)
{
/* R300 */
- fb_addr = (register_read (RADEON_MC_FB_LOCATION) & 0xffff) << 16;
- fb_len =
- ((register_read (RADEON_MC_FB_LOCATION) & 0xffff0000) + 0x10000) -
- fb_addr;
-
- if (!fb_addr)
+ if (option_interface == INTERFACE_RS690)
+ {
+ unsigned int tmp = register_read_rs690 (RADEON_RS690FB_LOCATION);
+ fb_addr = (tmp & 0xffff) << 16;
+ fb_len = (tmp & 0xffff0000) - fb_addr + 0x10000;
+ }
+ else
+ {
+ fb_addr = (register_read (RADEON_MC_FB_LOCATION) & 0xffff) << 16;
+ fb_len =
+ ((register_read (RADEON_MC_FB_LOCATION) & 0xffff0000) + 0x10000) -
+ fb_addr;
+
+ if (!fb_addr)
{
/* R500 */
fb_addr = register_read (AVIVO_CRTC1_FB_LOCATION);
fb_len = register_read (AVIVO_CRTC1_FB_END) - fb_addr;
}
-
+ }
+
if (option_debug)
{
printf ("%s: fb_addr = 0x%08x fb_len = 0x%08x\n", __func__, fb_addr,
diff --git a/src/revenge_main.h b/src/revenge_main.h
index fd7f443..2584ba4 100644
--- a/src/revenge_main.h
+++ b/src/revenge_main.h
@@ -115,6 +115,7 @@
#define RADEON_RS690GART_DATA 0x7c
#define RADEON_RS690GART_BASE_ADDR 0x2c
+#define RADEON_RS690FB_LOCATION 0x100
#define RADEON_RS690GART_LOCATION 0x101
#define R300_TX_SIZE_0 0x4480