Commit Graph

817 Commits

Author SHA1 Message Date
Eric Holmberg
729d851d88 tty: n_smux: Reset Power Collapse Enabled Flag
Reset the power-collapse-enabled flag to allow renegotiation when the
remote modem restarts.

Without this change, the external modem will boot assuming that power
collapse is disabled, but the Apps will have the previous state cached
and may not send the proper power-collapse-enabled handshaking.

Change-Id: I58acbfa51b60fde23d328239fd6b330bf0bcc63f
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
2013-02-27 18:11:29 -08:00
Eric Holmberg
9d5c6fa6ef tty: n_smux: Change external modem name for SSR
The modem driver that handles subsystem restart uses the name
"external_modem" for the external modem.

Change-Id: I4a8199bd259b1aa2ee9310fc29c55c9db4f4cbab
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
2013-02-27 18:11:28 -08:00
Eric Holmberg
cd257e0144 tty: n_smux: Delete power command from list
Remove power command from list before deleting the packet.

Without this fix, if there is a pending power command during a subsystem
restart or a line-discipline unload, then the code will end up in an
infinite loop until the watchdog kicks in and an access after-free check
fails.

Change-Id: Ib8f24598ce1273411a2674d5d61634ffb1944bb1
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
2013-02-27 18:11:28 -08:00
Stepan Moskovchenko
bf4a211360 msm_serial_hs_lite: Increase TX path timeout
Increase the HSL TX path timeout to account for the fact
that the TX buffer size is specified in words rather than
bytes, and that some implementations may have a larger TX
queue size than what was assumed in the original timeout
calculation.

Change-Id: Ie459a2fcdd8a85c2e97ff3a87d60a9c30ce50ec3
CRs-Fixed: 359256
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
2013-02-27 18:11:28 -08:00
Eric Holmberg
329b84d808 tty: n_smux: Add support for broadcast logical channel ID
Add support for broadcast logical channel ID used with the dedicated
power-control commands.

Without this support, power commands sent on the broadcast channel may
get dropped which is currently only a test case issue.

Change-Id: I798ed8a315b3f864fa9afa20ef073b2ab5cab293
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
2013-02-27 18:11:27 -08:00
Eric Holmberg
eafae74af0 tty: n_smux: Update power logging
Add dedicated power logging macro to aid in power-related debugging.

Change-Id: I21d8c8b55a8d7c0645d1241773cb8127a48c58c4
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
2013-02-27 18:11:26 -08:00
Eric Holmberg
416554681d tty: n_smux: Remove redundant variable set
Remove duplicate setting of the pkt.flags field which is harmless, but
redundant.

Change-Id: I6d2579216a03c4ca5ca3b06092ed8a9208d3e891
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
2013-02-27 18:11:26 -08:00
David Brown
51a2395b30 tty: hvc_dcc: Remove redundant license clause
Remove the superfluous FSF address from the license text.

Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:51 -08:00
Mayank Rana
49096c9cda serial_core: Add uart_change_pm in resume path
UART clock rate is set to zero while disabling the uart clock for
subsystem restart feature. It is required to set the uart clock rate
to 7372800 Hz while enabling UART clock. Hence use uart_change_pm in
serial core to call msm_hsl_power api to achieve the same.

Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:50 -08:00
David Brown
46fdf62469 tty: serial: Add MSM "LITE" UART driver
Non DMA console-type serial driver for the MSM's HS uart, being run in
legacy mode.

Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:49 -08:00
David Brown
a97c946614 tty: serial: Add MSM HS serial driver
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:48 -08:00
David Brown
e1c99a1e58 tty: serial: Remove MSM HS serial driver
Out of date driver that has been rewritten

Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:47 -08:00
Brian Swetland
b5b3db3704 [ARM] msm_serial_debugger: fiq-mode serial debugger support
This provides the ability to handle simple debug commands from
an fiq-context uart based debugger.
kmsg - dump printk log
pc - show current PC and mode
regs - show current registers

