23 Jun, 2009

1 commit


11 Jun, 2009

2 commits


07 Apr, 2009

2 commits

  • (akpm: queued pending confirmation of the new major number)

    [randy.dunlap@oracle.com: select SERIAL_CORE]
    Signed-off-by: Christian Pellegrin
    Signed-off-by: Andrew Morton
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Christian Pellegrin
     
  • Fixes:

    In file included from drivers/serial/mux.c:37:
    include/linux/serial_core.h: In function 'uart_handle_sysrq_char':
    include/linux/serial_core.h:467: error: 'struct uart_port' has no member named 'sysrq'
    include/linux/serial_core.h:468: error: 'struct uart_port' has no member named 'sysrq'

    Signed-off-by: Alexander Beregalov
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alexander Beregalov
     

21 Feb, 2009

1 commit

  • Intel 8257x Ethernet boards have a feature called Serial Over Lan.

    This feature works by emulating a serial port, and it is detected by
    kernel as a normal 8250 port. However, this emulation is not perfect, as
    also noticed on changeset 7500b1f602aad75901774a67a687ee985d85893f.

    Before this patch, the kernel were trying to check if the serial TX is
    capable of work using IRQ's.

    This were done with a code similar this:

    serial_outp(up, UART_IER, UART_IER_THRI);
    lsr = serial_in(up, UART_LSR);
    iir = serial_in(up, UART_IIR);
    serial_outp(up, UART_IER, 0);

    if (lsr & UART_LSR_TEMT && iir & UART_IIR_NO_INT)
    up->bugs |= UART_BUG_TXEN;

    This works fine for other 8250 ports, but, on 8250-emulated SoL port, the
    chip is a little lazy to down UART_IIR_NO_INT at UART_IIR register.

    Due to that, UART_BUG_TXEN is sometimes enabled. However, as TX IRQ keeps
    working, and the TX polling is now enabled, the driver miss-interprets the
    IRQ received later, hanging up the machine until a key is pressed at the
    serial console.

    This is the 6 version of this patch. Previous versions were trying to
    introduce a large enough delay between serial_outp and serial_in(up,
    UART_IIR), but not taking forever. However, the needed delay couldn't be
    safely determined.

    At the experimental tests, a delay of 1us solves most of the cases, but
    still hangs sometimes. Increasing the delay to 5us was better, but still
    doesn't solve. A very high delay of 50 ms seemed to work every time.

    However, poking around with delays and pray for it to be enough doesn't
    seem to be a good approach, even for a quirk.

    So, instead of playing with random large arbitrary delays, let's just
    disable UART_BUG_TXEN for all SoL ports.

    [akpm@linux-foundation.org: fix warnings]
    Signed-off-by: Mauro Carvalho Chehab
    Cc: Alan Cox
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mauro Carvalho Chehab
     

08 Jan, 2009

1 commit

  • Add support for the nwp serial device which is connected to a DCR bus. It
    uses the of_serial device driver to determine necessary properties from
    the device tree. The supported device is added as serial port number 85.

    NWP stands for network processor and it is part of the QPACE - Quantum
    Chromodynamics Parallel Computing on the Cell Broadband Engine project.
    The implementation is a lightweight uart implementation with the focus
    to consume as little resources as possible and it is connected to a
    DCR bus.

    Signed-off-by: Benjamin Krill
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Krill
     

03 Jan, 2009

