summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnssi Hannula <anssi@mandriva.org>2009-04-02 16:43:37 +0000
committerAnssi Hannula <anssi@mandriva.org>2009-04-02 16:43:37 +0000
commitada4645d8e98d36b3dee1a1e8bf31e0b7cd34c62 (patch)
tree3907e31053fd40f776fd0acb0eff95ce8c9a923f
parentb862e3df3c02b87843f1e1b0f5cd6d32f67c09b4 (diff)
downloaddrakx-kbd-mouse-x11-ada4645d8e98d36b3dee1a1e8bf31e0b7cd34c62.tar
drakx-kbd-mouse-x11-ada4645d8e98d36b3dee1a1e8bf31e0b7cd34c62.tar.gz
drakx-kbd-mouse-x11-ada4645d8e98d36b3dee1a1e8bf31e0b7cd34c62.tar.bz2
drakx-kbd-mouse-x11-ada4645d8e98d36b3dee1a1e8bf31e0b7cd34c62.tar.xz
drakx-kbd-mouse-x11-ada4645d8e98d36b3dee1a1e8bf31e0b7cd34c62.zip
Add support for boot option xdriver=foo for overriding the driver in
non-interactive probe. Allowed special values: auto = normal mode free = only use free drivers Last entry on commandline is used.
-rw-r--r--NEWS5
-rw-r--r--lib/Xconfig/card.pm18
2 files changed, 23 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 318265e..e98c0c8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+- XFdrake:
+ o add support for xdriver=DRIVER kernel boot option that affects
+ non-interactive device autodetection, e.g. One boot
+ (special value xdriver=free disables proprietary drivers)
+
Version 0.70 - 20 March 2009
- mousedrake:
diff --git a/lib/Xconfig/card.pm b/lib/Xconfig/card.pm
index 6245798..f093323 100644
--- a/lib/Xconfig/card.pm
+++ b/lib/Xconfig/card.pm
@@ -218,6 +218,24 @@ sub configure_auto_install {
}
}
+ my ($boot_xdriver) = cat_("/proc/cmdline") =~ /.*\bxdriver=(\S+)/;
+
+ $options->{freedriver} = 1 if $boot_xdriver eq 'free';
+
+ if (!$card->{Driver} && $boot_xdriver && !member($boot_xdriver, 'auto', 'free')) {
+ log::explanations("using driver $boot_xdriver from kernel command line");
+ $card = {
+ Driver => $boot_xdriver,
+ description => "Set by boot parameter",
+ VendorName => "Custom",
+ BoardName => "Set by boot parameter",
+ };
+ if ($force_driver =~ /^(nvidia.|fglrx)/) {
+ $card->{Driver} = "vesa";
+ $card->{Driver2} = $boot_xdriver;
+ }
+ }
+
if (!$card->{Driver}) {
my @cards = probe();
my ($choice) = multi_head_choices($old_X->{Xinerama}, @cards);