Platform Notes: SMCC Frame Buffers
只搜寻这本书
以 PDF 格式下载本书

TurboGXplus Frame Buffer

1

This chapter describes how you can configure your system using a TurboGXplus(TM) card to suit your specific video and graphics requirements. The information describes how to set up your TurboGXplus to support different screen resolutions and how to set up the system to support multiple monitors.

TurboGXplus-supported Monitors

Table 1-1 shows the list of monitors supported by the TurboGXplus card.
Table 1-1
Sun Part...........Monitor ID Model....Number...Type/Size/FCC Sense CodeStandard Resolution and Refresh Rate*
X248A.....365-1068-01 Color 21"...21280 . 1024 at 76 Hz
GDM-20D10..365-1167-01 Color 20"...41152 . 900 at 76 Hz 1152 . 900 at 66 Hz 1280 . 1024 at 67 Hz 1280 . 1024 at 76 Hz
GDM-1955A15 365-1081-01 Color 19"...31152 . 900 at 66 Hz
GDM-1962...365-1095-01 Color 19"...41152 . 900 at 76 Hz 1152 . 900 at 66 Hz 1280 . 1024 at 67 Hz
GDM-1962B..365-1160-01 Color 19"...41152 . 900 at 76 Hz 1152 . 900 at 66 Hz 1280 . 1024 at 67 Hz
GDM-1604A15 365-1079-01 Color 16"...31152 . 900 at 66 Hz
GDM-1662B..365-11593-01 Color 16"...61152 . 900 at 76 Hz
1152 . 900 at 66 Hz
CPD-1790...365-1151-01 Color 16"...31152 . 900 at 66 Hz
1024 . 768 at 77 Hz
X449.....365-1286-01 Color 15"...01024 . 768 at 77 Hz
GDM-20S5...365-1168-01 Greyscale 20" 2 or 4**1280 . 1024 at 76 Hz or 1152 . 900 at 76 Hz 1280 . 1024 at 67 Hz
17SMM4 A..365-1100-01 Grayscale 17" 61152 . 900 at 76 Hz
M20P110...365-1099-01 Grayscale 19" 41152 . 900 at 76 Hz
Non-Sun...--......Unknown...71152 . 900 at 66 Hz
*Resolutions in bold type are the default resolution at power-on initialization. ** Monitor ID sense code is user-selectable by the rear switch.

Note - The monitors listed in Table 1-1 are subject to change as Sun Microsystems announces new monitors. Contact your local Sun representative for a listing of supported monitors.

Default Screen Resolutions

Table 1-2 lists the default screen resolutions by monitor ID sense code.
Table 1-2
CodeScreen Resolution
71152 . 900 at 66 Hz
61152 . 900 at 76 Hz
51024 .x 768 at 60 Hz
41152 . 900 at 76 Hz
31152 . 900 at 66 Hz
21280 . 1024 at 76 Hz
11600 . 1280 at 76 Hz
01024 . 768 at 77 Hz

Programming the Screen Resolution

Nvramrc is a nonvolatile PROM script memory. When the PROM reaches the device probing stage, it checks the use-nvramrc? variable, and if it is true, executes the Forth code that resides in nvramrc. Otherwise, it calls probe-sbus, install-console and banner.
Code Example 1-1 places resolution initialization between the probe-sbus stage and the install-console and banner stages.
First probe-sbus is called to probe all devices, so that the device tree is created, and the devices are initialized.
Code Example 1-1 Resolution Initialization Between probe-sbus and install-console Stage

  #!/bin/sh  
  eeprom fcode-debug\?=true  
  eeprom use-nvramrc\?=true  
  eeprom nvramrc='probe-sbus  
  : vsetup "  
  117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET" ;  
  vsetup 4  
  " /sbus/cgsix@1" " override" execute-device-method drop  
  install-console  
  banner  
  '  

The next line defines a Forth word called vsetup that contains the monitor video setup values. The following string of values (defined in Table 1-3) are the specifications for a video setup:
" 117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET"

Table 1-3
ValueDescription
117000000Pixel frequency or dot clock in Hz
71691Horizontal frequency in Hz
67Vertical frequency in Hz
16Horizontal front porch (in pixels)
112Horizontal sync width (in pixels)
224Horizontal back porch (in Pixels)
1280Horizontal displayed pixels (in pixels)
2Vertical front porch (in lines)
8Vertical sync width (in lines)
33Vertical back porch (in lines)
1024Vertical displayed lines (in lines)
COLORColor monitor flag
0OFFSETNo sync pedestal flag
The line, vsetup 4, pushes the video string on the stack, the number 4 defines the sense code of the monitor to change the resolution on. See Table 1-4 on page 7 for supported monitor codes.
The next line pushes the string /sbus/cgsix@1 onto the Forth stack, the path for the device where the resolution is to be changed.
Code Example 1-2 changes the cgsix frame buffer on SBus slot 1.
Code Example 1-2 Changes to cgsix Frame Buffer in SBus Slot 1

  ok nvedit  
  0: probe-sbus  
  1: : vsetup "  
  117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET" ;  
  2: vsetup 4  
  3: " /sbus/cgsix@1" " override" execute-device-method drop  
  4: install-console  
  5: banner  
  6: ^C  
  ok nvstore  
  ok setenv use-nvramrc? true  
  ok setenv fcode-debug? true  

