10 Dec, 2011

2 commits

  • Sending a break on the SOC UARTs found in some MPC83xx/85xx/86xx
    chips seems to cause a short lived IRQ storm (/proc/interrupts
    typically shows somewhere between 300 and 1500 events). Unfortunately
    this renders SysRQ over the serial console completely inoperable.

    The suggested workaround in the errata is to read the Rx register,
    wait one character period, and then read the Rx register again.
    We achieve this by tracking the old LSR value, and on the subsequent
    interrupt event after a break, we don't read LSR, instead we just
    read the RBR again and return immediately.

    The "fsl,ns16550" is used in the compatible field of the serial
    device to mark UARTs known to have this issue.

    Thanks to Scott Wood for providing the errata data which led to
    a much cleaner fix.

    Signed-off-by: Paul Gortmaker
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Paul Gortmaker
     
  • For drivers that need to construct their own IRQ handler, the
    three components are seen in the current handle_port -- i.e.
    Rx, Tx and modem_status.

    Make these exported symbols so that "almost" 8250 UARTs can
    construct their own IRQ handler with these shared components,
    while working around their own unique errata issues.

    The function names are given a serial8250 prefix, since they
    are now entering the global namespace.

    Signed-off-by: Paul Gortmaker
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Paul Gortmaker
     

25 Aug, 2011

1 commit


24 Aug, 2011

2 commits

  • The Synopsys DesignWare 8250 is an 8250 that has an extra interrupt that
    gets raised when writing to the LCR when busy. To handle this we need
    special serial_out, serial_in and handle_irq methods. Add a new
    function serial8250_use_designware_io() that configures a uart_port with
    these accessors.

    Cc: Alan Cox
    Acked-by: Arnd Bergmann
    Signed-off-by: Jamie Iles
    Signed-off-by: Greg Kroah-Hartman

    Jamie Iles
     
  • Some ports (e.g. Synopsys DesignWare 8250) have special requirements for
    handling the interrupts. Allow these platforms to specify their own
    interrupt handler that will override the default.
    serial8250_handle_irq() is provided so that platforms can extend the IRQ
    handler rather than completely replacing it.

    Signed-off-by: Jamie Iles
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Jamie Iles
     

23 Oct, 2010

2 commits

  • Not every platform that has generic legacy 8250 ports manages to have them
    clocked the right way or without errata. Provide a generic interface to
    allow platforms to override the default behaviour in a manner that dumps
    the complexity in *their* code not the 8250 driver.

    Signed-off-by: Alan Cox
    Signed-off-by: Dirk Brandewie
    Acked-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Alan Cox
     
  • Add a hook for platforms to specify custom pm methods.

    Signed-off-by: Manuel Lauss
    Cc: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Manuel Lauss
     

11 Aug, 2010

1 commit

  • UART Features extract from STEricsson U6715 data-sheet (arm926 SoC for mobile phone):
    * Fully compatible with industry standard 16C550 and 16C450 from various
    manufacturers
    * RX and TX 64 byte FIFO reduces CPU interrupts
    * Full double buffering
    * Modem control signals include CTS, RTS, (and DSR, DTR on UART1 only)
    * Automatic baud rate selection
    * Manual or automatic RTS/CTS smart hardware flow control
    * Programmable serial characteristics:
    – Baud rate generation (50 to 3.25M baud)
    – 5, 6, 7 or 8-bit characters
    – Even, odd or no-parity bit generation and detection
    – 1, 1.5 or 2 stop bit generation
    * Independent control of transmit, receive, line status, data set interrupts and FIFOs
    * Full status-reporting capabilities
    * Separate DMA signaling for RX and TX
    * Timed interrupt to spread receive interrupt on known duration
    * DMA time-out interrupt to allow detection of end of reception
    * Carkit pulse coding and decoding compliant with USB carkit control interface [40]

    In 16550A auto-configuration, if the fifo size is 64 then it's an U6 16550A port
    Add set_termios hook & export serial8250_do_set_termios to change uart
    clock following baudrate

    Signed-off-by: Philippe Langlais
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Philippe Langlais
     

20 Sep, 2009

