Okash Khawaja [Mon, 15 May 2017 17:45:37 +0000 (18:45 +0100)]
staging: speakup: flush tty buffers and ensure hardware flow control
This patch fixes the issue where TTY-migrated synths would take a while
to shut up after hitting numpad enter key. When calling synth_flush,
even though XOFF character is sent as high priority, data buffered in
TTY layer is still sent to the synth. This patch flushes that buffered
data when synth_flush is called.
It also tries to ensure that hardware flow control is enabled, by
setting CRTSCTS using tty's termios.
Reported-by: John Covici <covici@ccs.covici.com> Signed-off-by: Okash Khawaja <okash.khawaja@gmail.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Okash Khawaja [Mon, 15 May 2017 17:45:36 +0000 (18:45 +0100)]
staging: speakup: migrate apollo, ltlk, audptr, decext, dectlk and spkout
This patch simply uses the changes introduced in previous patches and migrates
apollo, ltlk, audptr, decext, spkout and dectlk. Migrations are straightforward
function pointer updates.
Okash Khawaja [Mon, 15 May 2017 17:45:35 +0000 (18:45 +0100)]
staging: speakup: add send_xchar, tiocmset and input functionality for tty
This patch adds further TTY-based functionality, specifically implementation
of send_xchar and tiocmset methods, and input. send_xchar and tiocmset
methods simply delegate to corresponding TTY operations.
For input, it implements the receive_buf2 callback in tty_ldisc_ops of
speakup's ldisc. If a synth defines read_buff_add method then receive_buf2
simply delegates to that and returns.
For spk_ttyio_in, the data is passed from receive_buf2 thread to
spk_ttyio_in thread through spk_ldisc_data structure. It has following
members:
- char buf: represents data received
- struct semaphore sem: used to signal to spk_ttyio_in thread that data
is available to be read without having to busy wait
- bool buf_free: this is used in comination with mb() calls to syncronise
the two threads over buf
receive_buf2 only writes to buf if buf_free is true. The check for buf_free
and writing to buf are separated by mb() to ensure that spk_ttyio_in has read
buf before receive_buf2 writes to it. After writing, it ups the semaphore to
signal to spk_ttyio_in that there is now data to read.
spk_ttyio_in waits for data to read by downing the semaphore. Thus when
signalled by receive_buf2 thread above, it reads from buf and sets buf_free
to true. These two operations are separated by mb() to ensure that
receive_buf2 thread finds buf_free to be true only after buf has been read.
After that spk_ttyio_in calls tty_schedule_flip for subsequent data to come
in through receive_buf2.
Okash Khawaja [Mon, 15 May 2017 17:45:34 +0000 (18:45 +0100)]
staging: speakup: migrate acntsa, bns, dummy and txprt to ttyio
This changes the above five synths to TTY-based comms. They were chosen as a
first pass because their serial comms are straightforward, i.e. they don't use
serial input and don't do internal port knocking.
Okash Khawaja [Mon, 15 May 2017 17:45:33 +0000 (18:45 +0100)]
staging: speakup: add tty-based comms functions
This adds spk_ttyio.c file. It contains a set of functions which implement
those methods in spk_synth struct which relate to sending bytes out using
serial comms. Implementations in this file perform the same function but
using TTY subsystem instead. Currently synths access serial ports, directly
poking standard ISA ports by trying to steal them from serial driver. Some ISA
cards actually need this way of doing it, but most other synthesizers don't,
and can actually work by using the proper TTY subsystem through a new N_SPEAKUP
line discipline. So this adds the methods for drivers to switch to accessing
serial ports through the TTY subsystem, whenever appropriate.
Okash Khawaja [Mon, 15 May 2017 17:45:32 +0000 (18:45 +0100)]
tty: export tty_open_by_driver
This exports tty_open_by_driver so that it can be called from other
places inside the kernel. The checks for null file pointer are based on
Alan Cox's patch here:
http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1215095.html.
Description below is quoted from it:
"[RFC] tty_port: allow a port to be opened with a tty that has no file handle
Let us create tty objects entirely in kernel space. Untested proposal to
show why all the ideas around rewriting half the uart stack are not needed.
With this a kernel created non file backed tty object could be used to handle
data, and set terminal modes. Not all ldiscs can cope with this as N_TTY in
particular has to work back to the fs/tty layer.
The tty_port code is however otherwise clean of file handles as far as I can
tell as is the low level tty port write path used by the ldisc, the
configuration low level interfaces and most of the ldiscs.
Currently you don't have any exposure to see tty hangups because those are
built around the file layer. However a) it's a fixed port so you probably
don't care about that b) if you do we can add a callback and c) you almost
certainly don't want the userspace tear down/rebuild behaviour anyway.
This should however be sufficient if we wanted for example to enumerate all
the bluetooth bound fixed ports via ACPI and make them directly available.
It doesn't deal with the case of a user opening a port that's also kernel
opened and that would need some locking out (so it returned EBUSY if bound
to a kernel device of some kind). That needs resolving along with how you
"up" or "down" your new bluetooth device, or enumerate it while providing
the existing tty API to avoid regressions (and to debug)."
The exported funtion is used later in this patch set to gain access to tty_struct.
Jandy Gou [Tue, 16 May 2017 08:28:09 +0000 (16:28 +0800)]
staging: fbtft: fix sparse warning
fix the following sparse warning:
drivers/staging/fbtft/fbtft-io.c:74:29: warning: incorrect type in assignment
(different base types) drivers/staging/fbtft/fbtft-io.c:74:29: expected
unsigned long long [unsigned] [long] [long long] [usertype] <noident>
drivers/staging/fbtft/fbtft-io.c:74:29: got restricted __be64 [usertype]
<noident>
Haim Daniel [Mon, 15 May 2017 14:10:18 +0000 (17:10 +0300)]
drivers/staging: refactor dgnc tty registration.
-remove duplicate tty allocation code for serial and printer drivers.
-add missing tty c_ispeed and c_ospeed initialization to 9600.
-fix sparse warning: too long initializer-string for array of char.
This patch was only unit tested due to lack of the actual hardware.
Signed-off-by: Haim Daniel <haimdaniel@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ricardo Silva [Mon, 15 May 2017 09:18:14 +0000 (10:18 +0100)]
staging: vme: Use BIT macro for bit definitions
Use the BIT(n) macro instead of '(1 << n)' in definitions where the bit
semantics clearly applies.
Fixes true positive "Prefer using the BIT macro" checks reported by
checkpatch.
Some of these checks are still triggering on definitions using
'(1 << n)', namely for PIO2_CNTR_SC_DEV1, PIO2_CNTR_RW_LSB and
PIO2_CNTR_MODE1. Leave them be, as the context there is more of a
"multi-bit field value" ((val << n), where for some cases 'val' happens
to be 1) rather than a "single bit" (1 << n), so keeping the value as is
in the code makes it more readable that using a combination of BIT
macros.
Janusz Lisiecki [Mon, 15 May 2017 18:55:46 +0000 (20:55 +0200)]
staging: ks7010: avoid CamelCase: local variables in ks_hostif.c
Replace CamelCase local variables' name with underscores to comply
with the standard kernel coding style.
Changed:
- LinkSpeed
- TransmittedFrameCount
- ReceivedFragmentCount
- FailedCount
- FCSErrorCount
Signed-off-by: Janusz Lisiecki <janusz.lisiecki@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Suniel Mahesh [Fri, 12 May 2017 15:46:35 +0000 (21:16 +0530)]
staging: rtl8192u: Fix type mismatch warnings reported by sparse
Mk16_le() is an inline function returning le16_to_cpu()
which is causing type mismatch warnings. Removed Mk16_le() and
replaced it with le16_to_cpu() with appropriate argument type as
suggested by Greg K-H.
staging: speakup: make input functionality swappable
This moves functions which take input from external synth, into struct
spk_io_ops. The calling code then uses serial implementation of those methods
through spk_io_ops. That way we can add a parallel TTY-based implementation and
simply replace serial with TTY. That is what the next patch in this series does.
speakup_decext.c has get_last_char function which reads the most recent
available character from the synth. This patch changes that by defining
read_buff_add callback method of spk_syth and letting that update the last_char
global character read from the synth. read_buff_add is called from ISR, so
there is a possibility for last_char to be stale. Therefore it is marked as
volatile. It also pulls a repeated get_index implementation into synth.c, to
be used as a utility function.
Arnd Bergmann [Sun, 14 May 2017 06:36:08 +0000 (09:36 +0300)]
staging: ccree: remove unused function argument
"gcc -Wunused" warns about one argument being assigned but not used:
drivers/staging/ccree/ssi_cipher.c: In function 'ssi_blkcipher_complete':
drivers/staging/ccree/ssi_cipher.c:747:41: error: parameter 'info' set but not used [-Werror=unused-but-set-parameter]
We can simply drop that argument here and in its callers.
Andrey Shvetsov [Fri, 12 May 2017 10:59:58 +0000 (12:59 +0200)]
staging: most: allocate private net_dev_context with the alloc_netdev
This moves the allocation of the net_dev to the aim_probe_channel() and
uses the parameter sizeof_priv of the function alloc_netdev to reserve
the space for the struct net_dev_context.
As a side effect, the nd->dev always points to the existing net_dev.
Andrey Shvetsov [Fri, 12 May 2017 10:59:54 +0000 (12:59 +0200)]
staging: most: remove dependency on networking-aim
The modules hdm-usb and hdm-dim2 depend on the module aim-network, because
they use the function most_deliver_netinfo that it exports.
To remove this dependency, this patch replaces the call of the function
most_deliver_netinfo with the call of the function that is the parameter
'on_netinfo' of the function request_netinfo.
Since the networking-aim checks the availability of the callback
request_netinfo, this patch removes the empty callback request_netinfo
from the i2c-hdm.
Andrey Shvetsov [Fri, 12 May 2017 10:59:50 +0000 (12:59 +0200)]
staging: most: net: use dormant state
This replaces the call of wait_for_completion in case of an invalid MAC
address in the function most_nd_open() with the dormant state of the
network device.
As a side effect, opening the network device cannot fail anymore.
The function most_nd_stop is only called by successful return from the
function most_nd_open, so the channels_opened is always true in the
function most_nd_stop.
The functions aim_resume_tx_channel and aim_rx_data are only called
after successful most_start_channel in the function most_nd_open, so the
channels_opened is always true in the functions aim_resume_tx_channel
and aim_rx_data.
staging: wlan-ng: prism2mgmt.c: fixed a double endian conversion before calling hfa384x_drvr_setconfig16, also fixes relative sparse warning
staging: wlan-ng: prism2mgmt.c: This patches fixes a double endian conversion.
cpu_to_le16() was called twice first in prism2mgmt_scan and again inside
hfa384x_drvr_setconfig16() for the same variable, hence it was swapped
twice. Incidentally, it also fixed the following sparse warning:
drivers/staging/wlan-ng/prism2mgmt.c:173:30: warning: incorrect type in assignment (different base types)
drivers/staging/wlan-ng/prism2mgmt.c:173:30: expected unsigned short [unsigned] [usertype] word
drivers/staging/wlan-ng/prism2mgmt.c:173:30: got restricted __le16 [usertype] <noident>
Unfortunately, only compile tested.
Signed-off-by: Andrea della Porta <sfaragnaus@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Target device is little endian. Host interface data structures used
for building frames to pass to target device should use little endian
data types. All u32 structure members in ks_hostif.h need to be
changed to __le32.
Change all u16 data types in host interface structures to be
__le32.
Signed-off-by: Tobin C. Harding <me@tobin.cc> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Target device is little endian. Host interface data structures used
for building frames to pass to target device should use little endian
data types. All u16 structure members in ks_hostif.h need to be
changed to __le16, Sparse can then be used to make sure we update all
code that touches these data.
Change all u16 data types in host interface structures to be
__le16. Update all code that touches modified data types. Check using
Sparse.
Signed-off-by: Tobin C. Harding <me@tobin.cc> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Thibaut Robert [Tue, 9 May 2017 19:46:50 +0000 (21:46 +0200)]
staging: lustre: remove unnecessary braces
This patch fixes checkpatch warnings: "WARNING: braces {} are not
necessary for single statement blocks" and "WARNING: braces {} are not
necessary for any arm of this statement".
Signed-off-by: Thibaut Robert <thibaut.robert@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Matthew Giassa [Wed, 10 May 2017 02:17:27 +0000 (19:17 -0700)]
staging: android: ion: Resolve minor indentation issue.
Resolving a minor checkpatch/indentation issue in ion_carveout_heap.c,
ie:
drivers/staging/android/ion/ion_carveout_heap.c
-----------------------------------------------
CHECK: Alignment should match open parenthesis
+static phys_addr_t ion_carveout_allocate(struct ion_heap *heap,
+ unsigned long size)
Signed-off-by: Matthew Giassa <matthew@giassa.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Janusz Lisiecki [Sat, 29 Apr 2017 20:58:47 +0000 (22:58 +0200)]
staging: ks7010: avoid CamelCase: reqIEs_size and respIEs_size
Replace CamelCase association_request_t and association_response_t
struct field names with underscores to comply with the standard kernel
coding style.
Signed-off-by: Janusz Lisiecki <janusz.lisiecki@gmail.com> Reviewed-by: Tobin C. Harding <me@tobin.cc> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Replace CamelCase struct field names with underscores to comply
with the standard kernel coding style.
Changed:
- FhParms_t
- DsParms_t
- CfParms_t
- IbssParms_t
- ErpParams_t
Signed-off-by: Janusz Lisiecki <janusz.lisiecki@gmail.com> Reviewed-by: Tobin C. Harding <me@tobin.cc> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Replace CamelCase struct field names with underscores to comply
with the standard kernel coding style.
Changed:
- dwellTime
- hopSet
- hopPattern
- hopIndex
Signed-off-by: Janusz Lisiecki <janusz.lisiecki@gmail.com> Reviewed-by: Tobin C. Harding <me@tobin.cc> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging/ks7010: Fix type assignment for struct hostif_hdr
Sparse spits out a warnings about __le16 and unsigned short assignment.
Change the type of size and event members of struct hostif_hdr
to __le16 and correct conversion to the proper cpu type.