The "override" string is the actual entry point in the cgsix fcode PROM that reconfigures the resolution from the data on the forth stack. execute-device-method actually calls override and returns a pass or fail flag, which is ignored by the drop command that follows.
The remaining two lines install-console and banner, installs a terminal driver on the display device, then prints the banner at reset time or reboot time.

Configuring Monitors Using a UNIX Script

Code Example 1-3 is a UNIX script that is used to configure the TurboGXplus for a resolution of 1280 . 1024 at 67 Hz:
Code Example 1-3 UNIX Script Method

  #!/bin/sh  
  eeprom fcode-debug\?=true  
  eeprom use-nvramrc\?=true  
  eeprom nvramrc='probe-sbus  
  : vsetup "  
  117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET" ;  
  vsetup 4  
  " /sbus/cgsix@1" " override" execute-device-method drop  
  install-console  
  banner  
  '  

Configuring Monitors Using the PROM Method

Code Example 1-4 uses the PROM method to configure the TurboGXplus for a resolution of 1280 . 1024 at 67 Hz:
Code Example 1-4 PROM Method

  ok nvedit  
  0: probe-sbus  
  1: : vsetup "  
  117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET" ;  
  2: vsetup 4  
  3: " /sbus/cgsix@1" " override" execute-device-method drop  
  4: install-console  
  5: banner  
  6: ^C  
  ok nvstore  
  ok setenv use-nvramrc? true  
  ok setenv fcode-debug? true  

Table 1-4 contains codes for TurboGXplus-supported resolutions:
Table 1-4
ResolutionCode
1024 . 768 at 60 Hz" 64125000,48286,60,16,128,160,1024,2,6,29,768,COLOR"
1024 . 768 at 70 Hz" 74250000,56593,70,16,136,136,1024,2,6,32,768,COLOR"
1024 . 768 at 77 Hz" 84375000,62040,77,32,128,176,1024,2,4,31,768,COLOR"
1152 . 900 at 66 Hz" 94500000,61845,66,40,128,208,1152,2,4,31,900,COLOR"
1152 . 900 at 76 Hz" 108000000,71808,76,32,128,192,1152,2,4,31,900,COLOR,0OFFSET"
1280 . 1024 at 67 Hz" 117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET"
1280 . 1024 at 76 Hz" 135000000,81128,76,32,64,288,1280,2,8,32,1024,COLOR,0OFFSET"
1600 . 1280 at 76 Hz" 216000000,101890,76,24,216,280,1600,2,8,50,1280,COLOR,0OFFSET"

Setting Up a Single Monitor Using the PROM Method

Code Example 1-5 shows how to set up a TurboGXplus card in slot 2 to 1024 . 768 at 60 Hz using a 16-inch monitor:
Code Example 1-5 PROM Method for Single Monitor Setup

  ok nvedit  
     0: probe-sbus  
     1: : vsetup "  
  64125000,48286,60,16,128,160,1024,2,6,29,768,COLOR" ;  
     2: vsetup 6  
     3: " /sbus/cgsix@2" " override" execute-device-method drop  
     4: install-console  
     5: banner  
     6: ^C  
  ok nvstore  
  ok setenv use-nvramrc? true  
  ok setenv fcode-debug? true  

Setting Up a Single Monitor Using a UNIX Script

The following example is a UNIX script that sets a 1024 . 768 at 60 Hz for the TurboGXplus card in slot 2.

Imported image(387x137)

Setting Up Multiple Monitors Using a UNIX Script

Code Example 1-6 shows a UNIX script that sets up the TurboGXplus cards in slot 1 to 1152 . 900 at 76 Hz, and another TurboGXplus card in slot 3 to 1280 . 1024 at 67 Hz using two 19-inch monitors:
Code Example 1-6 UNIX Script Method for Single Monitor Setup

  #!/bin/sh  
  eeprom fcode-debug\?=true  
  eeprom nvramrc='probe-sbus  
  : vsetup " 64125000,48286,60,16,128,160,1024,2,6,29,768,COLOR" ;  
  vsetup 6  
  "/sbus/cgsix@2" " override" execute-device-method drop  
  install-console  
  banner  
  '  
  eeprom use-nvramrc\?=true  

For more information on running multiple monitors, see Chapter 9, "Multiple Monitors on a System."