Other commands are handed off to an IRQ handler which calls the
kernel_debugger() routine provided by KERNEL_DEBUGGER_CORE.

Signed-off-by: Brian Swetland <swetland@google.com>

[ARM] msm_serial_debugger: Better interoperability with shared serial pins.

Introduce debug_enable, debugger will not echo back RX characters until
a CR is received. Other modules can turn off debug_enable via
msm_serial_debug_enable() interface.

Flush when doing TX in FIQ context.
Turn off interrupts and flush when doing TX in IRQ context.

Send a \r with every \n sent by the kernel debugger when processing
console messages.

Signed-off-by: Brian Swetland <swetland@google.com>

[ARM] msm_serial_debugger: irqs command to dump irq count

Signed-off-by: Brian Swetland <swetland@google.com>

[ARM] msm: msm_serial_debugger: Add irq status to 'irqs' fiq debug command.

Also clean up some alignment

Signed-off-by: Nick Pelly <npelly@google.com>

[ARM] msm: fiq_debugger: Add ability to enable / disable debugger at runtime

Signed-off-by: San Mehat <san@android.com>

[ARM] msm_serial_debugger: Support 19.2MHz clock on scorpion.

Signed-off-by: Arve Hjønnevåg <arve@android.com>

[ARM] msm_serial_debugger: Add wakeup irq and disable uart clock when idle

The serial debugger is now inactive by default so we can enter low power
modes. Hit enter twice to activate it for 5 seconds.

Signed-off-by: Arve Hjønnevåg <arve@android.com>

[ARM] msm_serial_debugger: Keep uart clock on when CONFIG_MSM_SERIAL_DEBUGGER_CONSOLE is enabled

Change-Id: I8c4e3c77d429a8f6fde068672d51e750e0f14c1b
Signed-off-by: Arve Hjønnevåg <arve@android.com>

msm_serial_debugger: fix to build without CONFIG_PREEMPT

Change-Id: I71e115a26142cccd809aa979dfa9541f842ae680

[ARM] msm: serial_debugger: move the clock disable to after we enable the fiq

If the uart fifo is not empty when we enable the fiq, the handler will try to
empty it and hang since the clock disabled prior to enabling the fiq.

Signed-off-by: Dima Zavin <dima@android.com>

[ARM] msm_serial_debugger: Add option to keep serial debugger active from boot.

If msm_serial_debugger.no_sleep=1 is added to the kernel command line, or
MSM_SERIAL_DEBUGGER_NO_SLEEP is selected in the config, the serial debugger
is activated on boot and stays active until it receives a sleep command.

Change-Id: Ibf84435af8203360ee808fd903dd6322cf5d9d17
Signed-off-by: Arve Hjønnevåg <arve@android.com>

[ARM] msm_serial_debugger: Fix startup when no_sleep is set

Change-Id: I7e55567d723e30d3e998d625aa7a53f896b55d61

[ARM] msm_serial_debugger: Add option to never disable wakeup IRQ.

This works better if the radio ignores the uart clock request while
power collapsed.

Change-Id: Ib0989e714e883b3667c9ecc4cfd1ebfe014a35df
Signed-off-by: Arve Hjønnevåg <arve@android.com>

[ARM] msm: Fix register dump in fiq debugger

Change-Id: Iff5cd48291c9b09aace30220c4229c157a7db1d0
Signed-off-by: Arve Hjønnevåg <arve@android.com>

[ARM] msm_serial_debugger: Add some debugger commands

Add allregs to dump registers for all modes.
Add bt to get a stackstrace.

