Subject: Re: radeonfb(4) does not use static EDID
To: Michael Lorenz <macallan@netbsd.org>
From: Marco Trillo <marcotrillo@gmail.com>
List: port-macppc
Date: 12/23/2007 16:23:05
------=_Part_4010_8956689.1198423385444
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

On 12/15/07, Marco Trillo <marcotrillo@gmail.com> wrote:
> I think I've found the cause of the problem (but it's only speculation
> since I haven't yet setup a -current source tree to compile). This is
> how the OF tree looks:

The attached patch uses the following approach to deal with the
problem: instead of using the device_type property, it uses the PCI
device class.
If the device is of class 'display', then it checks whether its OF
node or its children node s are the console_node, and if that is the
case, then it calls the copy_disp_props() routine for that node.
The copy_disp_props() routine is also simplified since it doesn't have
for look for children since, as commented, the caller already takes
care of that.

In fact, the check for the PCI 'display' class is not necessary, but I
think its good to have it for efficiency reasons, to avoid looking the
children nodes for all of the PCI devices being attached.

The check for a device_type of "display" is still there just in case
its needed in another platform.

This should fix the problems with models having the 'parent' scheme
(not only Radeons).

However, in the case of radeonfb(4), there is still a bug present that
makes it not very usable in the eMac (and perhaps other models):
<http://mail-index.netbsd.org/port-macppc/2007/09/19/0001.html>

The attached patch also contains a fix for that problem which is much
simpler than the one I posted on that thread: when picking a virtual
resolution, if a head has a 'preferred mode' resolution, merge only
that to the list instead of merging all resolutions.

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
radeonfb0: using static EDID
max_dotclock according to supported modes: 122240
radeonfb0: using static EDID
max_dotclock according to supported modes: 122240
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 89Hz
radeonfb0: port 1: physical 1024x768 89Hz
init engine
wsdisplay0 at radeonfb0 kbdmux 1: console (fb, vt100 emulation)

Thanks,
Marco.

------=_Part_4010_8956689.1198423385444
Content-Type: application/octet-stream; name=res.diff
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=res.diff

