2 * linux/drivers/video/nvidia/nv_of.c
4 * Copyright 2004 Antonino A. Daplas <adaplas @pol.net>
6 * Based on rivafb-i2c.c
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file COPYING in the main directory of this archive
13 #include <linux/module.h>
14 #include <linux/kernel.h>
15 #include <linux/delay.h>
16 #include <linux/gfp.h>
17 #include <linux/pci.h>
28 int nvidia_probe_of_connector(struct fb_info
*info
, int conn
, u8
**out_edid
)
30 struct nvidia_par
*par
= info
->par
;
31 struct device_node
*parent
, *dp
;
32 const unsigned char *pedid
= NULL
;
33 static char *propnames
[] = {
34 "DFP,EDID", "LCD,EDID", "EDID", "EDID1",
35 "EDID,B", "EDID,A", NULL
};
38 parent
= pci_device_to_OF_node(par
->pci_dev
);
45 for_each_child_of_node(parent
, dp
) {
46 pname
= of_get_property(dp
, "name", NULL
);
50 if ((pname
[len
-1] == 'A' && conn
== 1) ||
51 (pname
[len
-1] == 'B' && conn
== 2)) {
52 for (i
= 0; propnames
[i
] != NULL
; ++i
) {
53 pedid
= of_get_property(dp
,
64 for (i
= 0; propnames
[i
] != NULL
; ++i
) {
65 pedid
= of_get_property(parent
, propnames
[i
], NULL
);
71 *out_edid
= kmemdup(pedid
, EDID_LENGTH
, GFP_KERNEL
);
72 if (*out_edid
== NULL
)
74 printk(KERN_DEBUG
"nvidiafb: Found OF EDID for head %d\n", conn
);