1 commit

  • There is currently no provision for passing IRQ trigger flags for
    serial IRQs with triggering requirements (such as GPIO IRQs)

    This patch adds irqflags to plat_serial8250_port that can be passed
    from board file to reqest_irq() of 8250 driver

    Changes are backward compatible with boards passing UPF_SHARE_IRQ flag

    Tested on Zoom2 board that has IRQF_TRIGGER_RISING requirement for 8250 irq

    [Moved new flag to end to fix bugs in the original with the old_serial array
    -- Alan]

    Signed-off-by: Vikram Pandita
    Signed-off-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Vikram Pandita
     

03 Jan, 2009

2 commits

  • 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
     

28 Apr, 2008

1 commit

  • This patch extends the sm501 mfd with 8250 uart support. We're currently
    doing this in the board specific r2d-1 code already, but it would be nice to
    do move things into the mfd since it's more chip specific than board specific.

    Signed-off-by: Magnus Damm
    Cc: Ben Dooks
    Cc: Paul Mundt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Magnus Damm
     

06 Feb, 2008

1 commit

  • Allow the private_data field to be specified in platform_data for the
    standard 8250/16550 UART. This field is used by DW APB type UARTs and
    without this patch it's only possible to set this field when registering
    the port by hand. If private_data is not set then the driver will
    potentially oops with a NULL pointer dereference.

    Signed-off-by: Will Newton
    Acked-by: Alan Cox
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Newton
     

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

1 commit


17 Jul, 2007

1 commit

  • Beacuse SERIAL_PORT_DFNS is removed from include/asm-i386/serial.h and
    include/asm-x86_64/serial.h. the serial8250_ports need to be probed late in
    serial initializing stage. the console_init=>serial8250_console_init=>
    register_console=>serial8250_console_setup will return -ENDEV, and console
    ttyS0 can not be enabled at that time. need to wait till uart_add_one_port in
    drivers/serial/serial_core.c to call register_console to get console ttyS0.
    that is too late.

    Make early_uart to use early_param, so uart console can be used earlier. Make
    it to be bootconsole with CON_BOOT flag, so can use console handover feature.
    and it will switch to corresponding normal serial console automatically.

    new command line will be:
    console=uart8250,io,0x3f8,9600n8
    console=uart8250,mmio,0xff5e0000,115200n8
    or
    earlycon=uart8250,io,0x3f8,9600n8
    earlycon=uart8250,mmio,0xff5e0000,115200n8

    it will print in very early stage:
    Early serial console at I/O port 0x3f8 (options '9600n8')
    console [uart0] enabled
    later for console it will print:
    console handover: boot [uart0] -> real [ttyS0]

    Signed-off-by:
    Cc: Andi Kleen
    Cc: Bjorn Helgaas
    Cc: Russell King
    Cc: Gerd Hoffmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     

08 Dec, 2006

1 commit

  • This is on our "Envoy" boxes which we have, according to the documentation, an
    "Exar ST16C554/554D Quad UART with 16-byte Fifo's". The box also has two
    other "on-board" serial ports and a modem chip.

    The two on-board serial UARTs were being detected along with the first two
    Exar UARTs. The last two Exar UARTs were not showing up and neither was the
    modem.

    This patch was the only way I could the kernel to see beyond the standard four
    serial ports and get all four of the Exar UARTs to show up.

    [akpm@osdl.org: build fix]
    Signed-off-by: Paul B Schroeder
    Cc: Lennart Sorensen
    Acked-by: Alan Cox
    Cc: Russell King
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul B Schroeder
     

26 Mar, 2006

1 commit


22 Jan, 2006

1 commit

  • Same reasoning as commit 747c8a55946ed037bf7d62454c3c599c02af2262
    but this time we're making uart_port flags a bitwise type - not
    all of these flags correspond with the old ASYNC_ flags, so there
    is the possibility for bugs if the wrong ASYNC_* constants are
    used. Always use UPF_* constants for uart_port->flags.

    Signed-off-by: Russell King

    Russell King
     

06 Nov, 2005

1 commit


30 Oct, 2005

1 commit


08 Sep, 2005

1 commit


01 Sep, 2005

1 commit


27 Jun, 2005

1 commit

  • Add separate files for the different 8250 ISA-based serial boards.

    Looking across all the various architectures, it seems reasonable that
    we can key the availability of the configuration options for these
    beasts to the bus-related symbols (iow, CONFIG_ISA). We also standardise
    the base baud/uart clock rate for these boards - I'm sure that isn't
    architecture specific, but is solely dependent on the crystal fitted
    on the board (which should be the same no matter what type of machine
    its fitted into.)

    Signed-off-by: Russell King

    Russell King
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds