File tree Expand file tree Collapse file tree 5 files changed +71
-14
lines changed
Expand file tree Collapse file tree 5 files changed +71
-14
lines changed Original file line number Diff line number Diff line change 1+ # Guess module: device tree
2+
3+ This feature scans the device tree [ 1] for compatible nodes and determines which
4+ kernel modules are required for the current hardware. It is intended to be used
5+ in embedded linux environments where device trees are used to describe hardware.
6+
7+ [ 1] https://www.devicetree.org/specifications/
8+ [ 2] https://github.com/devicetree-org/devicetree-specification
Original file line number Diff line number Diff line change 1+ #! /bin/bash -eu
2+ # SPDX-License-Identifier: GPL-3.0-or-later
3+
4+ . guess-functions
5+
6+ $TRACE_SOURCE " Processing ..."
7+
8+ dt_dir=
9+
10+ for dir in ${DEVICETREE_PATH-} " $PROCFS_PATH " /device-tree " $SYSFS_PATH " /firmware/devicetree/base; do
11+ if [ -e " $dir " ] && [ -f " $dir " /compatible ]; then
12+ dt_dir=" $dir "
13+ break
14+ fi
15+ done
16+
17+ [ -n " $dt_dir " ] ||
18+ exit 0
19+
20+ find " $dt_dir /" -name compatible |
21+ while read -r dt_compatible; do
22+ tr ' \0' ' \n' < " $dt_compatible " |
23+ while read -r compat; do
24+ printf ' of:N*T*C%sC*\n' " ${compat// [ ]/ _} "
25+ done
26+ done |
27+ sort -u |
28+ depinfo ${KERNEL: +-k " $KERNEL " } --no-prefix --input=- 2> /dev/null |
29+ sed -r -n -e ' s,^.*/lib/modules/[^/]+/,,p' |
30+ filter_device_tree_modules |
31+ while read -r mod; do
32+ mod=" ${mod##*/ } "
33+ guess_optional_module " ${mod% .ko} "
34+ done
Original file line number Diff line number Diff line change 1+ # SPDX-License-Identifier: GPL-3.0-or-later
2+ PHONY += guess-device-tree
3+
4+ guess-device-tree :
5+ $V echo " Processing $@ ..."
6+ @ GUESS_SUFFIX=add:$@ \
7+ $(DETECTDIR ) /device-tree/action
8+
9+ guess : guess-device-tree
Original file line number Diff line number Diff line change @@ -37,20 +37,7 @@ list_builtin_modules()
3737 list_loaded_modules
3838 list_builtin_modules
3939} |
40- grep -E \
41- -e ' ^kernel/drivers/bus/' \
42- -e ' ^kernel/drivers/clk/' \
43- -e ' ^kernel/drivers/dma/' \
44- -e ' ^kernel/drivers/i2c/' \
45- -e ' ^kernel/drivers/mfd/' \
46- -e ' ^kernel/drivers/mmc/' \
47- -e ' ^kernel/drivers/nvmem/' \
48- -e ' ^kernel/drivers/phy/' \
49- -e ' ^kernel/drivers/power/supply/' \
50- -e ' ^kernel/drivers/regulator/' \
51- -e ' ^kernel/drivers/reset/' \
52- -e ' ^kernel/drivers/soc/' \
53- -e ' ^kernel/drivers/usb/phy/' |
40+ filter_device_tree_modules |
5441while read -r mod; do
5542 mod=" ${mod##*/ } "
5643 guess_optional_module " ${mod% .ko} "
Original file line number Diff line number Diff line change @@ -189,4 +189,23 @@ is_active_feature()
189189 return 1
190190}
191191
192+ filter_device_tree_modules ()
193+ {
194+ grep -E \
195+ -e ' ^kernel/drivers/bus/' \
196+ -e ' ^kernel/drivers/clk/' \
197+ -e ' ^kernel/drivers/dma/' \
198+ -e ' ^kernel/drivers/i2c/' \
199+ -e ' ^kernel/drivers/mfd/' \
200+ -e ' ^kernel/drivers/mmc/' \
201+ -e ' ^kernel/drivers/nvmem/' \
202+ -e ' ^kernel/drivers/phy/' \
203+ -e ' ^kernel/drivers/power/supply/' \
204+ -e ' ^kernel/drivers/regulator/' \
205+ -e ' ^kernel/drivers/reset/' \
206+ -e ' ^kernel/drivers/soc/' \
207+ -e ' ^kernel/drivers/usb/phy/' \
208+ #
209+ }
210+
192211fi # __included_make_initrd_guess_functions
You can’t perform that action at this time.
0 commit comments