XORG_NV/sun-src/xf86-video-ati-6.5.8.0/src/r128_driver.c
author Henry Zhao <Henry.Zhao@Sun.COM>
Mon, 12 Jun 2006 13:53:11 -0700
changeset 31 6fef7fb81fc7
parent 19 f9bb066edfe0
child 58 dc0147732971
permissions -rw-r--r--
6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c,v 1.88 2004/01/29 02:51:17 dawes Exp $ */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     2
/*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     3
 * Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     4
 *                      Precision Insight, Inc., Cedar Park, Texas, and
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     5
 *                      VA Linux Systems Inc., Fremont, California.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     6
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     7
 * All Rights Reserved.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     8
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     9
 * Permission is hereby granted, free of charge, to any person obtaining
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    10
 * a copy of this software and associated documentation files (the
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    11
 * "Software"), to deal in the Software without restriction, including
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    12
 * without limitation on the rights to use, copy, modify, merge,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    13
 * publish, distribute, sublicense, and/or sell copies of the Software,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    14
 * and to permit persons to whom the Software is furnished to do so,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    15
 * subject to the following conditions:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    16
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    17
 * The above copyright notice and this permission notice (including the
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    18
 * next paragraph) shall be included in all copies or substantial
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    19
 * portions of the Software.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    20
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    21
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    22
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    23
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    24
 * NON-INFRINGEMENT.  IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    25
 * SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    26
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    27
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    28
 * OTHER DEALINGS IN THE SOFTWARE.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    29
 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    30
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    31
#ifdef HAVE_CONFIG_H
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    32
#include "config.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    33
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    34
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    35
/*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    36
 * Authors:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    37
 *   Rickard E. Faith <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    38
 *   Kevin E. Martin <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    39
 *   Gareth Hughes <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    40
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    41
 * Credits:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    42
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    43
 *   Thanks to Alan Hourihane <[email protected]> and SuSE for
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    44
 *   providing source code to their 3.3.x Rage 128 driver.  Portions of
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    45
 *   this file are based on the initialization code for that driver.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    46
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    47
 * References:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    48
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    49
 *   RAGE 128 VR/ RAGE 128 GL Register Reference Manual (Technical
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    50
 *   Reference Manual P/N RRG-G04100-C Rev. 0.04), ATI Technologies: April
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    51
 *   1999.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    52
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    53
 *   RAGE 128 Software Development Manual (Technical Reference Manual P/N
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    54
 *   SDK-G04000 Rev. 0.01), ATI Technologies: June 1999.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    55
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    56
 * This server does not yet support these XFree86 4.0 features:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    57
 *   DDC1 & DDC2
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    58
 *   shadowfb
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    59
 *   overlay planes
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    60
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    61
 * Modified by Marc Aurele La France <[email protected]> for ATI driver merge.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    62
 *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    63
 * Dualhead support - Alex Deucher <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    64
 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    65
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    66
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    67
				/* Driver data structures */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    68
#include "r128.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    69
#include "r128_probe.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    70
#include "r128_reg.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    71
#include "r128_version.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    72
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    73
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    74
#define _XF86DRI_SERVER_
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    75
#include "r128_dri.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    76
#include "r128_common.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    77
#include "r128_sarea.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    78
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    79
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    80
#include "fb.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    81
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    82
				/* colormap initialization */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    83
#include "micmap.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    84
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    85
				/* X and server generic header files */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    86
#include "xf86.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    87
#include "xf86_OSproc.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    88
#include "xf86RAC.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    89
#include "xf86Resources.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    90
#include "xf86cmap.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    91
#include "xf86xv.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    92
#include "vbe.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    93
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    94
				/* fbdevhw & vgahw */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    95
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    96
#include "vgaHW.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    97
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    98
#include "fbdevhw.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    99
#include "dixstruct.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   100
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   101
				/* DPMS support. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   102
#define DPMS_SERVER
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   103
#include <X11/extensions/dpms.h>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   104
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   105
#include "atipciids.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   106
#include "r128_chipset.h"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   107
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   108
#ifndef MAX
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   109
#define MAX(a,b) ((a)>(b)?(a):(b))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   110
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   111
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   112
#define USE_CRT_ONLY	0
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   113
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   114
				/* Forward definitions for driver functions */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   115
