diff --git a/scripts/nvidia-autoselect-driver b/scripts/nvidia-autoselect-driver index fc055fc..af9d701 100755 --- a/scripts/nvidia-autoselect-driver +++ b/scripts/nvidia-autoselect-driver @@ -2,48 +2,89 @@ # # nVidia legacy test script # -# Copyright (c) 2007 by Silvan Calarco +# Copyright (c) 2007-2015 by Silvan Calarco # Released under the GNU GPL v.3 license # +[ "$1" = "-i" ] && DO_INSTALL=1 PCIID=`/usr/sbin/lspci -n | grep " 0300: 10de:" | awk '{ print $3 }'` [ "$PCIID" ] || exit 0 -DEVID=${PCIID/*:/} +DEVID=`echo ${PCIID/*:/} | tr '[:lower:]' '[:upper:]'` case $DEVID in - 0020|0028|0029|002c|002d|\ - 00a0|0100|0101|0103|0150|\ - 0151|0152|0153) ALT_SUFFIX='_71xx' ;; - 0110|0111|0112|0113|0170|\ - 0171|0172|0173|0174|0175|\ - 0176|0177|0178|0179|017a|\ - 017c|017d|0181|0182|0183|\ - 0185|0188|018a|018b|018c|\ - 01a0|01f0|0200|0201|0202|\ - 0203|0250|0251|0253|0258|\ - 0259|025b|0280|0281|0282|\ - 0286|0288|0289|028c) ALT_SUFFIX='_96xx' ;; - 00FA|00FB|00FC|00FD|00FE|\ - 0301|0302|0308|0309|0311|\ - 0312|0314|031A|031B|031C|\ - 0320|0321|0322|0323|0324|\ - 0325|0326|0327|0328|032A|\ - 032B|032C|032D|0330|0331|\ - 0332|0333|0334|0338|033F|\ - 0341|0342|0343|0344|0347|\ - 0348|034C|034E) ALT_SUFFIX='_173xx' ;; + 0191|0193|0194|0197|019D|019E|0400|0401|0402|0403|\ + 0404|0405|0406|0407|0408|0409|040A|040B|040C|040D|\ + 040E|040F|0410|0420|0421|0422|0423|0424|0425|0426|\ + 0427|0428|0429|042A|042B|042C|042D|042E|042F|05E0|\ + 05E1|05E2|05E3|05E6|05E7|05EA|05EB|05ED|05F8|05F9|\ + 05FD|05FE|05FF|0600|0601|0602|0603|0604|0605|0606|\ + 0607|0608|0609|060A|060B|060C|060D|060F|0610|0611|\ + 0612|0613|0614|0615|0617|0618|0619|061A|061B|061C|\ + 061D|061E|061F|0621|0622|0623|0625|0626|0627|0628|\ + 062A|062B|062C|062D|062E|0630|0631|0632|0635|0637|\ + 0638|063A|0640|0641|0643|0644|0645|0646|0647|0648|\ + 0649|064A|064B|064C|0651|0652|0653|0654|0655|0656|\ + 0658|0659|065A|065B|065C|06E0|06E1|06E2|06E3|06E4|\ + 06E5|06E6|06E7|06E8|06E9|06EA|06EB|06EC|06EF|06F1|\ + 06F8|06F9|06FA|06FB|06FD|06FF|0840|0844|0845|0846|\ + 0847|0848|0849|084A|084B|084C|084D|084F|0860|0861|\ + 0862|0863|0864|0865|0866|0867|0868|0869|086A|086C|\ + 086D|086E|086F|0870|0871|0872|0873|0874|0876|087A|\ + 087D|087E|087F|08A0|08A2|08A3|08A4|08A5|0A20|0A22|\ + 0A23|0A26|0A27|0A28|0A29|0A2A|0A2B|0A2C|0A2D|0A32|\ + 0A34|0A35|0A38|0A3C|0A60|0A62|0A63|0A64|0A65|0A66|\ + 0A67|0A68|0A69|0A6A|0A6C|0A6E|0A6F|0A70|0A71|0A72|\ + 0A73|0A74|0A75|0A76|0A78|0A7A|0A7C|0CA0|0CA2|0CA3|\ + 0CA4|0CA5|0CA7|0CA8|0CA9|0CAC|0CAF|0CB0|0CB1|0CBC|\ + 10C0|10C3|10C5|10D8) ALT_SUFFIX='340' ;; + + 0040|0041|0042|0043|0044|0045|0046|0047|0048|004E|\ + 0090|0091|0092|0093|0095|0098|0099|009D|00C0|00C1|\ + 00C2|00C3|00C8|00C9|00CC|00CD|00CE|00F1|00F2|00F3|\ + 00F4|00F5|00F6|00F8|00F9|0140|0141|0142|0143|0144|\ + 0145|0146|0147|0148|0149|014A|014C|014D|014E|014F|\ + 0160|0161|0162|0163|0164|0165|0166|0167|0168|0169|\ + 016A|01D0|01D1|01D2|01D3|01D6|01D7|01D8|01DA|01DB|\ + 01DC|01DD|01DE|01DF|0211|0212|0215|0218|0221|0222|\ + 0240|0241|0242|0244|0245|0247|0290|0291|0292|0293|\ + 0294|0295|0297|0298|0299|029A|029B|029C|029D|029E|\ + 029F|02E0|02E1|02E2|02E3|02E4|038B|0390|0391|0392|\ + 0393|0394|0395|0397|0398|0399|039C|039E|03D0|03D1|\ + 03D2|03D5|03D6|0531|0533|053A|053B|053E|07E0|07E1|\ + 07E2|07E3|07E5) ALT_SUFFIX='304' ;; + + 00FA|00FB|00FC|00FD|00FE|0301|0302|0308|0309|0311|\ + 0312|0314|031A|031B|031C|0320|0321|0322|0323|0324|\ + 0325|0326|0327|0328|032A|032B|032C|032D|0330|0331|\ + 0332|0333|0334|0338|033F|0341|0342|0343|0344|0347|\ + 0348|034C|034E) ALT_SUFFIX='173' ;; + + 0110|0111|0112|0113|0170|0171|0172|0173|0174|0175|\ + 0176|0177|0178|0179|017A|017C|017D|0181|0182|0183|\ + 0185|0188|018A|018B|018C|01A0|01F0|0200|0201|0202|\ + 0203|0250|0251|0253|0258|0259|025B|0280|0281|0282|\ + 0286|0288|0289|028C) ALT_SUFFIX='96' ;; + + 0020|0028|0029|002C|002D|00A0|0100|0101|0103|0150|\ + 0151|0152|0153) ALT_SUFFIX='71' ;; + *) ALT_SUFFIX='' ;; esac -if [ -x /usr/sbin/update-alternatives-set-nvidia$ALT_SUFFIX ]; then - /usr/sbin/update-alternatives-set-nvidia$ALT_SUFFIX -elif [ -x /sbin/update-alternatives-set-dri ]; then - /sbin/update-alternatives-set-dri -else - exit 1 +case $ALT_SUFFIX in + 340) REC_DRIVER='xorg-drv-video-nvidia_340' ;; + 304) REC_DRIVER='xorg-drv-video-nvidia_304' ;; + 173|96|71) REC_DRIVER='nouveau' ;; + *) REC_DRIVER='xorg-drv-video-nvidia' ;; +esac + +echo "NVIDIA recommended driver is $REC_DRIVER" + +if [ "$DO_INSTALL" = "1" ]; then + rpm -q $REC_DRIVER || pkcon install $REC_DRIVER fi - + exit 0