summaryrefslogtreecommitdiff
path: root/recipes-support
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2017-02-02 17:36:05 -0800
committerMax Krummenacher <max.krummenacher@toradex.com>2017-02-08 20:11:18 +0100
commit8e1de4a8a2b0ee50edeca3d72585f1d754a2602a (patch)
tree8a693ad292aaf4884d7431d7dbc2ea1667ae35ae /recipes-support
parent439cc110616fb1dbea3c392159f169deedc189cc (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>
Diffstat (limited to 'recipes-support')
-rw-r--r--recipes-support/libusbgx/files/apalis-imx6/g1.schema68
-rw-r--r--recipes-support/libusbgx/files/colibri-imx6/g1.schema68
-rw-r--r--recipes-support/libusbgx/files/colibri-imx7/g1.schema68
-rw-r--r--recipes-support/libusbgx/files/colibri-vf/g1.schema68
-rw-r--r--recipes-support/libusbgx/files/usbg.service17
-rw-r--r--recipes-support/libusbgx/libusbgx_git.bb24
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"