Change-Id: Ia85e72b6c8243eba38a04cf4f6cc9cba5342a6de
Signed-off-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:46 -08:00
David Brown
da60d18f87 tty: serial: Add msm non-dma UART driver
Snapshot of the Qualcomm UART driver as of
75c34ca1b4e69e96921e4153dfa9d399e5b9d2e8.

Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:45 -08:00
David Brown
0f8ea79443 msm: serial: Remove msm serial driver
Out of date driver that has been rewritten.

Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:45 -08:00
Eric Holmberg
89e04ba097 tty: n_smux: Add Dedicated Power Control Queue
The current design uses the existing channel queues for sending power
commands along with a command filter in the TX worker that always sends
all command messages for queues as long as the TTY UART link is up.
This can allow open and close events to be sent between a request to
power down the link and before the ACK has been received that actually
powers down the link.

Update the implementation to add a dedicated control channel for
power-control commands and bytes.  All power commands and bytes are now
sent by the TX worker that properly prioritizes the power commands over
logical channel commands.

CRs-Fixed: 369044
Change-Id: I05c080885c79c3510d02cc360bdfe879d68a962c
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:43 -08:00
Eric Holmberg
fd97f18e5f tty: n_smux: Add support for SMUX subsystem restart
Support subsystem restart for SMUX which includes being able to load and
unload the SMUX TTY Line Discipline.

The TTY port is shared between SMUX and memory dump collection which
requires support for gracefully disconnecting after a remote modem
crash and then reconnect after the modem has been rebooted.

CRs-Fixed: 368263
Change-Id: I0fea4c5f0f13c88282f33a7677ac5fd16dc690d9
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:42 -08:00
Eric Holmberg
760045e36d tty: n_smux: Add exponential backoff for RX buffer failures
If a client is unable to allocate a buffer for an incoming packet, the
current software retries once without a delay and then drops the packet.
This causes issues for some clients that use flip buffers for processing
RX data.

This change changes the get_rx_buffer callback failure handling to do an
exponential-backoff retry giving the client time to free up a buffer for
processing.

Change-Id: I3284824a7d5a1d8a03314eebdb4488aaf560440c
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:41 -08:00
Eric Holmberg
36d935bfaa tty: n_smux: Update power-collapse-enabled debug message
Only print power-collapse-enabled message when it is first enabled.

Change-Id: I4b645a0eb345f03762fc1e44eaf953511937db56
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:40 -08:00
Eric Holmberg
522a36e965 tty: n_smux: Add RX workqueue to reduce locking
To prevent multiple RX operations from overlapping, locking is currently
used during the entire RX operation which also includes calling the
client get_rx_buffer callback in atomic context.

To reduce locking, the RX processing has been moved to a single-threaded
workqueue which ensures serialization of the RX operations.  This
minimizes locking requirements and eliminates locking around
get_rx_buffer allowing the client to use GFP_KERNEL instead of
GFP_ATOMIC for memory allocation.

Change-Id: Ib87523191aa77f899fadb7667def58d94579c547
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:39 -08:00
Eric Holmberg
d38c35a6ca tty: n_smux: Remove unused power bit
Remove power control bit that is no longer used and is no longer part of
the SMUX protocol.

Change-Id: I727eb7d848d5298c146919f2299a86d17643253f
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:39 -08:00
Eric Holmberg
65dfb245ce tty: n_smux: Fix scheduling while atomic issue for ldisc open/close
Unlock spinlock when calling platform_device functions during line
discipline (ldisc) loading an unloading.

This fixes a potential scheduling while atomic condition if the platform
device code needs to allocate memory.

Change-Id: I7dbf15dc62b2276393272392a038c1d846ea2419
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:38 -08:00
Eric Holmberg
c620def47d n_smux: smux_ctl: Disable local loopback
For development, the local loopback mode was used.  Now that
the full system is ready, disable loopback mode to enable
communication with the remote system.

Change-Id: I24bee29b3fa41690ccbaf8992ecb3cb166dc3ffc
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:37 -08:00
Eric Holmberg
01d77d4834 n_smux: smux_ctl: Userspace character device interface for SMUX
QMUXD from user-space will use this interface to communicate
control plane QMI messages between APPs and QSC modem in Fusion 4.

