Solaris Handbook for Sun Frame Buffers

Chapter 1 TurboGXplus Frame Buffer

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.


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.


Table 1-1 Monitors Supported by TurboGXplus

Model 

Sun Part Number 

Type/Size/FCC 

Monitor ID Sense Code 

Standard Resolution and Refresh Rate 

X248A 

365-1068-01 

Color 21" 

1280 x 1024 at 76 Hz (Note 1) 

GDM-20D10 

365-1167-01 

Color 20" 

1152 x 900 at 76 Hz (Note 1) 

1152 x 900 at 66 Hz 

1280 x 1024 at 67 Hz 

1280 x 1024 at 76 Hz 

GDM-1955A15 

365-1081-01 

Color 19" 

1152 x 900 at 66 Hz 

GDM-1962 

365-1095-01 

Color 19" 

1152 x 900 at 76 Hz (Note 1) 

1152 x 900 at 66 Hz 

1280 x 1024 at 67 Hz 

GDM-1962B 

365-1160-01 

Color 19" 

1152 x 900 at 76 Hz (Note 1) 

1152 x 900 at 66 Hz 

1280 x 1024 at 67 Hz 

GDM-1604A15 

365-1079-01 

Color 16" 

1152 x 900 at 66 Hz 

GDM-1662B 

365-11593-01 

Color 16" 

1152 x 900 at 76 Hz (Note 1) 

1152 x 900 at 66 Hz 

CPD-1790 

365-1151-01 

Color 16" 

1152 x 900 at 66 Hz (Note 1) 

1024 x 768 at 77 Hz  

X449 

365-1286-01 

Color 15" 

1024 x 768 at 77 Hz 

GDM-20S5 

365-1168-01 

Greyscale 20" 

2 or 

4* 

1280 x 1024 at 76 Hz ) or 

1152 x 900 at 76 Hz (Note 2) 

1280 x 1024 at 67 Hz 

17SMM4 A 

365-1100-01 

Grayscale 17" 

1152 x 900 at 76 Hz 

M20P110 

365-1099-01 

Grayscale 19" 

1152 x 900 at 76 Hz  

Non-Sun 

-- 

Unknown 

1152 x 900 at 66 Hz 

1. The default resolution at power-on initialization.2. Monitor ID sense code is user-selectable by the rear switch. 

Default Screen Resolutions

Table 1-2 lists the default screen resolutions by monitor ID sense code.

Table 1-2 TurboGXplus Monitor Sense Codes

Code 

Screen Resolution 

1152 x 900 at 66 Hz 

1152 x 900 at 76 Hz 

1024 x 768 at 60 Hz 

1152 x 900 at 76 Hz 

1152 x 900 at 66 Hz 

1280 x 1024 at 76 Hz 

1600 x 1280 at 76 Hz 

1024 x 768 at 77 Hz 

Programming the Screen Resolution

Programming the screen resolution for TurboGXplus frame buffers must be done in nvramrc, 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 (for all pre-Ultra systems) or probe-all (for all Ultra systems), install-console, and banner.

The following example places resolution initialization between the probe-sbus (or probe-all) stage and the install-console stage.

First probe-sbus or probe-all is called to probe all devices, so that the device tree is created, and the devices are initialized.

The next line defines a Forth word called vsetup which contains the monitor video setup values.


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														(or probe-all)
: 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 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 Video Setup Specifications

Value 

Description 

117000000 

Pixel frequency or dot clock in Hz 

71691 

Horizontal frequency in Hz 

67 

Vertical frequency in Hz 

16 

Horizontal front porch (in pixels) 

112 

Horizontal sync width (in pixels) 

224 

Horizontal back porch (in Pixels) 

1280 

Horizontal displayed pixels (in pixels) 

Vertical front porch (in lines) 

Vertical sync width (in lines) 

33 

Vertical back porch (in lines) 

1024 

Vertical displayed lines (in lines) 

COLOR 

Color monitor flag 

0OFFSET 

No 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 for supported monitor codes. The number used should match the monitor attached to the TurboGXplus frame buffer.

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. The "1" in cgsix@1 identifies the SBus slot number.

The following example changes the cgsix frame buffer on SBus slot 1.


Example 1-2 Changes to cgsix Frame Buffer in SBus Slot 1

ok nvedit
0: probe-sbus														(or probe-all)
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

The following is a UNIX script used to configure the TurboGXplus for a resolution of 1280 x 1024 at 67 Hz.


Example 1-3 UNIX Script Method

#!/bin/sh
eeprom fcode-debug\?=true
eeprom use-nvramrc\?=true
eeprom nvramrc='probe-sbus														(or probe-all)
: 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

The following example uses the PROM method to configure the TurboGXplus for a resolution of 1280 x 1024 at 67 Hz.


Example 1-4 PROM Method

ok nvedit
0: probe-sbus														(or probe-all)
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 TurboGXplus Resolution Codes

Resolution 

Code 

1024 x 768 at 60 Hz 

" 64125000,48286,60,16,128,160,1024,2,6,29,768,COLOR"

1024 x 768 at 70 Hz 

" 74250000,56593,70,16,136,136,1024,2,6,32,768,COLOR"

1024 x 768 at 77 Hz 

" 84375000,62040,77,32,128,176,1024,2,4,31,768,COLOR"

1152 x 900 at 66 Hz 

" 94500000,61845,66,40,128,208,1152,2,4,31,900,COLOR"

1152 x 900 at 76 Hz 

" 108000000,71808,76,32,128,192,1152,2,4,31,900,COLOR,0OFFSET"

1280 x 1024 at 67 Hz 

" 117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET"

1280 x 1024 at 76 Hz 

" 135000000,81128,76,32,64,288,1280,2,8,32,1024,COLOR,0OFFSET"

1600 x 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

The following is an example of how to set up a TurboGXplus card in slot 2 to 1024 x 768 at 60 Hz using a 16-inch monitor.


Example 1-5 PROM Method for Single Monitor Setup

ok nvedit
   0: probe-sbus														(or probe-all)
   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 is a UNIX script that sets a 1024 x 768 at 60 Hz for the TurboGXplus card in slot 2.


Example 1-6 UNIX Script Method for Single Monitor Setup

#!/bin/sh
eeprom fcode-debug\?=true
eeprom nvramrc='probe-sbus														(or probe-all)
: 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

Setting Up Multiple Monitors Using a UNIX Script

The following example shows a UNIX script that sets up the TurboGXplus card in slot 1 to 1152 x 900 at 76 Hz, and another TurboGXplus card in slot 3 to 1280 x 1024 at 67 Hz using two 19-inch monitors.


Example 1-7 UNIX Script Method for Multiple Monitor Setup

#!/bin/sh
eeprom fcode-debug\?=true
eeprom nvramrc='probe-sbus														(or probe-all)
: vsetup1 " 108000000,71808,76,32,128,192,1152,2,4,31,900,COLOR,0OFFSET" ;
vsetup1 4 
" /sbus/cgsix@1" " override" execute-device-method
drop
: vsetup2 " 117000000,71691,67,16,112,224,1280,2,8,33,1024,COLOR,0OFFSET" ;
vsetup2 4
" /sbus/cgsix@3" " 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.