summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/Xconfig.pm4
-rw-r--r--perl-install/Xconfigurator.pm25
-rw-r--r--perl-install/Xconfigurator_consts.pm169
-rw-r--r--perl-install/install_any.pm2
-rw-r--r--perl-install/install_steps_gtk.pm2
-rw-r--r--perl-install/mouse.pm2
6 files changed, 200 insertions, 4 deletions
diff --git a/perl-install/Xconfig.pm b/perl-install/Xconfig.pm
index 67f5d4138..9f2ae364c 100644
--- a/perl-install/Xconfig.pm
+++ b/perl-install/Xconfig.pm
@@ -61,9 +61,11 @@ sub getinfoFromXF86Config {
$c{flags}{needVideoRam} ||= 1 if /^\s*VideoRam\s+/;
$c{vendor} ||= $1 if /^\s*VendorName\s+"(.*?)"/;
$c{board} ||= $1 if /^\s*BoardName\s+"(.*?)"/;
+ $c{options}{$1} ||= 1 if /^\s*Option\s+"(.*?)"/;
+ $c{options}{$1} ||= 0 if /^\s*#\s*Option\s+"(.*?)"/;
#- clockchip, ramdac, dacspeed read with following line.
- push @{$c{lines}}, $_ unless /(Section|Identifier|VideoRam|VendorName|BoardName)/;
+ push @{$c{lines}}, $_ unless /(Section|Identifier|VideoRam|VendorName|BoardName|Option)/;
add2hash($o->{card} ||= {}, \%c) if ($i =~ /E0/ && $c{type} && $c{type} ne "Generic VGA");
} elsif (/^Section "Monitor"/ .. /^EndSection/) {
diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm
index 57384a79b..3f8b7027c 100644
--- a/perl-install/Xconfigurator.pm
+++ b/perl-install/Xconfigurator.pm
@@ -2,7 +2,7 @@ package Xconfigurator;
use diagnostics;
use strict;
-use vars qw($in $install $resolution_wanted @depths @monitorSize2resolution @hsyncranges %min_hsync4wres @vsyncranges %depths @resolutions %serversdriver @svgaservers @accelservers @allbutfbservers @allservers %vgamodes %videomemory @ramdac_name @ramdac_id @clockchip_name @clockchip_id %keymap_translate %standard_monitors $intro_text $finalcomment_text $s3_comment $cirrus_comment $probeonlywarning_text $monitorintro_text $hsyncintro_text $vsyncintro_text $XF86firstchunk_text $keyboardsection_start $keyboardsection_part2 $keyboardsection_end $pointersection_text1 $pointersection_text2 $monitorsection_text1 $monitorsection_text2 $monitorsection_text3 $monitorsection_text4 $modelines_text_Trident_TG_96xx $modelines_text $devicesection_text $screensection_text1 %lines %xkb_options);
+use vars qw($in $install $resolution_wanted @depths @monitorSize2resolution @hsyncranges %min_hsync4wres @vsyncranges %depths @resolutions %serversdriver @svgaservers @accelservers @allbutfbservers @allservers %vgamodes %videomemory @ramdac_name @ramdac_id @clockchip_name @clockchip_id %keymap_translate %standard_monitors $intro_text $finalcomment_text $s3_comment $cirrus_comment $probeonlywarning_text $monitorintro_text $hsyncintro_text $vsyncintro_text $XF86firstchunk_text $keyboardsection_start $keyboardsection_part2 $keyboardsection_end $pointersection_text1 $pointersection_text2 $monitorsection_text1 $monitorsection_text2 $monitorsection_text3 $monitorsection_text4 $modelines_text_Trident_TG_96xx $modelines_text $devicesection_text $screensection_text1 %lines @options %xkb_options);
use pci_probing::main;
use common qw(:common :file :functional :system);
@@ -181,6 +181,25 @@ sub cardConfiguration(;$$$) {
$card;
}
+sub optionsConfiguration($) {
+ my ($o) = @_;
+ my @l;
+ my %l;
+
+ foreach (@options) {
+ if ($o->{card}{server} eq $_->[1] && $o->{card}{identifier} =~ /$_->[2]/) {
+ $o->{card}{options}{$_->[0]} ||= 0;
+ unless ($l{$_->[0]}) {
+ push @l, $_->[0], { val => \$o->{card}{options}{$_->[0]}, type => 'bool' };
+ $l{$_->[0]} = 1;
+ }
+ }
+ }
+ @l = @l[0..19] if @l > 19; #- reduce list size to 10 for display (it's a hash).
+
+ $in->ask_from_entries_refH('', _("Choose options for server"), \@l);
+}
+
sub monitorConfiguration(;$$) {
my $monitor = shift || {};
my $useFB = shift || 0;
@@ -627,6 +646,9 @@ sub write_XF86Config {
print F " # Clock lines\n";
print F " Clocks $_\n" foreach (@{$O->{clocklines}});
}
+
+ print F "\n";
+ print F map { (!$O->{options}{$_} && '#') . qq( Option "$_"\n) } keys %{$O->{options} || {}};
print F "EndSection\n\n\n";
#- Write Screen sections.
@@ -734,6 +756,7 @@ sub main {
my %c = my @c = (
__("Change Monitor") => sub { $o->{monitor} = monitorConfiguration() },
__("Change Graphic card") => sub { $o->{card} = cardConfiguration('', 'noauto', $allowFB) },
+ ($::expert ? (__("Change Server options") => sub { optionsConfiguration($o) }) : ()),
__("Change Resolution") => sub { resolutionsConfiguration($o, noauto => 1) },
__("Automatical resolutions search") => sub {
delete $o->{card}{depth};
diff --git a/perl-install/Xconfigurator_consts.pm b/perl-install/Xconfigurator_consts.pm
index ef4a15d70..d8387879a 100644
--- a/perl-install/Xconfigurator_consts.pm
+++ b/perl-install/Xconfigurator_consts.pm
@@ -154,6 +154,175 @@ $resolution_wanted = "1024x768";
#- 'Cirrus Logic|GD 5446' => [ ' Option "no_bitblt"' ],
);
+#- most usefull server options have to be accessible at the beginning, since
+#- no more than a small set of options will be available for the user, maybe ?
+@options = (
+ [ 'power_saver', 'Mono', '.*' ],
+ [ 'hibit_low', 'VGA16', 'Tseng.*ET4000' ],
+ [ 'hibit_high', 'VGA16', 'Tseng.*ET4000' ],
+ [ 'power_saver', 'VGA16', '.*' ],
+ [ 'noaccel', 'SVGA', 'Cirrus|C&T|SiS|Oak|Western Digital|Alliance|Trident|Tseng' ],
+ [ 'no_accel', 'SVGA', 'ARK|MGA|i740|Oak|ET6000|W32|Media.*GX|Neomagic' ],
+ [ 'linear', 'SVGA', 'Cirrus|ET6000|ET4000/W32p rev [CD]|Oak|Neomagic|Triden|Tseng' ],
+ [ 'nolinear', 'SVGA', 'Cirrus|C&T|Trident' ],
+ [ 'no_linear', 'SVGA', 'ARK|SiS|Neomagic|Tseng' ],
+ [ 'no_bitblt', 'SVGA', 'Cirrus|C&T|SiS' ],
+ [ 'no_imageblt', 'SVGA', 'Cirrus|C&T|SiS' ],
+ [ 'sw_cursor', 'SVGA', '.*' ],
+ [ 'slow_dram', 'SVGA', 'Cirrus|Trident|ET6000|W32|Western Digital|Tseng' ],
+ [ 'mga_sdram', 'SVGA', 'MGA' ],
+ [ 'no_pixmap_cache', 'SVGA', 'ARK|Cirrus|C&T|MGA|SiS|Trident.*9440|Trident.*9680|Tseng' ],
+ [ 'no_mmio', 'SVGA', 'Cirrus|Neomagic|Trident' ],
+ [ 'pci_burst_off', 'SVGA', 'ET6000|W32|Trident|Tseng' ],
+ [ 'hw_clocks', 'SVGA', 'SiS|C&T' ],
+ [ 'use_modeline', 'SVGA', 'C&T' ],
+ [ 'enable_bitblt', 'SVGA', 'Oak' ],
+ [ 'w32_interleave_off', 'SVGA', 'ET6000|W32|Tseng' ],
+ [ 'fifo_conservative', 'SVGA', 'Cirrus|ARK|SiS|Oak' ],
+ [ 'fifo_moderate', 'SVGA', 'Cirrus|ARK|SiS' ],
+ [ 'all_wait', 'SVGA', 'Oak' ],
+ [ 'one_wait', 'SVGA', 'Oak' ],
+ [ 'first_wait', 'SVGA', 'Oak' ],
+ [ 'first_wwait', 'SVGA', 'Oak' ],
+ [ 'write_wait', 'SVGA', 'Oak' ],
+ [ 'read_wait', 'SVGA', 'Oak' ],
+ [ 'clgd6225_lcd', 'SVGA', 'Cirrus' ],
+ [ 'fix_panel_size', 'SVGA', 'C&T' ],
+ [ 'lcd_center', 'SVGA', 'C&T|Neomagic|Trident' ],
+ [ 'cyber_shadow', 'SVGA', 'Trident' ],
+ [ 'STN', 'SVGA', 'C&T' ],
+ [ 'no_stretch', 'SVGA', 'C&T|Cirrus|Neomagic|Trident' ],
+ [ 'no_prog_lcd_mode_regs', 'SVGA', 'Neomagic' ],
+ [ 'prog_lcd_mode_stretch', 'SVGA', 'Neomagic' ],
+ [ 'suspend_hack', 'SVGA', 'C&T' ],
+ [ 'use_18bit_bus', 'SVGA', 'C&T' ],
+ [ 'hibit_low', 'SVGA', 'Tseng.*ET4000' ],
+ [ 'hibit_high', 'SVGA', 'Tseng.*ET4000' ],
+ [ 'probe_clocks', 'SVGA', 'Cirrus' ],
+ [ 'power_saver', 'SVGA', '.*' ],
+ [ 'use_vlck1', 'SVGA', 'C&T' ],
+ [ 'sgram', 'SVGA', 'i740' ],
+ [ 'sdram', 'SVGA', 'i740' ],
+ [ 'no_2mb_banksel', 'SVGA', 'Cirrus' ],
+ [ 'tgui_pci_read_on', 'SVGA', 'Trident' ],
+ [ 'tgui_pci_write_on', 'SVGA', 'Trident' ],
+ [ 'no_program_clocks', 'SVGA', 'Trident' ],
+ [ 'mmio', 'SVGA', 'Cirrus|C&T|Neomagic' ],
+ [ 'sync_on_green', 'SVGA', 'C&T|MGA' ],
+ [ 'pci_retry', 'SVGA', 'Tseng|MGA|Cirrus' ],
+ [ 'hw_cursor', 'SVGA', 'C&T|SiS|ARK|ET6000|i740|Tseng' ],
+ [ 'xaa_no_color_exp', 'SVGA', 'C&T|Cirrus|Trident|Tseng' ],
+ [ 'xaa_benchmarks', 'SVGA', 'C&T' ],
+ [ 'pci_burst_on', 'SVGA', 'Trident|Tseng' ],
+ [ 'prog_lcd_mode_regs', 'SVGA', 'Neomagic' ],
+ [ 'no_prog_lcd_mode_stretch', 'SVGA', 'Neomagic' ],
+ [ 'no_wait', 'SVGA', 'Oak' ],
+ #- [ 'med_dram', 'SVGA', 'Cirrus|Trident|Western Digital' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'fast_dram', 'SVGA', 'C&T|Cirrus|ET[46]000|Trident|Western Digital' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'fast_vram', 'SVGA', 'SiS' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'clock_50', 'SVGA', 'Oak' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'clock_66', 'SVGA', 'Oak' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'fifo_aggressive', 'SVGA', 'Cirrus|ARK|SiS|Oak' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'override_validate_mode', 'SVGA', 'Neomagic' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'tgui_mclk_66', 'SVGA', 'Trident' ], #- WARNING, MAY DAMAGE CARD
+ #- [ 'favour_bitblt', 'SVGA', 'Cirrus' ], #- OBSELETE
+ [ 'sw_cursor', '3DLabs', '.*' ],
+ [ 'no_pixmap_cache', '3DLabs', '.*' ],
+ [ 'no_accel', '3DLabs', '.*' ],
+ [ 'firegl_3000', '3DLabs', '.*' ],
+ [ 'sync_on_green', '3DLabs', '.*' ],
+ [ 'pci_retry', '3DLabs', '.*' ],
+ #- [ 'overclock_mem', '3DLabs', '.*' ], #- WARNING, MAY DAMAGE CARD
+ [ 'dac_8_bit', 'I128', '.*' ],
+ [ 'no_accel', 'I128', '.*' ],
+ [ 'sync_on_green', 'I128', '.*' ],
+ [ 'composite', 'Mach32', '.*' ],
+ [ 'sw_cursor', 'Mach32', '.*' ],
+ [ 'dac_8_bit', 'Mach32', '.*' ],
+ [ 'ast_mach32', 'Mach32', '.*' ],
+ [ 'intel_gx', 'Mach32', '.*' ],
+ [ 'no_linear', 'Mach32', '.*' ],
+ [ 'sw_cursor', 'Mach64', '.*' ],
+ [ 'nolinear', 'Mach64', '.*' ],
+ [ 'no_block_write', 'Mach64', '.*' ],
+ [ 'block_write', 'Mach64', '.*' ],
+ [ 'fifo_conservative', 'Mach64', '.*' ],
+ [ 'no_font_cache', 'Mach64', '.*' ],
+ [ 'no_pixmap_cache', 'Mach64', '.*' ],
+ [ 'composite', 'Mach64', '.*' ],
+ [ 'power_saver', 'Mach64', '.*' ],
+ [ 'no_program_clocks', 'Mach64', '.*' ],
+ [ 'no_bios_clocks', 'Mach64', '.*' ],
+ [ 'dac_6_bit', 'Mach64', '.*' ],
+ [ 'dac_8_bit', 'Mach64', '.*' ],
+ [ 'hw_cursor', 'Mach64', '.*' ],
+ #- [ 'override_bios', 'Mach64', '.*' ], #- WARNING, MAY DAMAGE CARD
+ [ 'sw_cursor', 'P9000', '.*' ],
+ [ 'noaccel', 'P9000', '.*' ],
+ [ 'sync_on_green', 'P9000', '.*' ],
+ [ 'vram_128', 'P9000', '.*' ],
+ [ 'nolinear', 'S3', '.*' ],
+ [ 'dac_8_bit', 'S3', '.*' ],
+ [ 'slow_vram', 'S3', 'S3.*964' ],
+ [ 'stb_pegasus', 'S3', 'S3.*928' ],
+ [ 'SPEA_Mercury', 'S3', 'S3.*(928|964)' ],
+ [ 'number_nine', 'S3', 'S3.*(864|928)' ],
+ [ 'lcd_center', 'S3', 'S3.*Aurora64V' ],
+ [ 'noaccel', 'S3V', '.*' ],
+ [ 'slow_edodram', 'S3V', '.*' ],
+ [ 'pci_burst_on', 'S3V', '.*' ],
+ [ 'early_ras_precharge', 'S3V', '.*' ],
+ [ 'late_ras_precharge', 'S3V', '.*' ],
+ [ 'fifo_conservative', 'S3V', '.*' ],
+ [ 'fifo_aggressive', 'S3V', '.*' ],
+ [ 'fifo_moderate', 'S3V', '.*' ],
+ [ 'lcd_center', 'S3V', 'S3.*ViRGE\/MX' ],
+ [ 'hw_cursor', 'S3V', '.*' ],
+ [ 'pci_retry', 'S3V', '.*' ],
+ [ 'dac_6_bit', 'AGX', '.*' ],
+ [ 'dac_8_bit', 'AGX', '.*' ],
+ [ 'sync_on_green', 'AGX', '.*' ],
+ [ '8_bit_bus', 'AGX', '.*' ],
+ [ 'wait_state', 'AGX', '.*' ],
+ [ 'no_wait_state', 'AGX', '.*' ],
+ [ 'noaccel', 'AGX', '.*' ],
+ [ 'crtc_delay', 'AGX', '.*' ],
+ [ 'fifo_conserv', 'AGX', '.*' ],
+ [ 'fifo_aggressive', 'AGX', '.*' ],
+ [ 'fifo_moderate', 'AGX', '.*' ],
+ [ 'vram_delay_latch', 'AGX', '.*' ],
+ [ 'vram_delay_ras', 'AGX', '.*' ],
+ [ 'vram_extend_ras', 'AGX', '.*' ],
+ [ 'slow_dram', 'AGX', '.*' ],
+ [ 'slow_vram', 'AGX', '.*' ],
+ [ 'med_dram', 'AGX', '.*' ],
+ [ 'med_vram', 'AGX', '.*' ],
+ [ 'fast_dram', 'AGX', '.*' ],
+ [ 'fast_vram', 'AGX', '.*' ],
+ [ 'engine_delay', 'AGX', '.*' ],
+ [ 'vram_128', 'AGX', '.*' ],
+ [ 'vram_256', 'AGX', '.*' ],
+ [ 'refresh_20', 'AGX', '.*' ],
+ [ 'refresh_25', 'AGX', '.*' ],
+ [ 'screen_refresh', 'AGX', '.*' ],
+ [ 'vlb_a', 'AGX', '.*' ],
+ [ 'vlb_b', 'AGX', '.*' ],
+ [ 'slow_dram', 'W32', '.*' ],
+ [ 'pci_burst_off', 'W32', '.*' ],
+ [ 'w32_interleave_off', 'W32', '.*' ],
+ [ 'no_accel', 'W32', '.*' ],
+ [ 'nolinear', '8514', '.*' ],
+ [ 'sw_cursor', '8514', '.*' ],
+ [ 'no_block_write', '8514', '.*' ],
+ [ 'block_write', '8514', '.*' ],
+ [ 'fifo_conservative', '8514', '.*' ],
+ [ 'no_font_cache', '8514', '.*' ],
+ [ 'no_pixmap_cache', '8514', '.*' ],
+ [ 'composite', '8514', '.*' ],
+ [ 'power_saver', '8514', '.*' ],
+ [ 'power_saver', 'FBDev', '.*' ],
+);
+
%xkb_options = (
'ru' => [ 'XkbVariant "winkeys"', 'XkbOptions "grp:caps_toggle"' ],
);
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
index 38ee82099..6e1b8bb1c 100644
--- a/perl-install/install_any.pm
+++ b/perl-install/install_any.pm
@@ -197,6 +197,8 @@ sub searchAndMount4Upgrade {
my ($o) = @_;
my ($root, $found);
+ my $w = $::beginner && $o->wait_message('', _("Searching root partition."));
+
$o->{partitioning}{readonly} = 1;
#- try to find the partition where the system is installed if beginner
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index 150ff183f..a958d1553 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -270,7 +270,7 @@ sub choosePackages {
return if $::beginner;
chooseSizeToInstall(@_);
- install_steps_interactive::choosePackages(@_);
+ install_steps_interactive::choosePackages(@_) unless $::expert;
choosePackagesTree(@_) if $::expert;
}
sub chooseSizeToInstall {
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm
index 92d6683b5..3d2551009 100644
--- a/perl-install/mouse.pm
+++ b/perl-install/mouse.pm
@@ -90,7 +90,7 @@ sub mouseconfig {
my ($t, $mouse);
foreach (0..1) { #- probe only ttyS0 and ttyS1.
- $t = detect_devices::probe_device(devices::make("/dev/ttyS$_"));
+ $t = detect_devices::probe_device("/dev/ttyS$_");
if ($t->{CLASS} =~ /MOUSE/i) {
$t->{MFG} ||= $t->{MANUFACTURER};