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

2 commits


10 Jul, 2006

1 commit

  • The following patch gets rid of CONFIG_TSI108_BRIDGE. I add UPIO_TSI to
    handle IIR and IER register in serial_in and serial_out.

    (1) the reason to rewrite serial_in:

    TSI108 rev Z1 version ERRATA. Reading the UART's Interrupt
    Identification Register (IIR) clears the Transmit Holding Register
    Empty (THRE) and Transmit buffer Empty (TEMP) interrupts even if they
    are not enabled in the Interrupt Enable Register (IER). This leads to
    loss of the interrupts. Interrupts are not cleared when reading UART
    registers as 32-bit word.

    (2) the reason to rewrite serial_out:

    Check for UART_IER_UUE bit in the autoconfig routine. This section
    of autoconfig is excluded for Tsi108/109 because bits 7 and 6 are
    reserved for internal use. They are R/W bits. In addition to
    incorrect identification, changing these bits (from 00) will make
    Tsi108/109 UART non-functional.

    Signed-off-by: Roy Zang
    Signed-off-by: Andrew Morton
    Signed-off-by: Russell King

    Zang Roy-r61911
     

04 Jul, 2006

1 commit


03 Jul, 2006

1 commit

  • Some UARTs have more than 255 bytes of FIFO, which can't be
    represented by an unsigned char. Change the kernel's internal
    structure to be an unsigned int, but still export an unsigned char
    via the TIOCGSERIAL ioctl. If the TIOCSSERIAL ioctl provides a
    fifo size of 0, assume this means "don't change" otherwise we'll
    corrupt the larger fifo sizes.

    Signed-off-by: Russell King

    Russell King
     

27 Jun, 2006

1 commit


25 Jun, 2006

1 commit


21 Jun, 2006

1 commit

  • * 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (42 commits)
    [ARM] Fix tosa build error
    [ARM] 3610/1: Make reboot work on Versatile
    [ARM] 3609/1: S3C24XX: defconfig update for s3c2410_defconfig
    [ARM] 3591/1: Anubis: IDE device definitions
    [ARM] Include asm/hardware.h not asm/arch/hardware.h
    [ARM] 3594/1: Poodle: Add touchscreen support + other updates
    [ARM] 3564/1: sharpsl_pm: Abstract some machine specific parameters
    [ARM] 3561/1: Poodle: Correct the MMC/SD power control
    [ARM] 3593/1: Add reboot and shutdown handlers for Zaurus handhelds
    [ARM] 3599/1: AT91RM9200 remove global variables
    [ARM] 3607/1: AT91RM9200 misc fixes
    [ARM] 3605/1: AT91RM9200 Power Management
    [ARM] 3604/1: AT91RM9200 New boards
    [ARM] 3603/1: AT91RM9200 remove old files
    [ARM] 3592/1: AT91RM9200 Serial driver update
    [ARM] 3590/1: AT91RM9200 Platform devices support
    [ARM] 3589/1: AT91RM9200 DK/EK board update
    [ARM] 3588/1: AT91RM9200 CSB337/637 board update
    [ARM] 3587/1: AT91RM9200 hardware headers
    [ARM] 3586/1: AT91RM9200 header update
    ...

    Linus Torvalds
     

20 Jun, 2006

1 commit

  • Patch from Andrew Victor

    This patch includes a number of updates to the AT91RM9200 serial driver.

    Changes include:
    1. Conversion to a platform_driver. [Ivan Kokshaysky]
    2. Replaced all references to AT91RM9200 with AT91. This driver can now
    also be used for the AT91SAM9216.
    3. Allow TIOCM_LOOP to configure local loopback mode.
    4. Cleaned up the 'read_status_mask' usage and interrupt handler code.
    [Chip Coldwell]
    5. Suspend/resume support. [David Brownell]

    There are a few 'unused variable' warning when compiling this - I
    removed the new DMA support to keep this first patch simpler.

    Signed-off-by: Andrew Victor
    Signed-off-by: Russell King

    Andrew Victor
     

24 May, 2006

1 commit


30 Apr, 2006

1 commit


26 Apr, 2006

1 commit


23 Mar, 2006

1 commit


21 Mar, 2006

1 commit

  • Glen Turner reported that writing LFCR rather than the more
    traditional CRLF causes issues with some terminals.

    Since this aflicts many serial drivers, extract the common code
    to a library function (uart_console_write) and arrange for each
    driver to supply a "putchar" function.

    Signed-off-by: Russell King

    Russell King
     

20 Mar, 2006

1 commit


22 Jan, 2006

5 commits


14 Jan, 2006

1 commit


11 Jan, 2006

1 commit


29 Nov, 2005

1 commit


06 Nov, 2005

1 commit


31 Oct, 2005

1 commit


30 Oct, 2005

1 commit