diff options
author | Simon Rettberg | 2018-09-12 16:04:54 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-09-12 16:04:54 +0200 |
commit | 4beee53195a65839f4d8f269bbba959783933cf4 (patch) | |
tree | 0f88497796976dd66a3da7c4aab4855a08a8571b /core/rootfs/rootfs-stage31/data/inc/drm.functions | |
parent | [rfs32] setup_partitons: More agressive udev-settle timeout (diff) | |
download | mltk-4beee53195a65839f4d8f269bbba959783933cf4.tar.gz mltk-4beee53195a65839f4d8f269bbba959783933cf4.tar.xz mltk-4beee53195a65839f4d8f269bbba959783933cf4.zip |
[rfs31/nvidia] Use drm.cfg.d machanism
Diffstat (limited to 'core/rootfs/rootfs-stage31/data/inc/drm.functions')
-rw-r--r-- | core/rootfs/rootfs-stage31/data/inc/drm.functions | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/core/rootfs/rootfs-stage31/data/inc/drm.functions b/core/rootfs/rootfs-stage31/data/inc/drm.functions index ab87efb3..f4ca3af5 100644 --- a/core/rootfs/rootfs-stage31/data/inc/drm.functions +++ b/core/rootfs/rootfs-stage31/data/inc/drm.functions @@ -1,7 +1,14 @@ +grepmod () { + local line + line=$( grep -i -m1 "^$1\\s" /drm.cfg.d/* ) + [ -z "$line" ] && return + echo ${line:${#1}} +} + # pass module name(s) relative path in /lib/modules with .ko extension, or special like @nvidia or @amd load_gfx () { - local MOD FILES OFFSET RETVAL + local MOD FILES RETVAL RETVAL=1 # default: failure while [ $# -gt 0 ]; do MOD=$(echo $1) # trim :) @@ -9,16 +16,14 @@ load_gfx () { [ -z "$MOD" ] && continue if [ "x${MOD}" != "x${MOD#@}" ]; then # starts with '@' - special - OFFSET=$(( ${#MOD} + 2 )) - FILES=$( grep "^$MOD\s" "/drm.cfg" | cut -c ${OFFSET}- ) + FILES=$( grepmod "$MOD" ) [ -z "$FILES" ] && drop_shell "Could not find entry for special $MOD" if load_gfx $FILES; then RETVAL=0 else # loading special case failed, try fallback if found MOD="${MOD}_fallback" - OFFSET=$(( ${#MOD} + 2 )) - FILES=$( grep "^$MOD\s" "/drm.cfg" | cut -c ${OFFSET}- ) + FILES=$( grepmod "$MOD" ) [ -n "$FILES" ] && load_gfx $FILES && RETVAL=0 fi else # regular module name or filename @@ -51,20 +56,20 @@ setup_gfx () { fi # not forced - check which driver to load CARDS=$(lspci | grep 'Class 0300' | awk '{print $4}') - if [ -e "/drm.cfg" ] && [ -n "$CARDS" ]; then + if [ -d "/drm.cfg.d" ] && [ -n "$CARDS" ]; then SUCCESS="yes" for CARD in $CARDS; do # look up exact pci id of this card - [ $DEBUG -ge 1 ] && echo Trying exact matching for drm drivers for $CARD - FILES=$(grep "^$CARD\s" "/drm.cfg" | cut -c 11-) + [ $DEBUG -ge 1 ] && echo "Trying exact matching for drm drivers for $CARD" + FILES=$( grepmod "$CARD" ) load_gfx $FILES && continue # failed... try vendor id only - CARD=$(echo $CARD | cut -c 1-4) - [ $DEBUG -ge 1 ] && echo Trying vendor matching for drm drivers for $CARD - FILES=$(grep "^$CARD\s" "/drm.cfg" | cut -c 6-) + CARD=${CARD:0:4} + [ $DEBUG -ge 1 ] && echo "Trying vendor matching for drm drivers for $CARD" + FILES=$( grepmod "$CARD" ) load_gfx $FILES && continue # everything failed for this card - echo Unknown PCI vendor id: $CARD + echo "Unknown PCI vendor id: $CARD" SUCCESS="no" done [ "x$SUCCESS" == "xyes" ] && return 0 |