summaryrefslogtreecommitdiffstats
path: root/drivers/video/via/via_aux.c
diff options
context:
space:
mode:
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2012-01-12 12:52:37 +0000
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2012-02-13 07:28:14 +0000
commit5dc5f61813a9c3ab7dd0a6982ad044834134db5a (patch)
tree4a50b6713eed9d2d01d1e4cdbc8ecd1a4393e035 /drivers/video/via/via_aux.c
parent2c4c8a8a73b64a8ea86ad85d8a59a5914d2f81ea (diff)
viafb: add initial EDID support
This patch adds support for using EDID data on CRT and DVP1 for initial configuration if viafb_mode or viafb_mode1 are not present. Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers/video/via/via_aux.c')
-rw-r--r--drivers/video/via/via_aux.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/video/via/via_aux.c b/drivers/video/via/via_aux.c
index e728b9bec23..4a0a55cdac3 100644
--- a/drivers/video/via/via_aux.c
+++ b/drivers/video/via/via_aux.c
@@ -60,9 +60,29 @@ void via_aux_free(struct via_aux_bus *bus)
return;
list_for_each_entry_safe(pos, n, &bus->drivers, chain) {
+ if (pos->cleanup)
+ pos->cleanup(pos);
+
list_del(&pos->chain);
+ kfree(pos->data);
kfree(pos);
}
kfree(bus);
}
+
+const struct fb_videomode *via_aux_get_preferred_mode(struct via_aux_bus *bus)
+{
+ struct via_aux_drv *pos;
+ const struct fb_videomode *mode = NULL;
+
+ if (!bus)
+ return NULL;
+
+ list_for_each_entry(pos, &bus->drivers, chain) {
+ if (pos->get_preferred_mode)
+ mode = pos->get_preferred_mode(pos);
+ }
+
+ return mode;
+}