Change-Id: I2f51f6927a6f92b106548d22c3965575d4468d5a
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
2013-02-25 11:32:36 -08:00
Eric Holmberg
d68384d72e tty: n_smux: Add SMUX TTY Line Discipline Driver
Add new Serial Multiplexer (SMUX) driver.

This driver multiplexes multiple logical channels over a single
physical HSUART channel using the TTY Line Discipline framework.
This driver will be used in Fusion 4 for control plane, data plane
and DIAG traffic between Application processor and QSC modem.

Change-Id: Ibecf6cea872f5baf11fb93ded6124243a37a2085
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
Signed-off-by: Angshuman Sarkar <angshuman@codeaurora.org>
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:32:35 -08:00
Chiranjeevi Velempati
ef4155d55d tty: Allow RI, DSR and CTS modem status bits in tiocmset
Allow modem status bits like RI, DSR and CTS in tiocmset. TTY drivers,
for example USB function serial driver, which talks to DCE on behalf
DTE and running in DCE are interested in these bits.

CRs-fixed: 300912
Change-Id: I322bb4ffe546f0bead5576faa0e62ebbc57214bb
Signed-off-by: Chiranjeevi Velempati <cvelempa@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:29:21 -08:00
Colin Cross
5500e4fab2 Merge commit 'v3.4' into android-3.4 2012-05-25 13:56:28 -07:00
Alan Cox
eea41aee2b tty: Fix LED error return
3.4-rc introduced a regression when setting the LEDS. We do the right thing
but then return an error code.

Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=43144
Reported-by: Christian Casteyde
Signed-off-by: Alan Cox <alan@linux/intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-14 10:43:24 -07:00
Colin Cross
f02fac6330 Merge commit 'v3.4-rc6' into android-3.4
Conflicts:
	arch/arm/mm/cache-l2x0.c
	arch/arm/mm/mmu.c

Change-Id: If4f371a21c052fa597d107c44b128a093e4a8b91
2012-05-07 18:20:34 -07:00
Linus Torvalds
c89ff23960 Merge tag 'tty-3.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull a TTY fix from Greg Kroah-Hartman:
 "This is a deadlock bugfix that was easy to hit, and that the vt layer
  lock rework got wrong, so it reverts the logic back to the way it was
  in 3.3 and earlier kernels to prevent problems."

* tag 'tty-3.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  vt: Fix deadlock on scroll-lock
2012-05-02 13:47:49 -07:00
Alan Cox
84f904ecd3 vt: Fix deadlock on scroll-lock
Fixing the locking accidentally replaced a race in the scroll
lock handling with a deadlock. Turn it back into a race for
now.

The basic problem is that there are two paths into the tty
stop/start helpers. One via the tty layer ^S/^Q handling
where we need to take the kbd_event_lock and one via the
special keyboard handler for fn_hold where we already hold
it. Probably we need to split out into a separate LED lock
but for now just go back to the race as it's a bit close
to release.

Reported-by: Clemens Ladisch <clemens@ladisch.de>
Cc: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-05-01 14:01:28 -04:00
Larry Finger
810b4de25e tty/serial/pmac_zilog: Fix "nobody cared" IRQ message
Following commit a79dd5a titled "tty/serial/pmac_zilog: Fix suspend & resume",
my Powerbook G4 Titanium showed the following stack dump:

