All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Neukum <oneukum@suse.com>
To: Johan Hovold <johan@kernel.org>, Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Andrey Arapov <andrey.arapov@gmail.com>,
	Lars Melin <larsm17@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
	linux-usb@vger.kernel.org, stable@vger.kernel.org
Subject: [v7] cdc-acm: fix abnormal DATA RX issue for Mediatek Preloader.
Date: Thu, 20 Dec 2018 16:28:44 +0100	[thread overview]
Message-ID: <1545319724.5084.3.camel@suse.com> (raw)

On Mi, 2018-12-19 at 10:00 +0100, Johan Hovold wrote:
> On Wed, Dec 19, 2018 at 12:11:03PM +0800, Macpaul Lin wrote:
> > Mediatek Preloader is a proprietary embedded boot loader for loading
> > Little Kernel and Linux into device DRAM.
> > 
> > This boot loader also handle firmware update. Mediatek Preloader will be
> > enumerated as a virtual COM port when the device is connected to Windows
> > or Linux OS via CDC-ACM class driver. When the USB enumeration has been
> > done, Mediatek Preloader will send out handshake command "READY" to PC
> > actively instead of waiting command from the download tool.
> > 
> > Since Linux 4.12, the commit "tty: reset termios state on device
> > registration" (93857edd9829e144acb6c7e72d593f6e01aead66) causes Mediatek
> > Preloader receiving some abnoraml command like "READYXX" as it sent.
> > This will be recognized as an incorrect response. The behavior change
> > also causes the download handshake fail. This change only affects
> > subsequent connects if the reconnected device happens to get the same minor
> > number.
> > 
> > By disabling the ECHO termios flag could avoid this problem. However, it
> > cannot be done by user space configuration when download tool open
> > /dev/ttyACM0. This is because the device running Mediatek Preloader will
> > send handshake command "READY" immediately once the CDC-ACM driver is
> > ready.
> > 
> > This patch wants to fix above problem by introducing "DISABLE_ECHO"
> > property in driver_info. When Mediatek Preloader is connected, the
> > CDC-ACM driver could disable ECHO flag in termios to avoid the problem.
> > 
> > Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
> > Cc: stable@vger.kernel.org
> > ---
> > Changes for v2:
> >  - Move quirks testing of DISABLE_ECHO flag into acm_tty_install().
> >  - Change quirks testing into bitwise comparison.
> > Changes for v3:
> >  - Replace quirks testing from init_termios to tty->termios.
> >  - Remove parenthesis for ECHO flag.
> > Changes for v4:
> >  - Drop quirks varible to simplify the patch.
> >  - Move termios operation right after the driver_data has been installed.
> >  - Write general style comment for suppressing initial echoing. 
> > Changes for v5:
> >  - Fix: termios operation right abover the driver_data has been installed.
> >  - Update commit comment about this patch affects the reconnected device
> >    which get the same minor numbers.
> > Changes for v6:
> >  - Update VID/PID:0x0e8d/0x0003 as Mediatek Inc BROM.
> >  - Update VID/PID:0x0e8d/0x2000 as Mediatek Inc Preloader.
> > Changes for v7:
> >  - Keep VID/PID:0x0e8d/0x0003 unchanged because of 2 different UNION
> >    descriptor implementated in Mediatek Inc BROM (MT6589/MT6765).
> 
> Reviewed-by: Johan Hovold <johan@kernel.org>
Acked-by: Oliver Neukum <oneukum@suse.com>

WARNING: multiple messages have this Message-ID (diff)
From: Oliver Neukum <oneukum@suse.com>
To: Johan Hovold <johan@kernel.org>, Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Andrey Arapov <andrey.arapov@gmail.com>,
	Lars Melin <larsm17@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
	linux-usb@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH v7] cdc-acm: fix abnormal DATA RX issue for Mediatek Preloader.
Date: Thu, 20 Dec 2018 16:28:44 +0100	[thread overview]
Message-ID: <1545319724.5084.3.camel@suse.com> (raw)
In-Reply-To: <20181219090008.GR20658@localhost>