4 commits

  • Cavium UART implementation is not covered by existing uart_configS.
    Define a new uart_config (PORT_OCTEON) which is specified by OCTEON
    platform device registration code.

    Signed-off-by: Tomaso Paoletti
    Signed-off-by: David Daney
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    David Daney
     
  • Add flag value UPF_FIXED_TYPE which specifies that the UART type is
    known and should not be probed. For this case the UARTs properties
    are just copied out of the uart_config entry.

    This allows us to keep SOC specific 8250 probe code out of 8250.c. In
    this case we know the serial hardware will not be changing as it is on
    the same silicon as the CPU, and we can specify it with certainty in
    the board/cpu setup code.

    The alternative is to load up 8250.c with a bunch of OCTEON specific
    special cases in the probing code.

    Signed-off-by: David Daney
    Signed-off-by: Andrew Morton
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    David Daney
     
  • In order to use Cavium OCTEON specific serial i/o drivers, we first
    patch the 8250 driver to use replaceable I/O functions. Compatible
    I/O functions are added for existing iotypeS.

    An added benefit of this change is that it makes it easy to factor
    some of the existing special cases out to board/SOC specific support
    code.

    The alternative is to load up 8250.c with a bunch of OCTEON specific
    iotype code and bug work-arounds.

    Signed-off-by: David Daney
    Signed-off-by: Tomaso Paoletti
    Signed-off-by: Andrew Morton
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    David Daney
     
  • Move the tty_port and uart_info bits around a little. By embedding the uart_info
    into the uart_port we get rid of lots of corner case testing and also get the
    ability to go portstateinfo which is a bit more elegant than the current
    data structures.

    Downsides - we allocate a tiny bit more memory for unused ports, upside we've
    removed as much code as it saved for most users..

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     

16 Dec, 2008

1 commit


12 Nov, 2008

1 commit


14 Oct, 2008

1 commit

  • Otherwise the top 32-bits of the resource value get chopped
    off on 64-bit systems, and the resulting I/O accesses go to
    random places.

    Thanks to testing and debugging by Josip Rodin, which helped
    track this down.

    Signed-off-by: David S. Miller
    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    David Miller
     

25 Jul, 2008

1 commit

  • Trying to compile the v850 port brings many compile errors, one of them exists
    since at least kernel 2.6.19.

    There also seems to be noone willing to bring this port back into a usable
    state.

    This patch therefore removes the v850 port.

    If anyone ever decides to revive the v850 port the code will still be
    available from older kernels, and it wouldn't be impossible for the port to
    reenter the kernel if it would become actively maintained again.

    Signed-off-by: Adrian Bunk
    Acked-by: Greg Ungerer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     

21 Jul, 2008

2 commits

  • Switch the serial_core based drivers to use the new tty_port structure.
    We can't quite use all of it yet because of the dynamically allocated
    extras in the serial_core layer.

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • Serial drivers using DMA (like the atmel_serial driver) tend to get very
    confused when the xmit buffer is flushed and nobody told them. They
    also tend to spew a lot of garbage since the DMA engine keeps running
    after the buffer is flushed and possibly refilled with unrelated data.

    This patch adds a new flush_buffer operation to the uart_ops struct,
    along with a call to it from uart_flush_buffer() right after the xmit
    buffer has been cleared. The driver can implement this in order to
    syncronize its internal DMA state with the xmit buffer when the buffer
    is flushed.

    Signed-off-by: Haavard Skinnemoen
    Acked-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     

03 Jun, 2008

1 commit

  • The tty layer provides a callback that is used when the line discipline
    is changed. Some hardware uses this to configure hardware specific
    features such as IrDA mode on serial ports. Unfortunately the serial
    layer does not provide this feature or pass it down to drivers.

    Blackfin used to hack around this by rewriting the tty ops, but those are
    now properly shared and const so the hack fails. Instead provide the
    proper operations.

    This change plus a follow up from the Blackfin guys is needed to avoid
    blackfin losing features in this release.

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     

30 Apr, 2008

1 commit


18 Apr, 2008

1 commit

  • polled console handling support, to access a console in an irq-less
    way while in debug or irq context.

    absolutely zero impact as long as CONFIG_CONSOLE_POLL is disabled.
    (which is the default)

    [ jan.kiszka@siemens.com: lots of cleanups ]
    [ mingo@elte.hu: redesign, splitups, cleanups. ]

    Signed-off-by: Jason Wessel
    Signed-off-by: Ingo Molnar
    Signed-off-by: Jan Kiszka
    Reviewed-by: Thomas Gleixner

    Jason Wessel
     

