summaryrefslogtreecommitdiffstats
path: root/core/rootfs/rootfs-stage31/data/sbin/hotplug
blob: 260b77822cedd53f50f7a7206411d0fd1763f2ce (plain) (blame)
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
#!/bin/ash

if [ -n "$FIRMWARE" ] && [ "$SUBSYSTEM" = "firmware" ] && [ -n "$DEVPATH" ] && [ -e "/sys/$DEVPATH/data" ]; then
	echo "Kernel requests firmware $FIRMWARE" > "/dev/kmsg"
	printf "1" > "/sys/$DEVPATH/loading"
	if cat "/lib/firmware/$FIRMWARE" > "/sys/$DEVPATH/data" \
			|| cat "/lib/firmware/$(uname -r)/$FIRMWARE" > "/sys/$DEVPATH/data"; then
		printf "0" > "/sys/$DEVPATH/loading"
	else
		printf "%s" "-1" "/sys/$DEVPATH/loading"
	fi
fi

[ "$ACTION" != "add" ] && exit 0

[ -z "$MODALIAS" ] && exit 0

[ "${MODALIAS:0:5}" != "pci:v" ] && exit 0 # Ignore everything but PCI devices

ID="${MODALIAS:9:4}:${MODALIAS:18:4}"

LINE="$( lspci -n | grep -oEi "[0-9]{4}: $ID" | cut -c1-2 )"
[ "$LINE" = "03" ] && exit 0 # Skip GFX, handled by other module

modprobe "$MODALIAS"