[   36.878225] irq 23: nobody cared (try booting with the "irqpoll" option)
[   36.878251] Call Trace:
[   36.878291] [dfff3f00] [c000984c] show_stack+0x7c/0x194 (unreliable)
[   36.878322] [dfff3f40] [c00a6868] __report_bad_irq+0x44/0xf4
[   36.878339] [dfff3f60] [c00a6b04] note_interrupt+0x1ec/0x2ac
[   36.878356] [dfff3f80] [c00a48d0] handle_irq_event_percpu+0x250/0x2b8
[   36.878372] [dfff3fd0] [c00a496c] handle_irq_event+0x34/0x54
[   36.878389] [dfff3fe0] [c00a753c] handle_fasteoi_irq+0xb4/0x124
[   36.878412] [dfff3ff0] [c000f5bc] call_handle_irq+0x18/0x28
[   36.878428] [deef1f10] [c000719c] do_IRQ+0x114/0x1cc
[   36.878446] [deef1f40] [c0015868] ret_from_except+0x0/0x1c
[   36.878484] --- Exception: 501 at 0xf497610
[   36.878489]     LR = 0xfdc3dd0
[   36.878497] handlers:
[   36.878510] [<c02b7424>] pmz_interrupt
[   36.878520] Disabling IRQ #23

From an E-mail exchange about this problem, Andreas Schwab noticed a typo
that resulted in the wrong condition being tested.

The patch also corrects 2 typos that incorrectly report why an error branch
is being taken.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-04-30 10:59:58 +10:00
Colin Cross
957265bd4f Merge commit 'v3.4-rc4' into android-3.4 2012-04-27 14:03:45 -07:00
Julia Lawall
d3a7b83f86 drivers/tty/amiserial.c: add missing tty_unlock
tty_unlock is used on all other exits from the function.

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Acked-by: Jiri Slaby <jslaby@suse.cz>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-19 19:15:35 -07:00
Colin Cross
ab2965eefe Merge commit 'v3.4-rc3' into android-3.4
Conflicts:
	drivers/staging/android/lowmemorykiller.c

Change-Id: Ia3ffcfc702e28c4fce0e91b363f4afd5f1c40306
2012-04-19 14:42:22 -07:00
Tomoya MORINAGA
af6d17cdc8 pch_uart: Fix dma channel unallocated issue
This driver anticipates pch_uart_verify_port() is not called
during installation.
However, actually pch_uart_verify_port() is called during
installation.
As a result, memory access violation occurs like below.

0. initial value: use_dma=0
1. starup()
    - dma channel is not allocated because use_dma=0
2. pch_uart_verify_port()
    - Set use_dma=1
3. UART processing acts DMA mode because use_dma=1
     - memory access violation occurs!

This patch fixes the issue.

Solution:
Whenever pch_uart_verify_port() is called and then
dma channel is not allocated, the channel should be allocated.

Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-18 15:19:50 -07:00
Alexander Shiyan
7a6fbc9a88 ARM: clps711x: serial driver hungs are a result of call disable_irq within ISR
Since 2.6.30-rc1 clps711x serial driver hungs system. This is a result
of call disable_irq from ISR. synchronize_irq waits for end of interrupt
and goes to infinite loop. This patch fix this problem.

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-18 15:19:50 -07:00
Linus Torvalds
f4f9c1ac78 Merge tag 'tty-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty and serial fixes from Greg KH:
 "Here are some tty and serial fixes for 3.4-rc2.

  Most important here is the pl011 fix, which has been reported by about
  100 different people, which means more people use it than I expected
  :)

  There are also some 8250 driver reverts due to some problems reported
  by them.  And other minor fixes as well.

  Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

* tag 'tty-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  pch_uart: Add Kontron COMe-mTT10 uart clock quirk
  pch_uart: Fix MSI setting issue
  serial/8250_pci: add a "force background timer" flag and use it for the "kt" serial port
  Revert "serial/8250_pci: setup-quirk workaround for the kt serial controller"
  Revert "serial/8250_pci: init-quirk msi support for kt serial controller"
  tty/serial/omap: console can only be built-in
  serial: samsung: fix omission initialize ulcon in reset port fn()
  printk(): add KERN_CONT where needed in hpet and vt code
  tty/serial: atmel_serial: fix RS485 half-duplex problem
  tty: serial: altera_uart: Check for NULL platform_data in probe.
  isdn/gigaset: use gig_dbg() for debugging output
  omap-serial: Fix the error handling in the omap_serial probe
  serial: PL011: move interrupt clearing