On Mi, 2018-12-19 at 10:00 +0100, Johan Hovold wrote:
> On Wed, Dec 19, 2018 at 12:11:03PM +0800, Macpaul Lin wrote:
> > Mediatek Preloader is a proprietary embedded boot loader for loading
> > Little Kernel and Linux into device DRAM.
> > 
> > This boot loader also handle firmware update. Mediatek Preloader will be
> > enumerated as a virtual COM port when the device is connected to Windows
> > or Linux OS via CDC-ACM class driver. When the USB enumeration has been
> > done, Mediatek Preloader will send out handshake command "READY" to PC
> > actively instead of waiting command from the download tool.
> > 
> > Since Linux 4.12, the commit "tty: reset termios state on device
> > registration" (93857edd9829e144acb6c7e72d593f6e01aead66) causes Mediatek
> > Preloader receiving some abnoraml command like "READYXX" as it sent.
> > This will be recognized as an incorrect response. The behavior change
> > also causes the download handshake fail. This change only affects
> > subsequent connects if the reconnected device happens to get the same minor
> > number.
> > 
> > By disabling the ECHO termios flag could avoid this problem. However, it
> > cannot be done by user space configuration when download tool open
> > /dev/ttyACM0. This is because the device running Mediatek Preloader will
> > send handshake command "READY" immediately once the CDC-ACM driver is
> > ready.
> > 
> > This patch wants to fix above problem by introducing "DISABLE_ECHO"
> > property in driver_info. When Mediatek Preloader is connected, the
> > CDC-ACM driver could disable ECHO flag in termios to avoid the problem.
> > 
> > Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
> > Cc: stable@vger.kernel.org
> > ---
> > Changes for v2:
> >  - Move quirks testing of DISABLE_ECHO flag into acm_tty_install().
> >  - Change quirks testing into bitwise comparison.
> > Changes for v3:
> >  - Replace quirks testing from init_termios to tty->termios.
> >  - Remove parenthesis for ECHO flag.
> > Changes for v4:
> >  - Drop quirks varible to simplify the patch.
> >  - Move termios operation right after the driver_data has been installed.
> >  - Write general style comment for suppressing initial echoing. 
> > Changes for v5:
> >  - Fix: termios operation right abover the driver_data has been installed.
> >  - Update commit comment about this patch affects the reconnected device
> >    which get the same minor numbers.
> > Changes for v6:
> >  - Update VID/PID:0x0e8d/0x0003 as Mediatek Inc BROM.
> >  - Update VID/PID:0x0e8d/0x2000 as Mediatek Inc Preloader.
> > Changes for v7:
> >  - Keep VID/PID:0x0e8d/0x0003 unchanged because of 2 different UNION
> >    descriptor implementated in Mediatek Inc BROM (MT6589/MT6765).
> 
> Reviewed-by: Johan Hovold <johan@kernel.org>
Acked-by: Oliver Neukum <oneukum@suse.com>

             reply	other threads:[~2018-12-20 15:28 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-20 15:28 Oliver Neukum [this message]
2018-12-20 15:28 ` [PATCH v7] cdc-acm: fix abnormal DATA RX issue for Mediatek Preloader Oliver Neukum
  -- strict thread matches above, loose matches on Subject: below --
2018-12-20 15:19 [v5] " Greg Kroah-Hartman
2018-12-20 15:19 ` [PATCH v5] " Greg Kroah-Hartman
2018-12-19  9:00 [v7] " Johan Hovold
2018-12-19  9:00 ` [PATCH v7] " Johan Hovold
2018-12-19  8:56 [v5] " Oliver Neukum
2018-12-19  8:56 ` [PATCH v5] " Oliver Neukum
2018-12-19  4:11 [v7] " macpaul.lin
2018-12-19  4:11 ` [PATCH v7] " Macpaul Lin
2018-12-19  4:03 [v5] " macpaul.lin
2018-12-19  4:03 ` [PATCH v5] " Macpaul Lin
2018-12-19  3:31 [v5] " Lars Melin
2018-12-19  3:31 ` [PATCH v5] " Lars Melin
2018-12-19  3:16 [v5] " macpaul.lin
2018-12-19  3:16 ` [PATCH v5] " Macpaul Lin
2018-12-19  2:22 [v5] " macpaul.lin
2018-12-19  2:22 ` [PATCH v5] " Macpaul Lin
2018-12-19  0:45 [v5] " Lars Melin
2018-12-19  0:45 ` [PATCH v5] " Lars Melin
2018-12-18 17:48 [v5] " macpaul.lin
2018-12-18 17:48 ` [PATCH v5] " Macpaul Lin
2018-12-18 16:42 [v5] " Lars Melin
2018-12-18 16:42 ` [PATCH v5] " Lars Melin
2018-12-18 15:37 [v6] " macpaul.lin
2018-12-18 15:37 ` [PATCH v6] " Macpaul Lin
2018-12-18 15:19 [v5] " macpaul.lin
2018-12-18 15:19 ` [PATCH v5] " Macpaul Lin
2018-12-18 14:26 [v5] " macpaul.lin
2018-12-18 14:26 ` [PATCH v5] " Macpaul Lin
2018-12-18 13:37 [v5] " Oliver Neukum
2018-12-18 13:37 ` [PATCH v5] " Oliver Neukum
2018-12-18 12:38 [v5] " Johan Hovold
2018-12-18 12:38 ` [PATCH v5] " Johan Hovold
2018-12-18 11:59 [v5] " macpaul.lin
2018-12-18 11:59 ` [PATCH v5] " Macpaul Lin
2018-12-18 11:44 [v4] " Johan Hovold
2018-12-18 11:44 ` [PATCH v4] " Johan Hovold
2018-12-18 11:38 [v4] " macpaul.lin
2018-12-18 11:38 ` [PATCH v4] " Macpaul Lin
2018-12-18 10:54 [v3] " Johan Hovold
2018-12-18 10:54 ` [PATCH v3] " Johan Hovold
2018-12-18 10:41 [v3] " macpaul.lin
2018-12-18 10:41 ` [PATCH v3] " Macpaul Lin
2018-12-18  9:02 [v2] " Johan Hovold
2018-12-18  9:02 ` [PATCH v2] " Johan Hovold
2018-12-18  5:00 [v2] " macpaul.lin
2018-12-18  5:00 ` [PATCH v2] " Macpaul Lin
2018-12-13  3:27 macpaul.lin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1545319724.5084.3.camel@suse.com \
    --to=oneukum@suse.com \
    --cc=andrey.arapov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=larsm17@gmail.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=macpaul.lin@mediatek.com \
    --cc=stable@vger.kernel.org \
    --cc=wsd_upstream@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.