summaryrefslogtreecommitdiffstats
path: root/0001-Rework-drm-modules-selection-on-ARM.patch
blob: e980260e0782f72a43e6cabbcf206ec59ef33d65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
From c0e6d42cd67679d530182ca4b24f83deadaf4d7c Mon Sep 17 00:00:00 2001
From: Nicolas Chauvet <kwizart@gmail.com>
Date: Sat, 23 Nov 2013 19:13:29 +0100
Subject: [PATCH] Rework drm modules selection on ARM

This is a wip version as plymouth still doesn't work for me

1/ On arm, aliases use a different path (soc)
2/ host1x has the matching device aliases
 whereas tegra_drm has the crt_init symbol
3/ Others ARM drivers may behave similarly
4/ backlight and pwm_bl also need to be bundled.

I'm currenly testing with fedora kernel 3.14 or 3.15
---
 modules.d/50drm/module-setup.sh            | 12 ++++++++++--
 modules.d/90kernel-modules/module-setup.sh |  7 ++++---
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh
index e25fc9f..2f5b75c 100755
--- a/modules.d/50drm/module-setup.sh
+++ b/modules.d/50drm/module-setup.sh
@@ -51,14 +51,22 @@ installkernel() {
         return 0
     }
 
+    # Some modules don't have drm_crtc_init but modalias needed by hostonly detection
+    local _drm_needed=$(find_kernel_modules_by_path drivers/gpu/{host1x,drm/{i2c,panel}})
+
+    local _video_backlight=$(find_kernel_modules_by_path drivers/{pwm,video/backlight})
+
     for _modname in $(find_kernel_modules_by_path drivers/gpu/drm \
-        | drm_module_filter) ; do
+        | drm_module_filter) $_drm_needed $_video_backlight ; do
         # 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 ]] && modinfo -F alias $_modname | sed -e 's,\?,\.,g' -e 's,\*,\.\*,g' \
-            | grep -qxf - /sys/bus/pci/devices/*/modalias 2>/dev/null; then
+            | grep -qxf - /sys/bus/{pci/devices,soc/devices/soc?}/*/modalias 2>/dev/null; then
             hostonly='' instmods $_modname
+            case "$_modname" in
+                 host1x) hostonly='' instmods tegra-drm ;;
+            esac
             continue
         fi
         instmods $_modname
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index 2378663..0299ec1 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -51,9 +51,10 @@ installkernel() {
 
         if [[ "$(uname -p)" == arm* ]]; then
             # arm specific modules
-            hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm \
-                omap_hsmmc panel-tfp410 sdhci_dove ahci_platform pata_imx sata_mv \
-                ehci-tegra mmc_block usb_storage
+            hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio \
+                omap_hsmmc sdhci_dove ahci_platform ahci_imx ahci_sunxi sata_mv \
+                ehci-tegra mmc_block usb_storage \
+                "=drivers/ata" "=drivers/rtc" "=drivers/mmc/host"
         fi
 
         # install virtual machine support
-- 
1.8.3.1