Port-sparc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

SS20/cg14 custom resolutions



Thanks to a good deal of experimentation and some very helpful email
correspondence (thank you - you know who you are), I've now got my
SS20's cg14 running at custom resolutions - that is, resolutions other
than the ones Sun provided for in their ROM code for the cg14.

I expect this is neither here nor there for most of you.  But I posted
asking about it some months back (I _think_ I posted here), and I want
to get this data into the archives so it can, maybe, be found by the
next poor sod who wants custom resolutions out of a cg14.  (I wanted
them so I could use stock 1600x1200 flatpanels; the provided resolution
close to that is 1600x1280, and those extra 80 lines are annoying.)

The resolution-setting words for the cg14 just push ten numbers on the
stack (in contrast to, say, the cg6, where they are strings).  For
example, r1600x1280x66 is defined as

: r1600x1280x66
   640 500 42 bebc200 100 a 180 2c 0 0
;

Here's the list of provided settings from one of my SS20s:

: r1920x1080x72  780 438 48 cdfe600  d8 2 178 56 30 3 ;
: r1024x768x70   400 300 46 46cf710  88 6  88 20 10 2 ;
: r1280x1024x66  500 400 42 70a71c8  40 8 118 29 18 2 ;
: r1600x1280x66  640 500 42 bebc200 100 a 180 2c  0 0 ;
: r1024x768x66   400 200 42 4323800  7c 5  a0 27  4 1 ;
: r1152x900x76   480 384 4c 66ff300  40 8 104 21 1c 2 ;
: r1152x900x66   480 384 42 5a1f4a0  40 8 110 1b 28 2 ;
: r1280x1024x76m 500 400 4c 80befc0  40 8 120 20 20 2 ;
: r1600x1280x76m 640 500 4c cdfe600  48 8 1b8 32  8 2 ;
: r1024x768x60   400 300 3c 3d27848  80 6  a0 1d 10 2 ;

These numbers (given in hex, here, since that seems to be the default
if you're poking at them with "see") appear to be, in order,

Horizontal resolution, in pixels
Vertical resolution, in lines
Vertical retrace frequency, in Hz
Dot clock, in Hz
Horizontal sync pulse width, in pixel times
Vertical sync pulse width, in line times
Horizontal back porch width, in pixel times
Vertical back porch width, in line times
Horizontal front porch width, in pixel times
Vertical front porch width, in line times

(I'm not sure why the vertical retrace frequency is given, since it can
be calculated from the other values.)

If you want to use a custom set of values, first you need to work out
the values.  For example, I managed to get 1600x1200 with

640 4b0 42 bebc200 100 5a 180 2c 0 0

and the monitor I've been testing with happily synced to the resulting
signal.  Once you have your values, how do you use them?  I struggled
with this for hours, but finally found a fairly clean way to do it.
Include something like this in your nvramrc:

probe-all
" /obio/cgfourteen@2,0" find-device
: r1600x1200x66 640 4b0 42 bebc200 100 5a 180 2c 0 0 ;
install-console
banner

Then you can set output-device to "screen:r1600x1200x66" to use those
values.  (The naming convention is purely for humans; I've had it work
with the word named "fnord" and output-device set to "screen:fnord".)

Since nothing in the nvramrc settings above is device-specific except
the details of the resolution-spec word, I conjecture (and conjecture
is what it is) that you could use similar constructs, with the
appropriate device-specific stuff in the custom word, to use custom
resolutions with other framebuffers.

One delightful little surprise the cg14 has waiting for the unwary is
that the X resolution apparently must be a multiple of 32 pixels.  I
tried to get 1680x1050 (a multiple of 16 but not of 32) and got a
bizarrely mangled display; I then tried to get 1601x1280 and it wedged
so hard I couldn't even blind-type "reset" (the 1680x1050 attempt did
let me blind-type "setenv use-nvramrc? false" and "reset" to recover).
I found that (to switch to hex) 640, 660, and 680 worked but 670 and
690 gave mangled video.

/~\ The ASCII                           der Mouse
\ / Ribbon Campaign
 X  Against HTML                mouse%rodents-montreal.org@localhost
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index