Reinhard Russinger 3 жил өмнө
parent
commit
b3e922cb08

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-736
+743

+ 1 - 1
board/GfA/Display001/DTS_5.0/SOPINEA64.dts

@@ -272,7 +272,7 @@
 };
 
 &usb_otg {
-	dr_mode = "host";
+	dr_mode = "otg";
 	status = "okay";
 };
 

+ 68 - 17
board/GfA/Display001/SOPINEA64_defconfig

@@ -2,7 +2,7 @@
 # Automatically generated file; DO NOT EDIT.
 # Linux/arm64 5.8.7 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2020.08-681-g60116f3) 8.4.0"
+CONFIG_CC_VERSION_TEXT="aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2020.08-672-g850594c) 8.4.0"
 CONFIG_CC_IS_GCC=y
 CONFIG_GCC_VERSION=80400
 CONFIG_LD_VERSION=233010000
@@ -4680,6 +4680,7 @@ CONFIG_SND_PCM=y
 CONFIG_SND_PCM_ELD=y
 CONFIG_SND_PCM_IEC958=y
 CONFIG_SND_DMAENGINE_PCM=y
+CONFIG_SND_RAWMIDI=m
 CONFIG_SND_JACK=y
 CONFIG_SND_JACK_INPUT_DEV=y
 # CONFIG_SND_OSSEMUL is not set
@@ -5292,7 +5293,7 @@ CONFIG_USB_MUSB_SUNXI=y
 #
 # MUSB DMA mode
 #
-# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_MUSB_PIO_ONLY=y
 CONFIG_USB_DWC3=y
 # CONFIG_USB_DWC3_ULPI is not set
 # CONFIG_USB_DWC3_HOST is not set
@@ -5388,6 +5389,7 @@ CONFIG_USB_GADGET=y
 # CONFIG_USB_GADGET_DEBUG_FS is not set
 CONFIG_USB_GADGET_VBUS_DRAW=2
 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_U_SERIAL_CONSOLE=y
 
 #
 # USB Peripheral Controller
@@ -5420,28 +5422,77 @@ CONFIG_USB_BDC_PCI=y
 # CONFIG_USB_DUMMY_HCD is not set
 # end of USB Peripheral Controller
 
-# CONFIG_USB_CONFIGFS is not set
+CONFIG_USB_LIBCOMPOSITE=m
+CONFIG_USB_F_ACM=m
+CONFIG_USB_F_SS_LB=m
+CONFIG_USB_U_SERIAL=m
+CONFIG_USB_U_ETHER=m
+CONFIG_USB_U_AUDIO=m
+CONFIG_USB_F_SERIAL=m
+CONFIG_USB_F_OBEX=m
+CONFIG_USB_F_NCM=m
+CONFIG_USB_F_ECM=m
+CONFIG_USB_F_EEM=m
+CONFIG_USB_F_SUBSET=m
+CONFIG_USB_F_RNDIS=m
+CONFIG_USB_F_MASS_STORAGE=m
+CONFIG_USB_F_FS=m
+CONFIG_USB_F_UAC1=m
+CONFIG_USB_F_UAC1_LEGACY=m
+CONFIG_USB_F_UAC2=m
+CONFIG_USB_F_UVC=m
+CONFIG_USB_F_MIDI=m
+CONFIG_USB_F_HID=m
+CONFIG_USB_F_PRINTER=m
+CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_USB_CONFIGFS_F_PRINTER=y
 
 #
 # USB Gadget precomposed configurations
 #
 # CONFIG_USB_ZERO is not set
 # CONFIG_USB_AUDIO is not set
-# CONFIG_USB_ETH is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_ETH_EEM=y
 # CONFIG_USB_G_NCM is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FUNCTIONFS is not set
-# CONFIG_USB_MASS_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_MULTI is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_G_WEBCAM is not set
-# CONFIG_USB_RAW_GADGET is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_MIDI_GADGET=m
+CONFIG_USB_G_PRINTER=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_ACM_MS=m
+CONFIG_USB_G_MULTI=m
+CONFIG_USB_G_MULTI_RNDIS=y
+CONFIG_USB_G_MULTI_CDC=y
+CONFIG_USB_G_HID=m
+CONFIG_USB_G_DBGP=m
+# CONFIG_USB_G_DBGP_PRINTK is not set
+CONFIG_USB_G_DBGP_SERIAL=y
+CONFIG_USB_G_WEBCAM=m
+CONFIG_USB_RAW_GADGET=m
 # end of USB Gadget precomposed configurations
 
 # CONFIG_TYPEC is not set

+ 0 - 26
board/GfA/Display001/rootfs/etc/init.d/M98usb_g_ether

@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Start the usb gadget network....
-#
-
-case "$1" in
-  start)
- 	echo "Starting usb g_ether network..."
-	modprobe g_ether
-	/sbin/ifdown usb0
-	/sbin/ifup usb0
-	;;
-  stop)
-	echo -n "Stopping usb g_ether network..."
-	rmmod g_ether
-	;;
-  restart|reload)
-	"$0" stop
-	"$0" start
-	;;
-  *)
-	echo "Usage: $0 {start|stop|restart}"
-	exit 1
-esac
-
-exit $?

+ 139 - 0
board/GfA/Display001/rootfs/etc/init.d/S98gadget

