[SRU OEM-B][PATCH 00/10] Support Intel Atom (Baytrail-I) HS-UART serdev slaves over tty

Shrirang Bagul shrirang.bagul at canonical.com
Mon May 7 10:56:29 UTC 2018

BugLink: http://bugs.launchpad.net/bugs/1769610

On systems using Intel Atom (Baytrail-I) SoC's, slave devices connected on
HSUART1/2 ports are described by the ACPI BIOS as virtual hardware using
HID's INT3511/INT3512 [1].

As a consequence, HW manufacturers have complete freedom to install any
devices on-board as long as they can be accessed over serial tty
interface. Once such device is Dell Edge 3002 IoT Gateway which sports
ZigBee & GPS devices on the HS-UART ports 1 & 2 respectively.

In kernels before the introduction of 'Serial Device Bus (serdev)'
subsystem, these devices were accessible using /dev/ttySx nodes. But,
kernels since 4.15 can no longer do so.

Post 4.15, with CONFIG_SERIAL_DEV_BUS=y, serdev port controller driver
handles the enumeration for the slaves connected on these ports. Also,
/dev/ttySx device nodes for these ports are no longer exposed to the

This patch implements a new driver which binds to the ACPI serdev slaves
enumerated by the serdev port controller and exposes /dev/ttyHSx device
nodes which the userspace applications can use. Otherwise, upgrades to 4.15
or higher kernels would certainly render these devices unusable.

Considering serdev is new and evolving, this is one approach to solving
the problem at hand. An obvious drawback is the change in the tty device
node name from ttySx => ttyHSx, which means userspace applications have to
be modified (I know that this is strongly discouraged).

This driver has been submitted upstream and is under review. This issue has
been identified as a regression in 4.15 and multiple solutions are being
explored. Meanwhile, to support customer and maintain release schedule,
this driver needs to be in Ubuntu 4.15 based kernels.

The impact is limited to systems based on Intel Atom E38XX (Baytrail-I)

More info:

This patch is based on:
git://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-oem/+git/bionic oem-next

[1] Enabling Multi-COM Port for Microsoft Windows OS 8.1 & 10 / IoT Core [Sec. 4.1]

Andrey Smirnov (2):
  serdev: Make .remove in struct serdev_device_driver optional
  serdev: Introduce devm_serdev_device_open()

Johan Hovold (5):
  serdev: ttyport: release tty lock sooner on open
  serdev: ttyport: ignore carrier detect to avoid hangups
  serdev: ttyport: do not used keyed wakeup in write_wakeup
  serdev: do not generate modaliases for controllers
  serdev: only match serdev devices

Shrirang Bagul (2):
  UBUNTU: SAUCE: (no-up) Support HS-UART serdev slaves over tty

Ulrich Hecht (1):
  serdev: add method to set parity

 Documentation/driver-model/devres.txt  |   3 +
 debian.oem/config/config.common.ubuntu |   1 +
 drivers/misc/Kconfig                   |  11 ++
 drivers/misc/Makefile                  |   1 +
 drivers/misc/intel-hsuart-serdev.c     | 338 +++++++++++++++++++++++++++++++++
 drivers/tty/serdev/core.c              | 123 ++++++++----
 drivers/tty/serdev/serdev-ttyport.c    |  32 +++-
 include/linux/serdev.h                 |  11 ++
 8 files changed, 478 insertions(+), 42 deletions(-)
 create mode 100644 drivers/misc/intel-hsuart-serdev.c


More information about the kernel-team mailing list