diff options
Diffstat (limited to 'drivers/tty/serial/stm32-usart.h')
| -rw-r--r-- | drivers/tty/serial/stm32-usart.h | 37 | 
1 files changed, 36 insertions, 1 deletions
diff --git a/drivers/tty/serial/stm32-usart.h b/drivers/tty/serial/stm32-usart.h index cd97ceb76e4f..ffc0c5285e51 100644 --- a/drivers/tty/serial/stm32-usart.h +++ b/drivers/tty/serial/stm32-usart.h @@ -1,5 +1,6 @@  /*   * Copyright (C) Maxime Coquelin 2015 + * Copyright (C) STMicroelectronics SA 2017   * Authors:  Maxime Coquelin <mcoquelin.stm32@gmail.com>   *	     Gerald Baeza <gerald_baeza@yahoo.fr>   * License terms:  GNU General Public License (GPL), version 2 @@ -24,6 +25,8 @@ struct stm32_usart_offsets {  struct stm32_usart_config {  	u8 uart_enable_bit; /* USART_CR1_UE */  	bool has_7bits_data; +	bool has_wakeup; +	bool has_fifo;  };  struct stm32_usart_info { @@ -74,6 +77,28 @@ struct stm32_usart_info stm32f7_info = {  	}  }; +struct stm32_usart_info stm32h7_info = { +	.ofs = { +		.cr1	= 0x00, +		.cr2	= 0x04, +		.cr3	= 0x08, +		.brr	= 0x0c, +		.gtpr	= 0x10, +		.rtor	= 0x14, +		.rqr	= 0x18, +		.isr	= 0x1c, +		.icr	= 0x20, +		.rdr	= 0x24, +		.tdr	= 0x28, +	}, +	.cfg = { +		.uart_enable_bit = 0, +		.has_7bits_data = true, +		.has_wakeup = true, +		.has_fifo = true, +	} +}; +  /* USART_SR (F4) / USART_ISR (F7) */  #define USART_SR_PE		BIT(0)  #define USART_SR_FE		BIT(1) @@ -93,6 +118,7 @@ struct stm32_usart_info stm32f7_info = {  #define USART_SR_BUSY		BIT(16)		/* F7 */  #define USART_SR_CMF		BIT(17)		/* F7 */  #define USART_SR_SBKF		BIT(18)		/* F7 */ +#define USART_SR_WUF		BIT(20)		/* H7 */  #define USART_SR_TEACK		BIT(21)		/* F7 */  #define USART_SR_ERR_MASK	(USART_SR_LBD | USART_SR_ORE | \  				 USART_SR_FE | USART_SR_PE) @@ -113,6 +139,7 @@ struct stm32_usart_info stm32f7_info = {  /* USART_CR1 */  #define USART_CR1_SBK		BIT(0)  #define USART_CR1_RWU		BIT(1)		/* F4 */ +#define USART_CR1_UESM		BIT(1)		/* H7 */  #define USART_CR1_RE		BIT(2)  #define USART_CR1_TE		BIT(3)  #define USART_CR1_IDLEIE	BIT(4) @@ -134,6 +161,7 @@ struct stm32_usart_info stm32f7_info = {  #define USART_CR1_EOBIE		BIT(27)		/* F7 */  #define USART_CR1_M1		BIT(28)		/* F7 */  #define USART_CR1_IE_MASK	(GENMASK(8, 4) | BIT(14) | BIT(26) | BIT(27)) +#define USART_CR1_FIFOEN	BIT(29)		/* H7 */  /* USART_CR2 */  #define USART_CR2_ADD_MASK	GENMASK(3, 0)	/* F4 */ @@ -175,6 +203,9 @@ struct stm32_usart_info stm32f7_info = {  #define USART_CR3_DEM		BIT(14)		/* F7 */  #define USART_CR3_DEP		BIT(15)		/* F7 */  #define USART_CR3_SCARCNT_MASK	GENMASK(19, 17)	/* F7 */ +#define USART_CR3_WUS_MASK	GENMASK(21, 20)	/* H7 */ +#define USART_CR3_WUS_START_BIT	BIT(21)		/* H7 */ +#define USART_CR3_WUFIE		BIT(22)		/* H7 */  /* USART_GTPR */  #define USART_GTPR_PSC_MASK	GENMASK(7, 0) @@ -203,9 +234,10 @@ struct stm32_usart_info stm32f7_info = {  #define USART_ICR_RTOCF		BIT(11)		/* F7 */  #define USART_ICR_EOBCF		BIT(12)		/* F7 */  #define USART_ICR_CMCF		BIT(17)		/* F7 */ +#define USART_ICR_WUCF		BIT(20)		/* H7 */  #define STM32_SERIAL_NAME "ttyS" -#define STM32_MAX_PORTS 6 +#define STM32_MAX_PORTS 8  #define RX_BUF_L 200		 /* dma rx buffer length     */  #define RX_BUF_P RX_BUF_L	 /* dma rx buffer period     */ @@ -221,8 +253,11 @@ struct stm32_port {  	struct dma_chan *tx_ch;  /* dma tx channel            */  	dma_addr_t tx_dma_buf;   /* dma tx buffer bus address */  	unsigned char *tx_buf;   /* dma tx buffer cpu address */ +	int last_res;  	bool tx_dma_busy;	 /* dma tx busy               */  	bool hw_flow_control; +	bool fifoen; +	int wakeirq;  };  static struct stm32_port stm32_ports[STM32_MAX_PORTS];  | 