@@ -0,0 +1,139 @@
+#!/bin/sh
+
+# USB Gadget for PSG IOT2000
+#
+
+mount -t configfs none /sys/kernel/config 2>/dev/null
+modprobe libcomposite
+modprobe u_ether
+modprobe usb_f_rndis
+
+set -e
+
+# command line parameters
+command="$1" # "up" or "down"
+
+g="/sys/kernel/config/usb_gadget/rndisdev"
+
+rndis_usb_up() {
+    usb_ver="0x0200" # USB 2.0
+    dev_class="0xfe" # 
+    dev_subclass="0x04"
+    dev_protocol="0x01"
+#    vid="0x1d6b" # Linux Foundation
+#    pid="0x0104" # Multifunc Composit Gadget
+    vid="0x0502" # Linux Foundation
+    pid="0x3210" # Multifunc Composit Gadget
+    device="0x0100" # v1.0.0
+    mfg="GfA" # 
+    prod="GfA A64bone" # 
+    serial="fedcba9875643210"
+    attr="0xC0" # Self powered
+    pwr="1" # 2mA
+    cfg2="RNDIS"
+    dev_mac2="42:61:64:55:53:42"
+    host_mac2="48:6f:73:74:50:43"
+    ms_vendor_code="0xcd" # Microsoft
+    ms_qw_sign="MSFT100" # also Microsoft (if you couldn't tell)
+    ms_compat_id="RNDIS" # matches Windows RNDIS Drivers
+    ms_subcompat_id="5162001" # matches Windows RNDIS 6.0 Driver
+
+    if [ -d ${g} ]; then
+        if [ "$(cat ${g}/UDC)" != "" ]; then
+            echo "Gadget is already up."
+            exit 1
+        fi
+        echo "Cleaning up old directory..."
+        rndis_usb_down
+    fi
+    echo "Setting up gadget..."
+
+    # Create a new gadget
+
+    mkdir ${g}
+    echo "${usb_ver}" > ${g}/bcdUSB
+    echo "${dev_class}" > ${g}/bDeviceClass
+    echo "${dev_subclass}" > ${g}/bDeviceSubClass
+    echo "${dev_protocol}" > ${g}/bDeviceProtocol
+    echo "${vid}" > ${g}/idVendor
+    echo "${pid}" > ${g}/idProduct
+    echo "${device}" > ${g}/bcdDevice
+    mkdir ${g}/strings/0x409
+    echo "${mfg}" > ${g}/strings/0x409/manufacturer
+    echo "${prod}" > ${g}/strings/0x409/product
+    echo "${serial}" > ${g}/strings/0x409/serialnumber
+
+    # config 1 is for RNDIS
+    mkdir ${g}/configs/c.1
+    echo "${attr}" > ${g}/configs/c.1/bmAttributes
+    echo "${pwr}" > ${g}/configs/c.1/MaxPower
+    mkdir ${g}/configs/c.1/strings/0x409
+    echo "${cfg2}" > ${g}/configs/c.1/strings/0x409/configuration
+
+    # On Windows 7 and later, the RNDIS 5.1 driver would be used by default,
+    # but it does not work very well. The RNDIS 6.0 driver works better. In
+    # order to get this driver to load automatically, we have to use a
+    # Microsoft-specific extension of USB.
+
+    echo "1" > ${g}/os_desc/use
+    echo "${ms_vendor_code}" > ${g}/os_desc/b_vendor_code
+    echo "${ms_qw_sign}" > ${g}/os_desc/qw_sign
+
+    # Create the RNDIS function, including the Microsoft-specific bits
+
+    mkdir ${g}/functions/rndis.usb0
+    echo "${dev_mac2}" > ${g}/functions/rndis.usb0/dev_addr
+    echo "${host_mac2}" > ${g}/functions/rndis.usb0/host_addr
+    echo "${ms_compat_id}" > ${g}/functions/rndis.usb0/os_desc/interface.rndis/compatible_id
+    echo "${ms_subcompat_id}" > ${g}/functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id
+
+    # Link everything up and bind the USB device
+
+    ln -s ${g}/functions/rndis.usb0 ${g}/configs/c.1
+    ln -s ${g}/configs/c.1 ${g}/os_desc
+    echo `ls /sys/class/udc/` > ${g}/UDC
+
+    echo "Done."
+}
+
+rndis_usb_down() {
+    if [ ! -d ${g} ]; then
+        echo "Gadget is already down."
+        exit 1
+    fi
+    echo "Taking down gadget..."
+
+    # Have to unlink and remove directories in reverse order.
+    # Checks allow to finish takedown after error.
+
+    if [ "$(cat ${g}/UDC)" != "" ]; then
+        echo "" > ${g}/UDC
+    fi
+    rm -f ${g}/os_desc/c.1
+    rm -f ${g}/configs/c.1/rndis.usb0
+    [ -d ${g}/functions/rndis.usb0 ] && rmdir ${g}/functions/rndis.usb0
+    [ -d ${g}/configs/c.1/strings/0x409 ] && rmdir ${g}/configs/c.1/strings/0x409
+    [ -d ${g}/configs/c.1 ] && rmdir ${g}/configs/c.1
+    [ -d ${g}/strings/0x409 ] && rmdir ${g}/strings/0x409
+    rmdir ${g}
+
+    echo "Done."
+}
+
+case ${command} in
+
+start | up)
+    rndis_usb_up
+    sleep 1
+    ifup usb0
+    ;;
+stop | down)
+#    ifdown usb0
+    rndis_usb_down
+    ;;
+*)
+    echo "Usage: $0 up|down <udc_device>"
+    exit 1
+    ;;
+esac
+

+ 1 - 0
board/GfA/Display001/rootfs/etc/network/interfaces

@@ -2,6 +2,7 @@
 auto lo
 iface lo inet loopback
 #---
+auto eth0
 iface eth0 inet dhcp
 #iface eth0 inet static
 #	address 192.168.0.125