2012-04-12 15:36:33 -07:00
San Mehat
5188eeeaa6 serial_core: Add wake_peer uart operation
Add wake_peer which is called before starting UART TX. The idea here
is to provide a mechanism where we can wakeup our peer before sending
data.

Change-Id: I42e0779b635f64ca99184b45d5b028de80197491
Signed-off-by: San Mehat <san@google.com>
2012-04-09 13:57:48 -07:00
Michael Brunner
11bbd5b6da pch_uart: Add Kontron COMe-mTT10 uart clock quirk
Add UART clock quirk for the Kontron COMe-mTT10 module.

The board has previously been called nanoETXexpress-TT, therefore this
is also checked.

As suggested by Darren Hart the comparison in this patch version is
placed after the FRI2 checks to ensure it will also work with possible
upcoming changes to the FRI2 firmware.

This patch follows the patchset submitted by Darren Hart at
commit a46f5533ec.

Signed-off-by: Michael Brunner <mibru@gmx.de>
Acked-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:58:41 -07:00
Tomoya MORINAGA
867c902e07 pch_uart: Fix MSI setting issue
The following patch (MSI setting) is not enough.

commit e463595fd9
Author: Alexander Stein <alexander.stein@systec-electronic.com>
Date:   Mon Jul 4 08:58:31 2011 +0200

    pch_uart: Add MSI support

    Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

To enable MSI mode, PCI bus-mastering must be enabled.
This patch enables the setting.

cc: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:43:26 -07:00
Dan Williams
bc02d15a34 serial/8250_pci: add a "force background timer" flag and use it for the "kt" serial port
Workaround dropped notifications in the iir register.  Register reads
coincident with new interrupt notifications sometimes result in this
device clearing the interrupt event without reporting it in the read
data.

The serial core already has a heuristic for determining when a device
has an untrustworthy iir register.  In this case when we apriori know
that the iir is faulty use a flag (UPF_BUG_THRE) to bypass the test and
force usage of the background timer.

[stable: 3.3.x]
Acked-by: Alan Cox <alan@linux.intel.com>
Cc: stable <stable@vger.kernel.org>
Reported-by: Nhan H Mai <nhan.h.mai@intel.com>
Reported-by: Sudhakar Mamillapalli <sudhakar@fb.com>
Tested-by: Nhan H Mai <nhan.h.mai@intel.com>
Tested-by: Sudhakar Mamillapalli <sudhakar@fb.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:38:30 -07:00
Dan Williams
49b532f96f Revert "serial/8250_pci: setup-quirk workaround for the kt serial controller"
This reverts commit 448ac154c9.

The semantic of UPF_IIR_ONCE is only guaranteed to workaround the race
condition in the kt serial's iir register if the only source of
interrupts is THRE (fifo-empty) events.  An modem status event at the
wrong time can again cause an iir read to drop the 'empty' status
leading to a hang.  So, revert this in preparation for using the
existing "I don't trust my iir register" workaround in the 8250 core
(UART_BUG_THRE).

[stable: 3.3.x]
Cc: stable <stable@vger.kernel.org>
Acked-by: Alan Cox <alan@linux.intel.com>
Cc: Sudhakar Mamillapalli <sudhakar@fb.com>
Reported-by: Nhan H Mai <nhan.h.mai@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:34:52 -07:00
Dan Williams
3579812373 Revert "serial/8250_pci: init-quirk msi support for kt serial controller"
This reverts commit e86ff4a63c.

This tried to enforce the semantics of one interrupt per iir read of the
THRE (transmit-hold empty) status, but events from other sources
(particularly modem status) defeat this guarantee.

This change also broke 8250_pci suspend/resume support as
pciserial_resume_ports() re-runs .init() quirks, but does not run
.exit() quirks in pciserial_suspend_ports() leading to reports like:

  sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:16.3/msi_irqs'

