Subject: Re: radeonfb(4) resolution
To: Michael Lorenz <macallan@netbsd.org>
From: Marco Trillo <marcotrillo@gmail.com>
List: port-macppc
Date: 09/27/2007 15:00:50
------=_Part_1612_7145479.1190898050883
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

Based on your comments, I have a new patch that doesn't mess with the
radeonfb resolution functions.

Instead, if static EDID modes are available for a port, choose the
best mode from the list and use that as the only EDID mode for that
port.

Also, use static EDID modes only if a port connector type is
RADEON_CONN_CRT. For example on my eMac there are two ports, one is
the internal monitor (CRT connector type) and the other port has
another connector type (the external monitor port, I guess, although I
have never used it). So it should now be possible to use static EDID
for the internal monitor and a different EDID mode from the external
monitor.

By the way, this patch also implements underline support for the
radeonfb putchar function. Works fine for me. In fact, it doesn't only
add underline support but also other attributes (such as invert,
highlight, etc.) -- these are provided by the generic
rasops_allocattr() function (instead of using a radeonfb_allocattr()
which didn't do anything special and which dind't care about these
attributes).

The changes work fine for me, I hope that they're usfeul. The radeonfb
dmesg messages with the patch applied:

radeonfb0 at pci0 dev 16 function 0: ATI Technologies Radeon 9200 5962
radeonfb0: Video BIOS not present
radeonfb0: No video BIOS, using default clocks
radeonfb0: refclk = 27.000 MHz, refdiv = 12 minpll = 125000, maxpll = 350000
max_dotclock according to supported modes: 122240
radeonfb0: port #1: using static EDID
radeonfb0: 64 MB aperture at 0x98000000, 64 KB registers at 0x90000000
radeonfb0: display 0: initial virtual resolution 1024x768 at 32 bpp
radeonfb0: port 0: physical 1024x768 60Hz
radeonfb0: port 1: physical 1024x768 89Hz
init engine
wsdisplay0 at radeonfb0 kbdmux 1: console (fb, vt100 emulation)

In this case, the internal monitor is at port 1, which uses the static EDID.

     -Marco

------=_Part_1612_7145479.1190898050883
Content-Type: application/octet-stream; name="radeonfb.c.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="radeonfb.c.diff";
 filename="radeonfb.c.diff"

