mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
serial: tegra: add serial driver
NVIDIA's Tegra has multiple UART controller which supports: - APB DMA based controller fifo read/write. - End Of Data interrupt in incoming data to know whether end of frame achieve or not. - HW controlled RTS and CTS flow control to reduce SW overhead. Add serial driver to use all above feature. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Acked-by: Alan Cox <alan@linux.intel.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
42d3419154
commit
e9ea096dd2
@ -0,0 +1,24 @@
|
|||||||
|
NVIDIA Tegra20/Tegra30 high speed (DMA based) UART controller driver.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : should be "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart".
|
||||||
|
- reg: Should contain UART controller registers location and length.
|
||||||
|
- interrupts: Should contain UART controller interrupts.
|
||||||
|
- nvidia,dma-request-selector : The Tegra DMA controller's phandle and
|
||||||
|
request selector for this UART controller.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- nvidia,enable-modem-interrupt: Enable modem interrupts. Should be enable
|
||||||
|
only if all 8 lines of UART controller are pinmuxed.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
serial@70006000 {
|
||||||
|
compatible = "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart";
|
||||||
|
reg = <0x70006000 0x40>;
|
||||||
|
reg-shift = <2>;
|
||||||
|
interrupts = <0 36 0x04>;
|
||||||
|
nvidia,dma-request-selector = <&apbdma 8>;
|
||||||
|
nvidia,enable-modem-interrupt;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
@ -269,6 +269,17 @@ config SERIAL_SIRFSOC_CONSOLE
|
|||||||
your boot loader about how to pass options to the kernel at
|
your boot loader about how to pass options to the kernel at
|
||||||
boot time.)
|
boot time.)
|
||||||
|
|
||||||
|
config SERIAL_TEGRA
|
||||||
|
tristate "NVIDIA Tegra20/30 SoC serial controller"
|
||||||
|
depends on ARCH_TEGRA && TEGRA20_APB_DMA
|
||||||
|
select SERIAL_CORE
|
||||||
|
help
|
||||||
|
Support for the on-chip UARTs on the NVIDIA Tegra series SOCs
|
||||||
|
providing /dev/ttyHS0, 1, 2, 3 and 4 (note, some machines may not
|
||||||
|
provide all of these ports, depending on how the serial port
|
||||||
|
are enabled). This driver uses the APB DMA to achieve higher baudrate
|
||||||
|
and better performance.
|
||||||
|
|
||||||
config SERIAL_MAX3100
|
config SERIAL_MAX3100
|
||||||
tristate "MAX3100 support"
|
tristate "MAX3100 support"
|
||||||
depends on SPI
|
depends on SPI
|
||||||
|
@ -80,6 +80,7 @@ obj-$(CONFIG_SERIAL_MXS_AUART) += mxs-auart.o
|
|||||||
obj-$(CONFIG_SERIAL_LANTIQ) += lantiq.o
|
obj-$(CONFIG_SERIAL_LANTIQ) += lantiq.o
|
||||||
obj-$(CONFIG_SERIAL_XILINX_PS_UART) += xilinx_uartps.o
|
obj-$(CONFIG_SERIAL_XILINX_PS_UART) += xilinx_uartps.o
|
||||||
obj-$(CONFIG_SERIAL_SIRFSOC) += sirfsoc_uart.o
|
obj-$(CONFIG_SERIAL_SIRFSOC) += sirfsoc_uart.o
|
||||||
|
obj-$(CONFIG_SERIAL_TEGRA) += serial-tegra.o
|
||||||
obj-$(CONFIG_SERIAL_AR933X) += ar933x_uart.o
|
obj-$(CONFIG_SERIAL_AR933X) += ar933x_uart.o
|
||||||
obj-$(CONFIG_SERIAL_EFM32_UART) += efm32-uart.o
|
obj-$(CONFIG_SERIAL_EFM32_UART) += efm32-uart.o
|
||||||
obj-$(CONFIG_SERIAL_ARC) += arc_uart.o
|
obj-$(CONFIG_SERIAL_ARC) += arc_uart.o
|
||||||
|
1399
drivers/tty/serial/serial-tegra.c
Normal file
1399
drivers/tty/serial/serial-tegra.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user