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.
		
		
		
		
		
			
		
			
				
					
					
						
							135 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							135 lines
						
					
					
						
							3.3 KiB
						
					
					
				| #!/bin/sh | |
|  | |
| . /etc/init.d/globals | |
| 
 | |
| # setup environment for coldplug events | |
| [ -z "$ACTION" ] && . /lib/mdev/usb/coldplug-setenv | |
| 
 | |
| # get proper product and manufacturer description (only works for ACTION=add) | |
| [ -z "$DEVPATH" ] && LOGERROR 'uevent environment variable DEVPATH is unset' && exit 1 | |
| if [ -d /sys${DEVPATH} ]; then | |
| 	cd /sys${DEVPATH}/.. | |
| 	for f in product manufacturer id[PV]*; do | |
| 		[ -r $f ] && eval "$f='$(cat $f)'" | |
| 	done | |
| 	cd $MDEV | |
| fi | |
| 
 | |
| # get $idVendor and $idProduct from $MODALIAS if necessary | |
| idVendor=${idVendor:-${MODALIAS:5:4}} | |
| idProduct=${idProduct:-${MODALIAS:10:4}} | |
| # set $idVendor and $idProduct lower case and w/o leading zeros | |
| idVendor=$(echo ${idVendor} | sed 's/^[0]*//' | tr [:upper:] [:lower:]) | |
| idProduct=$(echo ${idProduct} | sed 's/^[0]*//' | tr [:upper:] [:lower:]) | |
| 
 | |
| channel=${MDEV%:1.0} | |
| LOGINFO "${ACTION} $channel ${manufacturer:-$idVendor} ${product:-$idProduct}" | |
| 
 | |
| # for debug | |
| #LOGINFO "ACTION=${ACTION}" | |
| #LOGINFO "MDEV=${MDEV}" | |
| #LOGINFO "DEVPATH=${DEVPATH}" | |
| #LOGINFO "INTERFACE=${INTERFACE}" | |
| #LOGINFO "MODALIAS=${MODALIAS}" | |
| #LOGINFO "PRODUCT=${product} idProduct=${idProduct}" | |
| #LOGINFO "MANUFACTURER=${manufacturer} idVendor=${idVendor}" | |
| 
 | |
| # ignore controllers and hubs | |
| cat /sys/bus/usb/devices/*/bDeviceClass | grep -q -v '02\|09' | |
| RET=$? | |
| case "$ACTION" in | |
| 	add) | |
| 		if [ $RET = 0 ]; then | |
| 			echo 1 > /proc/stb/lcd/symbol_usb | |
| 		fi | |
| 	;; | |
| 	remove) | |
| 		if [ $RET = 1 ]; then | |
| 			echo 0 > /proc/stb/lcd/symbol_usb | |
| 		fi | |
| 	;; | |
| esac | |
| 
 | |
| # http://en.wikipedia.org/wiki/Universal_Serial_Bus#Device_classes | |
| # http://www.usb.org/developers/defined_class | |
| [ 0 -eq "${TYPE%%/*}" ] && TYPE=$INTERFACE | |
| LOGINFO "type ${TYPE}" | |
| case $TYPE in | |
| 	1/*/*) | |
| 		LOGINFO "$channel USB Audio Interface" | |
| 		;; | |
| 	2/*/*) | |
| 		LOGINFO "$channel Communications and CDC Control" | |
| 		;; | |
| 	3/*/*) | |
| 		LOGINFO "$channel HID (Human Interface Device)" | |
| 		# precheck vendor id for unsupported DPF in bootloader mode | |
| 		if [ "$idVendor" == "1908" ]; then | |
| 			service extdisplay ${ACTION} ${MDEV} ${idVendor} ${idProduct} | |
| 		fi | |
| 		;; | |
| 	5/*/*) | |
| 		LOGINFO "$channel Physical Interface" | |
| 		;; | |
| 	6/*/*) | |
| 		LOGINFO "$channel Image Interface" | |
| 		;; | |
| 	7/*/*) | |
| 		LOGINFO "$channel Printer Interface" | |
| 		;; | |
| 	8/*/*) | |
| 		LOGINFO "$channel Mass Storage Interface" | |
| 		# precheck vendor id for supported SPFs | |
| 		if [ "$idVendor" == "4e8" ]; then | |
| 			service extdisplay ${ACTION} ${MDEV} ${idVendor} ${idProduct} | |
| 		fi | |
| 		;; | |
| 	9/*/*) | |
| 		LOGINFO "$channel HUB Device" | |
| 		;; | |
| 	10/*/*) | |
| 		LOGINFO "$channel CDC Data Interface" | |
| 		;; | |
| 	11/*/*) | |
| 		LOGINFO "$channel Smart Card Interface" | |
| 		;; | |
| 	13/*/*) | |
| 		LOGINFO "$channel Content Security Interface" | |
| 		;; | |
| 	14/*/*) | |
| 		LOGINFO "$channel Video Interface" | |
| 		;; | |
| 	15/*/*) | |
| 		LOGINFO "$channel Personal Healthcare Interface" | |
| 		;; | |
| 	16/*/*) | |
| 		LOGINFO "$channel usb Audio/Video Devices Interface" | |
| 		;; | |
| 	17/*/*) | |
| 		LOGINFO "$channel Billboard Device Class" | |
| 		;; | |
| 	220/*/*) | |
| 		LOGINFO "$channel Diagnostic Device" | |
| 		;; | |
| 	224/*/*) | |
| 		LOGINFO "$channel Wireless Controller Interface" | |
| 		;; | |
| 	239/*/*) | |
| 		LOGINFO "$channel Miscellaneous" | |
| 		;; | |
| 	254/*/*) | |
| 		LOGINFO "$channel Application Specific" | |
| 		;; | |
| 	255/*/*) | |
| 		LOGINFO "$channel Vendor Specific" | |
| 		# pre-check vendor id for supported DPFs and SPFs | |
| 		if [ "$idVendor" = "1908" -o "$idVendor" == "4e8" ]; then | |
| 			service extdisplay ${ACTION} ${MDEV} ${idVendor} ${idProduct} | |
| 		fi | |
| 		;; | |
| 	*) | |
| 		LOGINFO "FALLBACK: $channel device $MODALIAS" | |
| 		;; | |
| esac | |
| 
 | |
| /lib/mdev/common/mdev-modprobe $MODALIAS
 | |
| 
 |