SW5kZXg6IHJhZGVvbmZiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9k
ZXYvcGNpL3JhZGVvbmZiLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAKZGlmZiAtdSAtcjEu
MjAgcmFkZW9uZmIuYwotLS0gcmFkZW9uZmIuYwkzIFNlcCAyMDA3IDAyOjQ1OjA2IC0wMDAwCTEu
MjAKKysrIHJhZGVvbmZiLmMJMjcgU2VwIDIwMDcgMTI6NDE6NTcgLTAwMDAKQEAgLTc4LDYgKzc4
LDcgQEAKICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KICNpbmNsdWRlIDxzeXMvZGV2aWNlLmg+CiAj
aW5jbHVkZSA8c3lzL21hbGxvYy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvbGltaXRzLmg+CiAjaW5j
bHVkZSA8bWFjaGluZS9idXMuaD4KICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiAjaW5jbHVkZSA8
c3lzL2x3cC5oPgpAQCAtMTYyLDcgKzE2Myw2IEBACiBzdGF0aWMgdm9pZCByYWRlb25mYl9jb3B5
Y29scyh2b2lkICosIGludCwgaW50LCBpbnQsIGludCk7CiBzdGF0aWMgdm9pZCByYWRlb25mYl9j
dXJzb3Iodm9pZCAqLCBpbnQsIGludCwgaW50KTsKIHN0YXRpYyB2b2lkIHJhZGVvbmZiX3B1dGNo
YXIodm9pZCAqLCBpbnQsIGludCwgdW5zaWduZWQsIGxvbmcpOwotc3RhdGljIGludCByYWRlb25m
Yl9hbGxvY2F0dHIodm9pZCAqLCBpbnQsIGludCwgaW50LCBsb25nICopOwogCiBzdGF0aWMgaW50
IHJhZGVvbmZiX2dldF9iYWNrbGlnaHQoc3RydWN0IHJhZGVvbmZiX2Rpc3BsYXkgKik7CiBzdGF0
aWMgaW50IHJhZGVvbmZiX3NldF9iYWNrbGlnaHQoc3RydWN0IHJhZGVvbmZiX2Rpc3BsYXkgKiwg
aW50KTsKQEAgLTE4NCw2ICsxODQsNyBAQAogI2RlZmluZQlQUklOVFJFRyhyKQlEUFJJTlRGKCgj
ciAiID0gJTA4eFxuIiwgR0VUMzIoc2MsIHIpKSkKICNkZWZpbmUJUFJJTlRQTEwocikJRFBSSU5U
RigoI3IgIiA9ICUwOHhcbiIsIEdFVFBMTChzYywgcikpKQogI2Vsc2UKK2ludAlyYWRlb25fZGVi
dWcgPSAwOwogI2RlZmluZQlEUFJJTlRGKHgpCiAjZGVmaW5lCVBSSU5UUkVHKHIpCiAjZGVmaW5l
CVBSSU5UUExMKHIpCkBAIC0xNDQzLDYgKzE0NDQsOSBAQAogI2VuZGlmCiAjZW5kaWYKIAorc3Rh
dGljIHZvaWQgZ2V0X3N0YXRpY19lZGlkKHN0cnVjdCByYWRlb25mYl9zb2Z0YyAqLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYWRlb25mYl9wb3J0ICopOworCiBpbnQKIHJh
ZGVvbmZiX2dldGNvbm5lY3RvcnMoc3RydWN0IHJhZGVvbmZiX3NvZnRjICpzYykKIHsKQEAgLTE1
NjgsNyArMTU3Miw2IEBACiAJCWNoYXIJZWRpZFsxMjhdOwogCQl1aW50OF90CWRkYzsKIAkJc3Ry
dWN0IGVkaWRfaW5mbyAqZWlwID0gJnNjLT5zY19wb3J0c1tpXS5ycF9lZGlkOwotCQlwcm9wX2Rh
dGFfdCBlZGlkX2RhdGE7CiAKIAkJRFBSSU5URigoIlBvcnQgIyVkOlxuIiwgaSkpOwogCQlEUFJJ
TlRGKCgiICAgIGNvbm4gPSAlZFxuIiwgc2MtPnNjX3BvcnRzW2ldLnJwX2Nvbm5fdHlwZSkpOwpA
QCAtMTU3NiwyMyArMTU3OSwxOCBAQAogCQlEUFJJTlRGKCgiICAgIGRhYyA9ICVkXG4iLCBzYy0+
c2NfcG9ydHNbaV0ucnBfZGFjX3R5cGUpKTsKIAkJRFBSSU5URigoIiAgICB0bWRzID0gJWRcbiIs
IHNjLT5zY19wb3J0c1tpXS5ycF90bWRzX3R5cGUpKTsKIAotCQlzYy0+c2NfcG9ydHNbaV0ucnBf
ZWRpZF92YWxpZCA9IDA7Ci0JCS8qIGZpcnN0IGxvb2sgZm9yIHN0YXRpYyBFRElEIGRhdGEgKi8K
LQkJaWYgKChlZGlkX2RhdGEgPSBwcm9wX2RpY3Rpb25hcnlfZ2V0KGRldmljZV9wcm9wZXJ0aWVz
KAotCQkgICAgJnNjLT5zY19kZXYpLCAiRURJRCIpKSAhPSBOVUxMKSB7Ci0KLQkJCWFwcmludF9u
b3JtYWwoIiVzOiB1c2luZyBzdGF0aWMgRURJRFxuIiwKLQkJCSAgICBzYy0+c2NfZGV2LmR2X3hu
YW1lKTsKLQkJCW1lbWNweShlZGlkLCBwcm9wX2RhdGFfZGF0YV9ub2NvcHkoZWRpZF9kYXRhKSwg
MTI4KTsKLQkJCWlmIChlZGlkX3BhcnNlKGVkaWQsIGVpcCkgPT0gMCkgewotCi0JCQkJc2MtPnNj
X3BvcnRzW2ldLnJwX2VkaWRfdmFsaWQgPSAxOwotCQkJCWVkaWRfcHJpbnQoZWlwKTsKLQkJCX0K
LQkJfQotCQkvKiBpZiB3ZSBkaWRuJ3QgZmluZCBhbnkgd2UnbGwgdHJ5IHRvIHRhbGsgdG8gdGhl
IG1vbml0b3IgKi8KLQkJaWYgKHNjLT5zY19wb3J0c1tpXS5ycF9lZGlkX3ZhbGlkICE9IDEpIHsK
KwkJLyoKKwkJICogSWYgcG9ydCBpcyBhIENSVCBtb25pdG9yLCBsb29rIGZvciBzdGF0aWMgRURJ
RAorCQkgKiBkYXRhLgorCQkgKi8KKwkJaWYgKHNjLT5zY19wb3J0c1tpXS5ycF9jb25uX3R5cGUg
PT0gUkFERU9OX0NPTk5fQ1JUKQorCQkJZ2V0X3N0YXRpY19lZGlkKHNjLCAmc2MtPnNjX3BvcnRz
W2ldKTsKIAorCQlpZiAoc2MtPnNjX3BvcnRzW2ldLnJwX2VkaWRfdmFsaWQpCisJCQlhcHJpbnRf
bm9ybWFsKCIlczogcG9ydCAjJWQ6IHVzaW5nIHN0YXRpYyBFRElEXG4iLAorCQkJCSAgICAgIGRl
dmljZV94bmFtZSgmc2MtPnNjX2RldiksIGkpOworCQllbHNlIHsKKwkJCS8qIGlmIG5vIHN0YXRp
YyBkYXRhIHdlJ2xsIHRyeSB0byB0YWxrIHRvIHRoZSBtb25pdG9yICovCiAJCQlkZGMgPSBzYy0+
c2NfcG9ydHNbaV0ucnBfZGRjX3R5cGU7CiAJCQlpZiAoZGRjICE9IFJBREVPTl9ERENfTk9ORSkg
ewogCQkJCWlmICgocmFkZW9uZmJfaTJjX3JlYWRfZWRpZChzYywgZGRjLCBlZGlkKQpAQCAtMTYw
OCw2ICsxNjA2LDMwIEBACiAJcmV0dXJuIGZvdW5kOwogfQogCitzdGF0aWMgdm9pZAorZ2V0X3N0
YXRpY19lZGlkKHN0cnVjdCByYWRlb25mYl9zb2Z0YyAqc2MsIHN0cnVjdCByYWRlb25mYl9wb3J0
ICpwb3J0KQoreworCXByb3BfZGF0YV90IAkJZWRpZF9kYXRhOworCXN0cnVjdCBlZGlkX2luZm8J
KmVpcCA9ICZwb3J0LT5ycF9lZGlkOworCWNvbnN0IHN0cnVjdCB2aWRlb21vZGUJKnZtcDsKKwor
CWlmICgoZWRpZF9kYXRhID0gCisJICAgICBwcm9wX2RpY3Rpb25hcnlfZ2V0KGRldmljZV9wcm9w
ZXJ0aWVzKCZzYy0+c2NfZGV2KSwKKwkJCQkgIkVESUQiKSkgIT0gTlVMTCAmJiAKKwkgICAgZWRp
ZF9wYXJzZShwcm9wX2RhdGFfZGF0YV9ub2NvcHkoZWRpZF9kYXRhKSwgZWlwKSA9PSAwKSB7CisJ
CQorCQlwb3J0LT5ycF9lZGlkX3ZhbGlkID0gMTsKKwkJaWYgKHJhZGVvbl9kZWJ1ZykKKwkJCWVk
aWRfcHJpbnQoZWlwKTsKKwkJCisJCS8qIGZpbmQgdGhlIGJlc3QgbW9kZSB0byB1c2UgKi8KKwkJ
aWYgKCh2bXAgPSByYWRlb25mYl9wb3J0X21vZGUoc2MsIHBvcnQsIC0xLCAtMSkpICE9IE5VTEwp
IHsKKwkJCWVpcC0+ZWRpZF9tb2Rlc1swXSA9ICp2bXA7CisJCQllaXAtPmVkaWRfbm1vZGVzID0g
MTsKKwkJfQorCX0KK30KKwogaW50CiByYWRlb25mYl9nZXR0bWRzKHN0cnVjdCByYWRlb25mYl9z
b2Z0YyAqc2MpCiB7CkBAIC0yMTQ2LDggKzIxNjgsNiBAQAogCSAqIFhYWDogZm9udCBzZWxlY3Rp
b24gc2hvdWxkIGJlIGJhc2VkIG9uIHByb3BlcnRpZXMsIHdpdGggc29tZQogCSAqIG5vcm1hbC9y
ZWFzb25hYmxlIGRlZmF1bHQuCiAJICovCi0JcmktPnJpX2NhcHMgPSBXU1NDUkVFTl9XU0NPTE9S
UzsKLQogCS8qIGluaXRpYWxpemUgYW5kIGxvb2sgZm9yIGFuIGluaXRpYWwgZm9udCAqLwogCXJh
c29wc19pbml0KHJpLCBkcC0+cmRfdmlydHkvOCwgZHAtPnJkX3ZpcnR4LzgpOwogCkBAIC0yMTU5
LDcgKzIxNzksNiBAQAogCXJpLT5yaV9vcHMuY29weWNvbHMgPSByYWRlb25mYl9jb3B5Y29sczsK
IAlyaS0+cmlfb3BzLmVyYXNlcm93cyA9IHJhZGVvbmZiX2VyYXNlcm93czsKIAlyaS0+cmlfb3Bz
LmVyYXNlY29scyA9IHJhZGVvbmZiX2VyYXNlY29sczsKLQlyaS0+cmlfb3BzLmFsbG9jYXR0ciA9
IHJhZGVvbmZiX2FsbG9jYXR0cjsKIAlpZiAoIUlTX1IzMDAoZHAtPnJkX3NvZnRjKSkgewogCQly
aS0+cmlfb3BzLnB1dGNoYXIgPSByYWRlb25mYl9wdXRjaGFyOwogCX0KQEAgLTIzMjUsMTMgKzIz
NDQsMTMgQEAKIAlzdHJ1Y3QgcmFzb3BzX2luZm8JKnJpID0gY29va2llOwogCXN0cnVjdCB2Y29u
c19zY3JlZW4JKnNjciA9IHJpLT5yaV9odzsKIAlzdHJ1Y3QgcmFkZW9uZmJfZGlzcGxheQkqZHAg
PSBzY3ItPnNjcl9jb29raWU7CisJYm9vbCAJCQl1bmRlcmxpbmUgPSBhdHRyICYgMTsKIAl1aW50
MzJfdAkJeCwgeSwgdywgaDsKIAl1aW50MzJfdAkJYmcsIGZnOwogCXVpbnQ4X3QJCQkqZGF0YTsK
IAogCWlmIChkcC0+cmRfd3Ntb2RlICE9IFdTRElTUExBWUlPX01PREVfRU1VTCkKIAkJcmV0dXJu
OwotCiAJaWYgKCFDSEFSX0lOX0ZPTlQoYywgcmktPnJpX2ZvbnQpKQogCQlyZXR1cm47CiAKQEAg
LTIzNDQsMTUgKzIzNjMsMjEgQEAKIAl4ID0gcmktPnJpX3hvcmlnaW4gKyBjb2wgKiB3OwogCXkg
PSByaS0+cmlfeW9yaWdpbiArIHJvdyAqIGg7CiAKLQlpZiAoYyA9PSAweDIwKSB7CisJaWYgKHVu
ZGVybGluZSkKKwkJaCAtPSAyOyAvKiBsaW5lIHRoaWNrbmVzcyAqLyAKKwkKKwlpZiAoYyA9PSAw
eDIwIHx8IGZnID09IGJnKQogCQlyYWRlb25mYl9yZWN0ZmlsbChkcCwgeCwgeSwgdywgaCwgYmcp
OwotCX0gZWxzZSB7CisJZWxzZSB7CiAJCWRhdGEgPSAodWludDhfdCAqKXJpLT5yaV9mb250LT5k
YXRhICsKIAkJICAgIChjIC0gcmktPnJpX2ZvbnQtPmZpcnN0Y2hhcikgKiByaS0+cmlfZm9udHNj
YWxlOwogCiAJCXJhZGVvbmZiX3NldHVwX21vbm8oZHAsIHgsIHksIHcsIGgsIGZnLCBiZyk7Ci0J
CXJhZGVvbmZiX2ZlZWRfYnl0ZXMoZHAsIHJpLT5yaV9mb250c2NhbGUsIGRhdGEpOworCQlyYWRl
b25mYl9mZWVkX2J5dGVzKGRwLCBoICogcmktPnJpX2ZvbnQtPnN0cmlkZSwgZGF0YSk7CiAJfQor
CWlmICh1bmRlcmxpbmUpCisJCXJhZGVvbmZiX3JlY3RmaWxsKGRwLCB4LCB5ICsgaCwKKwkJCQkg
IHcsIHJpLT5yaV9mb250LT5mb250aGVpZ2h0IC0gaCwgZmcpOwogfQogCiBzdGF0aWMgdm9pZApA
QCAtMjQ3MCwxNiArMjQ5NSw2IEBACiAJfQogfQogCi1zdGF0aWMgaW50Ci1yYWRlb25mYl9hbGxv
Y2F0dHIodm9pZCAqY29va2llLCBpbnQgZmcsIGludCBiZywgaW50IGZsYWdzLCBsb25nICphdHRy
cCkKLXsKLQlpZiAoKGZnID09IDApICYmIChiZyA9PSAwKSkgewotCQlmZyA9IFdTX0RFRkFVTFRf
Rkc7Ci0JCWJnID0gV1NfREVGQVVMVF9CRzsKLQl9Ci0JKmF0dHJwID0gKChmZyAmIDB4ZikgPDwg
MjQpIHwgKChiZyAmIDB4ZikgPDwgMTYpIHwgKGZsYWdzICYgMHhmZikgPDwgODsKLQlyZXR1cm4g
MDsKLX0KIAogLyoKICAqIFVuZGVybHlpbmcgYWNjZWxlcmF0aW9uIHN1cHBvcnQuCkBAIC0zMTg0
LDYgKzMxOTksMTEgQEAKIAlzdHJ1Y3QgdmlkZW9tb2RlCSp2bXAgPSBOVUxMOwogCWludAkJCWk7
CiAKKwlpZiAoeCA8IDAgfHwgeSA8IDApIHsKKwkJeCA9IElOVF9NQVg7CisJCXkgPSBJTlRfTUFY
OworCX0KKwkKIAlpZiAoIXJwLT5ycF9lZGlkX3ZhbGlkKSB7CiAJCS8qIGZhbGxiYWNrIHRvIHNh
ZmUgbW9kZSAqLwogCQlyZXR1cm4gcmFkZW9uZmJfbW9kZWxvb2t1cChzYy0+c2NfZGVmYXVsdG1v
ZGUpOwo=
------=_Part_1612_7145479.1190898050883--