...and a subsequent crash.  The mismatch of init/exit at suspend/resume
seems like a bug in its own right.

[stable: 3.3.x]
Cc: stable <stable@vger.kernel.org>
Acked-by: Alan Cox <alan@linux.intel.com>
Cc: Sudhakar Mamillapalli <sudhakar@fb.com>
Reported-by: Nhan H Mai <nhan.h.mai@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:34:16 -07:00
Arnd Bergmann
d8c4019b41 tty/serial/omap: console can only be built-in
When the omap serial driver is built as a module, we must
not allow the console driver to be selected, because consoles
can not be loadable modules.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Acked-by: Govindraj.R <govindraj.raja@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:34:16 -07:00
Kukjin Kim
7b246a1d0d serial: samsung: fix omission initialize ulcon in reset port fn()
Fix omission initialize ulcon in s3c24xx_serial_resetport(),
reset port function in drivers/tty/serial/samsung.c. It has
been happened from commit 0dfb3b41("serial: samsung: merge
all SoC specific port reset functions")

Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Cc: stable <stable@vger.kernel.org> [3.3]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:30:39 -07:00
Kay Sievers
5da527aafe printk(): add KERN_CONT where needed in hpet and vt code
A prototype for kmsg records instead of a byte-stream buffer revealed
a couple of missing printk(KERN_CONT ...) uses. Subsequent calls produce
one record per printk() call, while all should have ended up in a single
record.

Instead of:
  ACPI: (supports S0 S5)
  ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
  hpet0: at MMIO 0xfed00000, IRQs 2 , 8 , 0

It prints:
  ACPI: (supports S0
   S5
  )
  ACPI: PCI Interrupt Link [LNKA] (IRQs
   5
   *10
   11
  )
  hpet0: at MMIO 0xfed00000, IRQs
   2
  , 8
  , 0

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Kay Sievers <kay@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:30:39 -07:00
Siftar, Gabe
57c3686842 tty/serial: atmel_serial: fix RS485 half-duplex problem
On our custom board, we are using RS485 in half-duplex mode on an AT91SAM9G45.
SER_RS485_RX_DURING_TX is not set as we do not want to receive the data we
transmit (our transceiver will receive transmitted data).
Although the current driver attempts to disable and enable the receiver at the
appropriate points, incoming data is still loaded into the receive register
causing our code to receive the very last byte that was sent once the receiver
is enabled.

I ran this by Atmel support and they wrote: "The issue comes from the fact
that you disable the PDC/DMA Reception and not the USART Reception channel. In
your case, the[n] you will still receive data into the USART_RHR register, and
maybe you [h]ave the overrun flag set. So please disable the USART reception
channel."

The following patch should force the driver to enable/disable the receiver via
RXEN/RXDIS fields of the USART control register. It fixed the issue I was
having.

Signed-off-by: Gabe Siftar <gabe.siftar@getingeusa.com>
[nicolas.ferre@atmel.com: slightly modify commit message]
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:30:39 -07:00
Yuriy Kozlov
acede70d65 tty: serial: altera_uart: Check for NULL platform_data in probe.
Follow altera_jtag_uart.  This fixes a crash if there is a mistake in the DTS.

Signed-off-by: Yuriy Kozlov <ykozlov@ptcusa.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:30:39 -07:00
Shubhrajyoti D
388bc26226 omap-serial: Fix the error handling in the omap_serial probe
The patch does the following

- The pm_runtime_disable is called in the remove not in the error
  case of probe.The patch calls the pm_runtime_disable in the error
  case.
- Calls pm_runtime_put in the error case.
- The  up is not freed in the error path. Fix the memory leak by using
  devm_* so that the memory need not be freed in the driver.
- Also the iounmap is not called fix the same by calling using devm_ioremap.
- Make the name of the error tags more meaningful.

Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Govindraj.R <govindraj.raja@ti.com>
Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-09 10:30:38 -07:00