view linux-patch/README @ 89:fb75855a74a9

fc-simtool: select response parsing: show number of records
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 24 Jan 2021 18:03:55 +0000
parents d7a1e7a6d6ba
children 95c2a67e1219
line wrap: on
line source

This directory contains several versions of the Linux kernel ftdi_sio driver
patch that adds support for FreeCalypso DUART28C adapter, i.e., the optional
configuration of DUART28 with boot control outputs.

The version in the orig-202007 directory was produced at the end of 2020-07,
when DUART28 hardware was still being designed; this original version of the
patch was created to test the idea and to prove it working (using a generic
FT2232D board and an oscilloscope), and it was created with the mindset of a
hardware engineer, rather than that of Linux kernel maintainers.  This original
patch version was made against kernel version 4.4.14 (the version used by the
Mother), and it predates all later mainline submission and integration attempts.

A patch series against then-current mainline was submitted to ftdi_sio driver
maintainer Johan Hovold in 2020-09 for inclusion in mainline Linux.  The
preliminary patch adding support for FreeCalypso JTAG+UART USB ID codes was
readily accepted and has since been propagated to several stable kernel branches
(4.4.240, 4.9.240, 4.14.202, 4.19.152, 5.4.72, 5.8.16, 5.9.1 and mainline 5.10),
but this patch by itself does not help in any way with DUART28C support.  The
remaining two patches from the original 2020-09 patch series (a preliminary
patch fixing an oversight in the quirk interface and then the main patch of
interest) were met with resistance, however, and the goal of bringing DUART28C
support into mainline Linux is still in limbo as of 2020-12.

Johan (the ftdi_sio driver maintainer who was the target of our initial pressure
campaign to get the needed driver quirk accepted) has now proposed a generalized
version of Mother Mychaela's original idea; this generalized version is just as
good for our purposes because in the end it still recognizes our custom USB ID
and sets the quirk flag which we require, but it also helps other potential
users who may have similar needs, but who work with "any" serial port rather
than a custom USB ID.  The current version as of this writing of Johan's patch
series implementing his proposed generalized solution is this one:

https://lore.kernel.org/linux-serial/X8iuCXYhOBVMGvXv@localhost/T/

However, the comments in that thread indicate that the maintainers seem intent
on delaying this integration until 5.12 merge window if not even later, thus we
are still months away from any hope of resolution.  Because We The End Users
cannot be expected to put our lives on hold and just sit and wait for kernel
maintainers to get their act together, we need some immediate solution for our
use right now - and the minpatch-* series presented here is our current best
offering for end user purposes.

3 end user patch series versions are presented in minpatch-4.4.14,
minpatch-4.4.240 and minpatch-4.9.240.  4.4.240 and 4.9.240 already include the
preliminary JTAG+UART USB ID code support patch (which serves mainly as an
anchor marking the place where the new DUART28C USB ID code needs to go in
ftdi_sio_ids.h and in the ftdi_sio.c ID code table), but 4.4.14 predates this
patch by a few years, thus minpatch-4.4.14 includes a backport of this
preliminary patch as well.  After this preliminary patch, each minpatch-*
version includes the quirk port_probe patch and the main patch adding DUART28C
support with the needed quirk.  These latter patches are the closest version we
have to what we are hoping to see eventually merged into mainline, and they have
already undergone rounds of revision in response to maintainer Johan's criticism
- but this "minimal patch" version is limited to just the ftdi_sio driver, not
extending into more generic layers, hence the actual quirk flag is implemented
inside ftdi_sio, not fully generalized like it is in the version which we are
hoping to see merged into mainline in future months/years.