static Bool R128CloseScreen(int scrnIndex, ScreenPtr pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   116
static Bool R128SaveScreen(ScreenPtr pScreen, int mode);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   117
static void R128Save(ScrnInfoPtr pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   118
static void R128Restore(ScrnInfoPtr pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   119
static Bool R128ModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   120
static void R128DisplayPowerManagementSet(ScrnInfoPtr pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   121
					  int PowerManagementMode, int flags);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   122
static void R128DisplayPowerManagementSetLCD(ScrnInfoPtr pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   123
					  int PowerManagementMode, int flags);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   124
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   125
typedef enum {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   126
  OPTION_NOACCEL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   127
  OPTION_SW_CURSOR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   128
  OPTION_DAC_6BIT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   129
  OPTION_DAC_8BIT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   130
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   131
  OPTION_XV_DMA,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   132
  OPTION_IS_PCI,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   133
  OPTION_CCE_PIO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   134
  OPTION_NO_SECURITY,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   135
  OPTION_USEC_TIMEOUT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   136
  OPTION_AGP_MODE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   137
  OPTION_AGP_SIZE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   138
  OPTION_RING_SIZE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   139
  OPTION_BUFFER_SIZE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   140
  OPTION_PAGE_FLIP,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   141
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   142
#if USE_CRT_ONLY
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   143
  /* FIXME: Disable CRTOnly until it is tested */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   144
  OPTION_CRT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   145
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   146
  OPTION_DISPLAY,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   147
  OPTION_PANEL_WIDTH,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   148
  OPTION_PANEL_HEIGHT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   149
  OPTION_PROG_FP_REGS,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   150
  OPTION_FBDEV,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   151
  OPTION_VIDEO_KEY,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   152
  OPTION_SHOW_CACHE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   153
  OPTION_VGA_ACCESS
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   154
} R128Opts;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   155
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   156
static const OptionInfoRec R128Options[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   157
  { OPTION_NOACCEL,      "NoAccel",          OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   158
  { OPTION_SW_CURSOR,    "SWcursor",         OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   159
  { OPTION_DAC_6BIT,     "Dac6Bit",          OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   160
  { OPTION_DAC_8BIT,     "Dac8Bit",          OPTV_BOOLEAN, {0}, TRUE  },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   161
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   162
  { OPTION_XV_DMA,       "DMAForXv",         OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   163
  { OPTION_IS_PCI,       "ForcePCIMode",     OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   164
  { OPTION_CCE_PIO,      "CCEPIOMode",       OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   165
  { OPTION_NO_SECURITY,  "CCENoSecurity",    OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   166
  { OPTION_USEC_TIMEOUT, "CCEusecTimeout",   OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   167
  { OPTION_AGP_MODE,     "AGPMode",          OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   168
  { OPTION_AGP_SIZE,     "AGPSize",          OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   169
  { OPTION_RING_SIZE,    "RingSize",         OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   170
  { OPTION_BUFFER_SIZE,  "BufferSize",       OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   171
  { OPTION_PAGE_FLIP,    "EnablePageFlip",   OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   172
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   173
  { OPTION_DISPLAY,      "Display",          OPTV_STRING,  {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   174
  { OPTION_PANEL_WIDTH,  "PanelWidth",       OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   175
  { OPTION_PANEL_HEIGHT, "PanelHeight",      OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   176
  { OPTION_PROG_FP_REGS, "ProgramFPRegs",    OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   177
  { OPTION_FBDEV,        "UseFBDev",         OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   178
  { OPTION_VIDEO_KEY,    "VideoKey",         OPTV_INTEGER, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   179
  { OPTION_SHOW_CACHE,   "ShowCache",        OPTV_BOOLEAN, {0}, FALSE },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   180
  { OPTION_VGA_ACCESS,   "VGAAccess",        OPTV_BOOLEAN, {0}, TRUE  },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   181
  { -1,                  NULL,               OPTV_NONE,    {0}, FALSE }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   182
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   183
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   184
_X_EXPORT const OptionInfoRec *R128OptionsWeak(void) { return R128Options; }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   185
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   186
R128RAMRec R128RAM[] = {        /* Memory Specifications
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   187
				   From RAGE 128 Software Development
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   188
				   Manual (Technical Reference Manual P/N
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   189
				   SDK-G04000 Rev 0.01), page 3-21.  */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   190
    { 4, 4, 3, 3, 1, 3, 1, 16, 12, "128-bit SDR SGRAM 1:1" },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   191
    { 4, 8, 3, 3, 1, 3, 1, 17, 13, "64-bit SDR SGRAM 1:1" },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   192
    { 4, 4, 1, 2, 1, 2, 1, 16, 12, "64-bit SDR SGRAM 2:1" },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   193
    { 4, 4, 3, 3, 2, 3, 1, 16, 12, "64-bit DDR SGRAM" },
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   194
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   195
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   196
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   197
static const char *vgahwSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   198
    "vgaHWFreeHWRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   199
    "vgaHWGetHWRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   200
    "vgaHWGetIndex",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   201
    "vgaHWLock",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   202
    "vgaHWRestore",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   203
    "vgaHWSave",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   204
    "vgaHWUnlock",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   205
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   206
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   207
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   208
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   209
static const char *fbdevHWSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   210
    "fbdevHWInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   211
    "fbdevHWUseBuildinMode",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   212
    "fbdevHWGetLineLength",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   213
    "fbdevHWGetVidmem",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   214
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   215
    "fbdevHWDPMSSet",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   216
    "fbdevHWDPMSSetWeak",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   217
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   218
    /* colormap */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   219
    "fbdevHWLoadPalette",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   220
    "fbdevHWLoadPaletteWeak",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   221
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   222
    /* ScrnInfo hooks */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   223
    "fbdevHWAdjustFrame",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   224
    "fbdevHWAdjustFrameWeak",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   225
    "fbdevHWEnterVT",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   226
    "fbdevHWLeaveVT",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   227
    "fbdevHWModeInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   228
    "fbdevHWRestore",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   229
    "fbdevHWSave",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   230
    "fbdevHWSwitchMode",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   231
    "fbdevHWSwitchModeWeak",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   232
    "fbdevHWValidModeWeak",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   233
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   234
    "fbdevHWMapMMIO",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   235
    "fbdevHWMapVidmem",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   236
    "fbdevHWUnmapMMIO",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   237
    "fbdevHWUnmapVidmem",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   238
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   239
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   240
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   241
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   242
static const char *ddcSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   243
    "xf86PrintEDID",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   244
    "xf86DoEDID_DDC1",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   245
    "xf86DoEDID_DDC2",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   246
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   247
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   248
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   249
static const char *i2cSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   250
    "xf86CreateI2CBusRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   251
    "xf86I2CBusInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   252
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   253
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   254
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   255
static const char *fbSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   256
    "fbPictureInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   257
    "fbScreenInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   258
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   259
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   260
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   261
static const char *xaaSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   262
    "XAACreateInfoRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   263
    "XAADestroyInfoRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   264
    "XAAInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   265
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   266
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   267
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   268
static const char *ramdacSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   269
    "xf86CreateCursorInfoRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   270
    "xf86DestroyCursorInfoRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   271
    "xf86InitCursor",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   272
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   273
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   274
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   275
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   276
static const char *drmSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   277
    "drmAddBufs",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   278
    "drmAddMap",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   279
    "drmAgpAcquire",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   280
    "drmAgpAlloc",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   281
    "drmAgpBase",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   282
    "drmAgpBind",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   283
    "drmAgpDeviceId",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   284
    "drmAgpEnable",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   285
    "drmAgpFree",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   286
    "drmAgpGetMode",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   287
    "drmAgpRelease",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   288
    "drmAgpUnbind",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   289
    "drmAgpVendorId",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   290
    "drmAvailable",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   291
    "drmCommandNone",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   292
    "drmCommandRead",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   293
    "drmCommandWrite",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   294
    "drmCommandWriteRead",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   295
    "drmCtlInstHandler",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   296
    "drmCtlUninstHandler",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   297
    "drmFreeBufs",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   298
    "drmFreeVersion",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   299
    "drmGetInterruptFromBusID",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   300
    "drmGetLibVersion",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   301
    "drmGetVersion",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   302
    "drmMap",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   303
    "drmMapBufs",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   304
    "drmDMA",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   305
    "drmScatterGatherAlloc",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   306
    "drmScatterGatherFree",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   307
    "drmUnmap",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   308
    "drmUnmapBufs",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   309
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   310
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   311
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   312
static const char *driSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   313
    "DRICloseScreen",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   314
    "DRICreateInfoRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   315
    "DRIDestroyInfoRec",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   316
    "DRIFinishScreenInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   317
    "DRIGetDeviceInfo",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   318
    "DRIGetSAREAPrivate",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   319
    "DRILock",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   320
    "DRIQueryVersion",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   321
    "DRIScreenInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   322
    "DRIUnlock",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   323
    "GlxSetVisualConfigs",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   324
    "DRICreatePCIBusID",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   325
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   326
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   327
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   328
static const char *driShadowFBSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   329
    "ShadowFBInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   330
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   331
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   332
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   333
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   334
static const char *vbeSymbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   335
    "VBEInit",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   336
    "vbeDoEDID",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   337
    "vbeFree",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   338
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   339
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   340
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   341
static const char *int10Symbols[] = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   342
    "xf86InitInt10",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   343
    "xf86FreeInt10",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   344
    "xf86int10Addr",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   345
    NULL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   346
};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   347
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   348
void R128LoaderRefSymLists(void)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   349
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   350
    /*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   351
     * Tell the loader about symbols from other modules that this module might
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   352
     * refer to.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   353
     */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   354
    xf86LoaderRefSymLists(
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   355
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   356
		      vgahwSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   357
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   358
		      fbSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   359
		      xaaSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   360
		      ramdacSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   361
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   362
		      drmSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   363
		      driSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   364
		      driShadowFBSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   365
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   366
		      fbdevHWSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   367
		      int10Symbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   368
		      vbeSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   369
		      /* ddcsymbols, */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   370
		      i2cSymbols,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   371
		      /* shadowSymbols, */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   372
		      NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   373
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   374
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   375
#ifdef XFree86LOADER
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   376
int getR128EntityIndex(void)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   377
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   378
    int *r128_entity_index = LoaderSymbol("gR128EntityIndex");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   379
    if (!r128_entity_index)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   380
        return -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   381
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   382
        return *r128_entity_index;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   383
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   384
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   385
extern int gR128EntityIndex;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   386
int getR128EntityIndex(void)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   387
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   388
    return gR128EntityIndex;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   389
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   390
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   391
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   392
R128EntPtr R128EntPriv(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   393
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   394
    DevUnion     *pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   395
    R128InfoPtr  info   = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   396
    pPriv = xf86GetEntityPrivate(info->pEnt->index,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   397
                                 getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   398
    return pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   399
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   400
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   401
/* Allocate our private R128InfoRec. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   402
static Bool R128GetRec(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   403
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   404
    if (pScrn->driverPrivate) return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   405
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   406
    pScrn->driverPrivate = xnfcalloc(sizeof(R128InfoRec), 1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   407
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   408
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   409
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   410
/* Free our private R128InfoRec. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   411
static void R128FreeRec(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   412
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   413
    if (!pScrn || !pScrn->driverPrivate) return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   414
    xfree(pScrn->driverPrivate);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   415
    pScrn->driverPrivate = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   416
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   417
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   418
/* Memory map the MMIO region.  Used during pre-init and by R128MapMem,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   419
   below. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   420
static Bool R128MapMMIO(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   421
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   422
    R128InfoPtr info          = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   423
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   424
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   425
	info->MMIO = fbdevHWMapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   426
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   427
	info->MMIO = xf86MapPciMem(pScrn->scrnIndex,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   428
				   VIDMEM_MMIO | VIDMEM_READSIDEEFFECT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   429
				   info->PciTag,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   430
				   info->MMIOAddr,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   431
				   R128_MMIOSIZE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   432
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   433
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   434
    if (!info->MMIO) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   435
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   436
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   437
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   438
/* Unmap the MMIO region.  Used during pre-init and by R128UnmapMem,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   439
   below. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   440
static Bool R128UnmapMMIO(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   441
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   442
    R128InfoPtr info          = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   443
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   444
    if (info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   445
	fbdevHWUnmapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   446
    else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   447
	xf86UnMapVidMem(pScrn->scrnIndex, info->MMIO, R128_MMIOSIZE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   448
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   449
    info->MMIO = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   450
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   451
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   452
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   453
/* Memory map the frame buffer.  Used by R128MapMem, below. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   454
static Bool R128MapFB(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   455
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   456
    R128InfoPtr info          = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   457
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   458
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   459
	info->FB = fbdevHWMapVidmem(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   460
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   461
	info->FB = xf86MapPciMem(pScrn->scrnIndex,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   462
				 VIDMEM_FRAMEBUFFER,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   463
				 info->PciTag,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   464
				 info->LinearAddr,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   465
				 info->FbMapSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   466
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   467
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   468
    if (!info->FB) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   469
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   470
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   471
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   472
/* Unmap the frame buffer.  Used by R128UnmapMem, below. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   473
static Bool R128UnmapFB(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   474
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   475
    R128InfoPtr info          = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   476
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   477
    if (info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   478
	fbdevHWUnmapVidmem(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   479
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   480
	xf86UnMapVidMem(pScrn->scrnIndex, info->FB, info->FbMapSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   481
    info->FB = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   482
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   483
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   484
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   485
/* Memory map the MMIO region and the frame buffer. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   486
static Bool R128MapMem(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   487
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   488
    if (!R128MapMMIO(pScrn)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   489
    if (!R128MapFB(pScrn)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   490
	R128UnmapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   491
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   492
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   493
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   494
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   495
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   496
/* Unmap the MMIO region and the frame buffer. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   497
static Bool R128UnmapMem(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   498
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   499
    if (!R128UnmapMMIO(pScrn) || !R128UnmapFB(pScrn)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   500
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   501
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   502
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   503
/* Read PLL information */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   504
unsigned R128INPLL(ScrnInfoPtr pScrn, int addr)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   505
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   506
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   507
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   508
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   509
    OUTREG8(R128_CLOCK_CNTL_INDEX, addr & 0x3f);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   510
    return INREG(R128_CLOCK_CNTL_DATA);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   511
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   512
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   513
#if 0
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   514
/* Read PAL information (only used for debugging). */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   515
static int R128INPAL(int idx)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   516
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   517
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   518
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   519
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   520
    OUTREG(R128_PALETTE_INDEX, idx << 16);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   521
    return INREG(R128_PALETTE_DATA);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   522
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   523
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   524
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   525
/* Wait for vertical sync. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   526
void R128WaitForVerticalSync(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   527
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   528
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   529
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   530
    int           i;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   531
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   532
    OUTREG(R128_GEN_INT_STATUS, R128_VSYNC_INT_AK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   533
    for (i = 0; i < R128_TIMEOUT; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   534
	if (INREG(R128_GEN_INT_STATUS) & R128_VSYNC_INT) break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   535
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   536
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   537
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   538
/* Blank screen. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   539
static void R128Blank(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   540
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   541
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   542
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   543
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   544
    if(!info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   545
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   546
        switch(info->DisplayType)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   547
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   548
        case MT_LCD:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   549
            OUTREGP(R128_LVDS_GEN_CNTL, R128_LVDS_DISPLAY_DIS,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   550
                 ~R128_LVDS_DISPLAY_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   551
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   552
        case MT_CRT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   553
            OUTREGP(R128_CRTC_EXT_CNTL, R128_CRTC_DISPLAY_DIS, ~R128_CRTC_DISPLAY_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   554
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   555
        case MT_DFP:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   556
            OUTREGP(R128_FP_GEN_CNTL, R128_FP_BLANK_DIS, ~R128_FP_BLANK_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   557
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   558
        case MT_NONE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   559
        default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   560
           break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   561
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   562
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   563
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   564
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   565
        OUTREGP(R128_CRTC2_GEN_CNTL, R128_CRTC2_DISP_DIS, ~R128_CRTC2_DISP_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   566
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   567
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   568
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   569
/* Unblank screen. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   570
static void R128Unblank(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   571
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   572
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   573
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   574
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   575
    if(!info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   576
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   577
        switch(info->DisplayType)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   578
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   579
        case MT_LCD:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   580
            OUTREGP(R128_LVDS_GEN_CNTL, 0,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   581
                 ~R128_LVDS_DISPLAY_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   582
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   583
        case MT_CRT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   584
            OUTREGP(R128_CRTC_EXT_CNTL, 0, ~R128_CRTC_DISPLAY_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   585
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   586
        case MT_DFP:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   587
            OUTREGP(R128_FP_GEN_CNTL, 0, ~R128_FP_BLANK_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   588
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   589
        case MT_NONE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   590
        default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   591
            break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   592
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   593
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   594
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   595
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   596
        switch(info->DisplayType)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   597
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   598
        case MT_LCD:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   599
        case MT_DFP:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   600
        case MT_CRT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   601
            OUTREGP(R128_CRTC2_GEN_CNTL, 0, ~R128_CRTC2_DISP_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   602
            break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   603
        case MT_NONE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   604
        default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   605
            break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   606
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   607
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   608
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   609
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   610
/* Compute log base 2 of val. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   611
int R128MinBits(int val)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   612
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   613
    int bits;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   614
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   615
    if (!val) return 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   616
    for (bits = 0; val; val >>= 1, ++bits);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   617
    return bits;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   618
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   619
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   620
/* Compute n/d with rounding. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   621
static int R128Div(int n, int d)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   622
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   623
    return (n + (d / 2)) / d;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   624
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   625
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   626
/* Read the Video BIOS block and the FP registers (if applicable). */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   627
static Bool R128GetBIOSParameters(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   628
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   629
    R128InfoPtr info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   630
    int         i;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   631
    int         FPHeader = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   632
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   633
#define R128_BIOS8(v)  (info->VBIOS[v])
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   634
#define R128_BIOS16(v) (info->VBIOS[v] | \
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   635
			(info->VBIOS[(v) + 1] << 8))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   636
#define R128_BIOS32(v) (info->VBIOS[v] | \
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   637
			(info->VBIOS[(v) + 1] << 8) | \
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   638
			(info->VBIOS[(v) + 2] << 16) | \
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   639
			(info->VBIOS[(v) + 3] << 24))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   640
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   641
    if (!(info->VBIOS = xalloc(R128_VBIOS_SIZE))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   642
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   643
		   "Cannot allocate space for hold Video BIOS!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   644
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   645
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   646
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   647
    if (pInt10) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   648
	info->BIOSAddr = pInt10->BIOSseg << 4;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   649
	(void)memcpy(info->VBIOS, xf86int10Addr(pInt10, info->BIOSAddr),
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   650
		     R128_VBIOS_SIZE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   651
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   652
	xf86ReadPciBIOS(0, info->PciTag, 0, info->VBIOS, R128_VBIOS_SIZE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   653
	if (info->VBIOS[0] != 0x55 || info->VBIOS[1] != 0xaa) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   654
	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   655
		       "Video BIOS not detected in PCI space!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   656
	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   657
		       "Attempting to read Video BIOS from legacy ISA space!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   658
	    info->BIOSAddr = 0x000c0000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   659
	    xf86ReadDomainMemory(info->PciTag, info->BIOSAddr, R128_VBIOS_SIZE, info->VBIOS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   660
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   661
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   662
    if (info->VBIOS[0] != 0x55 || info->VBIOS[1] != 0xaa) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   663
	info->BIOSAddr = 0x00000000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   664
	xfree(info->VBIOS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   665
	info->VBIOS = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   666
	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   667
		   "Video BIOS not found!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   668
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   669
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   670
        if(info->HasCRTC2)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   671
        {                    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   672
             if(info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   673
             {  
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   674
		/* there may be a way to detect this, for now, just assume 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   675
		   second head is CRT */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   676
                 info->DisplayType = MT_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   677
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   678
                 if(info->DisplayType > MT_NONE)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   679
                 {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   680
                     DevUnion* pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   681
                     R128EntPtr pR128Ent;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   682
                     pPriv = xf86GetEntityPrivate(pScrn->entityList[0], 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   683
                         getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   684
                     pR128Ent = pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   685
                     pR128Ent->HasSecondary = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   686
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   687
                 }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   688
                 else return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   689
                     
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   690
             }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   691
             else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   692
             {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   693
                 /* really need some sort of detection here */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   694
		 if (info->HasPanelRegs) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   695
		 	info->DisplayType = MT_LCD;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   696
		 } else if (info->isDFP) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   697
			info->DisplayType = MT_DFP;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   698
                 } else 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   699
                 {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   700
                     /*DVI port has no monitor connected, try CRT port.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   701
                     If something on CRT port, treat it as primary*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   702
                     if(xf86IsEntityShared(pScrn->entityList[0]))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   703
                     {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   704
                         DevUnion* pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   705
                         R128EntPtr pR128Ent;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   706
                         pPriv = xf86GetEntityPrivate(pScrn->entityList[0], 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   707
                             getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   708
                         pR128Ent = pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   709
                         pR128Ent->BypassSecondary = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   710
                     }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   711
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   712
                     info->DisplayType = MT_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   713
#if 0
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   714
                     {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   715
                         xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   716
                             "No monitor detected!!!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   717
                         return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   718
                     }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   719
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   720
                 }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   721
             }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   722
         }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   723
         else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   724
         {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   725
             /*Regular Radeon ASIC, only one CRTC, but it could be
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   726
               used for DFP with a DVI output, like AIW board*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   727
             if(info->isDFP) info->DisplayType = MT_DFP;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   728
             else info->DisplayType = MT_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   729
         }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   730
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   731
    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s Display == Type %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   732
              (info->IsSecondary ? "Secondary" : "Primary"), 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   733
               info->DisplayType);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   734
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   735
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   736
    if (info->VBIOS && info->DisplayType == MT_LCD) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   737
	info->FPBIOSstart = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   738
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   739
	/* FIXME: There should be direct access to the start of the FP info
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   740
	   tables, but until we find out where that offset is stored, we
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   741
	   must search for the ATI signature string: "M3      ". */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   742
	for (i = 4; i < R128_VBIOS_SIZE-8; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   743
	    if (R128_BIOS8(i)   == 'M' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   744
		R128_BIOS8(i+1) == '3' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   745
		R128_BIOS8(i+2) == ' ' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   746
		R128_BIOS8(i+3) == ' ' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   747
		R128_BIOS8(i+4) == ' ' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   748
		R128_BIOS8(i+5) == ' ' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   749
		R128_BIOS8(i+6) == ' ' &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   750
		R128_BIOS8(i+7) == ' ') {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   751
		FPHeader = i-2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   752
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   753
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   754
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   755
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   756
	if (!FPHeader) return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   757
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   758
	/* Assume that only one panel is attached and supported */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   759
	for (i = FPHeader+20; i < FPHeader+84; i += 2) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   760
	    if (R128_BIOS16(i) != 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   761
		info->FPBIOSstart = R128_BIOS16(i);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   762
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   763
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   764
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   765
	if (!info->FPBIOSstart) return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   766
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   767
	if (!info->PanelXRes)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   768
	    info->PanelXRes = R128_BIOS16(info->FPBIOSstart+25);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   769
	if (!info->PanelYRes)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   770
	    info->PanelYRes = R128_BIOS16(info->FPBIOSstart+27);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   771
	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel size: %dx%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   772
		   info->PanelXRes, info->PanelYRes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   773
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   774
	info->PanelPwrDly = R128_BIOS8(info->FPBIOSstart+56);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   775
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   776
	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel ID: ");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   777
	for (i = 1; i <= 24; i++)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   778
	    ErrorF("%c", R128_BIOS8(info->FPBIOSstart+i));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   779
	ErrorF("\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   780
	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel Type: ");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   781
	i = R128_BIOS16(info->FPBIOSstart+29);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   782
	if (i & 1) ErrorF("Color, ");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   783
	else       ErrorF("Monochrome, ");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   784
	if (i & 2) ErrorF("Dual(split), ");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   785
	else       ErrorF("Single, ");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   786
	switch ((i >> 2) & 0x3f) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   787
	case 0:  ErrorF("STN");        break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   788
	case 1:  ErrorF("TFT");        break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   789
	case 2:  ErrorF("Active STN"); break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   790
	case 3:  ErrorF("EL");         break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   791
	case 4:  ErrorF("Plasma");     break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   792
	default: ErrorF("UNKNOWN");    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   793
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   794
	ErrorF("\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   795
	if (R128_BIOS8(info->FPBIOSstart+61) & 1) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   796
	    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel Interface: LVDS\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   797
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   798
	    /* FIXME: Add Non-LVDS flat pael support */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   799
	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   800
		       "Non-LVDS panel interface detected!  "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   801
		       "This support is untested and may not "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   802
		       "function properly\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   803
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   804
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   805
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   806
    if (!info->PanelXRes || !info->PanelYRes) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   807
        info->HasPanelRegs = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   808
        xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   809
		   "Can't determine panel dimensions, and none specified.\n"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   810
		   "\tDisabling programming of FP registers.\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   811
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   812
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   813
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   814
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   815
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   816
/* Read PLL parameters from BIOS block.  Default to typical values if there
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   817
   is no BIOS. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   818
static Bool R128GetPLLParameters(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   819
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   820
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   821
    R128PLLPtr    pll  = &info->pll;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   822
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   823
#if defined(__powerpc__) || defined(__alpha__)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   824
    /* there is no bios under Linux PowerPC but Open Firmware
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   825
       does set up the PLL registers properly and we can use
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   826
       those to calculate xclk and find the reference divider */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   827
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   828
    unsigned x_mpll_ref_fb_div;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   829
    unsigned xclk_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   830
    unsigned Nx, M;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   831
    unsigned PostDivSet[] = {0, 1, 2, 4, 8, 3, 6, 12};
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   832
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   833
    /* Assume REF clock is 2950 (in units of 10khz) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   834
    /* and that all pllclk must be between 125 Mhz and 250Mhz */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   835
    pll->reference_freq = 2950;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   836
    pll->min_pll_freq   = 12500;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   837
    pll->max_pll_freq   = 25000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   838
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   839
    /* need to memory map the io to use INPLL since it
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   840
       has not been done yet at this point in the startup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   841
    R128MapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   842
    x_mpll_ref_fb_div = INPLL(pScrn, R128_X_MPLL_REF_FB_DIV);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   843
    xclk_cntl = INPLL(pScrn, R128_XCLK_CNTL) & 0x7;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   844
    pll->reference_div =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   845
	INPLL(pScrn,R128_PPLL_REF_DIV) & R128_PPLL_REF_DIV_MASK;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   846
    /* unmap it again */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   847
    R128UnmapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   848
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   849
    Nx = (x_mpll_ref_fb_div & 0x00FF00) >> 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   850
    M =  (x_mpll_ref_fb_div & 0x0000FF);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   851
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   852
    pll->xclk =  R128Div((2 * Nx * pll->reference_freq),
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   853
			 (M * PostDivSet[xclk_cntl]));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   854
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   855
#else /* !defined(__powerpc__) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   856
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   857
    if (!info->VBIOS) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   858
	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   859
		   "Video BIOS not detected, using default PLL parameters!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   860
				/* These probably aren't going to work for
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   861
				   the card you are using.  Specifically,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   862
				   reference freq can be 29.50MHz,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   863
				   28.63MHz, or 14.32MHz.  YMMV. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   864
	pll->reference_freq = 2950;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   865
	pll->reference_div  = 65;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   866
	pll->min_pll_freq   = 12500;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   867
	pll->max_pll_freq   = 25000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   868
	pll->xclk           = 10300;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   869
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   870
	CARD16 bios_header    = R128_BIOS16(0x48);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   871
	CARD16 pll_info_block = R128_BIOS16(bios_header + 0x30);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   872
	R128TRACE(("Header at 0x%04x; PLL Information at 0x%04x\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   873
		   bios_header, pll_info_block));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   874
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   875
	pll->reference_freq = R128_BIOS16(pll_info_block + 0x0e);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   876
	pll->reference_div  = R128_BIOS16(pll_info_block + 0x10);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   877
	pll->min_pll_freq   = R128_BIOS32(pll_info_block + 0x12);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   878
	pll->max_pll_freq   = R128_BIOS32(pll_info_block + 0x16);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   879
	pll->xclk           = R128_BIOS16(pll_info_block + 0x08);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   880
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   881
#endif /* __powerpc__ */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   882
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   883
    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   884
	       "PLL parameters: rf=%d rd=%d min=%d max=%d; xclk=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   885
	       pll->reference_freq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   886
	       pll->reference_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   887
	       pll->min_pll_freq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   888
	       pll->max_pll_freq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   889
	       pll->xclk);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   890
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   891
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   892
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   893
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   894
/* This is called by R128PreInit to set up the default visual. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   895
static Bool R128PreInitVisual(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   896
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   897
    R128InfoPtr info          = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   898
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   899
    if (!xf86SetDepthBpp(pScrn, 0, 0, 0, (Support24bppFb
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   900
					  | Support32bppFb
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   901
					  | SupportConvert32to24
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   902
					  )))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   903
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   904
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   905
    switch (pScrn->depth) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   906
    case 8:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   907
    case 15:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   908
    case 16:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   909
    case 24:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   910
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   911
    default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   912
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   913
		   "Given depth (%d) is not supported by %s driver\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   914
		   pScrn->depth, R128_DRIVER_NAME);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   915
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   916
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   917
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   918
    xf86PrintDepthBpp(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   919
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   920
    info->fifo_slots  = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   921
    info->pix24bpp    = xf86GetBppFromDepth(pScrn, pScrn->depth);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   922
    info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   923
    info->CurrentLayout.depth        = pScrn->depth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   924
    info->CurrentLayout.pixel_bytes  = pScrn->bitsPerPixel / 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   925
    info->CurrentLayout.pixel_code   = (pScrn->bitsPerPixel != 16
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   926
				       ? pScrn->bitsPerPixel
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   927
				       : pScrn->depth);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   928
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   929
    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   930
	       "Pixel depth = %d bits stored in %d byte%s (%d bpp pixmaps)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   931
	       pScrn->depth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   932
	       info->CurrentLayout.pixel_bytes,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   933
	       info->CurrentLayout.pixel_bytes > 1 ? "s" : "",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   934
	       info->pix24bpp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   935
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   936
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   937
    if (!xf86SetDefaultVisual(pScrn, -1)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   938
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   939
    if (pScrn->depth > 8 && pScrn->defaultVisual != TrueColor) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   940
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   941
		   "Default visual (%s) is not supported at depth %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   942
		   xf86GetVisualName(pScrn->defaultVisual), pScrn->depth);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   943
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   944
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   945
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   946
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   947
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   948
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   949
/* This is called by R128PreInit to handle all color weight issues. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   950
static Bool R128PreInitWeight(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   951
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   952
    R128InfoPtr info          = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   953
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   954
				/* Save flag for 6 bit DAC to use for
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   955
				   setting CRTC registers.  Otherwise use
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   956
				   an 8 bit DAC, even if xf86SetWeight sets
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   957
				   pScrn->rgbBits to some value other than
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   958
				   8. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   959
    info->dac6bits = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   960
    if (pScrn->depth > 8) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   961
	rgb defaultWeight = { 0, 0, 0 };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   962
	if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   963
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   964
	pScrn->rgbBits = 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   965
	if (xf86ReturnOptValBool(info->Options, OPTION_DAC_6BIT, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   966
	    pScrn->rgbBits = 6;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   967
	    info->dac6bits = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   968
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   969
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   970
    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   971
	       "Using %d bits per RGB (%d bit DAC)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   972
	       pScrn->rgbBits, info->dac6bits ? 6 : 8);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   973
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   974
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   975
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   976
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   977
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   978
/* This is called by R128PreInit to handle config file overrides for things
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   979
   like chipset and memory regions.  Also determine memory size and type.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   980
   If memory type ever needs an override, put it in this routine. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   981
static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   982
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   983
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   984
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   985
    EntityInfoPtr pEnt      = info->pEnt;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   986
    GDevPtr       dev       = pEnt->device;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   987
    int           offset    = 0;        /* RAM Type */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   988
    MessageType   from;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   989
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   990
				/* Chipset */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   991
    from = X_PROBED;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   992
    if (dev->chipset && *dev->chipset) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   993
	info->Chipset  = xf86StringToToken(R128Chipsets, dev->chipset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   994
	from           = X_CONFIG;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   995
    } else if (dev->chipID >= 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   996
	info->Chipset  = dev->chipID;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   997
	from           = X_CONFIG;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   998
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   999
	info->Chipset = info->PciInfo->chipType;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1000
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1001
    pScrn->chipset = (char *)xf86TokenToString(R128Chipsets, info->Chipset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1002
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1003
    if (!pScrn->chipset) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1004
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1005
		   "ChipID 0x%04x is not recognized\n", info->Chipset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1006
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1007
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1008
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1009
    if (info->Chipset < 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1010
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1011
		   "Chipset \"%s\" is not recognized\n", pScrn->chipset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1012
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1013
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1014
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1015
    xf86DrvMsg(pScrn->scrnIndex, from,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1016
	       "Chipset: \"%s\" (ChipID = 0x%04x)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1017
	       pScrn->chipset,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1018
	       info->Chipset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1019
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1020
				/* Framebuffer */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1021
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1022
    from             = X_PROBED;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1023
    info->LinearAddr = info->PciInfo->memBase[0] & 0xfc000000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1024
    pScrn->memPhysBase = info->LinearAddr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1025
    if (dev->MemBase) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1026
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1027
		   "Linear address override, using 0x%08lx instead of 0x%08lx\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1028
		   dev->MemBase,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1029
		   info->LinearAddr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1030
	info->LinearAddr = dev->MemBase;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1031
	from             = X_CONFIG;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1032
    } else if (!info->LinearAddr) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1033
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1034
		   "No valid linear framebuffer address\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1035
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1036
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1037
    xf86DrvMsg(pScrn->scrnIndex, from,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1038
	       "Linear framebuffer at 0x%08lx\n", info->LinearAddr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1039
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1040
				/* MMIO registers */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1041
    from             = X_PROBED;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1042
    info->MMIOAddr   = info->PciInfo->memBase[2] & 0xffffff00;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1043
    if (dev->IOBase) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1044
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1045
		   "MMIO address override, using 0x%08lx instead of 0x%08lx\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1046
		   dev->IOBase,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1047
		   info->MMIOAddr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1048
	info->MMIOAddr = dev->IOBase;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1049
	from           = X_CONFIG;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1050
    } else if (!info->MMIOAddr) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1051
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid MMIO address\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1052
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1053
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1054
    xf86DrvMsg(pScrn->scrnIndex, from,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1055
	       "MMIO registers at 0x%08lx\n", info->MMIOAddr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1056
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1057
				/* BIOS */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1058
    from              = X_PROBED;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1059
    info->BIOSAddr    = info->PciInfo->biosBase & 0xfffe0000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1060
    if (dev->BiosBase) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1061
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1062
		   "BIOS address override, using 0x%08lx instead of 0x%08lx\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1063
		   dev->BiosBase,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1064
		   info->BIOSAddr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1065
	info->BIOSAddr = dev->BiosBase;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1066
	from           = X_CONFIG;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1067
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1068
    if (info->BIOSAddr) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1069
	xf86DrvMsg(pScrn->scrnIndex, from,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1070
		   "BIOS at 0x%08lx\n", info->BIOSAddr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1071
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1072
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1073
				/* Flat panel (part 1) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1074
    if (xf86GetOptValBool(info->Options, OPTION_PROG_FP_REGS,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1075
			  &info->HasPanelRegs)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1076
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1077
		   "Turned flat panel register programming %s\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1078
		   info->HasPanelRegs ? "on" : "off");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1079
	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1080
		   "\n\nWARNING: Forcing the driver to use/not use the flat panel registers\nmight damage your flat panel.  Use at your *OWN* *RISK*.\n\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1081
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1082
        info->isDFP = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1083
        info->isPro2 = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1084
        info->HasCRTC2 = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1085
	switch (info->Chipset) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1086
	/* R128 Pro and Pro2 can have DFP, we will deal with it.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1087
	   No support for dual-head/xinerama yet.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1088
           M3 can also have DFP, no support for now */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1089
	case PCI_CHIP_RAGE128TF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1090
	case PCI_CHIP_RAGE128TL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1091
	case PCI_CHIP_RAGE128TR:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1092
	/* FIXME: RAGE128 TS/TT/TU are assumed to be PRO2 as all 6 chips came
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1093
	 *        out at the same time, so are of the same family likely.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1094
	 *        This requires confirmation however to be fully correct.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1095
	 *        Mike A. Harris <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1096
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1097
	case PCI_CHIP_RAGE128TS:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1098
	case PCI_CHIP_RAGE128TT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1099
	case PCI_CHIP_RAGE128TU: info->isPro2 = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1100
	/* FIXME: RAGE128 P[ABCEGHIJKLMNOQSTUVWX] are assumed to have DFP
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1101
	 *        capability, as the comment at the top suggests.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1102
	 *        This requires confirmation however to be fully correct.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1103
	 *        Mike A. Harris <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1104
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1105
	case PCI_CHIP_RAGE128PA:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1106
	case PCI_CHIP_RAGE128PB:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1107
	case PCI_CHIP_RAGE128PC:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1108
	case PCI_CHIP_RAGE128PE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1109
	case PCI_CHIP_RAGE128PG:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1110
	case PCI_CHIP_RAGE128PH:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1111
	case PCI_CHIP_RAGE128PI:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1112
	case PCI_CHIP_RAGE128PJ:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1113
	case PCI_CHIP_RAGE128PK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1114
	case PCI_CHIP_RAGE128PL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1115
	case PCI_CHIP_RAGE128PM:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1116
	case PCI_CHIP_RAGE128PN:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1117
	case PCI_CHIP_RAGE128PO:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1118
	case PCI_CHIP_RAGE128PQ:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1119
	case PCI_CHIP_RAGE128PS:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1120
	case PCI_CHIP_RAGE128PT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1121
	case PCI_CHIP_RAGE128PU:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1122
	case PCI_CHIP_RAGE128PV:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1123
	case PCI_CHIP_RAGE128PW:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1124
	case PCI_CHIP_RAGE128PX:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1125
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1126
	case PCI_CHIP_RAGE128PD:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1127
	case PCI_CHIP_RAGE128PF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1128
	case PCI_CHIP_RAGE128PP:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1129
	case PCI_CHIP_RAGE128PR: info->isDFP = TRUE; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1130
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1131
	case PCI_CHIP_RAGE128LE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1132
	case PCI_CHIP_RAGE128LF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1133
	case PCI_CHIP_RAGE128MF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1134
	case PCI_CHIP_RAGE128ML: 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1135
			info->HasPanelRegs = TRUE;  
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1136
			/* which chips support dualhead? */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1137
			info->HasCRTC2 = TRUE;  
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1138
			break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1139
	case PCI_CHIP_RAGE128RE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1140
	case PCI_CHIP_RAGE128RF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1141
	case PCI_CHIP_RAGE128RG:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1142
	case PCI_CHIP_RAGE128RK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1143
	case PCI_CHIP_RAGE128RL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1144
	case PCI_CHIP_RAGE128SM:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1145
	/* FIXME: RAGE128 S[EFGHKLN] are assumed to be like the SM above as
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1146
	 *        all of them are listed as "Rage 128 4x" in ATI docs.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1147
	 *        This requires confirmation however to be fully correct.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1148
	 *        Mike A. Harris <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1149
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1150
	case PCI_CHIP_RAGE128SE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1151
	case PCI_CHIP_RAGE128SF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1152
	case PCI_CHIP_RAGE128SG:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1153
	case PCI_CHIP_RAGE128SH:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1154
	case PCI_CHIP_RAGE128SK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1155
	case PCI_CHIP_RAGE128SL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1156
	case PCI_CHIP_RAGE128SN:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1157
	default:                 info->HasPanelRegs = FALSE; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1158
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1159
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1160
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1161
				/* Read registers used to determine options */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1162
    from                      = X_PROBED;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1163
    R128MapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1164
    R128MMIO                  = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1165
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1166
    if (info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1167
	pScrn->videoRam       = fbdevHWGetVidmem(pScrn) / 1024;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1168
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1169
	pScrn->videoRam       = INREG(R128_CONFIG_MEMSIZE) / 1024;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1170
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1171
    info->MemCntl             = INREG(R128_MEM_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1172
    info->BusCntl             = INREG(R128_BUS_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1173
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1174
    /* On non-flat panel systems, the default is to display to the CRT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1175
       and on flat panel systems, the default is to display to the flat
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1176
       panel unless the user explicity chooses otherwise using the "Display"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1177
       config file setting.  BIOS_5_SCRATCH holds the display device on flat
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1178
       panel systems only. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1179
    if (info->HasPanelRegs) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1180
        char *Display = xf86GetOptValString(info->Options, OPTION_DISPLAY);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1181
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1182
	if (info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1183
	    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1184
		     "Option \"Display\" ignored "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1185
		     "(framebuffer device determines display type)\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1186
	else if (info->IsPrimary || info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1187
	    info->BIOSDisplay = R128_DUALHEAD;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1188
	else if (!Display || !xf86NameCmp(Display, "FP"))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1189
	    info->BIOSDisplay = R128_BIOS_DISPLAY_FP;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1190
	else if (!xf86NameCmp(Display, "BIOS"))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1191
	    info->BIOSDisplay = INREG8(R128_BIOS_5_SCRATCH);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1192
	else if (!xf86NameCmp(Display, "Mirror"))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1193
	    info->BIOSDisplay = R128_BIOS_DISPLAY_FP_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1194
	else if (!xf86NameCmp(Display, "CRT"))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1195
	    info->BIOSDisplay = R128_BIOS_DISPLAY_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1196
	else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1197
	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1198
		"Unsupported type \"%s\" specified for Option \"Display\".\n"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1199
		"\tSupported types are: "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1200
		"\"BIOS\", \"Mirror\", \"CRT\" and \"FP\"\n", Display);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1201
	    return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1202
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1203
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1204
	info->BIOSDisplay     = R128_BIOS_DISPLAY_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1205
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1206
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1207
    R128MMIO                  = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1208
    R128UnmapMMIO(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1209
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1210
				/* RAM */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1211
    switch (info->MemCntl & 0x3) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1212
    case 0:                     /* SDR SGRAM 1:1 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1213
	switch (info->Chipset) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1214
	case PCI_CHIP_RAGE128TF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1215
	case PCI_CHIP_RAGE128TL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1216
	case PCI_CHIP_RAGE128TR:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1217
	case PCI_CHIP_RAGE128LE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1218
	case PCI_CHIP_RAGE128LF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1219
	case PCI_CHIP_RAGE128MF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1220
	case PCI_CHIP_RAGE128ML:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1221
	case PCI_CHIP_RAGE128RE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1222
	case PCI_CHIP_RAGE128RF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1223
	case PCI_CHIP_RAGE128RG: offset = 0; break; /* 128-bit SDR SGRAM 1:1 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1224
	case PCI_CHIP_RAGE128RK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1225
	case PCI_CHIP_RAGE128RL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1226
	case PCI_CHIP_RAGE128SM:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1227
	default:                 offset = 1; break; /*  64-bit SDR SGRAM 1:1 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1228
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1229
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1230
    case 1:                      offset = 2; break; /*  64-bit SDR SGRAM 2:1 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1231
    case 2:                      offset = 3; break; /*  64-bit DDR SGRAM     */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1232
    default:                     offset = 1; break; /*  64-bit SDR SGRAM 1:1 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1233
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1234
    info->ram = &R128RAM[offset];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1235
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1236
    if (dev->videoRam) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1237
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1238
		   "Video RAM override, using %d kB instead of %d kB\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1239
		   dev->videoRam,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1240
		   pScrn->videoRam);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1241
	from             = X_CONFIG;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1242
	pScrn->videoRam  = dev->videoRam;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1243
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1244
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1245
    xf86DrvMsg(pScrn->scrnIndex, from,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1246
	       "VideoRAM: %d kByte (%s)\n", pScrn->videoRam, info->ram->name);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1247
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1248
    if (info->IsPrimary) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1249
        pScrn->videoRam /= 2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1250
	xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1251
		"Using %dk of videoram for primary head\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1252
		pScrn->videoRam);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1253
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1254
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1255
    if (info->IsSecondary) {  
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1256
        pScrn->videoRam /= 2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1257
        info->LinearAddr += pScrn->videoRam * 1024;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1258
	xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1259
		"Using %dk of videoram for secondary head\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1260
		pScrn->videoRam);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1261
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1262
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1263
    pScrn->videoRam  &= ~1023;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1264
    info->FbMapSize  = pScrn->videoRam * 1024;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1265
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1266
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1267
				/* Flat panel (part 2) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1268
	switch (info->BIOSDisplay) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1269
	case R128_DUALHEAD:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1270
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1271
		       "Dual display\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1272
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1273
	case R128_BIOS_DISPLAY_FP:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1274
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1275
		       "Using flat panel for display\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1276
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1277
	case R128_BIOS_DISPLAY_CRT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1278
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1279
		       "Using external CRT for display\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1280
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1281
	case R128_BIOS_DISPLAY_FP_CRT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1282
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1283
		       "Using both flat panel and external CRT "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1284
		       "for display\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1285
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1286
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1287
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1288
    if (info->HasPanelRegs) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1289
				/* Panel width/height overrides */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1290
	info->PanelXRes = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1291
	info->PanelYRes = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1292
	if (xf86GetOptValInteger(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1293
				 OPTION_PANEL_WIDTH, &(info->PanelXRes))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1294
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1295
		       "Flat panel width: %d\n", info->PanelXRes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1296
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1297
	if (xf86GetOptValInteger(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1298
				 OPTION_PANEL_HEIGHT, &(info->PanelYRes))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1299
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1300
		       "Flat panel height: %d\n", info->PanelYRes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1301
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1302
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1303
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1304
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1305
				/* DMA for Xv */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1306
    info->DMAForXv = xf86ReturnOptValBool(info->Options, OPTION_XV_DMA, FALSE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1307
    if (info->DMAForXv) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1308
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1309
		   "Will try to use DMA for Xv image transfers\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1310
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1311
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1312
				/* AGP/PCI */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1313
    if (xf86ReturnOptValBool(info->Options, OPTION_IS_PCI, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1314
	info->IsPCI = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1315
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI-only mode\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1316
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1317
	switch (info->Chipset) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1318
	case PCI_CHIP_RAGE128LE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1319
	case PCI_CHIP_RAGE128RE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1320
	case PCI_CHIP_RAGE128RK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1321
	case PCI_CHIP_RAGE128PD:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1322
	case PCI_CHIP_RAGE128PR:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1323
	case PCI_CHIP_RAGE128PP: info->IsPCI = TRUE;  break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1324
	case PCI_CHIP_RAGE128LF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1325
	case PCI_CHIP_RAGE128MF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1326
	case PCI_CHIP_RAGE128ML:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1327
	case PCI_CHIP_RAGE128PF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1328
	case PCI_CHIP_RAGE128RF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1329
	case PCI_CHIP_RAGE128RG:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1330
	case PCI_CHIP_RAGE128RL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1331
	case PCI_CHIP_RAGE128SM:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1332
	case PCI_CHIP_RAGE128TF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1333
	case PCI_CHIP_RAGE128TL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1334
	case PCI_CHIP_RAGE128TR:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1335
	/* FIXME: Rage 128 S[EFGHKLN], T[STU], P[ABCEGHIJKLMNOQSTUVWX] are
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1336
	 * believed to be AGP, but need confirmation. <[email protected]>
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1337
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1338
	case PCI_CHIP_RAGE128PA:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1339
	case PCI_CHIP_RAGE128PB:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1340
	case PCI_CHIP_RAGE128PC:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1341
	case PCI_CHIP_RAGE128PE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1342
	case PCI_CHIP_RAGE128PG:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1343
	case PCI_CHIP_RAGE128PH:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1344
	case PCI_CHIP_RAGE128PI:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1345
	case PCI_CHIP_RAGE128PJ:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1346
	case PCI_CHIP_RAGE128PK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1347
	case PCI_CHIP_RAGE128PL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1348
	case PCI_CHIP_RAGE128PM:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1349
	case PCI_CHIP_RAGE128PN:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1350
	case PCI_CHIP_RAGE128PO:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1351
	case PCI_CHIP_RAGE128PQ:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1352
	case PCI_CHIP_RAGE128PS:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1353
	case PCI_CHIP_RAGE128PT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1354
	case PCI_CHIP_RAGE128PU:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1355
	case PCI_CHIP_RAGE128PV:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1356
	case PCI_CHIP_RAGE128PW:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1357
	case PCI_CHIP_RAGE128PX:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1358
	case PCI_CHIP_RAGE128TS:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1359
	case PCI_CHIP_RAGE128TT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1360
	case PCI_CHIP_RAGE128TU:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1361
	case PCI_CHIP_RAGE128SE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1362
	case PCI_CHIP_RAGE128SF:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1363
	case PCI_CHIP_RAGE128SG:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1364
	case PCI_CHIP_RAGE128SH:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1365
	case PCI_CHIP_RAGE128SK:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1366
	case PCI_CHIP_RAGE128SL:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1367
	case PCI_CHIP_RAGE128SN:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1368
	default:                 info->IsPCI = FALSE; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1369
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1370
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1371
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1372
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1373
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1374
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1375
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1376
static Bool R128PreInitDDC(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1377
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1378
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1379
    vbeInfoPtr pVbe;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1380
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1381
    if (!xf86LoadSubModule(pScrn, "ddc")) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1382
    xf86LoaderReqSymLists(ddcSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1383
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1384
#if defined(__powerpc__) || defined(__alpha__)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1385
    /* Int10 is broken on PPC and some Alphas */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1386
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1387
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1388
    if (xf86LoadSubModule(pScrn, "vbe")) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1389
	xf86LoaderReqSymLists(vbeSymbols,NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1390
	pVbe = VBEInit(pInt10,info->pEnt->index);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1391
	if (!pVbe) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1392
        xf86SetDDCproperties(pScrn,xf86PrintEDID(vbeDoEDID(pVbe,NULL)));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1393
	vbeFree(pVbe);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1394
	return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1395
    } else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1396
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1397
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1398
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1399
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1400
/* This is called by R128PreInit to initialize gamma correction. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1401
static Bool R128PreInitGamma(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1402
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1403
    Gamma zeros = { 0.0, 0.0, 0.0 };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1404
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1405
    if (!xf86SetGamma(pScrn, zeros)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1406
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1407
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1408
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1409
static void
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1410
R128I2CGetBits(I2CBusPtr b, int *Clock, int *data)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1411
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1412
    ScrnInfoPtr   pScrn       = xf86Screens[b->scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1413
    R128InfoPtr info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1414
    unsigned long val;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1415
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1416
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1417
    /* Get the result. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1418
    val = INREG(info->DDCReg);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1419
    *Clock = (val & R128_GPIO_MONID_Y_3) != 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1420
    *data  = (val & R128_GPIO_MONID_Y_0) != 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1421
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1422
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1423
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1424
static void
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1425
R128I2CPutBits(I2CBusPtr b, int Clock, int data)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1426
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1427
    ScrnInfoPtr   pScrn       = xf86Screens[b->scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1428
    R128InfoPtr info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1429
    unsigned long val;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1430
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1431
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1432
    val = INREG(info->DDCReg)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1433
              & ~(CARD32)(R128_GPIO_MONID_EN_0 | R128_GPIO_MONID_EN_3);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1434
    val |= (Clock ? 0:R128_GPIO_MONID_EN_3);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1435
    val |= (data ? 0:R128_GPIO_MONID_EN_0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1436
    OUTREG(info->DDCReg, val);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1437
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1438
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1439
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1440
static Bool
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1441
R128I2cInit(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1442
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1443
    R128InfoPtr info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1444
    if ( xf86LoadSubModule(pScrn, "i2c") )
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1445
        xf86LoaderReqSymLists(i2cSymbols,NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1446
	else{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1447
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1448
            "Failed to load i2c module\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1449
		return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1450
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1451
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1452
    info->pI2CBus = xf86CreateI2CBusRec();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1453
    if(!info->pI2CBus) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1454
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1455
    info->pI2CBus->BusName    = "DDC";
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1456
    info->pI2CBus->scrnIndex  = pScrn->scrnIndex;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1457
    info->DDCReg = R128_GPIO_MONID;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1458
    info->pI2CBus->I2CPutBits = R128I2CPutBits;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1459
    info->pI2CBus->I2CGetBits = R128I2CGetBits;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1460
    info->pI2CBus->AcknTimeout = 5;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1461
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1462
    if (!xf86I2CBusInit(info->pI2CBus)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1463
        return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1464
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1465
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1466
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1467
31
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1468
static xf86MonPtr 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1469
R128ProbeDDC(ScrnInfoPtr pScrn, int indx)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1470
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1471
    vbeInfoPtr pVbe;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1472
    xf86MonPtr monitor;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1473
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1474
    if (xf86LoadSubModule(pScrn, "vbe")) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1475
	pVbe = VBEInit(NULL,indx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1476
	monitor = vbeDoEDID(pVbe, NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1477
	vbeFree(pVbe);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1478
	return (monitor);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1479
    } else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1480
	return (NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1481
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1482
19
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1483
/* return TRUE is a DFP is indeed connected to a DVI port */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1484
static Bool R128GetDFPInfo(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1485
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1486
    R128InfoPtr info  = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1487
    int i;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1488
    xf86MonPtr MonInfo = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1489
    xf86MonPtr ddc;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1490
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1491
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1492
    if(!R128I2cInit(pScrn)){
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1493
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1494
                  "I2C initialization failed!\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1495
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1496
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1497
    OUTREG(info->DDCReg, (INREG(info->DDCReg)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1498
           | R128_GPIO_MONID_MASK_0 | R128_GPIO_MONID_MASK_3));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1499
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1500
    OUTREG(info->DDCReg, INREG(info->DDCReg)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1501
           & ~(CARD32)(R128_GPIO_MONID_A_0 | R128_GPIO_MONID_A_3));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1502
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1503
    MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, info->pI2CBus);
31
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1504
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1505
    if(!MonInfo)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1506
	    MonInfo = R128ProbeDDC(pScrn, info->pEnt->index);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  1507
19
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1508
    if(!MonInfo) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1509
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1510
                   "No DFP detected\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1511
        return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1512
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1513
    xf86SetDDCproperties(pScrn, MonInfo);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1514
    ddc = pScrn->monitor->DDC;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1515
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1516
    for(i=0; i<4; i++)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1517
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1518
        if((ddc->det_mon[i].type == 0) &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1519
	  (ddc->det_mon[i].section.d_timings.h_active > 0) &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1520
	  (ddc->det_mon[i].section.d_timings.v_active > 0))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1521
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1522
            info->PanelXRes =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1523
                ddc->det_mon[i].section.d_timings.h_active;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1524
            info->PanelYRes =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1525
                ddc->det_mon[i].section.d_timings.v_active;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1526
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1527
            info->HOverPlus =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1528
                ddc->det_mon[i].section.d_timings.h_sync_off;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1529
            info->HSyncWidth =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1530
                ddc->det_mon[i].section.d_timings.h_sync_width;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1531
            info->HBlank =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1532
                ddc->det_mon[i].section.d_timings.h_blanking;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1533
            info->VOverPlus =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1534
                ddc->det_mon[i].section.d_timings.v_sync_off;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1535
            info->VSyncWidth =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1536
                ddc->det_mon[i].section.d_timings.v_sync_width;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1537
            info->VBlank =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1538
                ddc->det_mon[i].section.d_timings.v_blanking;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1539
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1540
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1541
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1542
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1543
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1544
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1545
static void R128SetSyncRangeFromEdid(ScrnInfoPtr pScrn, int flag)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1546
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1547
    MonPtr monitor = pScrn->monitor;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1548
    xf86MonPtr DDC = (xf86MonPtr)(pScrn->monitor->DDC);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1549
    int i, j;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1550
    float hmin = 1e6, hmax = 0.0, vmin = 1e6, vmax = 0.0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1551
    float h, v;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1552
    struct std_timings *t;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1553
    struct detailed_timings *dt;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1554
    struct monitor_ranges *mon_range = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1555
    int numTimings = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1556
    range hsync[MAX_HSYNC];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1557
    range vrefresh[MAX_VREFRESH];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1558
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1559
    numTimings = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1560
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1561
    if (flag) { /* Hsync */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1562
	for (i = 0; i < DET_TIMINGS; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1563
	    switch (DDC->det_mon[i].type) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1564
	    case DS_RANGES:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1565
		mon_range = &DDC->det_mon[i].section.ranges;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1566
		hsync[numTimings].lo = mon_range->min_h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1567
		hsync[numTimings].hi = mon_range->max_h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1568
		numTimings++;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1569
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1570
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1571
	    case DS_STD_TIMINGS:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1572
		t = DDC->det_mon[i].section.std_t;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1573
		for (j = 0; j < 5; j++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1574
		    if (t[j].hsize > 256) { /* sanity check */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1575
			h = t[j].refresh * 1.07 * t[j].vsize / 1000.0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1576
			if (h < hmin)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1577
			    hmin = h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1578
			if (h > hmax)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1579
			    hmax = h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1580
		    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1581
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1582
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1583
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1584
	    case DT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1585
		dt = &DDC->det_mon[i].section.d_timings;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1586
		if (dt->clock > 15000000) { /* sanity check */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1587
		    h = (float)dt->clock / (dt->h_active + dt->h_blanking);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1588
		    h /= 1000.0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1589
		    if (h < hmin)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1590
			hmin = h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1591
		    if (h > hmax)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1592
			hmax = h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1593
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1594
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1595
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1596
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1597
	    if (numTimings > MAX_HSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1598
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1599
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1600
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1601
	if (numTimings == 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1602
	    t = DDC->timings2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1603
	    for (i = 0; i < STD_TIMINGS; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1604
		if (t[i].hsize > 256) { /* sanity check */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1605
		    h = t[i].refresh * 1.07 * t[i].vsize / 1000.0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1606
		    if (h < hmin)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1607
			hmin = h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1608
		    if (h > hmax)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1609
			hmax = h;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1610
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1611
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1612
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1613
	    if (hmax > 0.0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1614
		hsync[numTimings].lo = hmin;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1615
		hsync[numTimings].hi = hmax;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1616
		numTimings++;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1617
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1618
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1619
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1620
	if (numTimings > 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1621
	    monitor->nHsync = numTimings;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1622
	    for (i = 0; i < numTimings; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1623
	    	monitor->hsync[i].lo = hsync[i].lo;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1624
	    	monitor->hsync[i].hi = hsync[i].hi;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1625
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1626
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1627
	    pScrn->monitor->hsync[0].lo = 28;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1628
            pScrn->monitor->hsync[0].hi = 60;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1629
            monitor->nHsync = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1630
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1631
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1632
    } else {  /* Vrefresh */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1633
	for (i = 0; i < DET_TIMINGS; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1634
	    switch (DDC->det_mon[i].type) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1635
	    case DS_RANGES:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1636
		mon_range = &DDC->det_mon[i].section.ranges;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1637
		vrefresh[numTimings].lo = mon_range->min_v;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1638
		vrefresh[numTimings].hi = mon_range->max_v;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1639
		numTimings++;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1640
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1641
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1642
	    case DS_STD_TIMINGS:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1643
		t = DDC->det_mon[i].section.std_t;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1644
		for (j = 0; j < 5; j++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1645
		    if (t[j].hsize > 256) { /* sanity check */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1646
			if (t[j].refresh < vmin)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1647
			    vmin = t[i].refresh;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1648
			if (t[j].refresh > vmax)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1649
			    vmax = t[i].refresh;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1650
		    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1651
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1652
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1653
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1654
	    case DT:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1655
		dt = &DDC->det_mon[i].section.d_timings;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1656
		if (dt->clock > 15000000) { /* sanity check */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1657
		    h = (float)dt->clock / (dt->h_active + dt->h_blanking);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1658
		    v = h / (dt->v_active + dt->v_blanking);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1659
		    if (dt->interlaced) 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1660
			v /= 2.0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1661
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1662
		    if (v < vmin)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1663
			vmin = v;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1664
		    if (v > vmax)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1665
			vmax = v;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1666
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1667
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1668
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1669
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1670
	    if (numTimings > MAX_HSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1671
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1672
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1673
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1674
	if (numTimings == 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1675
	    t = DDC->timings2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1676
	    for (i = 0; i < STD_TIMINGS; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1677
		if (t[i].hsize > 256) { /* sanity check */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1678
		    if (t[i].refresh < vmin)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1679
			vmin = t[i].refresh;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1680
		    if (t[i].refresh > vmax)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1681
			vmax = t[i].refresh;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1682
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1683
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1684
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1685
	    if (vmax > 0.0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1686
		vrefresh[numTimings].lo = vmin;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1687
		vrefresh[numTimings].hi = vmax;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1688
		numTimings++;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1689
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1690
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1691
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1692
	if (numTimings > 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1693
	    monitor->nVrefresh = numTimings;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1694
	    for (i = 0; i < numTimings; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1695
		monitor->vrefresh[i].lo = vrefresh[i].lo;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1696
		monitor->vrefresh[i].hi = vrefresh[i].hi;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1697
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1698
	 } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1699
	    pScrn->monitor->vrefresh[0].lo = 43;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1700
            pScrn->monitor->vrefresh[0].hi = 72;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1701
            monitor->nVrefresh = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1702
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1703
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1704
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1705
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1706
/***********
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1707
   xfree's xf86ValidateModes routine deosn't work well with DFPs
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1708
   here is our own validation routine. All modes between
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1709
   640<=XRes<=MaxRes and 480<=YRes<=MaxYRes will be permitted.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1710
   NOTE: RageProII doesn't support rmx, can only work with the
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1711
         standard modes the monitor can support (scale).
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1712
************/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1713
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1714
static int R128ValidateFPModes(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1715
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1716
    int i, j, count=0, width, height;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1717
    R128InfoPtr info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1718
    DisplayModePtr last = NULL, new = NULL, first = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1719
    xf86MonPtr ddc;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1720
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1721
    /* Free any allocated modes during configuration. We don't need them*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1722
    while (pScrn->modes)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1723
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1724
	    xf86DeleteMode(&pScrn->modes, pScrn->modes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1725
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1726
    while (pScrn->modePool)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1727
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1728
	    xf86DeleteMode(&pScrn->modePool, pScrn->modePool);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1729
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1730
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1731
    pScrn->virtualX = pScrn->display->virtualX;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1732
    pScrn->virtualY = pScrn->display->virtualY;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1733
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1734
    /* If no mode specified in config, we use native resolution*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1735
    if(!pScrn->display->modes[0])
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1736
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1737
        pScrn->display->modes[0] = xnfalloc(16);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1738
        sprintf(pScrn->display->modes[0], "%dx%d",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1739
               info->PanelXRes, info->PanelYRes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1740
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1741
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1742
    for(i=0; pScrn->display->modes[i] != NULL; i++)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1743
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1744
        if (sscanf(pScrn->display->modes[i], "%dx%d", &width, &height) == 2)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1745
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1746
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1747
            if(width < 640 || width > info->PanelXRes ||
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1748
               height < 480 || height > info->PanelYRes)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1749
            {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1750
                xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1751
                    "Mode %s is out of range.\n"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1752
                    "Valid mode should be between 640x480-%dx%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1753
                    pScrn->display->modes[i], info->PanelXRes, info->PanelYRes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1754
                continue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1755
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1756
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1757
            new = xnfcalloc(1, sizeof(DisplayModeRec));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1758
            new->prev = last;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1759
            new->name = xnfalloc(strlen(pScrn->display->modes[i]) + 1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1760
            strcpy(new->name, pScrn->display->modes[i]);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1761
            new->HDisplay = new->CrtcHDisplay = width;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1762
            new->VDisplay = new->CrtcVDisplay = height;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1763
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1764
            ddc = pScrn->monitor->DDC;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1765
            for(j=0; j<DET_TIMINGS; j++)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1766
            {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1767
                /*We use native mode clock only*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1768
                if(ddc->det_mon[j].type == 0){
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1769
                    new->Clock = ddc->det_mon[j].section.d_timings.clock / 1000;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1770
                    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1771
                }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1772
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1773
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1774
            if(new->prev) new->prev->next = new;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1775
            last = new;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1776
            if(!first) first = new;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1777
            pScrn->display->virtualX =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1778
            pScrn->virtualX = MAX(pScrn->virtualX, width);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1779
            pScrn->display->virtualY =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1780
            pScrn->virtualY = MAX(pScrn->virtualY, height);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1781
            count++;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1782
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1783
        else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1784
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1785
            xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1786
                "Mode name %s is invalid\n", pScrn->display->modes[i]);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1787
            continue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1788
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1789
   }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1790
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1791
   if(last)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1792
   {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1793
       last->next = first;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1794
       first->prev = last;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1795
       pScrn->modes = first;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1796
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1797
       /*FIXME: May need to validate line pitch here*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1798
       {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1799
           int dummy = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1800
           switch(pScrn->depth / 8)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1801
           {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1802
              case 1:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1803
                  dummy = 128 - pScrn->virtualX % 128;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1804
                  break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1805
              case 2:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1806
                  dummy = 32 - pScrn->virtualX % 32;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1807
                  break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1808
              case 3:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1809
              case 4:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1810
                  dummy = 16 - pScrn->virtualX % 16;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1811
           }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1812
           pScrn->displayWidth = pScrn->virtualX + dummy;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1813
       }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1814
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1815
   }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1816
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1817
   return count;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1818
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1819
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1820
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1821
/* This is called by R128PreInit to validate modes and compute parameters
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1822
   for all of the valid modes. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1823
static Bool R128PreInitModes(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1824
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1825
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1826
    ClockRangePtr clockRanges;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1827
    int           modesFound;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1828
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1829
    if(info->isDFP) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1830
        R128MapMem(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1831
        info->BIOSDisplay = R128_BIOS_DISPLAY_FP;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1832
        /* validate if DFP really connected. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1833
        if(!R128GetDFPInfo(pScrn)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1834
            info->isDFP = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1835
            info->BIOSDisplay = R128_BIOS_DISPLAY_CRT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1836
        } else if(!info->isPro2) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1837
            /* RageProII doesn't support rmx, we can't use native-mode
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1838
               stretching for other non-native modes. It will rely on
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1839
               whatever VESA modes monitor can support. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1840
            modesFound = R128ValidateFPModes(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1841
            if(modesFound < 1) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1842
                 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1843
                     "No valid mode found for this DFP/LCD\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1844
                 R128UnmapMem(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1845
                 return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1846
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1847
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1848
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1849
        R128UnmapMem(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1850
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1851
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1852
    if(!info->isDFP || info->isPro2) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1853
				/* Get mode information */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1854
        pScrn->progClock                   = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1855
        clockRanges                        = xnfcalloc(sizeof(*clockRanges), 1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1856
        clockRanges->next                  = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1857
        clockRanges->minClock              = info->pll.min_pll_freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1858
        clockRanges->maxClock              = info->pll.max_pll_freq * 10;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1859
        clockRanges->clockIndex            = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1860
        if (info->HasPanelRegs || info->isDFP) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1861
            clockRanges->interlaceAllowed  = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1862
            clockRanges->doubleScanAllowed = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1863
        } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1864
            clockRanges->interlaceAllowed  = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1865
            clockRanges->doubleScanAllowed = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1866
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1867
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1868
        if(pScrn->monitor->DDC) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1869
        /*if we still don't know sync range yet, let's try EDID.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1870
          Note that, since we can have dual heads, the Xconfigurator
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1871
          may not be able to probe both monitors correctly through
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1872
          vbe probe function (R128ProbeDDC). Here we provide an
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1873
          additional way to auto-detect sync ranges if they haven't
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1874
          been added to XF86Config manually.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1875
        **/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1876
            if(pScrn->monitor->nHsync <= 0)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1877
                R128SetSyncRangeFromEdid(pScrn, 1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1878
            if(pScrn->monitor->nVrefresh <= 0)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1879
                R128SetSyncRangeFromEdid(pScrn, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1880
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1881
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1882
        modesFound = xf86ValidateModes(pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1883
				   pScrn->monitor->Modes,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1884
				   pScrn->display->modes,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1885
				   clockRanges,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1886
				   NULL,        /* linePitches */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1887
				   8 * 64,      /* minPitch */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1888
				   8 * 1024,    /* maxPitch */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1889
/*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1890
 * ATI docs say pitchInc must be 8 * 64, but this doesn't permit a pitch of
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1891
 * 800 bytes, which is known to work on the Rage128 LF on clamshell iBooks
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1892
 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1893
				   8 * 32,      /* pitchInc */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1894
				   128,         /* minHeight */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1895
				   2048,        /* maxHeight */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1896
				   pScrn->display->virtualX,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1897
				   pScrn->display->virtualY,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1898
				   info->FbMapSize,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1899
				   LOOKUP_BEST_REFRESH);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1900
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1901
        if (modesFound < 1 && info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1902
		fbdevHWUseBuildinMode(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1903
		pScrn->displayWidth = fbdevHWGetLineLength(pScrn)/(pScrn->bitsPerPixel/8);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1904
		modesFound = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1905
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1906
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1907
        if (modesFound == -1) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1908
        xf86PruneDriverModes(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1909
        if (!modesFound || !pScrn->modes) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1910
            xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1911
            return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1912
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1913
        xf86SetCrtcForModes(pScrn, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1914
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1915
				/* Set DPI */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1916
    pScrn->currentMode = pScrn->modes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1917
    xf86PrintModes(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1918
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1919
    xf86SetDpi(pScrn, 0, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1920
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1921
				/* Get ScreenInit function */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1922
    if (!xf86LoadSubModule(pScrn, "fb")) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1923
    xf86LoaderReqSymLists(fbSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1924
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1925
    info->CurrentLayout.displayWidth = pScrn->displayWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1926
    info->CurrentLayout.mode = pScrn->currentMode;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1927
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1928
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1929
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1930
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1931
/* This is called by R128PreInit to initialize the hardware cursor. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1932
static Bool R128PreInitCursor(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1933
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1934
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1935
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1936
    if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1937
	if (!xf86LoadSubModule(pScrn, "ramdac")) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1938
	xf86LoaderReqSymLists(ramdacSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1939
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1940
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1941
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1942
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1943
/* This is called by R128PreInit to initialize hardware acceleration. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1944
static Bool R128PreInitAccel(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1945
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1946
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1947
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1948
    if (!xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1949
	if (!xf86LoadSubModule(pScrn, "xaa")) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1950
	xf86LoaderReqSymLists(xaaSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1951
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1952
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1953
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1954
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1955
static Bool R128PreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1956
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1957
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1958
#if 1 && !defined(__alpha__)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1959
    /* int10 is broken on some Alphas */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1960
    if (xf86LoadSubModule(pScrn, "int10")) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1961
	xf86LoaderReqSymLists(int10Symbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1962
	xf86DrvMsg(pScrn->scrnIndex,X_INFO,"initializing int10\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1963
	*ppInt10 = xf86InitInt10(info->pEnt->index);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1964
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1965
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1966
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1967
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1968
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1969
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1970
static Bool R128PreInitDRI(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1971
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1972
    R128InfoPtr   info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1973
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1974
    if (xf86ReturnOptValBool(info->Options, OPTION_CCE_PIO, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1975
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forcing CCE into PIO mode\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1976
	info->CCEMode = R128_DEFAULT_CCE_PIO_MODE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1977
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1978
	info->CCEMode = R128_DEFAULT_CCE_BM_MODE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1979
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1980
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1981
    if (xf86ReturnOptValBool(info->Options, OPTION_NO_SECURITY, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1982
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1983
		   "WARNING!!!  CCE Security checks disabled!!! **********\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1984
	info->CCESecure = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1985
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1986
	info->CCESecure = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1987
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1988
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1989
    info->agpMode        = R128_DEFAULT_AGP_MODE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1990
    info->agpSize        = R128_DEFAULT_AGP_SIZE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1991
    info->ringSize       = R128_DEFAULT_RING_SIZE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1992
    info->bufSize        = R128_DEFAULT_BUFFER_SIZE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1993
    info->agpTexSize     = R128_DEFAULT_AGP_TEX_SIZE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1994
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1995
    info->CCEusecTimeout = R128_DEFAULT_CCE_TIMEOUT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1996
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1997
    if (!info->IsPCI) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1998
	if (xf86GetOptValInteger(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1999
				 OPTION_AGP_MODE, &(info->agpMode))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2000
	    if (info->agpMode < 1 || info->agpMode > R128_AGP_MAX_MODE) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2001
		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2002
			   "Illegal AGP Mode: %d\n", info->agpMode);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2003
		return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2004
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2005
	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2006
		       "Using AGP %dx mode\n", info->agpMode);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2007
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2008
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2009
	if (xf86GetOptValInteger(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2010
				 OPTION_AGP_SIZE, (int *)&(info->agpSize))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2011
	    switch (info->agpSize) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2012
	    case 4:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2013
	    case 8:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2014
	    case 16:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2015
	    case 32:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2016
	    case 64:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2017
	    case 128:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2018
	    case 256:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2019
		break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2020
	    default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2021
		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2022
			   "Illegal AGP size: %d MB\n", info->agpSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2023
		return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2024
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2025
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2026
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2027
	if (xf86GetOptValInteger(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2028
				 OPTION_RING_SIZE, &(info->ringSize))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2029
	    if (info->ringSize < 1 || info->ringSize >= (int)info->agpSize) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2030
		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2031
			   "Illegal ring buffer size: %d MB\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2032
			   info->ringSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2033
		return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2034
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2035
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2036
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2037
	if (xf86GetOptValInteger(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2038
				 OPTION_BUFFER_SIZE, &(info->bufSize))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2039
	    if (info->bufSize < 1 || info->bufSize >= (int)info->agpSize) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2040
		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2041
			   "Illegal vertex/indirect buffers size: %d MB\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2042
			   info->bufSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2043
		return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2044
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2045
	    if (info->bufSize > 2) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2046
		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2047
			   "Illegal vertex/indirect buffers size: %d MB\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2048
			   info->bufSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2049
		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2050
			   "Clamping vertex/indirect buffers size to 2 MB\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2051
		info->bufSize = 2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2052
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2053
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2054
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2055
	if (info->ringSize + info->bufSize + info->agpTexSize >
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2056
	    (int)info->agpSize) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2057
	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2058
		       "Buffers are too big for requested AGP space\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2059
	    return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2060
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2061
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2062
	info->agpTexSize = info->agpSize - (info->ringSize + info->bufSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2063
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2064
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2065
    if (xf86GetOptValInteger(info->Options, OPTION_USEC_TIMEOUT,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2066
			     &(info->CCEusecTimeout))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2067
	/* This option checked by the R128 DRM kernel module */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2068
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2069
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2070
    if (!xf86LoadSubModule(pScrn, "shadowfb")) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2071
	info->allowPageFlip = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2072
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2073
		   "Couldn't load shadowfb module:\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2074
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2075
	xf86LoaderReqSymLists(driShadowFBSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2076
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2077
	info->allowPageFlip = xf86ReturnOptValBool(info->Options,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2078
						   OPTION_PAGE_FLIP,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2079
						   FALSE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2080
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2081
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2082
    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Page flipping %sabled\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2083
	       info->allowPageFlip ? "en" : "dis");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2084
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2085
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2086
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2087
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2088
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2089
/* R128PreInit is called once at server startup. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2090
_X_EXPORT Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2091
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2092
    R128InfoPtr      info;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2093
    xf86Int10InfoPtr pInt10 = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2094
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2095
    R128TRACE(("R128PreInit\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2096
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2097
    if (pScrn->numEntities != 1) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2098
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2099
    if (!R128GetRec(pScrn)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2100
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2101
    info               = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2102
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2103
    info->IsSecondary  = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2104
    info->IsPrimary = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2105
    info->SwitchingMode = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2106
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2107
    info->pEnt         = xf86GetEntityInfo(pScrn->entityList[0]);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2108
    if (info->pEnt->location.type != BUS_PCI) goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2109
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2110
    if(xf86IsEntityShared(pScrn->entityList[0]))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2111
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2112
        if(xf86IsPrimInitDone(pScrn->entityList[0]))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2113
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2114
            DevUnion* pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2115
            R128EntPtr pR128Ent;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2116
            info->IsSecondary = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2117
            pPriv = xf86GetEntityPrivate(pScrn->entityList[0], 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2118
                    getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2119
            pR128Ent = pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2120
            if(pR128Ent->BypassSecondary) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2121
            pR128Ent->pSecondaryScrn = pScrn;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2122
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2123
        else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2124
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2125
            DevUnion* pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2126
            R128EntPtr pR128Ent;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2127
	    info->IsPrimary = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2128
            xf86SetPrimInitDone(pScrn->entityList[0]);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2129
            pPriv = xf86GetEntityPrivate(pScrn->entityList[0], 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2130
                    getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2131
            pR128Ent = pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2132
            pR128Ent->pPrimaryScrn = pScrn;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2133
            pR128Ent->IsDRIEnabled = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2134
            pR128Ent->BypassSecondary = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2135
            pR128Ent->HasSecondary = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2136
            pR128Ent->RestorePrimary = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2137
            pR128Ent->IsSecondaryRestored = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2138
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2139
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2140
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2141
    if (flags & PROBE_DETECT) {
31
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents: 19
diff changeset
  2142
	ConfiguredMonitor = R128ProbeDDC(pScrn, info->pEnt->index);
19
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2143
	return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2144
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2145
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2146
    info->PciInfo      = xf86GetPciInfoForEntity(info->pEnt->index);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2147
    info->PciTag       = pciTag(info->PciInfo->bus,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2148
				info->PciInfo->device,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2149
				info->PciInfo->func);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2150
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2151
    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2152
	       "PCI bus %d card %d func %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2153
	       info->PciInfo->bus,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2154
	       info->PciInfo->device,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2155
	       info->PciInfo->func);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2156
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2157
    if (xf86RegisterResources(info->pEnt->index, 0, ResNone)) goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2158
    if (xf86SetOperatingState(resVga, info->pEnt->index, ResUnusedOpr)) goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2159
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2160
    pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_VIEWPORT | RAC_CURSOR;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2161
    pScrn->monitor     = pScrn->confScreen->monitor;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2162
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2163
    if (!R128PreInitVisual(pScrn))    goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2164
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2165
				/* We can't do this until we have a
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2166
				   pScrn->display. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2167
    xf86CollectOptions(pScrn, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2168
    if (!(info->Options = xalloc(sizeof(R128Options))))    goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2169
    memcpy(info->Options, R128Options, sizeof(R128Options));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2170
    xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, info->Options);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2171
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2172
    /* By default, don't do VGA IOs on ppc */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2173
#if defined(__powerpc__) || !defined(WITH_VGAHW)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2174
    info->VGAAccess = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2175
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2176
    info->VGAAccess = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2177
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2178
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2179
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2180
    xf86GetOptValBool(info->Options, OPTION_VGA_ACCESS, &info->VGAAccess);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2181
    if (info->VGAAccess) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2182
       if (!xf86LoadSubModule(pScrn, "vgahw"))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2183
           info->VGAAccess = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2184
        else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2185
           xf86LoaderReqSymLists(vgahwSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2186
            if (!vgaHWGetHWRec(pScrn))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2187
               info->VGAAccess = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2188
       }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2189
       if (!info->VGAAccess)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2190
           xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Loading VGA module failed,"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2191
                      " trying to run without it\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2192
    } else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2193
           xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VGAAccess option set to FALSE,"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2194
                      " VGA module load skipped\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2195
    if (info->VGAAccess)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2196
        vgaHWGetIOBase(VGAHWPTR(pScrn));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2197
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2198
    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VGAHW support not compiled, VGA "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2199
               "module load skipped\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2200
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2201
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2202
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2203
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2204
    if (!R128PreInitWeight(pScrn))    goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2205
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2206
    if(xf86GetOptValInteger(info->Options, OPTION_VIDEO_KEY, &(info->videoKey))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2207
        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "video key set to 0x%x\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2208
                                info->videoKey);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2209
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2210
        info->videoKey = 0x1E;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2211
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2212
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2213
    if (xf86ReturnOptValBool(info->Options, OPTION_SHOW_CACHE, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2214
        info->showCache = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2215
        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ShowCache enabled\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2216
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2217
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2218
#ifdef __powerpc__
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2219
    if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, TRUE))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2220
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2221
    if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, FALSE))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2222
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2223
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2224
	info->FBDev = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2225
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2226
		   "Using framebuffer device\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2227
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2228
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2229
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2230
	/* check for linux framebuffer device */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2231
	if (!xf86LoadSubModule(pScrn, "fbdevhw")) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2232
	xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2233
	if (!fbdevHWInit(pScrn, info->PciInfo, NULL)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2234
	pScrn->SwitchMode    = fbdevHWSwitchModeWeak();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2235
	pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2236
	pScrn->ValidMode     = fbdevHWValidModeWeak();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2237
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2238
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2239
    if (!info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2240
	if (!R128PreInitInt10(pScrn, &pInt10)) goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2241
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2242
    if (!R128PreInitConfig(pScrn))             goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2243
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2244
    if (!R128GetBIOSParameters(pScrn, pInt10)) goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2245
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2246
    if (!R128GetPLLParameters(pScrn))          goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2247
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2248
    /* Don't fail on this one */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2249
    R128PreInitDDC(pScrn, pInt10);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2250
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2251
    if (!R128PreInitGamma(pScrn))              goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2252
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2253
    if (!R128PreInitModes(pScrn))              goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2254
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2255
    if (!R128PreInitCursor(pScrn))             goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2256
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2257
    if (!R128PreInitAccel(pScrn))              goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2258
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2259
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2260
    if (!R128PreInitDRI(pScrn))                goto fail;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2261
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2262
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2263
				/* Free the video bios (if applicable) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2264
    if (info->VBIOS) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2265
	xfree(info->VBIOS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2266
	info->VBIOS = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2267
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2268
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2269
				/* Free int10 info */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2270
    if (pInt10)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2271
	xf86FreeInt10(pInt10);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2272
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2273
    xf86DrvMsg(pScrn->scrnIndex, X_NOTICE,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2274
	"For information on using the multimedia capabilities\n\tof this"
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2275
	" adapter, please see http://gatos.sf.net.\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2276
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2277
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2278
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2279
  fail:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2280
				/* Pre-init failed. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2281
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2282
				/* Free the video bios (if applicable) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2283
    if (info->VBIOS) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2284
	xfree(info->VBIOS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2285
	info->VBIOS = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2286
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2287
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2288
				/* Free int10 info */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2289
    if (pInt10)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2290
	xf86FreeInt10(pInt10);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2291
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2292
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2293
    if (info->VGAAccess)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2294
           vgaHWFreeHWRec(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2295
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2296
    R128FreeRec(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2297
    return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2298
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2299
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2300
/* Load a palette. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2301
static void R128LoadPalette(ScrnInfoPtr pScrn, int numColors,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2302
			    int *indices, LOCO *colors, VisualPtr pVisual)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2303
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2304
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2305
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2306
    int           i, j;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2307
    int           idx;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2308
    unsigned char r, g, b;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2309
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2310
    /* If the second monitor is connected, we also 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2311
       need to deal with the secondary palette*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2312
    if (info->IsSecondary) j = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2313
    else j = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2314
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2315
    PAL_SELECT(j);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2316
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2317
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2318
    /* Select palette 0 (main CRTC) if using FP-enabled chip */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2319
    /*if (info->HasPanelRegs || info->isDFP) PAL_SELECT(0);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2320
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2321
    if (info->CurrentLayout.depth == 15) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2322
	/* 15bpp mode.  This sends 32 values. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2323
	for (i = 0; i < numColors; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2324
	    idx = indices[i];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2325
	    r   = colors[idx].red;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2326
	    g   = colors[idx].green;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2327
	    b   = colors[idx].blue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2328
	    OUTPAL(idx * 8, r, g, b);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2329
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2330
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2331
    else if (info->CurrentLayout.depth == 16) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2332
	/* 16bpp mode.  This sends 64 values. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2333
				/* There are twice as many green values as
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2334
				   there are values for red and blue.  So,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2335
				   we take each red and blue pair, and
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2336
				   combine it with each of the two green
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2337
				   values. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2338
	for (i = 0; i < numColors; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2339
	    idx = indices[i];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2340
	    r   = colors[idx / 2].red;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2341
	    g   = colors[idx].green;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2342
	    b   = colors[idx / 2].blue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2343
	    OUTPAL(idx * 4, r, g, b);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2344
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2345
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2346
    else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2347
	/* 8bpp mode.  This sends 256 values. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2348
	for (i = 0; i < numColors; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2349
	    idx = indices[i];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2350
	    r   = colors[idx].red;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2351
	    b   = colors[idx].blue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2352
	    g   = colors[idx].green;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2353
	    OUTPAL(idx, r, g, b);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2354
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2355
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2356
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2357
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2358
static void
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2359
R128BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2360
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2361
    ScreenPtr   pScreen = screenInfo.screens[i];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2362
    ScrnInfoPtr pScrn   = xf86Screens[i];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2363
    R128InfoPtr info    = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2364
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2365
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2366
    if (info->directRenderingEnabled)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2367
        FLUSH_RING();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2368
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2369
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2370
    pScreen->BlockHandler = info->BlockHandler;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2371
    (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2372
    pScreen->BlockHandler = R128BlockHandler;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2373
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2374
    if(info->VideoTimerCallback) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2375
        (*info->VideoTimerCallback)(pScrn, currentTime.milliseconds);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2376
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2377
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2378
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2379
/* Called at the start of each server generation. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2380
_X_EXPORT Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2381
                              int argc, char **argv)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2382
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2383
    ScrnInfoPtr pScrn  = xf86Screens[pScreen->myNum];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2384
    R128InfoPtr info   = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2385
    BoxRec      MemBox;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2386
    int		y2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2387
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2388
    R128TRACE(("R128ScreenInit %x %d\n", pScrn->memPhysBase, pScrn->fbOffset));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2389
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2390
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2391
				/* Turn off the CCE for now. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2392
    info->CCEInUse     = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2393
    info->indirectBuffer = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2394
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2395
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2396
    if (!R128MapMem(pScrn)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2397
    pScrn->fbOffset    = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2398
    if(info->IsSecondary) pScrn->fbOffset = pScrn->videoRam * 1024;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2399
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2400
    info->fbX          = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2401
    info->fbY          = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2402
    info->frontOffset  = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2403
    info->frontPitch   = pScrn->displayWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2404
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2405
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2406
    info->PaletteSavedOnVT = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2407
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2408
    R128Save(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2409
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2410
	if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2411
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2412
	if (!R128ModeInit(pScrn, pScrn->currentMode)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2413
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2414
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2415
    R128SaveScreen(pScreen, SCREEN_SAVER_ON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2416
    pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2417
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2418
				/* Visual setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2419
    miClearVisualTypes();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2420
    if (!miSetVisualTypes(pScrn->depth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2421
			  miGetDefaultVisualMask(pScrn->depth),
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2422
			  pScrn->rgbBits,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2423
			  pScrn->defaultVisual)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2424
    miSetPixmapDepths ();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2425
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2426
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2427
				/* Setup DRI after visuals have been
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2428
				   established, but before fbScreenInit is
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2429
				   called.  fbScreenInit will eventually
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2430
				   call the driver's InitGLXVisuals call
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2431
				   back. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2432
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2433
	/* FIXME: When we move to dynamic allocation of back and depth
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2434
	   buffers, we will want to revisit the following check for 3
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2435
	   times the virtual size of the screen below. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2436
	int width_bytes = (pScrn->displayWidth *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2437
			   info->CurrentLayout.pixel_bytes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2438
	int maxy        = info->FbMapSize / width_bytes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2439
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2440
	if (xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2441
	    xf86DrvMsg(scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2442
		       "Acceleration disabled, not initializing the DRI\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2443
	    info->directRenderingEnabled = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2444
	} else if (maxy <= pScrn->virtualY * 3) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2445
	    xf86DrvMsg(scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2446
		       "Static buffer allocation failed -- "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2447
		       "need at least %d kB video memory\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2448
		       (pScrn->displayWidth * pScrn->virtualY *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2449
			info->CurrentLayout.pixel_bytes * 3 + 1023) / 1024);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2450
	    info->directRenderingEnabled = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2451
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2452
            if(info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2453
                info->directRenderingEnabled = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2454
            else 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2455
            {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2456
                /* Xinerama has sync problem with DRI, disable it for now */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2457
                if(xf86IsEntityShared(pScrn->entityList[0]))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2458
                {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2459
                    info->directRenderingEnabled = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2460
 	            xf86DrvMsg(scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2461
                        "Direct Rendering Disabled -- "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2462
                        "Dual-head configuration is not working with DRI "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2463
                        "at present.\nPlease use only one Device/Screen "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2464
                        "section in your XFConfig file.\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2465
                }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2466
                else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2467
                info->directRenderingEnabled =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2468
                    R128DRIScreenInit(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2469
                if(xf86IsEntityShared(pScrn->entityList[0]))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2470
                {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2471
                    DevUnion* pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2472
                    R128EntPtr pR128Ent;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2473
                    pPriv = xf86GetEntityPrivate(pScrn->entityList[0], 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2474
                        getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2475
                    pR128Ent = pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2476
                    pR128Ent->IsDRIEnabled = info->directRenderingEnabled;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2477
                }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2478
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2479
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2480
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2481
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2482
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2483
    if (!fbScreenInit (pScreen, info->FB,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2484
		       pScrn->virtualX, pScrn->virtualY,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2485
		       pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2486
		       pScrn->bitsPerPixel))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2487
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2488
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2489
    xf86SetBlackWhitePixels(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2490
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2491
    if (pScrn->bitsPerPixel > 8) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2492
	VisualPtr visual;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2493
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2494
	visual = pScreen->visuals + pScreen->numVisuals;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2495
	while (--visual >= pScreen->visuals) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2496
	    if ((visual->class | DynamicClass) == DirectColor) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2497
		visual->offsetRed   = pScrn->offset.red;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2498
		visual->offsetGreen = pScrn->offset.green;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2499
		visual->offsetBlue  = pScrn->offset.blue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2500
		visual->redMask     = pScrn->mask.red;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2501
		visual->greenMask   = pScrn->mask.green;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2502
		visual->blueMask    = pScrn->mask.blue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2503
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2504
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2505
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2506
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2507
    /* must be after RGB order fixed */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2508
    fbPictureInit (pScreen, 0, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2509
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2510
				/* Memory manager setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2511
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2512
    if (info->directRenderingEnabled) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2513
	FBAreaPtr fbarea;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2514
	int width_bytes = (pScrn->displayWidth *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2515
			   info->CurrentLayout.pixel_bytes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2516
	int cpp = info->CurrentLayout.pixel_bytes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2517
	int bufferSize = pScrn->virtualY * width_bytes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2518
	int l, total;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2519
	int scanlines;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2520
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2521
	switch (info->CCEMode) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2522
	case R128_DEFAULT_CCE_PIO_MODE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2523
	    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CCE in PIO mode\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2524
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2525
	case R128_DEFAULT_CCE_BM_MODE:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2526
	    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CCE in BM mode\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2527
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2528
	default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2529
	    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CCE in UNKNOWN mode\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2530
	    break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2531
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2532
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2533
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2534
		   "Using %d MB AGP aperture\n", info->agpSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2535
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2536
		   "Using %d MB for the ring buffer\n", info->ringSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2537
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2538
		   "Using %d MB for vertex/indirect buffers\n", info->bufSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2539
	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2540
		   "Using %d MB for AGP textures\n", info->agpTexSize);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2541
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2542
	/* Try for front, back, depth, and two framebuffers worth of
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2543
	 * pixmap cache.  Should be enough for a fullscreen background
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2544
	 * image plus some leftovers.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2545
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2546
	info->textureSize = info->FbMapSize - 5 * bufferSize;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2547
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2548
	/* If that gives us less than half the available memory, let's
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2549
	 * be greedy and grab some more.  Sorry, I care more about 3D
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2550
	 * performance than playing nicely, and you'll get around a full
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2551
	 * framebuffer's worth of pixmap cache anyway.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2552
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2553
	if (info->textureSize < (int)info->FbMapSize / 2) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2554
	    info->textureSize = info->FbMapSize - 4 * bufferSize;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2555
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2556
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2557
	if (info->textureSize > 0) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2558
	    l = R128MinBits((info->textureSize-1) / R128_NR_TEX_REGIONS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2559
	    if (l < R128_LOG_TEX_GRANULARITY) l = R128_LOG_TEX_GRANULARITY;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2560
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2561
	    /* Round the texture size up to the nearest whole number of
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2562
	     * texture regions.  Again, be greedy about this, don't
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2563
	     * round down.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2564
	     */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2565
	    info->log2TexGran = l;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2566
	    info->textureSize = (info->textureSize >> l) << l;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2567
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2568
	    info->textureSize = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2569
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2570
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2571
	/* Set a minimum usable local texture heap size.  This will fit
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2572
	 * two 256x256x32bpp textures.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2573
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2574
	if (info->textureSize < 512 * 1024) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2575
	    info->textureOffset = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2576
	    info->textureSize = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2577
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2578
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2579
	total = info->FbMapSize - info->textureSize;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2580
	scanlines = total / width_bytes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2581
	if (scanlines > 8191) scanlines = 8191;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2582
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2583
	/* Recalculate the texture offset and size to accomodate any
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2584
	 * rounding to a whole number of scanlines.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2585
	 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2586
	info->textureOffset = scanlines * width_bytes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2587
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2588
	MemBox.x1 = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2589
	MemBox.y1 = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2590
	MemBox.x2 = pScrn->displayWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2591
	MemBox.y2 = scanlines;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2592
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2593
	if (!xf86InitFBManager(pScreen, &MemBox)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2594
	    xf86DrvMsg(scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2595
		       "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2596
		       MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2597
	    return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2598
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2599
	    int width, height;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2600
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2601
	    xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2602
		       "Memory manager initialized to (%d,%d) (%d,%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2603
		       MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2604
	    if ((fbarea = xf86AllocateOffscreenArea(pScreen,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2605
						    pScrn->displayWidth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2606
						    2, 0, NULL, NULL, NULL))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2607
		xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2608
			   "Reserved area from (%d,%d) to (%d,%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2609
			   fbarea->box.x1, fbarea->box.y1,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2610
			   fbarea->box.x2, fbarea->box.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2611
	    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2612
		xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve area\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2613
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2614
	    if (xf86QueryLargestOffscreenArea(pScreen, &width,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2615
					      &height, 0, 0, 0)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2616
		xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2617
			   "Largest offscreen area available: %d x %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2618
			   width, height);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2619
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2620
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2621
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2622
				/* Allocate the shared back buffer */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2623
	if ((fbarea = xf86AllocateOffscreenArea(pScreen,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2624
						pScrn->virtualX,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2625
						pScrn->virtualY,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2626
						32, NULL, NULL, NULL))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2627
	    xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2628
		       "Reserved back buffer from (%d,%d) to (%d,%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2629
		       fbarea->box.x1, fbarea->box.y1,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2630
		       fbarea->box.x2, fbarea->box.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2631
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2632
	    info->backX = fbarea->box.x1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2633
	    info->backY = fbarea->box.y1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2634
	    info->backOffset = (fbarea->box.y1 * width_bytes +
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2635
				fbarea->box.x1 * cpp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2636
	    info->backPitch = pScrn->displayWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2637
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2638
	    xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve back buffer\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2639
	    info->backX = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2640
	    info->backY = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2641
	    info->backOffset = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2642
	    info->backPitch = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2643
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2644
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2645
				/* Allocate the shared depth buffer */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2646
	if ((fbarea = xf86AllocateOffscreenArea(pScreen,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2647
						pScrn->virtualX,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2648
						pScrn->virtualY + 1,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2649
						32, NULL, NULL, NULL))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2650
	    xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2651
		       "Reserved depth buffer from (%d,%d) to (%d,%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2652
		       fbarea->box.x1, fbarea->box.y1,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2653
		       fbarea->box.x2, fbarea->box.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2654
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2655
	    info->depthX = fbarea->box.x1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2656
	    info->depthY = fbarea->box.y1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2657
	    info->depthOffset = (fbarea->box.y1 * width_bytes +
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2658
				 fbarea->box.x1 * cpp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2659
	    info->depthPitch = pScrn->displayWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2660
	    info->spanOffset = ((fbarea->box.y2 - 1) * width_bytes +
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2661
				fbarea->box.x1 * cpp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2662
	    xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2663
		       "Reserved depth span from (%d,%d) offset 0x%x\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2664
		       fbarea->box.x1, fbarea->box.y2 - 1, info->spanOffset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2665
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2666
	    xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve depth buffer\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2667
	    info->depthX = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2668
	    info->depthY = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2669
	    info->depthOffset = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2670
	    info->depthPitch = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2671
	    info->spanOffset = -1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2672
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2673
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2674
	xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2675
		   "Reserved %d kb for textures at offset 0x%x\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2676
		   info->textureSize/1024, info->textureOffset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2677
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2678
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2679
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2680
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2681
	MemBox.x1 = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2682
	MemBox.y1 = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2683
	MemBox.x2 = pScrn->displayWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2684
	y2        = (info->FbMapSize
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2685
		     / (pScrn->displayWidth *
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2686
			info->CurrentLayout.pixel_bytes));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2687
				/* The acceleration engine uses 14 bit
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2688
				   signed coordinates, so we can't have any
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2689
				   drawable caches beyond this region. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2690
	if (y2 > 8191) y2 = 8191;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2691
	MemBox.y2 = y2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2692
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2693
	if (!xf86InitFBManager(pScreen, &MemBox)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2694
	    xf86DrvMsg(scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2695
		       "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2696
		       MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2697
	    return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2698
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2699
	    int       width, height;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2700
	    FBAreaPtr fbarea;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2701
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2702
	    xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2703
		       "Memory manager initialized to (%d,%d) (%d,%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2704
		       MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2705
	    if ((fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2706
						    2, 0, NULL, NULL, NULL))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2707
		xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2708
			   "Reserved area from (%d,%d) to (%d,%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2709
			   fbarea->box.x1, fbarea->box.y1,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2710
			   fbarea->box.x2, fbarea->box.y2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2711
	    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2712
		xf86DrvMsg(scrnIndex, X_ERROR, "Unable to reserve area\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2713
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2714
	    if (xf86QueryLargestOffscreenArea(pScreen, &width, &height,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2715
					      0, 0, 0)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2716
		xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2717
			   "Largest offscreen area available: %d x %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2718
			   width, height);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2719
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2720
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2721
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2722
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2723
				/* Acceleration setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2724
    if (!xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2725
	if (R128AccelInit(pScreen)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2726
	    xf86DrvMsg(scrnIndex, X_INFO, "Acceleration enabled\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2727
	    info->accelOn = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2728
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2729
	    xf86DrvMsg(scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2730
		       "Acceleration initialization failed\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2731
	    xf86DrvMsg(scrnIndex, X_INFO, "Acceleration disabled\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2732
	    info->accelOn = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2733
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2734
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2735
	xf86DrvMsg(scrnIndex, X_INFO, "Acceleration disabled\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2736
	info->accelOn = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2737
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2738
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2739
				/* DGA setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2740
    R128DGAInit(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2741
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2742
				/* Backing store setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2743
    miInitializeBackingStore(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2744
    xf86SetBackingStore(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2745
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2746
				/* Set Silken Mouse */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2747
    xf86SetSilkenMouse(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2748
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2749
				/* Cursor setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2750
    miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2751
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2752
				/* Hardware cursor setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2753
    if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2754
	if (R128CursorInit(pScreen)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2755
	    int width, height;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2756
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2757
	    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2758
		       "Using hardware cursor (scanline %ld)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2759
		       info->cursor_start / pScrn->displayWidth);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2760
	    if (xf86QueryLargestOffscreenArea(pScreen, &width, &height,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2761
					      0, 0, 0)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2762
		xf86DrvMsg(scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2763
			   "Largest offscreen area available: %d x %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2764
			   width, height);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2765
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2766
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2767
	    xf86DrvMsg(scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2768
		       "Hardware cursor initialization failed\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2769
	    xf86DrvMsg(scrnIndex, X_INFO, "Using software cursor\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2770
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2771
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2772
	info->cursor_start = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2773
	xf86DrvMsg(scrnIndex, X_INFO, "Using software cursor\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2774
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2775
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2776
				/* Colormap setup */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2777
    if (!miCreateDefColormap(pScreen)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2778
    if (!xf86HandleColormaps(pScreen, 256, info->dac6bits ? 6 : 8,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2779
			     (info->FBDev ? fbdevHWLoadPaletteWeak() :
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2780
			     R128LoadPalette), NULL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2781
			     CMAP_PALETTED_TRUECOLOR
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2782
			     | CMAP_RELOAD_ON_MODE_SWITCH
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2783
#if 0 /* This option messes up text mode! ([email protected]) */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2784
			     | CMAP_LOAD_EVEN_IF_OFFSCREEN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2785
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2786
			     )) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2787
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2788
    /* DPMS setup - FIXME: also for mirror mode in non-fbdev case? - Michel */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2789
    if (info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2790
	xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2791
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2792
    else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2793
	if (info->DisplayType == MT_LCD)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2794
	    xf86DPMSInit(pScreen, R128DisplayPowerManagementSetLCD, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2795
	else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2796
	    xf86DPMSInit(pScreen, R128DisplayPowerManagementSet, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2797
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2798
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2799
    if (!info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2800
	R128InitVideo(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2801
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2802
				/* Provide SaveScreen */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2803
    pScreen->SaveScreen  = R128SaveScreen;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2804
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2805
				/* Wrap CloseScreen */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2806
    info->CloseScreen    = pScreen->CloseScreen;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2807
    pScreen->CloseScreen = R128CloseScreen;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2808
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2809
				/* Note unused options */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2810
    if (serverGeneration == 1)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2811
	xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2812
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2813
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2814
				/* DRI finalization */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2815
    if (info->directRenderingEnabled) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2816
				/* Now that mi, fb, drm and others have
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2817
				   done their thing, complete the DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2818
				   setup. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2819
	info->directRenderingEnabled = R128DRIFinishScreenInit(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2820
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2821
    if (info->directRenderingEnabled) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2822
	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering enabled\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2823
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2824
	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2825
		   "Direct rendering disabled\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2826
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2827
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2828
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2829
    info->BlockHandler = pScreen->BlockHandler;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2830
    pScreen->BlockHandler = R128BlockHandler;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2831
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2832
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2833
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2834
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2835
/* Write common registers (initialized to 0). */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2836
static void R128RestoreCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2837
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2838
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2839
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2840
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2841
    OUTREG(R128_FP_GEN_CNTL, restore->fp_gen_cntl | R128_FP_BLANK_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2842
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2843
    OUTREG(R128_OVR_CLR,              restore->ovr_clr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2844
    OUTREG(R128_OVR_WID_LEFT_RIGHT,   restore->ovr_wid_left_right);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2845
    OUTREG(R128_OVR_WID_TOP_BOTTOM,   restore->ovr_wid_top_bottom);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2846
    OUTREG(R128_OV0_SCALE_CNTL,       restore->ov0_scale_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2847
    OUTREG(R128_MPP_TB_CONFIG,        restore->mpp_tb_config );
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2848
    OUTREG(R128_MPP_GP_CONFIG,        restore->mpp_gp_config );
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2849
    OUTREG(R128_SUBPIC_CNTL,          restore->subpic_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2850
    OUTREG(R128_VIPH_CONTROL,         restore->viph_control);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2851
    OUTREG(R128_I2C_CNTL_1,           restore->i2c_cntl_1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2852
    OUTREG(R128_GEN_INT_CNTL,         restore->gen_int_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2853
    OUTREG(R128_CAP0_TRIG_CNTL,       restore->cap0_trig_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2854
    OUTREG(R128_CAP1_TRIG_CNTL,       restore->cap1_trig_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2855
    OUTREG(R128_BUS_CNTL,             restore->bus_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2856
    OUTREG(R128_CONFIG_CNTL,          restore->config_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2857
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2858
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2859
/* Write CRTC registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2860
static void R128RestoreCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2861
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2862
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2863
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2864
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2865
    OUTREG(R128_CRTC_GEN_CNTL,        restore->crtc_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2866
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2867
    OUTREGP(R128_CRTC_EXT_CNTL, restore->crtc_ext_cntl,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2868
	    R128_CRTC_VSYNC_DIS | R128_CRTC_HSYNC_DIS | R128_CRTC_DISPLAY_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2869
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2870
    OUTREGP(R128_DAC_CNTL, restore->dac_cntl,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2871
	    R128_DAC_RANGE_CNTL | R128_DAC_BLANKING);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2872
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2873
    OUTREG(R128_CRTC_H_TOTAL_DISP,    restore->crtc_h_total_disp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2874
    OUTREG(R128_CRTC_H_SYNC_STRT_WID, restore->crtc_h_sync_strt_wid);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2875
    OUTREG(R128_CRTC_V_TOTAL_DISP,    restore->crtc_v_total_disp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2876
    OUTREG(R128_CRTC_V_SYNC_STRT_WID, restore->crtc_v_sync_strt_wid);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2877
    OUTREG(R128_CRTC_OFFSET,          restore->crtc_offset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2878
    OUTREG(R128_CRTC_OFFSET_CNTL,     restore->crtc_offset_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2879
    OUTREG(R128_CRTC_PITCH,           restore->crtc_pitch);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2880
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2881
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2882
/* Write CRTC2 registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2883
static void R128RestoreCrtc2Registers(ScrnInfoPtr pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2884
				       R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2885
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2886
    R128InfoPtr info        = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2887
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2888
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2889
    OUTREGP(R128_CRTC2_GEN_CNTL, restore->crtc2_gen_cntl,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2890
	    R128_CRTC2_DISP_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2891
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2892
    OUTREG(R128_CRTC2_H_TOTAL_DISP,    restore->crtc2_h_total_disp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2893
    OUTREG(R128_CRTC2_H_SYNC_STRT_WID, restore->crtc2_h_sync_strt_wid);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2894
    OUTREG(R128_CRTC2_V_TOTAL_DISP,    restore->crtc2_v_total_disp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2895
    OUTREG(R128_CRTC2_V_SYNC_STRT_WID, restore->crtc2_v_sync_strt_wid);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2896
    OUTREG(R128_CRTC2_OFFSET,          restore->crtc2_offset);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2897
    OUTREG(R128_CRTC2_OFFSET_CNTL,     restore->crtc2_offset_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2898
    OUTREG(R128_CRTC2_PITCH,           restore->crtc2_pitch);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2899
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2900
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2901
/* Write flat panel registers */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2902
static void R128RestoreFPRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2903
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2904
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2905
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2906
    CARD32        tmp;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2907
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2908
    if (info->BIOSDisplay != R128_DUALHEAD)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2909
        OUTREG(R128_CRTC2_GEN_CNTL,       restore->crtc2_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2910
    OUTREG(R128_FP_HORZ_STRETCH,      restore->fp_horz_stretch);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2911
    OUTREG(R128_FP_VERT_STRETCH,      restore->fp_vert_stretch);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2912
    OUTREG(R128_FP_CRTC_H_TOTAL_DISP, restore->fp_crtc_h_total_disp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2913
    OUTREG(R128_FP_CRTC_V_TOTAL_DISP, restore->fp_crtc_v_total_disp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2914
    OUTREG(R128_FP_H_SYNC_STRT_WID,   restore->fp_h_sync_strt_wid);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2915
    OUTREG(R128_FP_V_SYNC_STRT_WID,   restore->fp_v_sync_strt_wid);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2916
    OUTREG(R128_TMDS_CRC,             restore->tmds_crc);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2917
    OUTREG(R128_FP_PANEL_CNTL,        restore->fp_panel_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2918
    OUTREG(R128_FP_GEN_CNTL, restore->fp_gen_cntl & ~(CARD32)R128_FP_BLANK_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2919
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2920
    if(info->isDFP) return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2921
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2922
    tmp = INREG(R128_LVDS_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2923
    if ((tmp & (R128_LVDS_ON | R128_LVDS_BLON)) ==
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2924
	(restore->lvds_gen_cntl & (R128_LVDS_ON | R128_LVDS_BLON))) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2925
	OUTREG(R128_LVDS_GEN_CNTL, restore->lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2926
    } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2927
	if (restore->lvds_gen_cntl & (R128_LVDS_ON | R128_LVDS_BLON)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2928
	    OUTREG(R128_LVDS_GEN_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2929
		   restore->lvds_gen_cntl & (CARD32)~R128_LVDS_BLON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2930
	    usleep(R128PTR(pScrn)->PanelPwrDly * 1000);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2931
	    OUTREG(R128_LVDS_GEN_CNTL, restore->lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2932
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2933
	    OUTREG(R128_LVDS_GEN_CNTL, restore->lvds_gen_cntl | R128_LVDS_BLON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2934
	    usleep(R128PTR(pScrn)->PanelPwrDly * 1000);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2935
	    OUTREG(R128_LVDS_GEN_CNTL, restore->lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2936
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2937
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2938
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2939
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2940
static void R128PLLWaitForReadUpdateComplete(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2941
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2942
    while (INPLL(pScrn, R128_PPLL_REF_DIV) & R128_PPLL_ATOMIC_UPDATE_R);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2943
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2944
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2945
static void R128PLLWriteUpdate(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2946
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2947
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2948
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2949
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2950
    while (INPLL(pScrn, R128_PPLL_REF_DIV) & R128_PPLL_ATOMIC_UPDATE_R);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2951
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2952
    OUTPLLP(pScrn, R128_PPLL_REF_DIV, R128_PPLL_ATOMIC_UPDATE_W, 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2953
	    ~R128_PPLL_ATOMIC_UPDATE_W);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2954
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2955
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2956
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2957
static void R128PLL2WaitForReadUpdateComplete(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2958
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2959
    while (INPLL(pScrn, R128_P2PLL_REF_DIV) & R128_P2PLL_ATOMIC_UPDATE_R);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2960
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2961
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2962
static void R128PLL2WriteUpdate(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2963
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2964
    R128InfoPtr  info       = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2965
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2966
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2967
    while (INPLL(pScrn, R128_P2PLL_REF_DIV) & R128_P2PLL_ATOMIC_UPDATE_R);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2968
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2969
    OUTPLLP(pScrn, R128_P2PLL_REF_DIV,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2970
	    R128_P2PLL_ATOMIC_UPDATE_W,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2971
	    ~(R128_P2PLL_ATOMIC_UPDATE_W));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2972
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2973
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2974
/* Write PLL registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2975
static void R128RestorePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2976
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2977
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2978
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2979
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2980
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2981
    OUTPLLP(pScrn, R128_VCLK_ECP_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2982
	    R128_VCLK_SRC_SEL_CPUCLK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2983
	    ~(R128_VCLK_SRC_SEL_MASK));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2984
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2985
    OUTPLLP(pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2986
	    R128_PPLL_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2987
	    R128_PPLL_RESET
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2988
	    | R128_PPLL_ATOMIC_UPDATE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2989
	    | R128_PPLL_VGA_ATOMIC_UPDATE_EN,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2990
	    ~(R128_PPLL_RESET
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2991
	      | R128_PPLL_ATOMIC_UPDATE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2992
	      | R128_PPLL_VGA_ATOMIC_UPDATE_EN));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2993
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2994
    OUTREGP(R128_CLOCK_CNTL_INDEX, R128_PLL_DIV_SEL, ~(R128_PLL_DIV_SEL));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2995
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2996
/*        R128PLLWaitForReadUpdateComplete(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2997
    OUTPLLP(pScrn, R128_PPLL_REF_DIV,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2998
	    restore->ppll_ref_div, ~R128_PPLL_REF_DIV_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  2999
/*        R128PLLWriteUpdate(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3000
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3001
        R128PLLWaitForReadUpdateComplete(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3002
    OUTPLLP(pScrn, R128_PPLL_DIV_3,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3003
	    restore->ppll_div_3, ~R128_PPLL_FB3_DIV_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3004
/*    R128PLLWriteUpdate(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3005
    OUTPLLP(pScrn, R128_PPLL_DIV_3,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3006
	    restore->ppll_div_3, ~R128_PPLL_POST3_DIV_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3007
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3008
    R128PLLWriteUpdate(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3009
    R128PLLWaitForReadUpdateComplete(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3010
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3011
    OUTPLL(R128_HTOTAL_CNTL, restore->htotal_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3012
/*    R128PLLWriteUpdate(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3013
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3014
    OUTPLLP(pScrn, R128_PPLL_CNTL, 0, ~(R128_PPLL_RESET
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3015
					| R128_PPLL_SLEEP
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3016
					| R128_PPLL_ATOMIC_UPDATE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3017
					| R128_PPLL_VGA_ATOMIC_UPDATE_EN));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3018
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3019
    R128TRACE(("Wrote: 0x%08x 0x%08x 0x%08x (0x%08x)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3020
	       restore->ppll_ref_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3021
	       restore->ppll_div_3,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3022
	       restore->htotal_cntl,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3023
	       INPLL(pScrn, R128_PPLL_CNTL)));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3024
    R128TRACE(("Wrote: rd=%d, fd=%d, pd=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3025
	       restore->ppll_ref_div & R128_PPLL_REF_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3026
	       restore->ppll_div_3 & R128_PPLL_FB3_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3027
	       (restore->ppll_div_3 & R128_PPLL_POST3_DIV_MASK) >> 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3028
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3029
    usleep(5000); /* let the clock lock */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3030
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3031
    OUTPLLP(pScrn, R128_VCLK_ECP_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3032
	    R128_VCLK_SRC_SEL_PPLLCLK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3033
	    ~(R128_VCLK_SRC_SEL_MASK));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3034
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3035
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3036
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3037
/* Write PLL2 registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3038
static void R128RestorePLL2Registers(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3039
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3040
    R128InfoPtr info        = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3041
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3042
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3043
    OUTPLLP(pScrn, R128_V2CLK_VCLKTV_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3044
	    R128_V2CLK_SRC_SEL_CPUCLK, 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3045
	    ~R128_V2CLK_SRC_SEL_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3046
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3047
    OUTPLLP(pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3048
	    R128_P2PLL_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3049
	    R128_P2PLL_RESET
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3050
	    | R128_P2PLL_ATOMIC_UPDATE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3051
	    | R128_P2PLL_VGA_ATOMIC_UPDATE_EN,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3052
	    ~(R128_P2PLL_RESET
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3053
	      | R128_P2PLL_ATOMIC_UPDATE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3054
	      | R128_P2PLL_VGA_ATOMIC_UPDATE_EN));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3055
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3056
#if 1
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3057
    OUTREGP(R128_CLOCK_CNTL_INDEX, 0, R128_PLL2_DIV_SEL_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3058
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3059
   
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3060
        /*R128PLL2WaitForReadUpdateComplete(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3061
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3062
    OUTPLLP(pScrn, R128_P2PLL_REF_DIV, restore->p2pll_ref_div, ~R128_P2PLL_REF_DIV_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3063
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3064
/*        R128PLL2WriteUpdate(pScrn);   
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3065
    R128PLL2WaitForReadUpdateComplete(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3066
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3067
    OUTPLLP(pScrn, R128_P2PLL_DIV_0,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3068
			restore->p2pll_div_0, ~R128_P2PLL_FB0_DIV_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3069
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3070
/*    R128PLL2WriteUpdate(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3071
    R128PLL2WaitForReadUpdateComplete(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3072
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3073
    OUTPLLP(pScrn, R128_P2PLL_DIV_0,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3074
			restore->p2pll_div_0, ~R128_P2PLL_POST0_DIV_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3075
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3076
    R128PLL2WriteUpdate(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3077
    R128PLL2WaitForReadUpdateComplete(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3078
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3079
    OUTPLL(R128_HTOTAL2_CNTL, restore->htotal_cntl2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3080
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3081
/*        R128PLL2WriteUpdate(pScrn);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3082
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3083
    OUTPLLP(pScrn, R128_P2PLL_CNTL, 0, ~(R128_P2PLL_RESET
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3084
					| R128_P2PLL_SLEEP
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3085
					| R128_P2PLL_ATOMIC_UPDATE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3086
					| R128_P2PLL_VGA_ATOMIC_UPDATE_EN));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3087
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3088
    R128TRACE(("Wrote: 0x%08x 0x%08x 0x%08x (0x%08x)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3089
	       restore->p2pll_ref_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3090
	       restore->p2pll_div_0,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3091
	       restore->htotal_cntl2,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3092
	       INPLL(pScrn, RADEON_P2PLL_CNTL)));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3093
    R128TRACE(("Wrote: rd=%d, fd=%d, pd=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3094
	       restore->p2pll_ref_div & RADEON_P2PLL_REF_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3095
	       restore->p2pll_div_0 & RADEON_P2PLL_FB3_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3096
	       (restore->p2pll_div_0 & RADEON_P2PLL_POST3_DIV_MASK) >>16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3097
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3098
    usleep(5000); /* Let the clock to lock */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3099
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3100
    OUTPLLP(pScrn, R128_V2CLK_VCLKTV_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3101
	    R128_V2CLK_SRC_SEL_P2PLLCLK, 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3102
	    ~R128_V2CLK_SRC_SEL_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3103
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3104
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3105
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3106
/* Write DDA registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3107
static void R128RestoreDDARegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3108
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3109
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3110
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3111
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3112
    OUTREG(R128_DDA_CONFIG, restore->dda_config);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3113
    OUTREG(R128_DDA_ON_OFF, restore->dda_on_off);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3114
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3115
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3116
/* Write DDA registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3117
static void R128RestoreDDA2Registers(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3118
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3119
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3120
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3121
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3122
    OUTREG(R128_DDA2_CONFIG, restore->dda2_config);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3123
    OUTREG(R128_DDA2_ON_OFF, restore->dda2_on_off);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3124
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3125
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3126
/* Write palette data. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3127
static void R128RestorePalette(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3128
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3129
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3130
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3131
    int           i;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3132
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3133
    if (!restore->palette_valid) return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3134
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3135
    PAL_SELECT(1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3136
    OUTPAL_START(0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3137
    for (i = 0; i < 256; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3138
	R128WaitForFifo(pScrn, 32); /* delay */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3139
	OUTPAL_NEXT_CARD32(restore->palette2[i]);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3140
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3141
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3142
    PAL_SELECT(0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3143
    OUTPAL_START(0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3144
    for (i = 0; i < 256; i++) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3145
	R128WaitForFifo(pScrn, 32); /* delay */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3146
	OUTPAL_NEXT_CARD32(restore->palette[i]);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3147
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3148
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3149
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3150
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3151
/* Write out state to define a new video mode.  */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3152
static void R128RestoreMode(ScrnInfoPtr pScrn, R128SavePtr restore)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3153
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3154
    R128InfoPtr info = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3155
    DevUnion* pPriv;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3156
    R128EntPtr pR128Ent;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3157
    static R128SaveRec restore0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3158
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3159
    R128TRACE(("R128RestoreMode(%p)\n", restore));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3160
    if(!info->HasCRTC2)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3161
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3162
    	R128RestoreCommonRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3163
        R128RestoreDDARegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3164
    	R128RestoreCrtcRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3165
        if((info->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3166
           (info->DisplayType == MT_LCD))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3167
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3168
	    R128RestoreFPRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3169
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3170
        R128RestorePLLRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3171
        return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3172
    }       
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3173
    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3174
    pPriv = xf86GetEntityPrivate(pScrn->entityList[0], 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3175
                   getR128EntityIndex());
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3176
    pR128Ent = pPriv->ptr;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3177
   
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3178
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3179
    /*****
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3180
      When changing mode with Dual-head card (VE/M6), care must
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3181
      be taken for the special order in setting registers. CRTC2 has
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3182
      to be set before changing CRTC_EXT register.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3183
      In the dual-head setup, X server calls this routine twice with
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3184
      primary and secondary pScrn pointers respectively. The calls
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3185
      can come with different order. Regardless the order of X server issuing 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3186
      the calls, we have to ensure we set registers in the right order!!! 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3187
      Otherwise we may get a blank screen.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3188
    *****/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3189
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3190
    if(info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3191
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3192
	if (!pR128Ent->RestorePrimary  && !info->SwitchingMode)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3193
	    R128RestoreCommonRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3194
        R128RestoreDDA2Registers(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3195
        R128RestoreCrtc2Registers(pScrn, restore);        
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3196
        R128RestorePLL2Registers(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3197
        
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3198
	if(info->SwitchingMode) return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3199
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3200
        pR128Ent->IsSecondaryRestored = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3201
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3202
        if(pR128Ent->RestorePrimary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3203
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3204
            R128InfoPtr info0 = R128PTR(pR128Ent->pPrimaryScrn); 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3205
            pR128Ent->RestorePrimary = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3206
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3207
            R128RestoreCrtcRegisters(pScrn, &restore0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3208
            if((info0->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3209
               (info0->DisplayType == MT_LCD))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3210
            {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3211
                R128RestoreFPRegisters(pScrn, &restore0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3212
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3213
            
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3214
            R128RestorePLLRegisters(pScrn, &restore0);   
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3215
            pR128Ent->IsSecondaryRestored = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3216
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3217
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3218
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3219
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3220
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3221
	if (!pR128Ent->IsSecondaryRestored)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3222
            R128RestoreCommonRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3223
        R128RestoreDDARegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3224
        if(!pR128Ent->HasSecondary || pR128Ent->IsSecondaryRestored
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3225
            || info->SwitchingMode)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3226
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3227
	    pR128Ent->IsSecondaryRestored = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3228
            R128RestoreCrtcRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3229
            if((info->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3230
               (info->DisplayType == MT_LCD))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3231
            {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3232
               R128RestoreFPRegisters(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3233
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3234
            R128RestorePLLRegisters(pScrn, restore);   
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3235
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3236
        else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3237
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3238
            memcpy(&restore0, restore, sizeof(restore0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3239
            pR128Ent->RestorePrimary = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3240
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3241
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3242
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3243
    R128RestorePalette(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3244
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3245
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3246
/* Read common registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3247
static void R128SaveCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3248
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3249
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3250
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3251
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3252
    save->ovr_clr            = INREG(R128_OVR_CLR);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3253
    save->ovr_wid_left_right = INREG(R128_OVR_WID_LEFT_RIGHT);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3254
    save->ovr_wid_top_bottom = INREG(R128_OVR_WID_TOP_BOTTOM);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3255
    save->ov0_scale_cntl     = INREG(R128_OV0_SCALE_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3256
    save->mpp_tb_config      = INREG(R128_MPP_TB_CONFIG);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3257
    save->mpp_gp_config      = INREG(R128_MPP_GP_CONFIG);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3258
    save->subpic_cntl        = INREG(R128_SUBPIC_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3259
    save->viph_control       = INREG(R128_VIPH_CONTROL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3260
    save->i2c_cntl_1         = INREG(R128_I2C_CNTL_1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3261
    save->gen_int_cntl       = INREG(R128_GEN_INT_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3262
    save->cap0_trig_cntl     = INREG(R128_CAP0_TRIG_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3263
    save->cap1_trig_cntl     = INREG(R128_CAP1_TRIG_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3264
    save->bus_cntl           = INREG(R128_BUS_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3265
    save->config_cntl        = INREG(R128_CONFIG_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3266
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3267
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3268
/* Read CRTC registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3269
static void R128SaveCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3270
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3271
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3272
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3273
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3274
    save->crtc_gen_cntl        = INREG(R128_CRTC_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3275
    save->crtc_ext_cntl        = INREG(R128_CRTC_EXT_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3276
    save->dac_cntl             = INREG(R128_DAC_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3277
    save->crtc_h_total_disp    = INREG(R128_CRTC_H_TOTAL_DISP);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3278
    save->crtc_h_sync_strt_wid = INREG(R128_CRTC_H_SYNC_STRT_WID);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3279
    save->crtc_v_total_disp    = INREG(R128_CRTC_V_TOTAL_DISP);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3280
    save->crtc_v_sync_strt_wid = INREG(R128_CRTC_V_SYNC_STRT_WID);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3281
    save->crtc_offset          = INREG(R128_CRTC_OFFSET);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3282
    save->crtc_offset_cntl     = INREG(R128_CRTC_OFFSET_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3283
    save->crtc_pitch           = INREG(R128_CRTC_PITCH);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3284
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3285
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3286
/* Read flat panel registers */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3287
static void R128SaveFPRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3288
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3289
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3290
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3291
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3292
    if (info->BIOSDisplay != R128_DUALHEAD)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3293
        save->crtc2_gen_cntl       = INREG(R128_CRTC2_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3294
    save->fp_crtc_h_total_disp = INREG(R128_FP_CRTC_H_TOTAL_DISP);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3295
    save->fp_crtc_v_total_disp = INREG(R128_FP_CRTC_V_TOTAL_DISP);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3296
    save->fp_gen_cntl          = INREG(R128_FP_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3297
    save->fp_h_sync_strt_wid   = INREG(R128_FP_H_SYNC_STRT_WID);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3298
    save->fp_horz_stretch      = INREG(R128_FP_HORZ_STRETCH);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3299
    save->fp_panel_cntl        = INREG(R128_FP_PANEL_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3300
    save->fp_v_sync_strt_wid   = INREG(R128_FP_V_SYNC_STRT_WID);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3301
    save->fp_vert_stretch      = INREG(R128_FP_VERT_STRETCH);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3302
    save->lvds_gen_cntl        = INREG(R128_LVDS_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3303
    save->tmds_crc             = INREG(R128_TMDS_CRC);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3304
    save->tmds_transmitter_cntl = INREG(R128_TMDS_TRANSMITTER_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3305
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3306
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3307
/* Read CRTC2 registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3308
static void R128SaveCrtc2Registers(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3309
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3310
    R128InfoPtr info        = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3311
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3312
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3313
    save->crtc2_gen_cntl        = INREG(R128_CRTC2_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3314
    save->crtc2_h_total_disp    = INREG(R128_CRTC2_H_TOTAL_DISP);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3315
    save->crtc2_h_sync_strt_wid = INREG(R128_CRTC2_H_SYNC_STRT_WID);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3316
    save->crtc2_v_total_disp    = INREG(R128_CRTC2_V_TOTAL_DISP);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3317
    save->crtc2_v_sync_strt_wid = INREG(R128_CRTC2_V_SYNC_STRT_WID);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3318
    save->crtc2_offset          = INREG(R128_CRTC2_OFFSET);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3319
    save->crtc2_offset_cntl     = INREG(R128_CRTC2_OFFSET_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3320
    save->crtc2_pitch           = INREG(R128_CRTC2_PITCH);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3321
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3322
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3323
/* Read PLL registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3324
static void R128SavePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3325
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3326
    save->ppll_ref_div         = INPLL(pScrn, R128_PPLL_REF_DIV);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3327
    save->ppll_div_3           = INPLL(pScrn, R128_PPLL_DIV_3);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3328
    save->htotal_cntl          = INPLL(pScrn, R128_HTOTAL_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3329
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3330
    R128TRACE(("Read: 0x%08x 0x%08x 0x%08x\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3331
	       save->ppll_ref_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3332
	       save->ppll_div_3,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3333
	       save->htotal_cntl));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3334
    R128TRACE(("Read: rd=%d, fd=%d, pd=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3335
	       save->ppll_ref_div & R128_PPLL_REF_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3336
	       save->ppll_div_3 & R128_PPLL_FB3_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3337
	       (save->ppll_div_3 & R128_PPLL_POST3_DIV_MASK) >> 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3338
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3339
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3340
/* Read PLL2 registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3341
static void R128SavePLL2Registers(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3342
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3343
    save->p2pll_ref_div        = INPLL(pScrn, R128_P2PLL_REF_DIV);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3344
    save->p2pll_div_0          = INPLL(pScrn, R128_P2PLL_DIV_0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3345
    save->htotal_cntl2         = INPLL(pScrn, R128_HTOTAL2_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3346
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3347
    R128TRACE(("Read: 0x%08x 0x%08x 0x%08x\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3348
	       save->p2pll_ref_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3349
	       save->p2pll_div_0,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3350
	       save->htotal_cntl2));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3351
    R128TRACE(("Read: rd=%d, fd=%d, pd=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3352
	       save->p2pll_ref_div & R128_P2PLL_REF_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3353
	       save->p2pll_div_0 & R128_P2PLL_FB0_DIV_MASK,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3354
	       (save->p2pll_div_0 & R128_P2PLL_POST0_DIV_MASK) >> 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3355
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3356
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3357
/* Read DDA registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3358
static void R128SaveDDARegisters(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3359
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3360
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3361
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3362
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3363
    save->dda_config           = INREG(R128_DDA_CONFIG);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3364
    save->dda_on_off           = INREG(R128_DDA_ON_OFF);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3365
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3366
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3367
/* Read DDA2 registers. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3368
static void R128SaveDDA2Registers(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3369
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3370
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3371
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3372
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3373
    save->dda2_config           = INREG(R128_DDA2_CONFIG);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3374
    save->dda2_on_off           = INREG(R128_DDA2_ON_OFF);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3375
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3376
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3377
/* Read palette data. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3378
static void R128SavePalette(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3379
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3380
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3381
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3382
    int           i;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3383
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3384
    PAL_SELECT(1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3385
    INPAL_START(0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3386
    for (i = 0; i < 256; i++) save->palette2[i] = INPAL_NEXT();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3387
    PAL_SELECT(0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3388
    INPAL_START(0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3389
    for (i = 0; i < 256; i++) save->palette[i] = INPAL_NEXT();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3390
    save->palette_valid = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3391
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3392
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3393
/* Save state that defines current video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3394
static void R128SaveMode(ScrnInfoPtr pScrn, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3395
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3396
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3397
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3398
    R128TRACE(("R128SaveMode(%p)\n", save));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3399
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3400
    if(info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3401
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3402
        R128SaveCrtc2Registers(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3403
        R128SavePLL2Registers(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3404
        R128SaveDDA2Registers(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3405
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3406
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3407
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3408
        R128SaveCommonRegisters(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3409
        R128SaveCrtcRegisters(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3410
        if((info->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3411
           (info->DisplayType == MT_LCD))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3412
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3413
 	    R128SaveFPRegisters(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3414
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3415
        R128SavePLLRegisters(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3416
        R128SaveDDARegisters(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3417
        R128SavePalette(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3418
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3419
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3420
    R128TRACE(("R128SaveMode returns %p\n", save));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3421
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3422
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3423
/* Save everything needed to restore the original VC state. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3424
static void R128Save(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3425
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3426
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3427
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3428
    R128SavePtr   save      = &info->SavedReg;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3429
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3430
    R128TRACE(("R128Save\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3431
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3432
	fbdevHWSave(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3433
	return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3434
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3435
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3436
    if (!info->IsSecondary) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3437
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3438
        if (info->VGAAccess) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3439
            vgaHWPtr hwp = VGAHWPTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3440
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3441
            vgaHWUnlock(hwp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3442
# if defined(__powerpc__)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3443
            /* temporary hack to prevent crashing on PowerMacs when trying to
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3444
             * read VGA fonts and colormap, will find a better solution
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3445
             * in the future. TODO: Check if there's actually some VGA stuff
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3446
             * setup in the card at all !!
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3447
             */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3448
            vgaHWSave(pScrn, &hwp->SavedReg, VGA_SR_MODE); /* Save mode only */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3449
# else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3450
            /* Save mode * & fonts & cmap */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3451
            vgaHWSave(pScrn, &hwp->SavedReg, VGA_SR_MODE | VGA_SR_FONTS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3452
# endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3453
            vgaHWLock(hwp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3454
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3455
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3456
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3457
        save->dp_datatype      = INREG(R128_DP_DATATYPE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3458
        save->gen_reset_cntl   = INREG(R128_GEN_RESET_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3459
        save->clock_cntl_index = INREG(R128_CLOCK_CNTL_INDEX);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3460
        save->amcgpio_en_reg   = INREG(R128_AMCGPIO_EN_REG);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3461
        save->amcgpio_mask     = INREG(R128_AMCGPIO_MASK);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3462
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3463
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3464
    R128SaveMode(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3465
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3466
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3467
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3468
/* Restore the original (text) mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3469
static void R128Restore(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3470
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3471
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3472
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3473
    R128SavePtr   restore   = &info->SavedReg;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3474
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3475
    R128TRACE(("R128Restore\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3476
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3477
	fbdevHWRestore(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3478
	return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3479
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3480
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3481
    R128Blank(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3482
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3483
    if (!info->IsSecondary) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3484
        OUTREG(R128_AMCGPIO_MASK,     restore->amcgpio_mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3485
        OUTREG(R128_AMCGPIO_EN_REG,   restore->amcgpio_en_reg);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3486
        OUTREG(R128_CLOCK_CNTL_INDEX, restore->clock_cntl_index);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3487
        OUTREG(R128_GEN_RESET_CNTL,   restore->gen_reset_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3488
        OUTREG(R128_DP_DATATYPE,      restore->dp_datatype);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3489
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3490
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3491
    R128RestoreMode(pScrn, restore);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3492
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3493
    if (info->VGAAccess) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3494
        vgaHWPtr hwp = VGAHWPTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3495
        if (!info->IsSecondary) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3496
            vgaHWUnlock(hwp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3497
# if defined(__powerpc__)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3498
            /* Temporary hack to prevent crashing on PowerMacs when trying to
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3499
             * write VGA fonts, will find a better solution in the future
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3500
             */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3501
            vgaHWRestore(pScrn, &hwp->SavedReg, VGA_SR_MODE );
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3502
# else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3503
            vgaHWRestore(pScrn, &hwp->SavedReg, VGA_SR_MODE | VGA_SR_FONTS );
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3504
# endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3505
            vgaHWLock(hwp);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3506
        } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3507
            R128EntPtr  pR128Ent = R128EntPriv(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3508
            ScrnInfoPtr   pScrn0 = pR128Ent->pPrimaryScrn;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3509
            R128InfoPtr info0 = R128PTR(pScrn0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3510
            vgaHWPtr      hwp0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3511
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3512
            if (info0->VGAAccess) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3513
                hwp0 = VGAHWPTR(pScrn0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3514
                vgaHWUnlock(hwp0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3515
#if defined(__powerpc__)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3516
                vgaHWRestore(pScrn0, &hwp0->SavedReg, VGA_SR_MODE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3517
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3518
                vgaHWRestore(pScrn0, &hwp0->SavedReg, VGA_SR_MODE | VGA_SR_FONTS );
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3519
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3520
                vgaHWLock(hwp0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3521
            }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3522
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3523
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3524
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3525
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3526
    R128WaitForVerticalSync(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3527
    R128Unblank(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3528
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3529
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3530
/* Define common registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3531
static void R128InitCommonRegisters(R128SavePtr save, R128InfoPtr info)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3532
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3533
    save->ovr_clr            = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3534
    save->ovr_wid_left_right = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3535
    save->ovr_wid_top_bottom = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3536
    save->ov0_scale_cntl     = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3537
    save->mpp_tb_config      = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3538
    save->mpp_gp_config      = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3539
    save->subpic_cntl        = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3540
    save->viph_control       = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3541
    save->i2c_cntl_1         = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3542
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3543
    save->gen_int_cntl       = info->gen_int_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3544
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3545
    save->gen_int_cntl       = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3546
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3547
    save->cap0_trig_cntl     = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3548
    save->cap1_trig_cntl     = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3549
    save->bus_cntl           = info->BusCntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3550
    /*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3551
     * If bursts are enabled, turn on discards and aborts
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3552
     */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3553
    if (save->bus_cntl & (R128_BUS_WRT_BURST|R128_BUS_READ_BURST))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3554
	save->bus_cntl |= R128_BUS_RD_DISCARD_EN | R128_BUS_RD_ABORT_EN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3555
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3556
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3557
/* Define CRTC registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3558
static Bool R128InitCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr save,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3559
				  DisplayModePtr mode, R128InfoPtr info)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3560
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3561
    int    format;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3562
    int    hsync_start;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3563
    int    hsync_wid;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3564
    int    hsync_fudge;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3565
    int    vsync_wid;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3566
    int    hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3567
    int    hsync_fudge_fp[]      = { 0x12, 0x11, 0x09, 0x09, 0x05, 0x05 };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3568
    int    hsync_fudge_fp_crt[]  = { 0x12, 0x10, 0x08, 0x08, 0x04, 0x04 };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3569
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3570
    switch (info->CurrentLayout.pixel_code) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3571
    case 4:  format = 1; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3572
    case 8:  format = 2; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3573
    case 15: format = 3; break;      /*  555 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3574
    case 16: format = 4; break;      /*  565 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3575
    case 24: format = 5; break;      /*  RGB */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3576
    case 32: format = 6; break;      /* xRGB */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3577
    default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3578
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3579
		   "Unsupported pixel depth (%d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3580
		   info->CurrentLayout.bitsPerPixel);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3581
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3582
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3583
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3584
    if ((info->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3585
        (info->DisplayType == MT_LCD))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3586
	hsync_fudge = hsync_fudge_fp[format-1];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3587
    else               
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3588
        hsync_fudge = hsync_fudge_default[format-1];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3589
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3590
    save->crtc_gen_cntl = (R128_CRTC_EXT_DISP_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3591
			  | R128_CRTC_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3592
			  | (format << 8)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3593
			  | ((mode->Flags & V_DBLSCAN)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3594
			     ? R128_CRTC_DBL_SCAN_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3595
			     : 0)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3596
			  | ((mode->Flags & V_INTERLACE)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3597
			     ? R128_CRTC_INTERLACE_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3598
			     : 0)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3599
			  | ((mode->Flags & V_CSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3600
			     ? R128_CRTC_CSYNC_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3601
			     : 0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3602
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3603
    if((info->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3604
       (info->DisplayType == MT_LCD))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3605
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3606
        save->crtc_ext_cntl = R128_VGA_ATI_LINEAR | 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3607
        			  R128_XCRT_CNT_EN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3608
        save->crtc_gen_cntl &= ~(R128_CRTC_DBL_SCAN_EN | 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3609
                                  R128_CRTC_INTERLACE_EN);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3610
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3611
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3612
        save->crtc_ext_cntl = R128_VGA_ATI_LINEAR | 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3613
			      R128_XCRT_CNT_EN |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3614
			      R128_CRTC_CRT_ON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3615
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3616
    save->dac_cntl      = (R128_DAC_MASK_ALL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3617
			   | R128_DAC_VGA_ADR_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3618
			   | (info->dac6bits ? 0 : R128_DAC_8BIT_EN));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3619
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3620
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3621
    if(info->isDFP && !info->isPro2)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3622
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3623
        if(info->PanelXRes < mode->CrtcHDisplay)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3624
            mode->HDisplay = mode->CrtcHDisplay = info->PanelXRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3625
        if(info->PanelYRes < mode->CrtcVDisplay)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3626
            mode->VDisplay = mode->CrtcVDisplay = info->PanelYRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3627
        mode->CrtcHTotal = mode->CrtcHDisplay + info->HBlank;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3628
        mode->CrtcHSyncStart = mode->CrtcHDisplay + info->HOverPlus;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3629
        mode->CrtcHSyncEnd = mode->CrtcHSyncStart + info->HSyncWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3630
        mode->CrtcVTotal = mode->CrtcVDisplay + info->VBlank;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3631
        mode->CrtcVSyncStart = mode->CrtcVDisplay + info->VOverPlus;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3632
        mode->CrtcVSyncEnd = mode->CrtcVSyncStart + info->VSyncWidth;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3633
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3634
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3635
    save->crtc_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3636
			      | (((mode->CrtcHDisplay / 8) - 1) << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3637
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3638
    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3639
    if (!hsync_wid)       hsync_wid = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3640
    if (hsync_wid > 0x3f) hsync_wid = 0x3f;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3641
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3642
    hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3643
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3644
    save->crtc_h_sync_strt_wid = ((hsync_start & 0xfff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3645
				 | (hsync_wid << 16)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3646
				 | ((mode->Flags & V_NHSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3647
				    ? R128_CRTC_H_SYNC_POL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3648
				    : 0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3649
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3650
#if 1
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3651
				/* This works for double scan mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3652
    save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3653
			      | ((mode->CrtcVDisplay - 1) << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3654
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3655
				/* This is what cce/nbmode.c example code
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3656
				   does -- is this correct? */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3657
    save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3658
			      | ((mode->CrtcVDisplay
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3659
				  * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3660
				 << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3661
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3662
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3663
    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3664
    if (!vsync_wid)       vsync_wid = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3665
    if (vsync_wid > 0x1f) vsync_wid = 0x1f;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3666
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3667
    save->crtc_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3668
				 | (vsync_wid << 16)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3669
				 | ((mode->Flags & V_NVSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3670
				    ? R128_CRTC_V_SYNC_POL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3671
				    : 0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3672
    save->crtc_offset      = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3673
    save->crtc_offset_cntl = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3674
    save->crtc_pitch       = info->CurrentLayout.displayWidth / 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3675
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3676
    R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3677
	       save->crtc_pitch, pScrn->virtualX, info->CurrentLayout.displayWidth));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3678
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3679
#if X_BYTE_ORDER == X_BIG_ENDIAN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3680
    /* Change the endianness of the aperture */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3681
    switch (info->CurrentLayout.pixel_code) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3682
    case 15:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3683
    case 16: save->config_cntl |= APER_0_BIG_ENDIAN_16BPP_SWAP; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3684
    case 32: save->config_cntl |= APER_0_BIG_ENDIAN_32BPP_SWAP; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3685
    default: break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3686
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3687
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3688
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3689
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3690
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3691
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3692
/* Define CRTC2 registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3693
static Bool R128InitCrtc2Registers(ScrnInfoPtr pScrn, R128SavePtr save,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3694
				  DisplayModePtr mode, R128InfoPtr info)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3695
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3696
    int    format;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3697
    int    hsync_start;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3698
    int    hsync_wid;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3699
    int    hsync_fudge;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3700
    int    vsync_wid;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3701
    int    bytpp;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3702
    int    hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3703
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3704
    switch (info->CurrentLayout.pixel_code) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3705
    case 4:  format = 1; bytpp = 0; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3706
    case 8:  format = 2; bytpp = 1; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3707
    case 15: format = 3; bytpp = 2; break;      /*  555 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3708
    case 16: format = 4; bytpp = 2; break;      /*  565 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3709
    case 24: format = 5; bytpp = 3; break;      /*  RGB */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3710
    case 32: format = 6; bytpp = 4; break;      /* xRGB */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3711
    default:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3712
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3713
		   "Unsupported pixel depth (%d)\n", info->CurrentLayout.bitsPerPixel);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3714
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3715
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3716
    R128TRACE(("Format = %d (%d bytes per pixel)\n", format, bytpp));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3717
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3718
    hsync_fudge = hsync_fudge_default[format-1];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3719
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3720
    save->crtc2_gen_cntl = (R128_CRTC2_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3721
			  | (format << 8)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3722
			  | ((mode->Flags & V_DBLSCAN)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3723
			     ? R128_CRTC2_DBL_SCAN_EN
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3724
			     : 0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3725
/*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3726
    save->crtc2_gen_cntl &= ~R128_CRTC_EXT_DISP_EN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3727
    save->crtc2_gen_cntl |= (1 << 21);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3728
*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3729
    save->crtc2_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3730
			      | (((mode->CrtcHDisplay / 8) - 1) << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3731
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3732
    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3733
    if (!hsync_wid)       hsync_wid = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3734
    if (hsync_wid > 0x3f) hsync_wid = 0x3f;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3735
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3736
    hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3737
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3738
    save->crtc2_h_sync_strt_wid = ((hsync_start & 0xfff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3739
				 | (hsync_wid << 16)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3740
				 | ((mode->Flags & V_NHSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3741
				    ? R128_CRTC2_H_SYNC_POL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3742
				    : 0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3743
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3744
#if 1
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3745
				/* This works for double scan mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3746
    save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3747
			      | ((mode->CrtcVDisplay - 1) << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3748
#else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3749
				/* This is what cce/nbmode.c example code
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3750
				   does -- is this correct? */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3751
    save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3752
			      | ((mode->CrtcVDisplay
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3753
				  * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3754
				 << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3755
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3756
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3757
    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3758
    if (!vsync_wid)       vsync_wid = 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3759
    if (vsync_wid > 0x1f) vsync_wid = 0x1f;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3760
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3761
    save->crtc2_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3762
				 | (vsync_wid << 16)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3763
				 | ((mode->Flags & V_NVSYNC)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3764
				    ? R128_CRTC2_V_SYNC_POL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3765
				    : 0));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3766
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3767
    save->crtc2_offset      = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3768
    save->crtc2_offset_cntl = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3769
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3770
    save->crtc2_pitch       = info->CurrentLayout.displayWidth / 8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3771
	
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3772
    R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3773
		 save->crtc2_pitch, pScrn->virtualX,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3774
		 info->CurrentLayout.displayWidth));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3775
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3776
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3777
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3778
/* Define CRTC registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3779
static void R128InitFPRegisters(R128SavePtr orig, R128SavePtr save,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3780
				DisplayModePtr mode, R128InfoPtr info)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3781
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3782
    int   xres = mode->CrtcHDisplay;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3783
    int   yres = mode->CrtcVDisplay;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3784
    float Hratio, Vratio;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3785
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3786
    if (info->BIOSDisplay == R128_BIOS_DISPLAY_CRT) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3787
        save->crtc_ext_cntl  |= R128_CRTC_CRT_ON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3788
        save->crtc2_gen_cntl  = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3789
        save->fp_gen_cntl     = orig->fp_gen_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3790
        save->fp_gen_cntl    &= ~(R128_FP_FPON |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3791
            R128_FP_CRTC_USE_SHADOW_VEND |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3792
            R128_FP_CRTC_HORZ_DIV2_EN |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3793
            R128_FP_CRTC_HOR_CRT_DIV2_DIS |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3794
            R128_FP_USE_SHADOW_EN);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3795
        save->fp_gen_cntl    |= (R128_FP_SEL_CRTC2 |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3796
                                 R128_FP_CRTC_DONT_SHADOW_VPAR);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3797
        save->fp_panel_cntl   = orig->fp_panel_cntl & (CARD32)~R128_FP_DIGON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3798
        save->lvds_gen_cntl   = orig->lvds_gen_cntl &
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3799
				    (CARD32)~(R128_LVDS_ON | R128_LVDS_BLON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3800
        return;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3801
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3802
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3803
    if (xres > info->PanelXRes) xres = info->PanelXRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3804
    if (yres > info->PanelYRes) yres = info->PanelYRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3805
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3806
    Hratio = (float)xres/(float)info->PanelXRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3807
    Vratio = (float)yres/(float)info->PanelYRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3808
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3809
    save->fp_horz_stretch =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3810
	(((((int)(Hratio * R128_HORZ_STRETCH_RATIO_MAX + 0.5))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3811
	   & R128_HORZ_STRETCH_RATIO_MASK) << R128_HORZ_STRETCH_RATIO_SHIFT) |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3812
       (orig->fp_horz_stretch & (R128_HORZ_PANEL_SIZE |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3813
                                 R128_HORZ_FP_LOOP_STRETCH |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3814
                                 R128_HORZ_STRETCH_RESERVED)));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3815
    save->fp_horz_stretch &= ~R128_HORZ_AUTO_RATIO_FIX_EN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3816
    save->fp_horz_stretch &= ~R128_AUTO_HORZ_RATIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3817
    if (xres == info->PanelXRes)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3818
         save->fp_horz_stretch &= ~(R128_HORZ_STRETCH_BLEND | R128_HORZ_STRETCH_ENABLE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3819
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3820
         save->fp_horz_stretch |=  (R128_HORZ_STRETCH_BLEND | R128_HORZ_STRETCH_ENABLE);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3821
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3822
    save->fp_vert_stretch =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3823
	(((((int)(Vratio * R128_VERT_STRETCH_RATIO_MAX + 0.5))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3824
	   & R128_VERT_STRETCH_RATIO_MASK) << R128_VERT_STRETCH_RATIO_SHIFT) |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3825
	 (orig->fp_vert_stretch & (R128_VERT_PANEL_SIZE |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3826
				   R128_VERT_STRETCH_RESERVED)));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3827
    save->fp_vert_stretch &= ~R128_VERT_AUTO_RATIO_EN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3828
    if (yres == info->PanelYRes)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3829
        save->fp_vert_stretch &= ~(R128_VERT_STRETCH_ENABLE | R128_VERT_STRETCH_BLEND);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3830
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3831
        save->fp_vert_stretch |=  (R128_VERT_STRETCH_ENABLE | R128_VERT_STRETCH_BLEND);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3832
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3833
    save->fp_gen_cntl = (orig->fp_gen_cntl &
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3834
			 (CARD32)~(R128_FP_SEL_CRTC2 |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3835
				   R128_FP_CRTC_USE_SHADOW_VEND |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3836
				   R128_FP_CRTC_HORZ_DIV2_EN |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3837
				   R128_FP_CRTC_HOR_CRT_DIV2_DIS |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3838
				   R128_FP_USE_SHADOW_EN));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3839
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3840
    save->fp_panel_cntl        = orig->fp_panel_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3841
    save->lvds_gen_cntl        = orig->lvds_gen_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3842
    save->tmds_crc             = orig->tmds_crc;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3843
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3844
    /* Disable CRT output by disabling CRT output and setting the CRT
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3845
       DAC to use CRTC2, which we set to 0's.  In the future, we will
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3846
       want to use the dual CRTC capabilities of the R128 to allow both
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3847
       the flat panel and external CRT to either simultaneously display
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3848
       the same image or display two different images. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3849
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3850
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3851
    if(!info->isDFP){
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3852
        if (info->BIOSDisplay == R128_BIOS_DISPLAY_FP_CRT) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3853
		save->crtc_ext_cntl  |= R128_CRTC_CRT_ON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3854
	} else if (info->BIOSDisplay == R128_DUALHEAD) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3855
		save->crtc_ext_cntl  |= R128_CRTC_CRT_ON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3856
		save->dac_cntl       |= R128_DAC_CRT_SEL_CRTC2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3857
		save->dac_cntl       |= R128_DAC_PALETTE2_SNOOP_EN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3858
        } else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3859
		save->crtc_ext_cntl  &= ~R128_CRTC_CRT_ON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3860
		save->dac_cntl       |= R128_DAC_CRT_SEL_CRTC2;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3861
		save->crtc2_gen_cntl  = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3862
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3863
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3864
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3865
    /* WARNING: Be careful about turning on the flat panel */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3866
    if(info->isDFP){
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3867
        save->fp_gen_cntl = orig->fp_gen_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3868
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3869
        save->fp_gen_cntl &= ~(R128_FP_CRTC_USE_SHADOW_VEND |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3870
                               R128_FP_CRTC_USE_SHADOW_ROWCUR |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3871
                               R128_FP_CRTC_HORZ_DIV2_EN |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3872
                               R128_FP_CRTC_HOR_CRT_DIV2_DIS |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3873
                               R128_FP_CRT_SYNC_SEL |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3874
                               R128_FP_USE_SHADOW_EN);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3875
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3876
        save->fp_panel_cntl  |= (R128_FP_DIGON | R128_FP_BLON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3877
        save->fp_gen_cntl    |= (R128_FP_FPON | R128_FP_TDMS_EN |
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3878
             R128_FP_CRTC_DONT_SHADOW_VPAR | R128_FP_CRTC_DONT_SHADOW_HEND);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3879
        save->tmds_transmitter_cntl = (orig->tmds_transmitter_cntl
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3880
            & ~(CARD32)R128_TMDS_PLLRST) | R128_TMDS_PLLEN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3881
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3882
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3883
        save->lvds_gen_cntl  |= (R128_LVDS_ON | R128_LVDS_BLON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3884
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3885
    save->fp_crtc_h_total_disp = save->crtc_h_total_disp;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3886
    save->fp_crtc_v_total_disp = save->crtc_v_total_disp;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3887
    save->fp_h_sync_strt_wid   = save->crtc_h_sync_strt_wid;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3888
    save->fp_v_sync_strt_wid   = save->crtc_v_sync_strt_wid;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3889
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3890
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3891
/* Define PLL registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3892
static void R128InitPLLRegisters(ScrnInfoPtr pScrn, R128SavePtr save,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3893
				R128PLLPtr pll, double dot_clock)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3894
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3895
    unsigned long freq = dot_clock * 100;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3896
    struct {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3897
	int divider;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3898
	int bitvalue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3899
    } *post_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3900
      post_divs[]   = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3901
				/* From RAGE 128 VR/RAGE 128 GL Register
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3902
				   Reference Manual (Technical Reference
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3903
				   Manual P/N RRG-G04100-C Rev. 0.04), page
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3904
				   3-17 (PLL_DIV_[3:0]).  */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3905
	{  1, 0 },              /* VCLK_SRC                 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3906
	{  2, 1 },              /* VCLK_SRC/2               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3907
	{  4, 2 },              /* VCLK_SRC/4               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3908
	{  8, 3 },              /* VCLK_SRC/8               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3909
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3910
	{  3, 4 },              /* VCLK_SRC/3               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3911
				/* bitvalue = 5 is reserved */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3912
	{  6, 6 },              /* VCLK_SRC/6               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3913
	{ 12, 7 },              /* VCLK_SRC/12              */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3914
	{  0, 0 }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3915
    };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3916
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3917
    if (freq > pll->max_pll_freq)      freq = pll->max_pll_freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3918
    if (freq * 12 < pll->min_pll_freq) freq = pll->min_pll_freq / 12;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3919
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3920
    for (post_div = &post_divs[0]; post_div->divider; ++post_div) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3921
	save->pll_output_freq = post_div->divider * freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3922
	if (save->pll_output_freq >= pll->min_pll_freq
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3923
	    && save->pll_output_freq <= pll->max_pll_freq) break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3924
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3925
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3926
    save->dot_clock_freq = freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3927
    save->feedback_div   = R128Div(pll->reference_div * save->pll_output_freq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3928
				   pll->reference_freq);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3929
    save->post_div       = post_div->divider;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3930
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3931
    R128TRACE(("dc=%d, of=%d, fd=%d, pd=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3932
	       save->dot_clock_freq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3933
	       save->pll_output_freq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3934
	       save->feedback_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3935
	       save->post_div));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3936
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3937
    save->ppll_ref_div   = pll->reference_div;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3938
    save->ppll_div_3     = (save->feedback_div | (post_div->bitvalue << 16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3939
    save->htotal_cntl    = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3940
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3941
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3942
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3943
/* Define PLL2 registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3944
static void R128InitPLL2Registers(R128SavePtr save, R128PLLPtr pll,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3945
				   double dot_clock)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3946
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3947
    unsigned long freq = dot_clock * 100;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3948
    struct {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3949
	int divider;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3950
	int bitvalue;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3951
    } *post_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3952
      post_divs[]   = {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3953
				/* From RAGE 128 VR/RAGE 128 GL Register
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3954
				   Reference Manual (Technical Reference
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3955
				   Manual P/N RRG-G04100-C Rev. 0.04), page
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3956
				   3-17 (PLL_DIV_[3:0]).  */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3957
	{  1, 0 },              /* VCLK_SRC                 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3958
	{  2, 1 },              /* VCLK_SRC/2               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3959
	{  4, 2 },              /* VCLK_SRC/4               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3960
	{  8, 3 },              /* VCLK_SRC/8               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3961
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3962
	{  3, 4 },              /* VCLK_SRC/3               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3963
				/* bitvalue = 5 is reserved */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3964
	{  6, 6 },              /* VCLK_SRC/6               */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3965
	{ 12, 7 },              /* VCLK_SRC/12              */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3966
	{  0, 0 }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3967
    };
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3968
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3969
    if (freq > pll->max_pll_freq)      freq = pll->max_pll_freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3970
    if (freq * 12 < pll->min_pll_freq) freq = pll->min_pll_freq / 12;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3971
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3972
    for (post_div = &post_divs[0]; post_div->divider; ++post_div) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3973
	save->pll_output_freq_2 = post_div->divider * freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3974
	if (save->pll_output_freq_2 >= pll->min_pll_freq
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3975
	    && save->pll_output_freq_2 <= pll->max_pll_freq) break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3976
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3977
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3978
    save->dot_clock_freq_2 = freq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3979
    save->feedback_div_2   = R128Div(pll->reference_div
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3980
				     * save->pll_output_freq_2,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3981
				     pll->reference_freq);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3982
    save->post_div_2       = post_div->divider;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3983
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3984
    R128TRACE(("dc=%d, of=%d, fd=%d, pd=%d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3985
	       save->dot_clock_freq_2,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3986
	       save->pll_output_freq_2,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3987
	       save->feedback_div_2,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3988
	       save->post_div_2));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3989
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3990
    save->p2pll_ref_div   = pll->reference_div;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3991
    save->p2pll_div_0    = (save->feedback_div_2 | (post_div->bitvalue<<16));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3992
    save->htotal_cntl2    = 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3993
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3994
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3995
/* Define DDA registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3996
static Bool R128InitDDARegisters(ScrnInfoPtr pScrn, R128SavePtr save,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3997
				 R128PLLPtr pll, R128InfoPtr info,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3998
                                 DisplayModePtr mode)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  3999
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4000
    int         DisplayFifoWidth = 128;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4001
    int         DisplayFifoDepth = 32;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4002
    int         XclkFreq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4003
    int         VclkFreq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4004
    int         XclksPerTransfer;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4005
    int         XclksPerTransferPrecise;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4006
    int         UseablePrecision;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4007
    int         Roff;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4008
    int         Ron;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4009
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4010
    XclkFreq = pll->xclk;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4011
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4012
    VclkFreq = R128Div(pll->reference_freq * save->feedback_div,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4013
		       pll->reference_div * save->post_div);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4014
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4015
    if(info->isDFP && !info->isPro2){
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4016
        if(info->PanelXRes != mode->CrtcHDisplay)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4017
            VclkFreq = (VclkFreq * mode->CrtcHDisplay)/info->PanelXRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4018
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4019
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4020
    XclksPerTransfer = R128Div(XclkFreq * DisplayFifoWidth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4021
			       VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4022
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4023
    UseablePrecision = R128MinBits(XclksPerTransfer) + 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4024
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4025
    XclksPerTransferPrecise = R128Div((XclkFreq * DisplayFifoWidth)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4026
				      << (11 - UseablePrecision),
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4027
				      VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4028
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4029
    Roff  = XclksPerTransferPrecise * (DisplayFifoDepth - 4);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4030
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4031
    Ron   = (4 * info->ram->MB
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4032
	     + 3 * MAX(info->ram->Trcd - 2, 0)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4033
	     + 2 * info->ram->Trp
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4034
	     + info->ram->Twr
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4035
	     + info->ram->CL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4036
	     + info->ram->Tr2w
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4037
	     + XclksPerTransfer) << (11 - UseablePrecision);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4038
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4039
    if (Ron + info->ram->Rloop >= Roff) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4040
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4041
		   "(Ron = %d) + (Rloop = %d) >= (Roff = %d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4042
		   Ron, info->ram->Rloop, Roff);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4043
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4044
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4045
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4046
    save->dda_config = (XclksPerTransferPrecise
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4047
			| (UseablePrecision << 16)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4048
			| (info->ram->Rloop << 20));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4049
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4050
    save->dda_on_off = (Ron << 16) | Roff;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4051
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4052
    R128TRACE(("XclkFreq = %d; VclkFreq = %d; per = %d, %d (useable = %d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4053
	       XclkFreq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4054
	       VclkFreq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4055
	       XclksPerTransfer,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4056
	       XclksPerTransferPrecise,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4057
	       UseablePrecision));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4058
    R128TRACE(("Roff = %d, Ron = %d, Rloop = %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4059
	       Roff, Ron, info->ram->Rloop));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4060
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4061
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4062
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4063
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4064
/* Define DDA2 registers for requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4065
static Bool R128InitDDA2Registers(ScrnInfoPtr pScrn, R128SavePtr save,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4066
				 R128PLLPtr pll, R128InfoPtr info,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4067
                                 DisplayModePtr mode)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4068
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4069
    int         DisplayFifoWidth = 128;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4070
    int         DisplayFifoDepth = 32;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4071
    int         XclkFreq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4072
    int         VclkFreq;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4073
    int         XclksPerTransfer;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4074
    int         XclksPerTransferPrecise;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4075
    int         UseablePrecision;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4076
    int         Roff;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4077
    int         Ron;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4078
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4079
    XclkFreq = pll->xclk;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4080
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4081
    VclkFreq = R128Div(pll->reference_freq * save->feedback_div_2,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4082
		       pll->reference_div * save->post_div_2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4083
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4084
    if(info->isDFP && !info->isPro2){
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4085
        if(info->PanelXRes != mode->CrtcHDisplay)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4086
            VclkFreq = (VclkFreq * mode->CrtcHDisplay)/info->PanelXRes;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4087
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4088
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4089
    XclksPerTransfer = R128Div(XclkFreq * DisplayFifoWidth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4090
			       VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4091
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4092
    UseablePrecision = R128MinBits(XclksPerTransfer) + 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4093
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4094
    XclksPerTransferPrecise = R128Div((XclkFreq * DisplayFifoWidth)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4095
				      << (11 - UseablePrecision),
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4096
				      VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4097
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4098
    Roff  = XclksPerTransferPrecise * (DisplayFifoDepth - 4);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4099
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4100
    Ron   = (4 * info->ram->MB
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4101
	     + 3 * MAX(info->ram->Trcd - 2, 0)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4102
	     + 2 * info->ram->Trp
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4103
	     + info->ram->Twr
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4104
	     + info->ram->CL
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4105
	     + info->ram->Tr2w
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4106
	     + XclksPerTransfer) << (11 - UseablePrecision);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4107
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4108
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4109
    if (Ron + info->ram->Rloop >= Roff) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4110
	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4111
		   "(Ron = %d) + (Rloop = %d) >= (Roff = %d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4112
		   Ron, info->ram->Rloop, Roff);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4113
	return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4114
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4115
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4116
    save->dda2_config = (XclksPerTransferPrecise
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4117
			| (UseablePrecision << 16)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4118
			| (info->ram->Rloop << 20));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4119
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4120
    /*save->dda2_on_off = (Ron << 16) | Roff;*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4121
    /* shift most be 18 otherwise there's corruption on crtc2 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4122
    save->dda2_on_off = (Ron << 18) | Roff;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4123
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4124
    R128TRACE(("XclkFreq = %d; VclkFreq = %d; per = %d, %d (useable = %d)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4125
	       XclkFreq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4126
	       VclkFreq,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4127
	       XclksPerTransfer,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4128
	       XclksPerTransferPrecise,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4129
	       UseablePrecision));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4130
    R128TRACE(("Roff = %d, Ron = %d, Rloop = %d\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4131
	       Roff, Ron, info->ram->Rloop));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4132
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4133
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4134
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4135
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4136
#if 0
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4137
/* Define initial palette for requested video mode.  This doesn't do
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4138
   anything for XFree86 4.0. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4139
static void R128InitPalette(R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4140
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4141
    save->palette_valid = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4142
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4143
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4144
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4145
/* Define registers for a requested video mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4146
static Bool R128Init(ScrnInfoPtr pScrn, DisplayModePtr mode, R128SavePtr save)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4147
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4148
    R128InfoPtr info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4149
    double      dot_clock = mode->Clock/1000.0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4150
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4151
#if R128_DEBUG
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4152
    ErrorF("%-12.12s %7.2f  %4d %4d %4d %4d  %4d %4d %4d %4d (%d,%d)",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4153
	   mode->name,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4154
	   dot_clock,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4155
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4156
	   mode->HDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4157
	   mode->HSyncStart,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4158
	   mode->HSyncEnd,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4159
	   mode->HTotal,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4160
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4161
	   mode->VDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4162
	   mode->VSyncStart,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4163
	   mode->VSyncEnd,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4164
	   mode->VTotal,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4165
	   pScrn->depth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4166
	   pScrn->bitsPerPixel);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4167
    if (mode->Flags & V_DBLSCAN)   ErrorF(" D");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4168
    if (mode->Flags & V_CSYNC)     ErrorF(" C");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4169
    if (mode->Flags & V_INTERLACE) ErrorF(" I");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4170
    if (mode->Flags & V_PHSYNC)    ErrorF(" +H");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4171
    if (mode->Flags & V_NHSYNC)    ErrorF(" -H");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4172
    if (mode->Flags & V_PVSYNC)    ErrorF(" +V");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4173
    if (mode->Flags & V_NVSYNC)    ErrorF(" -V");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4174
    ErrorF("\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4175
    ErrorF("%-12.12s %7.2f  %4d %4d %4d %4d  %4d %4d %4d %4d (%d,%d)",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4176
	   mode->name,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4177
	   dot_clock,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4178
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4179
	   mode->CrtcHDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4180
	   mode->CrtcHSyncStart,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4181
	   mode->CrtcHSyncEnd,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4182
	   mode->CrtcHTotal,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4183
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4184
	   mode->CrtcVDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4185
	   mode->CrtcVSyncStart,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4186
	   mode->CrtcVSyncEnd,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4187
	   mode->CrtcVTotal,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4188
	   pScrn->depth,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4189
	   pScrn->bitsPerPixel);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4190
    if (mode->Flags & V_DBLSCAN)   ErrorF(" D");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4191
    if (mode->Flags & V_CSYNC)     ErrorF(" C");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4192
    if (mode->Flags & V_INTERLACE) ErrorF(" I");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4193
    if (mode->Flags & V_PHSYNC)    ErrorF(" +H");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4194
    if (mode->Flags & V_NHSYNC)    ErrorF(" -H");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4195
    if (mode->Flags & V_PVSYNC)    ErrorF(" +V");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4196
    if (mode->Flags & V_NVSYNC)    ErrorF(" -V");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4197
    ErrorF("\n");
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4198
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4199
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4200
    info->Flags = mode->Flags;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4201
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4202
    if(info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4203
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4204
        if (!R128InitCrtc2Registers(pScrn, save, 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4205
             pScrn->currentMode,info)) 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4206
            return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4207
        R128InitPLL2Registers(save, &info->pll, dot_clock);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4208
        if (!R128InitDDA2Registers(pScrn, save, &info->pll, info, mode))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4209
	    return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4210
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4211
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4212
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4213
        R128InitCommonRegisters(save, info);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4214
        if(!R128InitCrtcRegisters(pScrn, save, mode, info)) 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4215
            return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4216
        if(dot_clock) 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4217
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4218
            R128InitPLLRegisters(pScrn, save, &info->pll, dot_clock);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4219
            if (!R128InitDDARegisters(pScrn, save, &info->pll, info, mode))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4220
	        return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4221
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4222
        else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4223
        {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4224
            save->ppll_ref_div         = info->SavedReg.ppll_ref_div;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4225
            save->ppll_div_3           = info->SavedReg.ppll_div_3;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4226
            save->htotal_cntl          = info->SavedReg.htotal_cntl;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4227
            save->dda_config           = info->SavedReg.dda_config;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4228
            save->dda_on_off           = info->SavedReg.dda_on_off;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4229
        }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4230
        /* not used for now */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4231
        /*if (!info->PaletteSavedOnVT) RADEONInitPalette(save);*/
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4232
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4233
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4234
    if (((info->DisplayType == MT_DFP) || 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4235
        (info->DisplayType == MT_LCD)))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4236
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4237
        R128InitFPRegisters(&info->SavedReg, save, mode, info);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4238
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4239
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4240
    R128TRACE(("R128Init returns %p\n", save));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4241
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4242
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4243
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4244
/* Initialize a new mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4245
static Bool R128ModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4246
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4247
    R128InfoPtr info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4248
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4249
    if (!R128Init(pScrn, mode, &info->ModeReg)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4250
				/* FIXME?  DRILock/DRIUnlock here? */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4251
    pScrn->vtSema = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4252
    R128Blank(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4253
    R128RestoreMode(pScrn, &info->ModeReg);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4254
    R128Unblank(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4255
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4256
    info->CurrentLayout.mode = mode;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4257
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4258
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4259
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4260
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4261
static Bool R128SaveScreen(ScreenPtr pScreen, int mode)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4262
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4263
    ScrnInfoPtr   pScrn = xf86Screens[pScreen->myNum];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4264
    Bool unblank;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4265
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4266
    unblank = xf86IsUnblank(mode);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4267
    if (unblank)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4268
	SetTimeSinceLastInputEvent();
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4269
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4270
    if ((pScrn != NULL) && pScrn->vtSema) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4271
	if (unblank)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4272
		R128Unblank(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4273
	else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4274
		R128Blank(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4275
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4276
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4277
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4278
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4279
/*
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4280
 * SwitchMode() doesn't work right on crtc2 on some laptops.
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4281
 * The workaround is to switch the mode, then switch to another VT, then
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4282
 * switch back. --AGD
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4283
 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4284
_X_EXPORT Bool R128SwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4285
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4286
    ScrnInfoPtr   pScrn       = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4287
    R128InfoPtr info        = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4288
    Bool ret;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4289
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4290
    info->SwitchingMode = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4291
    ret = R128ModeInit(xf86Screens[scrnIndex], mode);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4292
    info->SwitchingMode = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4293
    return ret;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4294
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4295
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4296
/* Used to disallow modes that are not supported by the hardware. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4297
_X_EXPORT ModeStatus R128ValidMode(int scrnIndex, DisplayModePtr mode,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4298
                                   Bool verbose, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4299
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4300
    ScrnInfoPtr   pScrn = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4301
    R128InfoPtr   info  = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4302
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4303
    if(info->isDFP) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4304
        if(info->PanelXRes < mode->CrtcHDisplay ||
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4305
           info->PanelYRes < mode->CrtcVDisplay)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4306
            return MODE_NOMODE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4307
        else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4308
            return MODE_OK;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4309
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4310
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4311
    if (info->DisplayType == MT_LCD) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4312
	if (mode->Flags & V_INTERLACE) return MODE_NO_INTERLACE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4313
	if (mode->Flags & V_DBLSCAN)   return MODE_NO_DBLESCAN;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4314
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4315
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4316
    if (info->DisplayType == MT_LCD &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4317
	info->VBIOS) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4318
	int i;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4319
	for (i = info->FPBIOSstart+64; R128_BIOS16(i) != 0; i += 2) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4320
	    int j = R128_BIOS16(i);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4321
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4322
	    if (mode->CrtcHDisplay == R128_BIOS16(j) &&
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4323
		mode->CrtcVDisplay == R128_BIOS16(j+2)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4324
		if ((flags & MODECHECK_FINAL) == MODECHECK_FINAL) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4325
		    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4326
			       "Modifying mode according to VBIOS: %ix%i [pclk %.1f MHz] for FP to: ",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4327
			       mode->CrtcHDisplay,mode->CrtcVDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4328
			       (float)mode->Clock/1000);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4329
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4330
		    /* Assume we are using expanded mode */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4331
		    if (R128_BIOS16(j+5)) j  = R128_BIOS16(j+5);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4332
		    else                  j += 9;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4333
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4334
		    mode->Clock = (CARD32)R128_BIOS16(j) * 10;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4335
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4336
		    mode->HDisplay   = mode->CrtcHDisplay   =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4337
			((R128_BIOS16(j+10) & 0x01ff)+1)*8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4338
		    mode->HSyncStart = mode->CrtcHSyncStart =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4339
			((R128_BIOS16(j+12) & 0x01ff)+1)*8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4340
		    mode->HSyncEnd   = mode->CrtcHSyncEnd   =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4341
			mode->CrtcHSyncStart + (R128_BIOS8(j+14) & 0x1f);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4342
		    mode->HTotal     = mode->CrtcHTotal     =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4343
			((R128_BIOS16(j+8)  & 0x01ff)+1)*8;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4344
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4345
		    mode->VDisplay   = mode->CrtcVDisplay   =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4346
			(R128_BIOS16(j+17) & 0x07ff)+1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4347
		    mode->VSyncStart = mode->CrtcVSyncStart =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4348
			(R128_BIOS16(j+19) & 0x07ff)+1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4349
		    mode->VSyncEnd   = mode->CrtcVSyncEnd   =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4350
			mode->CrtcVSyncStart + ((R128_BIOS16(j+19) >> 11) & 0x1f);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4351
		    mode->VTotal     = mode->CrtcVTotal     =
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4352
			(R128_BIOS16(j+15) & 0x07ff)+1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4353
		    xf86ErrorF("%ix%i [pclk %.1f MHz]\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4354
			       mode->CrtcHDisplay,mode->CrtcVDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4355
			       (float)mode->Clock/1000);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4356
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4357
		return MODE_OK;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4358
	    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4359
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4360
	xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 5,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4361
		       "Mode rejected for FP %ix%i [pclk: %.1f] "
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4362
		       "(not listed in VBIOS)\n",
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4363
		       mode->CrtcHDisplay, mode->CrtcVDisplay,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4364
		       (float)mode->Clock / 1000);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4365
	return MODE_NOMODE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4366
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4367
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4368
    return MODE_OK;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4369
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4370
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4371
/* Adjust viewport into virtual desktop such that (0,0) in viewport space
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4372
   is (x,y) in virtual space. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4373
_X_EXPORT void R128AdjustFrame(int scrnIndex, int x, int y, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4374
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4375
    ScrnInfoPtr   pScrn     = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4376
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4377
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4378
    int           Base;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4379
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4380
    if(info->showCache && y && pScrn->vtSema)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4381
        y += pScrn->virtualY - 1;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4382
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4383
    Base = y * info->CurrentLayout.displayWidth + x;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4384
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4385
    switch (info->CurrentLayout.pixel_code) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4386
    case 15:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4387
    case 16: Base *= 2; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4388
    case 24: Base *= 3; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4389
    case 32: Base *= 4; break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4390
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4391
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4392
    Base &= ~7;                 /* 3 lower bits are always 0 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4393
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4394
    if (info->CurrentLayout.pixel_code == 24)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4395
	Base += 8 * (Base % 3); /* Must be multiple of 8 and 3 */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4396
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4397
    if(info->IsSecondary)    
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4398
    {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4399
        Base += pScrn->fbOffset; 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4400
        OUTREG(R128_CRTC2_OFFSET, Base);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4401
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4402
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4403
    OUTREG(R128_CRTC_OFFSET, Base);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4404
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4405
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4406
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4407
/* Called when VT switching back to the X server.  Reinitialize the video
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4408
   mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4409
_X_EXPORT Bool R128EnterVT(int scrnIndex, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4410
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4411
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4412
    R128InfoPtr info  = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4413
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4414
    R128TRACE(("R128EnterVT\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4415
    if (info->FBDev) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4416
        if (!fbdevHWEnterVT(scrnIndex,flags)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4417
    } else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4418
        if (!R128ModeInit(pScrn, pScrn->currentMode)) return FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4419
    if (info->accelOn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4420
	R128EngineInit(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4421
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4422
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4423
    if (info->directRenderingEnabled) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4424
	if (info->irq) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4425
	    /* Need to make sure interrupts are enabled */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4426
	    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4427
	    OUTREG(R128_GEN_INT_CNTL, info->gen_int_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4428
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4429
	R128CCE_START(pScrn, info);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4430
	DRIUnlock(pScrn->pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4431
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4432
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4433
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4434
    info->PaletteSavedOnVT = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4435
    pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4436
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4437
    return TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4438
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4439
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4440
/* Called when VT switching away from the X server.  Restore the original
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4441
   text mode. */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4442
_X_EXPORT void R128LeaveVT(int scrnIndex, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4443
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4444
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4445
    R128InfoPtr info  = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4446
    R128SavePtr save  = &info->ModeReg;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4447
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4448
    R128TRACE(("R128LeaveVT\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4449
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4450
    if (info->directRenderingEnabled) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4451
	DRILock(pScrn->pScreen, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4452
	R128CCE_STOP(pScrn, info);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4453
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4454
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4455
    R128SavePalette(pScrn, save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4456
    info->PaletteSavedOnVT = TRUE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4457
    if (info->FBDev)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4458
        fbdevHWLeaveVT(scrnIndex,flags);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4459
    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4460
        R128Restore(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4461
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4462
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4463
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4464
/* Called at the end of each server generation.  Restore the original text
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4465
   mode, unmap video memory, and unwrap and call the saved CloseScreen
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4466
   function.  */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4467
static Bool R128CloseScreen(int scrnIndex, ScreenPtr pScreen)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4468
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4469
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4470
    R128InfoPtr info  = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4471
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4472
    R128TRACE(("R128CloseScreen\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4473
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4474
#ifdef XF86DRI
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4475
				/* Disable direct rendering */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4476
    if (info->directRenderingEnabled) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4477
	R128DRICloseScreen(pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4478
	info->directRenderingEnabled = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4479
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4480
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4481
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4482
    if (pScrn->vtSema) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4483
	R128Restore(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4484
	R128UnmapMem(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4485
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4486
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4487
    if (info->accel)             XAADestroyInfoRec(info->accel);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4488
    info->accel                  = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4489
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4490
    if (info->scratch_save)      xfree(info->scratch_save);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4491
    info->scratch_save           = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4492
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4493
    if (info->cursor)            xf86DestroyCursorInfoRec(info->cursor);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4494
    info->cursor                 = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4495
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4496
    if (info->DGAModes)          xfree(info->DGAModes);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4497
    info->DGAModes               = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4498
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4499
    if (info->adaptor) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4500
        xfree(info->adaptor->pPortPrivates[0].ptr);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4501
	xf86XVFreeVideoAdaptorRec(info->adaptor);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4502
	info->adaptor = NULL;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4503
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4504
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4505
    pScrn->vtSema = FALSE;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4506
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4507
    pScreen->BlockHandler = info->BlockHandler;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4508
    pScreen->CloseScreen = info->CloseScreen;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4509
    return (*pScreen->CloseScreen)(scrnIndex, pScreen);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4510
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4511
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4512
_X_EXPORT void R128FreeScreen(int scrnIndex, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4513
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4514
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4515
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4516
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4517
    R128TRACE(("R128FreeScreen\n"));
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4518
#ifdef WITH_VGAHW
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4519
    if (info->VGAAccess && xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4520
	vgaHWFreeHWRec(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4521
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4522
    R128FreeRec(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4523
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4524
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4525
/* Sets VESA Display Power Management Signaling (DPMS) Mode.  */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4526
static void R128DisplayPowerManagementSet(ScrnInfoPtr pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4527
					  int PowerManagementMode, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4528
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4529
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4530
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4531
    int           mask      = (R128_CRTC_DISPLAY_DIS
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4532
			       | R128_CRTC_HSYNC_DIS
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4533
			       | R128_CRTC_VSYNC_DIS);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4534
    int             mask2     = R128_CRTC2_DISP_DIS;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4535
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4536
    switch (PowerManagementMode) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4537
    case DPMSModeOn:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4538
	/* Screen: On; HSync: On, VSync: On */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4539
	if (info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4540
		OUTREGP(R128_CRTC2_GEN_CNTL, 0, ~mask2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4541
	else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4542
		OUTREGP(R128_CRTC_EXT_CNTL, 0, ~mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4543
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4544
    case DPMSModeStandby:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4545
	/* Screen: Off; HSync: Off, VSync: On */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4546
	if (info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4547
		OUTREGP(R128_CRTC2_GEN_CNTL, R128_CRTC2_DISP_DIS, ~mask2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4548
	    else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4549
		OUTREGP(R128_CRTC_EXT_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4550
			R128_CRTC_DISPLAY_DIS | R128_CRTC_HSYNC_DIS, ~mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4551
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4552
    case DPMSModeSuspend:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4553
	/* Screen: Off; HSync: On, VSync: Off */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4554
	if (info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4555
		OUTREGP(R128_CRTC2_GEN_CNTL, R128_CRTC2_DISP_DIS, ~mask2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4556
	else 
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4557
		OUTREGP(R128_CRTC_EXT_CNTL,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4558
			R128_CRTC_DISPLAY_DIS | R128_CRTC_VSYNC_DIS, ~mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4559
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4560
    case DPMSModeOff:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4561
	/* Screen: Off; HSync: Off, VSync: Off */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4562
	if (info->IsSecondary)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4563
		OUTREGP(R128_CRTC2_GEN_CNTL, mask2, ~mask2);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4564
	else
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4565
		OUTREGP(R128_CRTC_EXT_CNTL, mask, ~mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4566
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4567
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4568
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4569
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4570
static int r128_set_backlight_enable(ScrnInfoPtr pScrn, int on);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4571
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4572
static void R128DisplayPowerManagementSetLCD(ScrnInfoPtr pScrn,
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4573
					  int PowerManagementMode, int flags)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4574
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4575
    R128InfoPtr   info      = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4576
    unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4577
    int           mask      = R128_LVDS_DISPLAY_DIS;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4578
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4579
    switch (PowerManagementMode) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4580
    case DPMSModeOn:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4581
	/* Screen: On; HSync: On, VSync: On */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4582
	OUTREGP(R128_LVDS_GEN_CNTL, 0, ~mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4583
        r128_set_backlight_enable(pScrn, 1);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4584
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4585
    case DPMSModeStandby:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4586
	/* Fall through */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4587
    case DPMSModeSuspend:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4588
	/* Fall through */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4589
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4590
    case DPMSModeOff:
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4591
	/* Screen: Off; HSync: Off, VSync: Off */
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4592
	OUTREGP(R128_LVDS_GEN_CNTL, mask, ~mask);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4593
        r128_set_backlight_enable(pScrn, 0);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4594
	break;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4595
    }
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4596
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4597
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4598
static int r128_set_backlight_enable(ScrnInfoPtr pScrn, int on)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4599
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4600
        R128InfoPtr info        = R128PTR(pScrn);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4601
        unsigned char *R128MMIO = info->MMIO;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4602
	unsigned int lvds_gen_cntl = INREG(R128_LVDS_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4603
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4604
	lvds_gen_cntl |= (/*R128_LVDS_BL_MOD_EN |*/ R128_LVDS_BLON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4605
	if (on) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4606
		lvds_gen_cntl |= R128_LVDS_DIGON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4607
		if (!(lvds_gen_cntl & R128_LVDS_ON)) {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4608
			lvds_gen_cntl &= ~R128_LVDS_BLON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4609
			OUTREG(R128_LVDS_GEN_CNTL, lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4610
			(void)INREG(R128_LVDS_GEN_CNTL);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4611
			usleep(10000);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4612
			lvds_gen_cntl |= R128_LVDS_BLON;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4613
			OUTREG(R128_LVDS_GEN_CNTL, lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4614
		}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4615
#if 0
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4616
		lvds_gen_cntl &= ~R128_LVDS_BL_MOD_LEVEL_MASK;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4617
		lvds_gen_cntl |= (0xFF /* backlight_conv[level] */ <<
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4618
				  R128_LVDS_BL_MOD_LEVEL_SHIFT);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4619
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4620
		lvds_gen_cntl |= (R128_LVDS_ON | R128_LVDS_EN);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4621
		lvds_gen_cntl &= ~R128_LVDS_DISPLAY_DIS;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4622
	} else {
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4623
#if 0
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4624
		lvds_gen_cntl &= ~R128_LVDS_BL_MOD_LEVEL_MASK;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4625
		lvds_gen_cntl |= (0xFF /* backlight_conv[0] */ <<
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4626
				  R128_LVDS_BL_MOD_LEVEL_SHIFT);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4627
#endif
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4628
		lvds_gen_cntl |= R128_LVDS_DISPLAY_DIS;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4629
		OUTREG(R128_LVDS_GEN_CNTL, lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4630
		usleep(10);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4631
		lvds_gen_cntl &= ~(R128_LVDS_ON | R128_LVDS_EN | R128_LVDS_BLON
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4632
				   | R128_LVDS_DIGON);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4633
	}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4634
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4635
	OUTREG(R128_LVDS_GEN_CNTL, lvds_gen_cntl);
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4636
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4637
	return 0;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4638
}
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4639
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4640
_X_EXPORT void R128FillInScreenInfo(ScrnInfoPtr pScrn)
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4641
{
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4642
	pScrn->driverVersion = R128_VERSION_CURRENT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4643
	pScrn->driverName    = R128_DRIVER_NAME;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4644
	pScrn->name          = R128_NAME;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4645
	pScrn->PreInit       = R128PreInit;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4646
	pScrn->ScreenInit    = R128ScreenInit;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4647
	pScrn->SwitchMode    = R128SwitchMode;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4648
	pScrn->AdjustFrame   = R128AdjustFrame;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4649
	pScrn->EnterVT       = R128EnterVT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4650
	pScrn->LeaveVT       = R128LeaveVT;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4651
	pScrn->FreeScreen    = R128FreeScreen;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4652
	pScrn->ValidMode     = R128ValidMode;
f9bb066edfe0 6397125: Radeon driver: fails to read hsync/vsync rates from EDID
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  4653
}