You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
#!/bin/bash |
|
|
|
# called by dracut |
|
check() { |
|
return 255 |
|
} |
|
|
|
# called by dracut |
|
depends() { |
|
return 0 |
|
} |
|
|
|
# called by dracut |
|
installkernel() { |
|
# Include KMS capable drm drivers |
|
|
|
if [[ ${DRACUT_ARCH:-$(uname -m)} == arm* || ${DRACUT_ARCH:-$(uname -m)} == aarch64 ]]; then |
|
# arm/aarch64 specific modules needed by drm |
|
instmods \ |
|
"=drivers/gpu/drm/i2c" \ |
|
"=drivers/gpu/drm/panel" \ |
|
"=drivers/gpu/drm/bridge" \ |
|
"=drivers/video/backlight" |
|
fi |
|
|
|
instmods amdkfd hyperv_fb "=drivers/pwm" |
|
|
|
# if the hardware is present, include module even if it is not currently loaded, |
|
# as we could e.g. be in the installer; nokmsboot boot parameter will disable |
|
# loading of the driver if needed |
|
if [[ $hostonly ]]; then |
|
local i modlink modname |
|
|
|
for i in /sys/bus/{pci/devices,platform/devices,virtio/devices,soc/devices/soc?}/*/modalias; do |
|
[[ -e $i ]] || continue |
|
[[ -n $(< "$i") ]] || continue |
|
# shellcheck disable=SC2046 |
|
if hostonly="" dracut_instmods --silent -s "drm_crtc_init|drm_dev_register|drm_encoder_init" -S "iw_handler_get_spy" $(< "$i"); then |
|
if strstr "$(modinfo -F filename $(< "$i") 2> /dev/null)" radeon.ko; then |
|
hostonly='' instmods amdkfd |
|
fi |
|
fi |
|
done |
|
# if there is a privacy screen then its driver must be loaded before the |
|
# kms driver will bind, otherwise its probe() will return -EPROBE_DEFER |
|
# note privacy screens always register, even with e.g. nokmsboot |
|
for i in /sys/class/drm/privacy_screen-*/device/driver/module; do |
|
[[ -L $i ]] || continue |
|
modlink=$(readlink "$i") |
|
modname=$(basename "$modlink") |
|
instmods "$modname" |
|
done |
|
else |
|
dracut_instmods -o -s "drm_crtc_init|drm_dev_register|drm_encoder_init" "=drivers/gpu/drm" "=drivers/staging" |
|
# also include privacy screen providers (see above comment) |
|
# atm all providers live under drivers/platform/x86 |
|
dracut_instmods -o -s "drm_privacy_screen_register" "=drivers/platform/x86" |
|
fi |
|
}
|
|
|