usb: serial: handle -EPROTO quietly in generic_read_bulk

If a USB serial device driver, which is built using the generic serial
driver, is unplugged while there is an active program using the device,
it will spam the logs with -EPROTO (71) messages as it attempts to
retry.

Most serial usb drivers (metro-usb, pl2303, mos7840, ...) only output
these messages for debugging.  The generic driver treats these as
errors.

Change the default output for the generic serial driver from error to
debug.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
usb: serial: handle -ENODEV quietly in generic_submit_read_urb

If a USB serial device (e.g. /dev/ttyUSB0) with an active program is
unplugged, an -ENODEV (19) error will be produced after it gives up
trying to resubmit a read.

  usb_serial_generic_submit_read_urb - usb_submit_urb failed: -19

Add -ENODEV as one of the permanent errors along with -EPERM that
usb_serial_generic_submit_read_urb() handles quietly without an error.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: usbmon: fix wording "be reading until"

The usbmon documentation uses "be reading until" which is an uncommon
and confusing wording.  Change it to "read until it" which is more clear.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: usbmon: fix spelling s/unpriviledged/unprivileged/

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: fix wording, "is a", "built"

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: fix heading underlines and capitalization

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: "callsite" should be "call site"

The term "call site" consists of two words, not one.  In code "callsite"
might be an appropriate variable name, but not in documentation.  Fix
all instances in the dynamic debug documentation.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: remove obvious use of text utils

The dynamic debug documentation describes how the
<debugfs>/dynamic_debug/control file can be displayed using cat.
And then goes on to say that standard text utilities can be used.
It should be obvious to anyone who has used cat before that this
can be done, remove it.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: remove obvious spaces example

One example describes how commands can be sent to
<debugfs>/dynamic_debug/control with various combinations
 of tabs or spaces.  If the user sends a malformed command
it will be rejected, there is no need to describe this.
Remove these pointless examples.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: fix "A another" wording

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: remove obvious "cat file > control"

If a command can be echoed and redirected to the control file
it should be obvious that cat can be used to redirect a whole
file of these commands.  Remove this obvious example.

People reading this document want to know how to use
dynamic-debug, not how to use standard Linux utilities.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: fix plural "flags" usage

The plural "flags" was used incorrectly in several places, fix them.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: clean up nullarbor:~ # command examples

Many of the command line examples look they were copied straight
from a terminal and they are preceded with "nullarbor:~ #" which
is distracting.

Clean up the examples by removing the prefix, placing them on one
line where possible, and indenting them with two spaces.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
doc: dynamic-debug: don't use C99 comments for examples

C99 comments are used in many of the examples even though they are not
allowed in Linux [1].  Change them to /* C89 style */.

The comment on line 165 was also shortened to fit withing 80 characters
by changing "yet another" to "another".

  [1]: linux/Documentation/CodingStyle

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
input: cyapa: re-design driver to support multi-trackpad in one driver

In order to support multiple different chipsets and communication protocols
trackpad devices in one cyapa driver, the new cyapa driver is re-designed
with one cyapa driver core and multiple device specific functions component.
The cyapa driver core is contained in this patch, it supplies basic functions
that working with kernel and input subsystem, and also supplies the interfaces
that the specific devices' component can connect and work together with as
one driver.
TEST=test on Chromebooks.

Signed-off-by: Dudley Du <dudl@cypress.com>
input: cyapa: add gen5 trackpad device basic functions support

Based on the cyapa core, add the gen5 trackpad device's basic functions
supported, so gen5 trackpad device can work with kernel input system.
And also based on the state parse interface, the cyapa driver can
automatically determine the attached is gen3 or gen5 protocol trackpad
device, then set the correct protocol to work with the attached
trackpad device.
TEST=test on Chromebooks.

Signed-off-by: Dudley Du <dudl@cypress.com>
input: cyapa: add power management interfaces support for the device

Add suspend_scanrate_ms power management interfaces in device's
power group, so users or applications can control the power management
strategy of trackpad device as their requirements.
TEST=test on Chromebooks.

Signed-off-by: Dudley Du <dudl@cypress.com>
input: cyapa: add runtime power management interfaces support for the device

Add runtime_suspend_scanrate_ms power management interfaces in device's
power group, so users or applications can control the runtime power
management strategy of trackpad device as their requirements.
TEST=test on Chromebooks.

Signed-off-by: Dudley Du <dudl@cypress.com>
input: cyapa: add sysfs interfaces support in the cyapa driver

Add device's basic control and features supported in cyapa driver through
sysfs file system interfaces. These interfaces are commonly used in
pre- and after production, for trackpad device state checking, managing
and firmware image updating.
These interfaces including mode, firmware_version and product_id interfaces
for reading firmware version and trackpad device product id values,
and including update_fw interface to command firmware image update
process. Also including baseline and calibrate interfaces for
reading and checking trackpad device's sensors states.
TEST=test on Chromebooks.

Signed-off-by: Dudley Du <dudl@cypress.com>
input: cyapa: add gen3 trackpad device firmware update function support

Add firmware image update function supported for gen3 trackpad device,
it can be used through sysfs update_fw interface.
TEST=test on Chromebooks.

Signed-off-by: Dudley Du <dudl@cypress.com>