SunVTS 3.0 Test Reference Manual

Chapter 7 Color Graphics Frame Buffer Test (cg14test)

cg14test checks the cg14 frame buffer card. cg14test is specific to the VSIMM (Video SIMM) devices in the SPARCstation 10 SX and the SPARCstation 20 SX.


Caution - Caution -

Due to possible conflicts between SunVTS cg14 frame buffer tests and OPEN LOOK applications that use the cg14 frame buffer, the following restrictions apply when running cg14test: Do not run graphic applications other than OPEN LOOK while SunVTS is running frame buffer tests. Do not run OPEN LOOK programs that generate video updates outside or on top of the SunVTS window. Do not close the SunVTS window to an icon while it is running frame buffer tests. Ensure that the frame buffer locking option is enabled from the Options window (see the section about testing frame buffers in SunVTS 3.0 User's Guide for details).


cg14test Groups

There are nine test groups in cg14test:

  1. MDI and VBC Chip Control Registers

  2. Memory Chips

  3. MDI Chip Cursor Registers

  4. MDI Chip CLUT Registers

  5. DAC Chip Registers

  6. MDI Chip XLU Registers

  7. CG14 Display (visual only)

  8. MDI Chip Testmode Readback in 8-bit mode

  9. Driver IOCTLs

Table 7-1 cg14 Test Groups

Test Groups 

Description 

Hardware  

(Groups 1-6) 

These test groups are tested by opening /dev/fbs/cgfourteenX, mapping the MDI Control Address Space, modifying the target test location (using direct writes to the mapped address space), reading from the mmapped address space for verification, and closing the device.

Visual Pattern 

(Group 7) 

This subtest loads a visual pattern of 256 colors, then rotates the pattern around. You verify this test by seeing it display. 

Data Propagation 

(Group 8) 

 

This test group is tested by loading the frame buffer (FB) memory with four neutral data patterns, then setting a target FB pixel with data that triggers the test mode readback latch. The result is read from the readback register after vertical blanking occurs. Two different trigger patterns are used at each FB pixel. All four MDI pixel paths (A - D) are used, and the pixel locations for each trigger are designed to detect gross MDI input data opens or short, VRAM SAM addressing, and VRAM-to-SAM transfer addressing. 

The screen shows four horizontal bars, which are either greyscale or colored. These bars change each time the trigger data is inverted, and as it completes the testing of a raster pattern. 

 

NOTE -- If the resolution and VRAM size permits, 8-bits per pixel mode are tested. 

Driver (Group 9) 

 

Test all IOCTL calls that have not yet been used to verify proper driver communication to the hardware. Call the driver to perform a hardware update, and then confirm that the update was successful by using the complementary driver read, or reading the mmap'ed address space and comparing it against the stimulus. 

 

cg14test performs the appropriate steps before and after each test (if possible) to maintain context and prevent visual confusion by saving the register data before it is overwritten, disabling video (if possible), performing the specific test, and restoring the saved register data information.

 

The data used for register testing is optimized to include all 0's, all 1's, and walking a 1 through each bit being tested. 

MDI and VBC Chip Control Registers 

(Group 1) 

 

Master Control Register bits 7-0 write/read verify 

Packed Pixel Register bits 3-0 write/read verify 

Master Status Register bits 7-4 read-only verify 0x00 and 0x30 occur 

Horizontal Blank Start Register bits 9-0 write/read verify 

Horizontal Blank Clear Register bits 9-0 write/read verify 

Horizontal Sync Set Register bits 9-0 write/read verify 

Horizontal Sync Clear Register bits 9-0 write/read verify 

Composite Sync Clear Register bits 9-0 write/read verify 

Vertical Blank Start Register bits 11-0 write/read verify 

Vertical Blank Clear Register bits 11-0 write/read verify 

Vertical Sync Set Register bits 11-0 write/read verify 

Vertical Sync Clear Register bits 11-0 write/read verify 

Transfer Cycle Set Register bits 9-0 write/read verify (MDI revision 0 only) 

Transfer Cycle Clear Register bits 9-0 write/read verify (MDI revision 0 only) 

Fault Status Address Register bits 15-0 write/read verify 

Auto-increment Address Space Register bits 7-0 write/read verify 

Video Base Register bits 23-12 write/read verify 

Memory Chips 

(Group 2) 

 

The Memory Chips test group includes VRAM Testing, Memory Retention, and Test Write Recovery. 

 

VRAM Testing  

The Data Bus Test uses 18 NTA patterns (Nair, Thatte, and Abraham's testing procedure for RAM) to check for data and address faults. This test is performed in MDI_CHUNKY_XBGR_MAP access mode only. See Table 7-2.

Memory Chips 

(Group 2) Continued 

 

VRAM Testing (Continued) 

The test ascends through the Frame buffer memory, clearing it to 0's. The NTA pattern test number x reads a location to make sure test data y is present. It then writes new data z to that location. The location ascends through the FB sequentially. See Table 7-2.

 

Memory Retention 

VRAM Data Retention checks for gross problems with the VRAM refresh. Since refresh is active during this test, no retention problems should occur unless the refresh is defective. 

 

This test turns off the video, writes 0's to all the VRAM, waits the specified memory_hold time (the default is five seconds), then reads and compares all VRAM data. This process is repeated with data of f's, then the video is restored and the test is complete.

 

There are two new command line parameters related to this test: R=number and H=number. R= lets the user specify the refresh interval from 128-1023. The time between refresh cycles and the system default is 123. H= lets the user specify the retention test hold time in seconds.

 

Test Write Recovery 

A write recovery test is used in all the EMC mapping modes to write data to 0's followed by immediately reading that data location to see if the VRAM can recover from a write correctly. This is done to all sequential ascending locations. Next, a second independent pass of memory is made with the complementary data of 0xffffffff written to descending locations of the FB memory buffer.

 

The EMC mapping access modes are: 

MDI_CHUNKY_XGBR_MAP MDI_CHUNKY_BGR_MAP MDI_PLANAR_X16_MAP MDI_PLANAR_C16_MAP MDI_PLANAR_X32_MAP MDI_PLANAR_B32_MAP MDI_PLANAR_G32_MAP MDI_PLANAR_R32_MAP

MDI Chip Cursor 

Registers (Group 3) 

The MDI Chip Cursor Registers are: 

 

Cursor Plane 0 Register bits 31-0 write/read verify 

Cursor Plane 1 Register bits 31-0 write/read verify 

Cursor Plane 0 Register bits 31-0 write/read verify (with auto increment) 

Cursor Plane 1 Register bits 31-0 write/read verify (with auto increment 

Cursor Control Register bits 2-0 write/read verify 

Cursor Color Register 1 bits 28-0 write/read verify 

Cursor Color Register 2 bits 28-0 write/read verify 

X-Cursor Location Register bits 11-0 write/read verify 

Y-Cursor Location Register bits 11-0 write/read verify 

Cursor Plane 0 Non-Auto Registers test 

Cursor Plane 0 Auto Registers test 

Cursor Plane 1 Non-Auto Registers test 

Cursor Plane 1 Auto Registers test 

Cursor Planes Retry A test 

Cursor Planes Retry B test 

MDI Chip CLUT 

Registers (Group 4) 

The MDI Chip CLUT Registers are: 

 

LUT1 Registers 0-255 bits 31-27 & 23-0 write/read verify 

LUT1 Registers 0-255 bits 31-27 & 23-0 write/read verify (with auto increment) 

LUT1D Registers 0-255 bits 31-27 & 23-0 write/read verify 

LUT1D Registers 0-255 bits 31-27 & 23-0 write/read verify (with auto increment) 

LUT2 Registers 0-255 bits 31-27 & 23-0 write/read verify 

LUT2 Registers 0-255 bits 31-27 & 23-0 write/read verify (with auto increment) 

LUT2D Registers 0-255 bits 31-27 & 23-0 write/read verify 

LUT2D Registers 0-255 bits 31-27 & 23-0 write/read verify (with auto increment) 

LUT3 Registers 0-255 bits 31-27 & 23-0 write/read verify 

LUT3 Registers 0-255 bits 31-27 & 23-0 write/read verify (with auto increment) 

LUT3D Registers 0-255 bits 31-27 & 23-0 write/read verify 

LUT3D Registers 0-255 bits 31-27 & 23-0 write/read verify (with auto increment) 

DAC Chip Registers (Group 5) 

 

The DAC Chip Registers test group includes the RAMDAC registers and control registers. 

 

RAMDAC Registers 

Address Register bits 7-0 (0x7 maximum) write/read verify 

Mode Register bits 7-0 (skip bit 5) bits write/read verify 

 

Control Registers 

ID Register bits 7-0 r/o verify data is 0x8C 

Pixel-Mask Register bits 7-0 write/read verify (skipped if  

dac rev = 2) 

Command2 Register bits 7-0 write/read verify (skipped if 

dac rev = 2) 

Command3 Register bits 7-0 write/read verify (skipped if 

dac rev = 2) 

MDI Chip XLUT 

Registers (Group 6) 

The MDI Chip XLUT Registers are: 

 

XLUT Registers 0-255 bits 7-0 write/read verify 

XLUT Registers 0-255 bits 7-0 write/read verify (with auto increment) 

XLUTD Registers 0-255 bits 7-0 write/read verify 

XLUTD Registers 0-255 bits 7-0 write/read verify (with auto increment) 

CG14 Display (visual only)  

Group 7) 

This test visually displays 256 boxes on the screen (each in a different color), and then shifts the CLUT1 entries giving the visual impression of the pattern mirroring itself from left to right horizontally. The pattern then rotates up, down, followed by mirroring itself horizontally left to right. 

MDI Chip Test Mode Readback Register (Group 8) 

This Test Mode reads back register bits 23-0 in read-only and verify modes. 

Driver IOCTLs (Group 9) 

MDI_GET_CFGINFO check # of CLUT's, pixel height, pixel width, and pixel mode against hardware

FBIOGATTR check real_type, fb_height, fb_width, fb_depth, fb_cmsize, and fb_size against cfginfo values

FBIOGTYPE check fb_type, fb_height, fb_width, fb_depth,fb_size, and fb_cmsize against driver defines or cfginfo values

FBIOGVIDEO check status returned against hardware

FBIOSVIDEO set off, off, on, on, off verifying against hardware

FBIOVERTICAL (imbedded in FBIOSVIDEO)

MDI_VRT_CNTL turn off, off, on, on, off the video interrupt enable and verify the hardware agreesMDI_SET_PIXELMODE set different modes and verify against the hardware

MDI_SET_PPR set the different modes and verify against the hardware

MDI_SET_COUNTERS set HSS, HSC, XCC, HBC, XCS, HBS, CSC, VSS, VSC, VBC, VBS, HCT, and VCT then verify against hardware

MDI_SET_XLUT set xlut and verify against hardware

MDI_GET_XLUT get xlut and verify against hardware

MDI_SET_CLUT set clut (1-3 as applicable) and verify against hardware

MDI_GET_CLUT get clut (1-3 as applicable) and verify against hardware

FBIOPUTCMAP set and verify clut1 matches

FBIOGETCMAP verify clut1 matches get

FBIOSATTR set emu_type to FBTYPE_MDICOLOR and verify

FBIOGATTR check

FBIOGCURMAX verify x and y size match driver defines

FBIOSCURSOR verify set at 3 locations matches hardware

FBIOGCURSOR verify driver knows what set(s) just did

FBIOSCURPOS verify set at three locations matches hardware

FBIOGCURPOS verify driver knows what set(s) just did

MDI_SET_CURSOR set then check CCR, XCU, and YCU cursor hardware registers

Table 7-2 cg14test NTA Testing Patterns

NTA Test Pattern  

Number = x

Test Data = y

New Data = z

1.0

0x00000000

0x01010101

1.5

0x01010101

0xffffffff

2.1

0xffffffff

0xf1f1f1f1

2.2

0xf1f1f1f1

0x33333333

3.1

0x33333333

0xf0f0f0f0

3.2

0xf0f0f0f0

0x0f0f0f0f

4.1

0x0f0f0f0f

0x55555555

4.2

0x55555555

0xaaaaaaaa

5.1

0xaaaaaaaa

0x05050505 (1x)

0x88888888 (2x)

5.2

0x88888888

0xf5f5f5f5

6.1

0xf5f5f5f5

0x00000000 (1x)

0x5f5f5f5f (2x)

6.2

0x5f5f5f5f

0x11111111

7.1

0x11111111

0x00000000 (1x)

0xcccccccc (2x)

7.2

0xcccccccc

0xdbdbdbdb

8.1

0xdbdbdbdb

0x6d6d6d6d

8.2

0x6d6d6d6d

0x6b6b6b6b

9.1

0x6b6b6b6b

0x0000000

9.2

0x00000000

-

cg14test Options

Figure 7-1 cg14test Option Menu

Graphic

Table 7-3 cg14test Options

Options 

Description 

FB Locking

See the section about Testing Multiple Frame Buffers in the SunVTS 3.0 User's Guide for details.

Long Test 

When enabled, the color bar screen(s) in the MDI Testmode Readback test checks all SAM transfers in clock=0 mode and clock=1 mode. If Long test is disabled, clock=1 runs checks on the first eight addresses and the first SAM transfer only. 

Processor Affinity 

For multiprocessor systems, indicates the processor to be tested. 

cg14test Command Line Syntax

/opt/SUNWvts/bin/cg14test standard_arguments -o dev=device_name, lock=E(nable)/D(isable),L,I

Table 7-4 cg14test Command Line Syntax

Argument 

Explanation 

dev=device_name

Specifies the path of the cg14 device file to be tested; for example: /dev/fbs/device_name.

lock=E(nable)/D(isable)

Enables and disables the window system locking option. See the Testing Multiple Frame Buffers sections in the SunVTS 3.0 User's Guide for details. Do not use when your device is the window system display.

Enables the long TMRB test. 

Enables optional driver ioctl tests for cursor. Note- Do not move the mouse during the cg14test when you run this option.


Note -

64-bit tests are located in the sparcv9 subdirectory: /opt/SUNWvts/bin/sparcv9/testname. If a test is not present in this directory, then it may only be available as a 32-bit test. For more information refer to "32-Bit and 64-Bit Tests".


cg14test Test Modes

Due to the nature of graphic tests, reading from or writing to the frame buffer during graphic tests will disturb user operation. This test is only available in Functional test mode.

The Functional test uses all subtests to test the cg14 frame buffer. The user can select the long mode for TRMB subtest.

cg14test Error Messages

Table 7-5 cg14test Error Messages

 

Error Message 

Probable Cause(s) 

Suggested Action (if applicable) 

6002

MDI name register = number

CG14 video board 

 

6004

MDI Cursor planes retry test maximum retry limit exceeded

CG14 video board 

 

6006

name error message

CG14 video boar 

 

6008

Failed open of file name, errno=number

Disk 

 

CPU board 

 

6010

Failed write to file name, errno=number

CG14 video board 

 

CPU board 

 

Disk 

 

6012

Failed close of file name, errno=number

Disk 

 

CPU board 

 

6014

MDI chip TestMode Readback, number-bit name mode, offset= number pixelpipe=name clock=number exp=number obs=number

 

 

6016

MEM (name), Data Retention offset= number exp=number obs=number

CG14 video board 

 

CPU board 

 

6018

MEM (name), NTA name offset= number exp=number obs=number

CG14 video board 

 

CPU board 

 

6020

MEM (name), WRRD name offset= number exp=number obs=number

CG14 video board 

 

CPU board 

 

6022

failed, mapping name space, errno = number

CG14 device file 

 

SunOS 

 

CG14 video board 

 

CPU board 

 

6024

MEM (name), WRRD name offset= number exp=number obs=number

SunOS 

 

CG14 video board 

 

CPU board 

 

6026

VBC Control Register exp=number obs=number

CG14 video board 

 

CPU board 

 

8002

name is an invalid parameter for name!

Operator error 

 

8004

unable to close device name

CG14 device file 

 

SunOS 

 

CG14 video board 

 

8006

invalid CG14 device type from name

CG14 device file 

 

SunOS 

 

CG14 video board 

 

8008

IOCTL Error: name

CPU board 

 

CG14 video board 

 

8008

IOCTL(name) name

CPU board 

 

CG14 video board 

 

8010

unable to unlock OL windows

SunOS 

 

Operator error 

 

8012

IOCTL(name,CLUTnumber) name

CG14 device file 

 

SunOS 

 

CG14 video board 

 

8014

unable to open CG14 device name

Incorrect device name 

 

No existing device 

 

CG14 video board