导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    T113的usb0问题

    其它全志芯片讨论区
    1
    2
    1270
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • L
      KoGu LV 4 最后由 编辑

      启动设备后插入u盘没有任何反应和打印信息,需要我用下面的命令重启驱动才有反应这是为什么呢?

      # echo 0 > /sys/devices/platform/soc@3000000/4101000.ehci0-controller/ehci_enable
      # echo 1 > /sys/devices/platform/soc@3000000/4101000.ehci0-controller/ehci_enable
      
      

      配置如下

      reg_usb0_vbus: usb0-vbus {
      		compatible = "regulator-fixed";
      		regulator-name = "usb0-vbus";
      		regulator-min-microvolt = <5000000>;
      		regulator-max-microvolt = <5000000>;
      		regulator-enable-ramp-delay = <1000>;
      		gpio = <&pio PG 6 GPIO_ACTIVE_HIGH>;
      		enable-active-high;
      	};
      &usbc0 {
      	device_type = "usbc0";
      	usb_port_type = <0x1>;
      	enable-active-high;
      	status = "okay";
      };
      
      &ehci0 {
      	drvvbus-supply = <&reg_usb0_vbus>;
      };
      
      &ohci0 {
      	drvvbus-supply = <&reg_usb0_vbus>;
      };
      
      1 条回复 最后回复 回复 引用 分享 0
      • L
        KoGu LV 4 最后由 编辑

        我发现是有个开机脚本给切换了...

        #!/bin/sh
        #
        # Start the adbd....
        #
        
        # config adb serialnumber for adb devices
        adb_serialnumber=/etc/.adb_sn
        
        disable_udc="/etc/.disable_udc"
        udc_config=/sys/kernel/config/usb_gadget/g1/UDC
        
        otg_role_file="/sys/devices/platform/soc/usbc0/otg_role"
        usb_device_file="/sys/devices/platform/soc/usbc0/usb_device"
        hardware_type=`cat /proc/cmdline | tr ' ' '\n' | grep 'hardware' | awk -F "=" '{print $2}'`
        
        function enable_udc(){
        	while [ 1 ];do
        		udc=`ls /sys/class/udc 2>/dev/null`
        		isudc=`cat $udc_config 2>/dev/null`
        		if [ "x$isudc" = "x" ] && [ -f $udc_config ]; then
        			echo $udc > $udc_config
        		fi
        		sleep 1
        		if [ -f $disable_udc ];then
        			rm $disable_udc
        			break
        		fi
        	done
        }
        
        function start_adb(){
        	serialnumber=$1
        	if [ "x$serialnumber" = "x" ];then
        		serialnumber="0402101560"
        	fi
        	printf "Starting adb: "
        	# for adbd compatibilities
        	mkdir -p /system/
        	mkdir -p /system/bin
        	if [ ! -f /system/bin/sh ];then
        		ln -s /bin/sh /system/bin/sh
        	fi
        
        	# config ptmx
        	mkdir -p /dev/pts
        	mount -t devpts none /dev/pts
        
        	# config adb function
        	mount -t configfs none /sys/kernel/config > /dev/null 2>&1
        	mkdir -p /sys/kernel/config/usb_gadget/g1
        	echo "0x18d1" > /sys/kernel/config/usb_gadget/g1/idVendor
        	echo "0x0002" > /sys/kernel/config/usb_gadget/g1/idProduct
        	mkdir -p /sys/kernel/config/usb_gadget/g1/strings/0x409
        	echo "$serialnumber" > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
        	echo "Google.Inc" > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
        	echo "Configfs ffs gadget" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
        	mkdir -p /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
        	mkdir -p /sys/kernel/config/usb_gadget/g1/configs/c.1
        	mkdir -p /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409
        	echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes
        	echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower
        	ln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb > /dev/null 2>&1
        	mkdir -p /dev/usb-ffs
        	mkdir -p /dev/usb-ffs/adb
        	if [ "x`ls -A /dev/usb-ffs/adb`" = "x" ];then
        		mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb/
        	fi
        
        	# start adbd daemon
        	adbd &
        	[ $? -eq 0 ] && echo "OK" || "FAIL"
        
        	# enable_udc &
        }
        
        case "$1" in
        	start|"")
        		if [ "x$hardware_type" = "xsun8iw11p1" ];then
        			otg_role_file="/sys/devices/platform/soc@1c00000/soc@1c00000:usbc0@0/otg_role"
        		elif [ "x$hardware_type" = "xsun8iw20p1" ];then
        			otg_role_file="/sys/devices/platform/soc@3000000/soc@3000000:usbc0@0/otg_role"
        		fi
        		[ -f "$otg_role_file" ] && otg_role=`cat "$otg_role_file"`
        		echo "usb0 current mode: $otg_role"
        		if [ -f "$otg_role_file" ] && [ "x$otg_role" != "xusb_device" ];then
        			# force switch usb0 to device mode
        			echo "Starting switch usb0 to device mode."
        			if [ "x$hardware_type" = "xsun8iw11p1" ];then
        				usb_device_file="/sys/devices/platform/soc@1c00000/soc@1c00000:usbc0@0/usb_device"
        			elif [ "x$hardware_type" = "xsun8iw20p1" ];then
        				usb_device_file="/sys/devices/platform/soc@3000000/soc@3000000:usbc0@0/usb_device"
        			fi
        			[ -f "$usb_device_file" ] && cat $usb_device_file
        		fi
        		[ -f $adb_serialnumber ] && serialnumber=`cat $adb_serialnumber`
        		if [ "x$serialnumber" = "x" ];then
        			serialnumber=`cat /proc/cmdline | tr ' ' '\n' | grep 'snum' | awk -F "=" '{print $2}'`
        		fi
        		start_adb $serialnumber
        		;;
        	stop)
        		printf "Stopping adbd "
        		# touch $disable_udc
        		# sleep 2
        		killall adbd &
        		[ $? -eq 0 ] && echo "OK" || "FAIL"
        		;;
        	restart|reload)
        		"$0" stop
        		"$0" start
        		;;
        	*)
        		echo "Usage: $0 {start|stop|restart}"
        		exit 1
        		;;
        esac
        
        
        1 条回复 最后回复 回复 引用 分享 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策