You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
mrst_max3110: add UART driver for Max3110 on Moorestown
This driver enable the max3110 device, it can be used as a system console. the IRQ needs be enabled if user want a better performance. MRST max3110 works in 3.684MHz clock, which supports 230400 as its maximum rate. Signed-off-by: Feng Tang <feng.tang@intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7a56aa4598
commit
225109957a
@@ -690,6 +690,23 @@ config SERIAL_SA1100_CONSOLE
|
|||||||
your boot loader (lilo or loadlin) about how to pass options to the
|
your boot loader (lilo or loadlin) about how to pass options to the
|
||||||
kernel at boot time.)
|
kernel at boot time.)
|
||||||
|
|
||||||
|
config SERIAL_MRST_MAX3110
|
||||||
|
tristate "SPI UART driver for Max3110"
|
||||||
|
depends on SPI_DW_PCI
|
||||||
|
select SERIAL_CORE
|
||||||
|
select SERIAL_CORE_CONSOLE
|
||||||
|
help
|
||||||
|
This is the UART protocol driver for the MAX3110 device on
|
||||||
|
the Intel Moorestown platform. On other systems use the max3100
|
||||||
|
driver.
|
||||||
|
|
||||||
|
config MRST_MAX3110_IRQ
|
||||||
|
boolean "Enable GPIO IRQ for Max3110 over Moorestown"
|
||||||
|
default n
|
||||||
|
depends on SERIAL_MRST_MAX3110 && GPIO_LANGWELL
|
||||||
|
help
|
||||||
|
This has to be enabled after Moorestown GPIO driver is loaded
|
||||||
|
|
||||||
config SERIAL_BFIN
|
config SERIAL_BFIN
|
||||||
tristate "Blackfin serial port support"
|
tristate "Blackfin serial port support"
|
||||||
depends on BLACKFIN
|
depends on BLACKFIN
|
||||||
|
|||||||
@@ -84,3 +84,4 @@ obj-$(CONFIG_SERIAL_TIMBERDALE) += timbuart.o
|
|||||||
obj-$(CONFIG_SERIAL_GRLIB_GAISLER_APBUART) += apbuart.o
|
obj-$(CONFIG_SERIAL_GRLIB_GAISLER_APBUART) += apbuart.o
|
||||||
obj-$(CONFIG_SERIAL_ALTERA_JTAGUART) += altera_jtaguart.o
|
obj-$(CONFIG_SERIAL_ALTERA_JTAGUART) += altera_jtaguart.o
|
||||||
obj-$(CONFIG_SERIAL_ALTERA_UART) += altera_uart.o
|
obj-$(CONFIG_SERIAL_ALTERA_UART) += altera_uart.o
|
||||||
|
obj-$(CONFIG_SERIAL_MRST_MAX3110) += mrst_max3110.o
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,59 @@
|
|||||||
|
#ifndef _MRST_MAX3110_H
|
||||||
|
#define _MRST_MAX3110_H
|
||||||
|
|
||||||
|
#define MAX3110_HIGH_CLK 0x1 /* 3.6864 MHZ */
|
||||||
|
#define MAX3110_LOW_CLK 0x0 /* 1.8432 MHZ */
|
||||||
|
|
||||||
|
/* status bits for all 4 MAX3110 operate modes */
|
||||||
|
#define MAX3110_READ_DATA_AVAILABLE (1 << 15)
|
||||||
|
#define MAX3110_WRITE_BUF_EMPTY (1 << 14)
|
||||||
|
|
||||||
|
#define WC_TAG (3 << 14)
|
||||||
|
#define RC_TAG (1 << 14)
|
||||||
|
#define WD_TAG (2 << 14)
|
||||||
|
#define RD_TAG (0 << 14)
|
||||||
|
|
||||||
|
/* bits def for write configuration */
|
||||||
|
#define WC_FIFO_ENABLE_MASK (1 << 13)
|
||||||
|
#define WC_FIFO_ENABLE (0 << 13)
|
||||||
|
|
||||||
|
#define WC_SW_SHDI (1 << 12)
|
||||||
|
|
||||||
|
#define WC_IRQ_MASK (0xF << 8)
|
||||||
|
#define WC_TXE_IRQ_ENABLE (1 << 11) /* TX empty irq */
|
||||||
|
#define WC_RXA_IRQ_ENABLE (1 << 10) /* RX availabe irq */
|
||||||
|
#define WC_PAR_HIGH_IRQ_ENABLE (1 << 9)
|
||||||
|
#define WC_REC_ACT_IRQ_ENABLE (1 << 8)
|
||||||
|
|
||||||
|
#define WC_IRDA_ENABLE (1 << 7)
|
||||||
|
|
||||||
|
#define WC_STOPBITS_MASK (1 << 6)
|
||||||
|
#define WC_2_STOPBITS (1 << 6)
|
||||||
|
#define WC_1_STOPBITS (0 << 6)
|
||||||
|
|
||||||
|
#define WC_PARITY_ENABLE_MASK (1 << 5)
|
||||||
|
#define WC_PARITY_ENABLE (1 << 5)
|
||||||
|
|
||||||
|
#define WC_WORDLEN_MASK (1 << 4)
|
||||||
|
#define WC_7BIT_WORD (1 << 4)
|
||||||
|
#define WC_8BIT_WORD (0 << 4)
|
||||||
|
|
||||||
|
#define WC_BAUD_DIV_MASK (0xF)
|
||||||
|
#define WC_BAUD_DR1 (0x0)
|
||||||
|
#define WC_BAUD_DR2 (0x1)
|
||||||
|
#define WC_BAUD_DR4 (0x2)
|
||||||
|
#define WC_BAUD_DR8 (0x3)
|
||||||
|
#define WC_BAUD_DR16 (0x4)
|
||||||
|
#define WC_BAUD_DR32 (0x5)
|
||||||
|
#define WC_BAUD_DR64 (0x6)
|
||||||
|
#define WC_BAUD_DR128 (0x7)
|
||||||
|
#define WC_BAUD_DR3 (0x8)
|
||||||
|
#define WC_BAUD_DR6 (0x9)
|
||||||
|
#define WC_BAUD_DR12 (0xA)
|
||||||
|
#define WC_BAUD_DR24 (0xB)
|
||||||
|
#define WC_BAUD_DR48 (0xC)
|
||||||
|
#define WC_BAUD_DR96 (0xD)
|
||||||
|
#define WC_BAUD_DR192 (0xE)
|
||||||
|
#define WC_BAUD_DR384 (0xF)
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user