From 25708466f544c600a9daa1c6967aad30365b73ae Mon Sep 17 00:00:00 2001 From: John Klug Date: Mon, 21 Jan 2019 12:56:01 -0600 Subject: Put back Vizzini driver and install the kernel patch --- conf/machine/mtcap.conf | 3 +- conf/machine/mtcdt.conf | 4 +-- conf/machine/mtr.conf | 4 +-- conf/machine/mtrv1.conf | 4 +-- recipes-bsp/multitech/mts-io/mts-io.init | 6 ++-- .../linux-4.9-cdc-acm-ignore-exar-devices.patch | 36 ++++++++++++++++++++++ recipes-kernel/linux/linux-at91_4.9.87.bb | 1 + 7 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-cdc-acm-ignore-exar-devices.patch diff --git a/conf/machine/mtcap.conf b/conf/machine/mtcap.conf index 0f339ca..8928aec 100644 --- a/conf/machine/mtcap.conf +++ b/conf/machine/mtcap.conf @@ -8,8 +8,7 @@ MACHINE_FEATURES = "ext2 ext3 usbhost usbgadget ppp" PREFERRED_PROVIDER_virtual/kernel = "linux" PREFERRED_VERSION_linux = "3.12.%" -#MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" -#PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" +# No EXAR chip present on an MTR. DEFAULTTUNE = "arm926ejs" TUNE_CCARGS = " -march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s" diff --git a/conf/machine/mtcdt.conf b/conf/machine/mtcdt.conf index 21376c8..63873fc 100644 --- a/conf/machine/mtcdt.conf +++ b/conf/machine/mtcdt.conf @@ -8,8 +8,8 @@ MACHINE_FEATURES = "ext2 ext3 usbhost usbgadget ppp" PREFERRED_PROVIDER_virtual/kernel = "linux-at91" PREFERRED_VERSION_linux = "4.9.%" -#MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" -#PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" +MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" +PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" DEFAULTTUNE = "arm926ejs" TUNE_CCARGS = " -march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s" diff --git a/conf/machine/mtr.conf b/conf/machine/mtr.conf index 69b64af..eeb016b 100644 --- a/conf/machine/mtr.conf +++ b/conf/machine/mtr.conf @@ -8,8 +8,8 @@ MACHINE_FEATURES = "ext2 ext3 usbhost usbgadget ppp" PREFERRED_PROVIDER_virtual/kernel = "linux" PREFERRED_VERSION_linux = "3.12.%" -#MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" -#PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" +MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" +PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" DEFAULTTUNE = "arm926ejs" TUNE_CCARGS = " -march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s" diff --git a/conf/machine/mtrv1.conf b/conf/machine/mtrv1.conf index 403d0e0..93b29c8 100644 --- a/conf/machine/mtrv1.conf +++ b/conf/machine/mtrv1.conf @@ -8,8 +8,8 @@ MACHINE_FEATURES = "ext2 ext3 usbhost usbgadget ppp" PREFERRED_PROVIDER_virtual/kernel = "linux-at91" PREFERRED_VERSION_linux = "4.9.%" -#MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" -#PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" +MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "kernel-module-vizzini" +PREFERRED_VERSION_kernel-module-vizzini ?= "1.1" DEFAULTTUNE = "arm926ejs" TUNE_CCARGS = " -march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s" diff --git a/recipes-bsp/multitech/mts-io/mts-io.init b/recipes-bsp/multitech/mts-io/mts-io.init index d434bd6..4c2aedf 100644 --- a/recipes-bsp/multitech/mts-io/mts-io.init +++ b/recipes-bsp/multitech/mts-io/mts-io.init @@ -228,7 +228,7 @@ set_gpslink() { fi if [[ ${hw} == MTRV1-0.2 ]] ; then - ln -sf /dev/ttyACM0 /dev/gps0 + ln -sf /dev/ttyXRUSB0 /dev/gps0 return fi @@ -243,11 +243,11 @@ set_gpslink() { fi if [[ ${hw_name} == MTCDTIPHP ]] ; then NEED_I2C_RESET=1 - ln -sf /dev/ttyACM0 /dev/gps0 + ln -sf /dev/ttyXRUSB0 /dev/gps0 return fi # Default MTCDT-0.1 - ln -sf /dev/ttyACM2 /dev/gps0 + ln -sf /dev/ttyXRUSB2 /dev/gps0 } case $1 in diff --git a/recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-cdc-acm-ignore-exar-devices.patch b/recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-cdc-acm-ignore-exar-devices.patch new file mode 100644 index 0000000..90af4de --- /dev/null +++ b/recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-cdc-acm-ignore-exar-devices.patch @@ -0,0 +1,36 @@ +diff -Naru linux-4.9.87.orig/drivers/usb/class/cdc-acm.c linux-4.9.87/drivers/usb/class/cdc-acm.c +--- linux-4.9.87.orig/drivers/usb/class/cdc-acm.c 2019-01-21 09:33:23.938147201 -0600 ++++ linux-4.9.87/drivers/usb/class/cdc-acm.c 2019-01-21 09:40:50.374133985 -0600 +@@ -1161,8 +1161,10 @@ + /* normal quirks */ + quirks = (unsigned long)id->driver_info; + +- if (quirks == IGNORE_DEVICE) ++ if (quirks == IGNORE_DEVICE) { ++ dev_dbg(&intf->dev, "Ignoring device\n"); + return -ENODEV; ++ } + + memset(&h, 0x00, sizeof(struct usb_cdc_parsed_header)); + +@@ -1877,6 +1879,20 @@ + .driver_info = IGNORE_DEVICE, + }, + ++ /* Ignore Exar XR21V141X usb serial chips ++ * This elminates conflicting with the Exar vizzini driver. ++ * The ACM driver cannot use features in the Exar chip, ++ * such as setting the baud rate. */ ++ {USB_DEVICE(0x04e2, 0x1410), ++ .driver_info = IGNORE_DEVICE, ++ }, ++ {USB_DEVICE(0x04e2, 0x1412), ++ .driver_info = IGNORE_DEVICE, ++ }, ++ {USB_DEVICE(0x04e2, 0x1414), ++ .driver_info = IGNORE_DEVICE, ++ }, ++ + /* control interfaces without any protocol set */ + { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM, + USB_CDC_PROTO_NONE) }, diff --git a/recipes-kernel/linux/linux-at91_4.9.87.bb b/recipes-kernel/linux/linux-at91_4.9.87.bb index adbe4d9..a6bdc4f 100644 --- a/recipes-kernel/linux/linux-at91_4.9.87.bb +++ b/recipes-kernel/linux/linux-at91_4.9.87.bb @@ -49,6 +49,7 @@ SRC_URI_append_mtcdt = "\ file://linux-4.9-add-num_accessory_ports-config-option.patch \ file://950-0090-OF-DT-Overlay-configfs-interface.patch \ file://linux-4.9-spidev_squack.patch \ + file://linux-4.9-cdc-acm-ignore-exar-devices.patch \ " SRC_URI_append_mtrv1 = "\ ${COMMON_PATCHES} \ -- cgit v1.2.3