SW5kZXg6IGFyY2gvbWFjcHBjL21hY3BwYy9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2c3Jvb3Qvc3JjL3N5cy9hcmNoL21hY3BwYy9tYWNwcGMvbWFjaGRlcC5jLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjE1MApkaWZmIC11IC1yMS4xNTAgbWFjaGRlcC5jCi0tLSBhcmNoL21hY3Bw
Yy9tYWNwcGMvbWFjaGRlcC5jCTI2IE5vdiAyMDA3IDE5OjU4OjMwIC0wMDAwCTEuMTUwCisrKyBh
cmNoL21hY3BwYy9tYWNwcGMvbWFjaGRlcC5jCTIzIERlYyAyMDA3IDE1OjA4OjEwIC0wMDAwCkBA
IC0yNTksMjQgKzI1OSw5IEBACiAJdWludDMyX3QgdGVtcDsKIAl1aW50NjRfdCBjbWFwX2NiOwog
Ci0JaWYgKG5vZGUgIT0gY29uc29sZV9ub2RlKSB7Ci0JCS8qCi0JCSAqIHNlZSBpZiBhbnkgY2hp
bGQgbWF0Y2hlcyBzaW5jZSBPRiBhdHRhY2hlcyBub2RlcyBmb3IKLQkJICogZWFjaCBoZWFkIGFu
ZCAvY2hvc2VuL3N0ZG91dCBwb2ludHMgdG8gdGhlIGhlYWQKLQkJICogcmF0aGVyIHRoYW4gdGhl
IGRldmljZSBpdHNlbGYgaW4gdGhpcyBjYXNlCi0JCSAqLwotCQlpbnQgc3ViOwotCi0JCXN1YiA9
IE9GX2NoaWxkKG5vZGUpOwotCQl3aGlsZSAoKHN1YiAhPSAwKSAmJiAoc3ViICE9IGNvbnNvbGVf
bm9kZSkpIHsKLQkJCXN1YiA9IE9GX3BlZXIoc3ViKTsKLQkJfQotCQlpZiAoc3ViICE9IGNvbnNv
bGVfbm9kZSkKLQkJCXJldHVybjsKLQkJbm9kZSA9IHN1YjsKLQl9CisJaWYgKG5vZGUgIT0gY29u
c29sZV9ub2RlKQorCQlyZXR1cm47CiAKLQlwcm9wX2RpY3Rpb25hcnlfc2V0X2Jvb2woZGljdCwg
ImlzX2NvbnNvbGUiLCAxKTsKIAlpZiAoIW9mX3RvX3VpbnQzMl9wcm9wKGRpY3QsIG5vZGUsICJ3
aWR0aCIsICJ3aWR0aCIpKSB7CiAKIAkJT0ZfaW50ZXJwcmV0KCJzY3JlZW4td2lkdGgiLCAwLCAx
LCAmdGVtcCk7CkluZGV4OiBhcmNoL3Bvd2VycGMvb2VhL29md19hdXRvY29uZi5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvYXJjaC9wb3dlcnBjL29lYS9vZndfYXV0b2Nv
bmYuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXUgLXIxLjUgb2Z3X2F1dG9jb25m
LmMKLS0tIGFyY2gvcG93ZXJwYy9vZWEvb2Z3X2F1dG9jb25mLmMJMTYgRGVjIDIwMDcgMTY6NDI6
MTIgLTAwMDAJMS41CisrKyBhcmNoL3Bvd2VycGMvb2VhL29md19hdXRvY29uZi5jCTIzIERlYyAy
MDA3IDE1OjA4OjEzIC0wMDAwCkBAIC0xLDQgKzEsNSBAQAotLyogJE5ldEJTRDogb2Z3X2F1dG9j
b25mLmMsdiAxLjUgMjAwNy8xMi8xNiAxNjo0MjoxMiBwaHggRXhwICQgKi8KKy8qCSROZXRCU0Q6
IG9md19hdXRvY29uZi5jLHYgMS41IDIwMDcvMTIvMTYgMTY6NDI6MTIgcGh4IEV4cCAkICovCisK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYgV29sZmdhbmcgU29sZnJhbmsuCiAgKiBD
b3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYgVG9vTHMgR21iSC4KQEAgLTIzNCwxNSArMjM1LDQyIEBA
CiAJCX0KIAogCQlpZiAobm9kZSAhPSAwKSB7CisJCQlib29sIGhhdmVfcHJvcHMgPSBmYWxzZTsK
KwogCQkJcHJvcF9kaWN0aW9uYXJ5X3NldF91aW50MzIoZGljdCwgImRldmljZV9ub2RlIiwgbm9k
ZSk7CiAKIAkJCS8qIHNlZSBpZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGNvbnNvbGUgKi8KIAkJCW1l
bXNldChuYW1lLCAwLCBzaXplb2YobmFtZSkpOwogCQkJT0ZfZ2V0cHJvcChub2RlLCAiZGV2aWNl
X3R5cGUiLCBuYW1lLCBzaXplb2YobmFtZSkpOwotCQkJaWYgKHN0cmNtcChuYW1lLCAiZGlzcGxh
eSIpID09IDApIHsKKwkJCQorCQkJaWYgKGNvbnNvbGVfbm9kZSAmJiAKKwkJCSAgICBQQ0lfQ0xB
U1MocGEtPnBhX2NsYXNzKSA9PSBQQ0lfQ0xBU1NfRElTUExBWSkgeworCQkJCWludCBuOworCisJ
CQkJaWYgKG5vZGUgPT0gY29uc29sZV9ub2RlKSB7CisJCQkJCW4gPSBub2RlOworZm91bmQ6CisJ
CQkJCXByb3BfZGljdGlvbmFyeV9zZXRfYm9vbChkaWN0LCAKKwkJCQkJICAgICAgICAgICAgICAg
ICAgICAgICAgICJpc19jb25zb2xlIiwKKwkJCQkJCQkJIDEpOworCQkJCQljb3B5X2Rpc3BfcHJv
cHMoZGV2LCBuLCBkaWN0KTsKKwkJCQkJaGF2ZV9wcm9wcyA9IHRydWU7CisJCQkJfSBlbHNlIHsJ
CisJCQkJCWZvciAobiA9IE9GX2NoaWxkKG5vZGUpOyBuOyAKKwkJCQkJICAgICBuID0gT0ZfcGVl
cihuKSkgeworCQkJCQkJaWYgKG4gPT0gY29uc29sZV9ub2RlKQorCQkJCQkJCWdvdG8gZm91bmQ7
CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQkKKwkJCWlmICghaGF2ZV9wcm9wcyAmJiBzdHJjbXAo
bmFtZSwgImRpc3BsYXkiKSA9PSAwKSB7CisKIAkJCQkvKiBzZXR1cCBkaXNwbGF5IHByb3BlcnRp
ZXMgZm9yIGZiIGRyaXZlciAqLwotCQkJCXByb3BfZGljdGlvbmFyeV9zZXRfYm9vbChkaWN0LCAi
aXNfY29uc29sZSIsIDApOworCQkJCXByb3BfZGljdGlvbmFyeV9zZXRfYm9vbChkaWN0LCAiaXNf
Y29uc29sZSIsIAorCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID09IGNvbnNvbGVf
bm9kZSk7CiAJCQkJY29weV9kaXNwX3Byb3BzKGRldiwgbm9kZSwgZGljdCk7CisJCQkJaGF2ZV9w
cm9wcyA9IHRydWU7CiAJCQl9CiAJCX0KIAl9CkluZGV4OiBhcmNoL3Bvd2VycGMvcGNpL3BjaV9t
YWNoZGVwX2NvbW1vbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvYXJj
aC9wb3dlcnBjL3BjaS9wY2lfbWFjaGRlcF9jb21tb24uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS40CmRpZmYgLXUgLXIxLjQgcGNpX21hY2hkZXBfY29tbW9uLmMKLS0tIGFyY2gvcG93ZXJwYy9w
Y2kvcGNpX21hY2hkZXBfY29tbW9uLmMJMjAgRGVjIDIwMDcgMjI6MjQ6NDAgLTAwMDAJMS40Cisr
KyBhcmNoL3Bvd2VycGMvcGNpL3BjaV9tYWNoZGVwX2NvbW1vbi5jCTIzIERlYyAyMDA3IDE1OjA4
OjEzIC0wMDAwCkBAIC02MCw3ICs2MCw3IEBACiAjZGVmaW5lIF9QT1dFUlBDX0JVU19ETUFfUFJJ
VkFURQogI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9pbnRyLmg+
Ci0jaW5jbHVkZSA8bWFjaGluZS9pc2FfbWFjaGRlcC5oPgorI2luY2x1ZGUgPHBvd2VycGMvaXNh
X21hY2hkZXAuaD4KIAogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CiAjaW5jbHVkZSA8ZGV2
L3BjaS9wY2lyZWcuaD4KSW5kZXg6IGRldi9wY2kvcmFkZW9uZmIuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rldi9wY2kvcmFkZW9uZmIuYyx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4yNApkaWZmIC11IC1yMS4yNCByYWRlb25mYi5jCi0tLSBkZXYvcGNpL3JhZGVvbmZi
LmMJMSBEZWMgMjAwNyAxNzowMDo0MSAtMDAwMAkxLjI0CisrKyBkZXYvcGNpL3JhZGVvbmZiLmMJ
MjMgRGVjIDIwMDcgMTU6MDg6MjYgLTAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiAkTmV0QlNEOiBy
YWRlb25mYi5jLHYgMS4yNCAyMDA3LzEyLzAxIDE3OjAwOjQxIGFkIEV4cCAkICovCisvKgkkTmV0
QlNEOiByYWRlb25mYi5jLHYgMS4yNCAyMDA3LzEyLzAxIDE3OjAwOjQxIGFkIEV4cCAkICovCiAK
IC8qLQogICogQ29weXJpZ2h0IChjKSAyMDA2IEl0cm9uaXggSW5jLgpAQCAtMTU4OCw3ICsxNTg4
LDYgQEAKIAkJCWlmIChlZGlkX3BhcnNlKGVkaWQsIGVpcCkgPT0gMCkgewogCiAJCQkJc2MtPnNj
X3BvcnRzW2ldLnJwX2VkaWRfdmFsaWQgPSAxOwotCQkJCWVkaWRfcHJpbnQoZWlwKTsKIAkJCX0K
IAkJfQogCQkvKiBpZiB3ZSBkaWRuJ3QgZmluZCBhbnkgd2UnbGwgdHJ5IHRvIHRhbGsgdG8gdGhl
IG1vbml0b3IgKi8KQEAgLTMzMjYsMjEgKzMzMjUsMzggQEAKIAkJCQljb250aW51ZTsKIAogCQkJ
aWYgKCF2YWxpZCkgewotCQkJCS8qIGluaXRpYWxpemUgc3RhcnRpbmcgbGlzdCAqLwotCQkJCWZv
ciAoaiA9IDA7IGogPCBlcC0+ZWRpZF9ubW9kZXM7IGorKykgewotCQkJCQkvKgotCQkJCQkgKiBp
Z25vcmUgcmVzb2x1dGlvbnMgdGhhdCBhcmUKLQkJCQkJICogdG9vIGJpZyBmb3IgdGhlIHJhZGVv
bgotCQkJCQkgKi8KLQkJCQkJaWYgKGVwLT5lZGlkX21vZGVzW2pdLmhkaXNwbGF5ID4KLQkJCQkJ
ICAgIGRwLT5yZF9zb2Z0Yy0+c2NfbWF4eCkKLQkJCQkJCWNvbnRpbnVlOwotCQkJCQlpZiAoZXAt
PmVkaWRfbW9kZXNbal0udmRpc3BsYXkgPgotCQkJCQkgICAgZHAtPnJkX3NvZnRjLT5zY19tYXh5
KQotCQkJCQkJY29udGludWU7Ci0KLQkJCQkJbW9kZXNbbm1vZGVzXSA9IGVwLT5lZGlkX21vZGVz
W2pdOwotCQkJCQlubW9kZXMrKzsKKwkJCQkvKgorCQkJCSAqIFBpY2sgdGhlIHByZWZlcnJlZCBt
b2RlIGZvciB0aGlzIHBvcnQKKwkJCQkgKiBpZiBhdmFpbGFibGUuCisJCQkJICovCisJCQkJaWYg
KGVwLT5lZGlkX3ByZWZlcnJlZF9tb2RlKSB7CisJCQkJCXN0cnVjdCB2aWRlb21vZGUgKnZtcCA9
IAorCQkJCQkJZXAtPmVkaWRfcHJlZmVycmVkX21vZGU7CisKKwkJCQkJaWYgKCh2bXAtPmhkaXNw
bGF5IDw9IAorCQkJCQkgICAgIGRwLT5yZF9zb2Z0Yy0+c2NfbWF4eCkgJiYgCisJCQkJCSAgICAo
dm1wLT52ZGlzcGxheSA8PSAKKwkJCQkJICAgICBkcC0+cmRfc29mdGMtPnNjX21heHkpKQorCQkJ
CQkJbW9kZXNbbm1vZGVzKytdID0gKnZtcDsKKwkJCQl9IGVsc2UgeworCisJCQkJCS8qIGluaXRp
YWxpemUgc3RhcnRpbmcgbGlzdCAqLworCQkJCQlmb3IgKGogPSAwOyBqIDwgZXAtPmVkaWRfbm1v
ZGVzOyBqKyspIHsKKwkJCQkJCS8qCisJCQkJCQkgKiBpZ25vcmUgcmVzb2x1dGlvbnMgdGhhdCBh
cmUKKwkJCQkJCSAqIHRvbyBiaWcgZm9yIHRoZSByYWRlb24KKwkJCQkJCSAqLworCQkJCQkJaWYg
KGVwLT5lZGlkX21vZGVzW2pdLmhkaXNwbGF5ID4KKwkJCQkJCSAgICBkcC0+cmRfc29mdGMtPnNj
X21heHgpCisJCQkJCQkJY29udGludWU7CisJCQkJCQlpZiAoZXAtPmVkaWRfbW9kZXNbal0udmRp
c3BsYXkgPgorCQkJCQkJICAgIGRwLT5yZF9zb2Z0Yy0+c2NfbWF4eSkKKwkJCQkJCQljb250aW51
ZTsKKworCQkJCQkJbW9kZXNbbm1vZGVzXSA9IAorCQkJCQkJCWVwLT5lZGlkX21vZGVzW2pdOwor
CQkJCQkJbm1vZGVzKys7CisJCQkJCX0KIAkJCQl9CiAJCQkJdmFsaWQgPSAxOwogCQkJfSBlbHNl
IHsK
------=_Part_4010_8956689.1198423385444--