14 Feb, 2008

1 commit


09 Feb, 2008

1 commit


30 Nov, 2007

1 commit

  • - fix lockup when switching from early console to real console
    - make sysrq reliable
    - fix panic, if sysrq is issued before console is opened

    Signed-off-by: Thomas Bogendoerfer
    Acked-by: Ralf Baechle
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Bogendoerfer
     

24 Oct, 2007

1 commit


17 Oct, 2007

1 commit

  • Enable wakeup from serial ports, make it run-time configurable over sysfs,
    e.g.,

    echo enabled > /sys/devices/platform/serial8250.0/tty/ttyS0/power/wakeup

    Requires

    # CONFIG_SYSFS_DEPRECATED is not set

    Following suggestions from Alan and Russell moved the may_wake_up checks
    to serial_core.c. This time actually tested - it does even work. Could
    someone, please, verify, that put_device after device_find_child is
    correct?

    Also would be nice to test with a Natsemi UART, that can wake up the system,
    if such systems exist.

    For this you just have to apply the patch below, issue the above "echo"
    command to one of your Natsemi port, suspend and resume your system, and
    verify that your Natsemi port still works. If you are actually capable of
    waking up the system from that port, would be nice to test that as well.

    Signed-off-by: Guennadi Liakhovetski
    Cc: Alan Cox
    Cc: Russell King
    Cc: Kay Sievers
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Guennadi Liakhovetski
     

25 Jul, 2007

1 commit

  • At present, various parts of the serial code use unsigned long to define
    resource addresses. This is a problem, because some 32-bit platforms have
    physical addresses larger than 32-bits, and have mmio serial uarts located
    above the 4GB point.

    This patch changes the type of mapbase in both struct uart_port and struct
    plat_serial8250_port to resource_size_t, which can be configured to be 64
    bits on such platforms. The mapbase in serial_struct can't safely be
    changed, because that structure is user visible.

    Signed-off-by: David Gibson
    Signed-off-by: Josh Boyer
    Cc: Russell King
    Cc: Paul Mackerras
    Cc: Jason Wessel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Boyer
     

18 Jul, 2007

2 commits

  • This is a reimplementation of the zs driver for the serial subsystem. Any
    resemblance to the old driver is purely coincidential. ;-) I do hope I got
    the handling of modem lines right -- better do not tackle me about the
    issue unless you feel too good...

    Any users of the old driver: please note the numbers of the serial lines
    have now been swapped, i.e. ttyS0 ttyS1 and ttyS2 ttyS3. It has
    to do with the modem lines mentioned above; basically the port A in a given
    chip has to be initialised before the port B if you want to use the latter
    as the serial console (which is usually the case), as operations on modem
    lines of the serial line associated with the port B access both ports (see
    the comment at the top of the driver for the details of wiring used).
    Please update your scripts.

    This is also the reason each SCC now requests an IRQ once only (as seen in
    "/proc/interrupts") -- the handler takes care of both ports at once as the
    line associated with the port B has to take status update interrupts from
    both ports (and yet the line of the port A takes its own for itself too).
    The old driver never got it right...

    Signed-off-by: Maciej W. Rozycki
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maciej W. Rozycki
     
  • This is a driver for the SB1250 DUART, a dual serial port implementation
    included in the Broadcom family of SOCs descending from the SiByte SB1250
    MIPS64 chip multiprocessor. It is a new implementation replacing the
    old-fashioned driver currently present in the linux-mips.org tree. It
    supports all the usual features one would expect from a(n asynchronous)
    serial driver, including modem line control (as far as hardware supports it
    -- there is edge detection logic missing from the DCD and RI lines and the
    driver does not implement polling of these lines at the moment), the serial
    console, BREAK transmission and reception, including the magic SysRq. The
    receive FIFO threshold is not maintained though.

    The driver was tested with a SWARM board which uses a BCM1250 SOC (which is
    dual MIPS64 CMP) and has both ports of the single DUART implemented wired
    externally. Both were tested. Testing included using the ports as
    terminal lines at 1200bps (which is the ports minimum), 115200bps and a
    couple of random speeds inbetween. The modem lines were verified to
    operate correctly. No testing was performed with a use as a network
    interface, like with SLIP or PPP.

    Signed-off-by: Maciej W. Rozycki
    Acked-by: Ralf Baechle
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maciej W. Rozycki
     

