diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2017-02-02 17:36:05 -0800 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2017-02-08 20:11:18 +0100 |
commit | 8e1de4a8a2b0ee50edeca3d72585f1d754a2602a (patch) | |
tree | 8a693ad292aaf4884d7431d7dbc2ea1667ae35ae | |
parent | 439cc110616fb1dbea3c392159f169deedc189cc (diff) |
libusbgx: add RNDIS configuration and systemd service for import
Update libusbgx to a version with OS Descriptor support for better
interoperability with Windows operating systems. Add configuration
using RNDIS with Toradex vendor id. Read serial number and product
id from the device tree to configure the USB gadget device.
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
Acked-by: Max Krummenacher <max.krummenacher@toradex.com>
-rw-r--r-- | recipes-support/libusbgx/files/apalis-imx6/g1.schema | 68 | ||||
-rw-r--r-- | recipes-support/libusbgx/files/colibri-imx6/g1.schema | 68 | ||||
-rw-r--r-- | recipes-support/libusbgx/files/colibri-imx7/g1.schema | 68 | ||||
-rw-r--r-- | recipes-support/libusbgx/files/colibri-vf/g1.schema | 68 | ||||
-rw-r--r-- | recipes-support/libusbgx/files/usbg.service | 17 | ||||
-rw-r--r-- | recipes-support/libusbgx/libusbgx_git.bb | 24 |
6 files changed, 309 insertions, 4 deletions
diff --git a/recipes-support/libusbgx/files/apalis-imx6/g1.schema b/recipes-support/libusbgx/files/apalis-imx6/g1.schema new file mode 100644 index 0000000..c09d478 --- /dev/null +++ b/recipes-support/libusbgx/files/apalis-imx6/g1.schema @@ -0,0 +1,68 @@ +attrs : +{ + bcdUSB = 0x200; + bDeviceClass = 0x2; + bDeviceSubClass = 0x0; + bDeviceProtocol = 0x0; + bMaxPacketSize0 = 0x40; + idVendor = 0x1D6B; + idProduct = 0x104; + bcdDevice = 0x401; +}; +os_descs : +{ + config = "c_1"; + use = 1; + qw_sign = "MSFT100"; + b_vendor_code = 0xCD; +}; +strings = ( + { + lang = 0x409; + manufacturer = "Toradex"; + product = "Toradex Apalis iMX6"; + serialnumber = "00000000"; + } ); +functions : +{ + rndis_usb0 : + { + instance = "usb0"; + type = "rndis"; + attrs : + { + dev_addr = "00:14:2d:ff:ff:ff"; + host_addr = "00:14:2d:ff:ff:fe"; + qmult = 5; + }; + os_descs = ( + { + interface = "rndis"; + compatible_id = "RNDIS"; + sub_compatible_id = "5162001"; + } ); + }; +}; +configs : +{ + c_1 : + { + id = 1; + name = "c"; + attrs : + { + bmAttributes = 0xC0; + bMaxPower = 0x1; + }; + strings = ( + { + lang = 0x409; + configuration = "RNDIS"; + } ); + functions = ( + { + name = "rndis.usb0"; + function = "rndis_usb0"; + } ); + }; +}; diff --git a/recipes-support/libusbgx/files/colibri-imx6/g1.schema b/recipes-support/libusbgx/files/colibri-imx6/g1.schema new file mode 100644 index 0000000..eda33be --- /dev/null +++ b/recipes-support/libusbgx/files/colibri-imx6/g1.schema @@ -0,0 +1,68 @@ +attrs : +{ + bcdUSB = 0x200; + bDeviceClass = 0x2; + bDeviceSubClass = 0x0; + bDeviceProtocol = 0x0; + bMaxPacketSize0 = 0x40; + idVendor = 0x1D6B; + idProduct = 0x104; + bcdDevice = 0x401; +}; +os_descs : +{ + config = "c_1"; + use = 1; + qw_sign = "MSFT100"; + b_vendor_code = 0xCD; +}; +strings = ( + { + lang = 0x409; + manufacturer = "Toradex"; + product = "Toradex Colibri iMX6"; + serialnumber = "00000000"; + } ); +functions : +{ + rndis_usb0 : + { + instance = "usb0"; + type = "rndis"; + attrs : + { + dev_addr = "00:14:2d:ff:ff:ff"; + host_addr = "00:14:2d:ff:ff:fe"; + qmult = 5; + }; + os_descs = ( + { + interface = "rndis"; + compatible_id = "RNDIS"; + sub_compatible_id = "5162001"; + } ); + }; +}; +configs : +{ + c_1 : + { + id = 1; + name = "c"; + attrs : + { + bmAttributes = 0xC0; + bMaxPower = 0x1; + }; + strings = ( + { + lang = 0x409; + configuration = "RNDIS"; + } ); + functions = ( + { + name = "rndis.usb0"; + function = "rndis_usb0"; + } ); + }; +}; diff --git a/recipes-support/libusbgx/files/colibri-imx7/g1.schema b/recipes-support/libusbgx/files/colibri-imx7/g1.schema new file mode 100644 index 0000000..cbfa505 --- /dev/null +++ b/recipes-support/libusbgx/files/colibri-imx7/g1.schema @@ -0,0 +1,68 @@ +attrs : +{ + bcdUSB = 0x200; + bDeviceClass = 0x2; + bDeviceSubClass = 0x0; + bDeviceProtocol = 0x0; + bMaxPacketSize0 = 0x40; + idVendor = 0x1D6B; + idProduct = 0x104; + bcdDevice = 0x401; +}; +os_descs : +{ + config = "c_1"; + use = 1; + qw_sign = "MSFT100"; + b_vendor_code = 0xCD; +}; +strings = ( + { + lang = 0x409; + manufacturer = "Toradex"; + product = "Toradex Colibri iMX7"; + serialnumber = "00000000"; + } ); +functions : +{ + rndis_usb0 : + { + instance = "usb0"; + type = "rndis"; + attrs : + { + dev_addr = "00:14:2d:ff:ff:ff"; + host_addr = "00:14:2d:ff:ff:fe"; + qmult = 5; + }; + os_descs = ( + { + interface = "rndis"; + compatible_id = "RNDIS"; + sub_compatible_id = "5162001"; + } ); + }; +}; +configs : +{ + c_1 : + { + id = 1; + name = "c"; + attrs : + { + bmAttributes = 0xC0; + bMaxPower = 0x1; + }; + strings = ( + { + lang = 0x409; + configuration = "RNDIS"; + } ); + functions = ( + { + name = "rndis.usb0"; + function = "rndis_usb0"; + } ); + }; +}; diff --git a/recipes-support/libusbgx/files/colibri-vf/g1.schema b/recipes-support/libusbgx/files/colibri-vf/g1.schema new file mode 100644 index 0000000..8f3cff8 --- /dev/null +++ b/recipes-support/libusbgx/files/colibri-vf/g1.schema @@ -0,0 +1,68 @@ +attrs : +{ + bcdUSB = 0x200; + bDeviceClass = 0x2; + bDeviceSubClass = 0x0; + bDeviceProtocol = 0x0; + bMaxPacketSize0 = 0x40; + idVendor = 0x1D6B; + idProduct = 0x104; + bcdDevice = 0x401; +}; +os_descs : +{ + config = "c_1"; + use = 1; + qw_sign = "MSFT100"; + b_vendor_code = 0xCD; +}; +strings = ( + { + lang = 0x409; + manufacturer = "Toradex"; + product = "Toradex Colibri VF50/VF61"; + serialnumber = "00000000"; + } ); +functions : +{ + rndis_usb0 : + { + instance = "usb0"; + type = "rndis"; + attrs : + { + dev_addr = "00:14:2d:ff:ff:ff"; + host_addr = "00:14:2d:ff:ff:fe"; + qmult = 5; + }; + os_descs = ( + { + interface = "rndis"; + compatible_id = "RNDIS"; + sub_compatible_id = "5162001"; + } ); + }; +}; +configs : +{ + c_1 : + { + id = 1; + name = "c"; + attrs : + { + bmAttributes = 0xC0; + bMaxPower = 0x1; + }; + strings = ( + { + lang = 0x409; + configuration = "RNDIS"; + } ); + functions = ( + { + name = "rndis.usb0"; + function = "rndis_usb0"; + } ); + }; +}; diff --git a/recipes-support/libusbgx/files/usbg.service b/recipes-support/libusbgx/files/usbg.service new file mode 100644 index 0000000..a4e6f80 --- /dev/null +++ b/recipes-support/libusbgx/files/usbg.service @@ -0,0 +1,17 @@ +[Unit] +Description=Load default USB gadget schema g1.schema +ConditionPathExists=/etc/usbg/g1.schema +Before=systemd-networkd.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/gadget-import g1 /etc/usbg/g1.schema +ExecStartPost=/bin/sh -c '/bin/echo $((0x4000+$(cat /proc/device-tree/toradex,product-id))) > \ + /sys/kernel/config/usb_gadget/g1/idProduct' +ExecStartPost=/bin/sh -c '/bin/cat /proc/device-tree/serial-number > \ + /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber' +ExecStartPost=/bin/sh -c '/bin/echo `ls /sys/class/udc/` > \ + /sys/kernel/config/usb_gadget/g1/UDC' + +[Install] +WantedBy=multi-user.target diff --git a/recipes-support/libusbgx/libusbgx_git.bb b/recipes-support/libusbgx/libusbgx_git.bb index 6c85b20..3e81b39 100644 --- a/recipes-support/libusbgx/libusbgx_git.bb +++ b/recipes-support/libusbgx/libusbgx_git.bb @@ -4,14 +4,30 @@ LICENSE = "GPLv2 & LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c" -inherit autotools pkgconfig +inherit autotools pkgconfig systemd DEPENDS = "libconfig" +EXTRA_OECONF = "--includedir=${includedir}/usbgx" + PV = "0.1.0+git${SRCPV}" -SRCREV = "9e136571aa4b82fe50028d82ebf14541a7c6245f" -SRC_URI = "git://github.com/toradex/libusbgx.git \ - " +SRCREV = "566993a7647ed5cb36098f27084fd2d5d1f0f017" +SRCBRANCH = "os_descriptors" +SRC_URI = "git://github.com/toradex/libusbgx.git;branch=${SRCBRANCH} \ + file://usbg.service \ + file://g1.schema \ +" S = "${WORKDIR}/git" +do_install_append () { + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 ${WORKDIR}/usbg.service ${D}${systemd_unitdir}/system + + install -d ${D}${sysconfdir}/usbg/ + install -m 0644 ${WORKDIR}/g1.schema ${D}${sysconfdir}/usbg/g1.schema +} + +NATIVE_SYSTEMD_SUPPORT = "1" +SYSTEMD_PACKAGES = "${PN}" +SYSTEMD_SERVICE_${PN} = "usbg.service" |