01 Jun, 2007

1 commit

  • The header refers to handle_sysrq(), but does not
    include which provides a declaration of the function. This
    may result in an implicit declaration and a warning if the actual one is
    seen later on.

    Signed-off-by: Maciej W. Rozycki
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maciej W. Rozycki
     

12 May, 2007

1 commit


08 May, 2007

4 commits

  • This patch implements the driver necessary use the Analog Devices Blackfin
    processor's Serial Port.

    Signed-off-by: Bryan Wu
    Cc: Alan Cox
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bryan Wu
     
  • At present, the serial core always allows setserial in userspace to change the
    port address, irq and base clock of any serial port. That makes sense for
    legacy ISA ports, but not for (say) embedded ns16550 compatible serial ports
    at peculiar addresses. In these cases, the kernel code configuring the ports
    must know exactly where they are, and their clocking arrangements (which can
    be unusual on embedded boards). It doesn't make sense for userspace to change
    these settings.

    Therefore, this patch defines a UPF_FIXED_PORT flag for the uart_port
    structure. If this flag is set when the serial port is configured, any
    attempts to alter the port's type, io address, irq or base clock with
    setserial are ignored.

    In addition this patch uses the new flag for on-chip serial ports probed in
    arch/powerpc/kernel/legacy_serial.c, and for other hard-wired serial ports
    probed by drivers/serial/of_serial.c.

    Signed-off-by: David Gibson
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Gibson
     
  • Add support for the integrated serial ports of the MIPS RM9122 processor
    and its relatives.

    The patch also does some whitespace cleanup.

    [akpm@linux-foundation.org: cleanups]
    Signed-off-by: Thomas Koeller
    Cc: Ralf Baechle
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Koeller
     
  • Serial driver patch for the PMC-Sierra MSP71xx devices.

    There are three different fixes:

    1 Fix for DesignWare APB THRE errata: In brief, this is a non-standard
    16550 in that the THRE interrupt will not re-assert itself simply by
    disabling and re-enabling the THRI bit in the IER, it is only re-enabled
    if a character is actually sent out.

    It appears that the "8250-uart-backup-timer.patch" in the "mm" tree
    also fixes it so we have dropped our initial workaround. This patch now
    needs to be applied on top of that "mm" patch.

    2 Fix for Busy Detect on LCR write: The DesignWare APB UART has a feature
    which causes a new Busy Detect interrupt to be generated if it's busy
    when the LCR is written. This fix saves the value of the LCR and
    rewrites it after clearing the interrupt.

    3 Workaround for interrupt/data concurrency issue: The SoC needs to
    ensure that writes that can cause interrupts to be cleared reach the UART
    before returning from the ISR. This fix reads a non-destructive register
    on the UART so the read transaction completion ensures the previously
    queued write transaction has also completed.

    Signed-off-by: Marc St-Jean
    Cc: Russell King
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marc St-Jean
     

15 Feb, 2007

1 commit


09 Dec, 2006

1 commit

  • This is the grungy swap all the occurrences in the right places patch that
    goes with the updates. At this point we have the same functionality as
    before (except that sgttyb() returns speeds not zero) and are ready to
    begin turning new stuff on providing nobody reports lots of bugs

    If you are a tty driver author converting an out of tree driver the only
    impact should be termios->ktermios name changes for the speed/property
    setting functions from your upper layers.

    If you are implementing your own TCGETS function before then your driver
    was broken already and its about to get a whole lot more painful for you so
    please fix it 8)

    Also fill in c_ispeed/ospeed on init for most devices, although the current
    code will do this for you anyway but I'd like eventually to lose that extra
    paranoia

    [akpm@osdl.org: bluetooth fix]
    [mp3@de.ibm.com: sclp fix]
    [mp3@de.ibm.com: warning fix for tty3270]
    [hugh@veritas.com: fix tty_ioctl powerpc build]
    [jdike@addtoit.com: uml: fix ->set_termios declaration]
    Signed-off-by: Alan Cox
    Signed-off-by: Martin Peschke
    Acked-by: Peter Oberparleiter
    Cc: Cornelia Huck
    Signed-off-by: Hugh Dickins
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     

08 Dec, 2006

1 commit

  • Add a driver for the Xilinx uartlite serial controller used in boards with
    the PPC405 core in the Xilinx V2P/V4 fpgas.

    The hardware is very simple (baudrate/start/stopbits fixed and no break
    support). See the datasheet for details:

    http://www.xilinx.com/bvdocs/ipcenter/data_sheet/opb_uartlite.pdf

    See http://thread.gmane.org/gmane.linux.serial/1237/ for the email thread.

    Signed-off-by: Peter Korsgaard
    Acked-by: Olof Johansson
    Cc: Russell King
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Korsgaard
     

05 Oct, 2006

2 commits

  • Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
    of passing regs around manually through all ~1800 interrupt handlers in the
    Linux kernel.

    The regs pointer is used in few places, but it potentially costs both stack
    space and code to pass it around. On the FRV arch, removing the regs parameter
    from all the genirq function results in a 20% speed up of the IRQ exit path
    (ie: from leaving timer_interrupt() to leaving do_IRQ()).

    Where appropriate, an arch may override the generic storage facility and do
    something different with the variable. On FRV, for instance, the address is
    maintained in GR28 at all times inside the kernel as part of general exception
    handling.

    Having looked over the code, it appears that the parameter may be handed down
    through up to twenty or so layers of functions. Consider a USB character
    device attached to a USB hub, attached to a USB controller that posts its
    interrupts through a cascaded auxiliary interrupt controller. A character
    device driver may want to pass regs to the sysrq handler through the input
    layer which adds another few layers of parameter passing.

    I've build this code with allyesconfig for x86_64 and i386. I've runtested the
    main part of the code on FRV and i386, though I can't test most of the drivers.
    I've also done partial conversion for powerpc and MIPS - these at least compile
    with minimal configurations.

    This will affect all archs. Mostly the changes should be relatively easy.
    Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

    struct pt_regs *old_regs = set_irq_regs(regs);

    And put the old one back at the end:

    set_irq_regs(old_regs);

    Don't pass regs through to generic_handle_irq() or __do_IRQ().

    In timer_interrupt(), this sort of change will be necessary:

    - update_process_times(user_mode(regs));
    - profile_tick(CPU_PROFILING, regs);
    + update_process_times(user_mode(get_irq_regs()));
    + profile_tick(CPU_PROFILING);

    I'd like to move update_process_times()'s use of get_irq_regs() into itself,
    except that i386, alone of the archs, uses something other than user_mode().

    Some notes on the interrupt handling in the drivers:

    (*) input_dev() is now gone entirely. The regs pointer is no longer stored in
    the input_dev struct.

    (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does
    something different depending on whether it's been supplied with a regs
    pointer or not.

    (*) Various IRQ handler function pointers have been moved to type
    irq_handler_t.

    Signed-Off-By: David Howells
    (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)

    David Howells
     
  • The at91_serial driver can be used with both AT32 and AT91 devices
    from Atmel and has therefore been renamed atmel_serial. The only
    thing left is to rename PORT_AT91 PORT_ATMEL.

    Signed-off-by: Haavard Skinnemoen
    Acked-by: Andrew Victor
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     

02 Oct, 2006

1 commit