From nobody Mon Apr 20 07:28:16 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41D82C43334 for ; Tue, 21 Jun 2022 12:50:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350747AbiFUMuU (ORCPT ); Tue, 21 Jun 2022 08:50:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239785AbiFUMuQ (ORCPT ); Tue, 21 Jun 2022 08:50:16 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B7E12A436; Tue, 21 Jun 2022 05:50:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655815815; x=1687351815; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PhyCBHnUYgFu1lkQy+iQgrwinq7N6eDlsC/oxYPLtOQ=; b=dR40iLwLUZaIKl3DrYMwUkIwoVkTZj1vTegJ6+msIOonfAiaoAtc/2jh 5GT1X2wuzeObwUrRNZERPpN8Iu3GrlXFY6DNKqhf4N2tStVryrGdnJy8O 65vfgroiO8g1ZvbC1Wo++d1+oW5DlwJMq3bFN2YBEAZ7nmtADlmId2vdm +rAsuTBKyjexUL/h6E+iwEzBZDlwa8P5cMXKf0sv6WWOTUvOYiKXgDqqO cyP37TPaK0NK6vKgVS3p7SN7jR4RcvxPTA3XRITyaErUPSq7goC7RDzBu +FfPNZW5WeEvAotzSeHnSv+wYngR5hvjkJTC6MmZzqu68/c2YkaqTurkT g==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="341792971" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="341792971" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:14 -0700 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="833561556" Received: from zjeffery-mobl1.ger.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.249.41.211]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:10 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: linux-serial@vger.kernel.org, Greg KH , Jiri Slaby , Andy Gross , Bjorn Andersson , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v2 1/6] serial: msm: Convert container_of UART_TO_MSM to static inline Date: Tue, 21 Jun 2022 15:49:53 +0300 Message-Id: <20220621124958.3342-2-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> References: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Create static inline instead of define. Signed-off-by: Ilpo J=C3=A4rvinen Reviewed-by: Jiri Slaby --- drivers/tty/serial/msm_serial.c | 49 +++++++++++++++++---------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_seria= l.c index e676ec761f18..15cab9c4b295 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c @@ -181,7 +181,10 @@ struct msm_port { struct msm_dma rx_dma; }; =20 -#define UART_TO_MSM(uart_port) container_of(uart_port, struct msm_port, ua= rt) +static inline struct msm_port *to_msm_port(struct uart_port *up) +{ + return container_of(up, struct msm_port, uart); +} =20 static void msm_write(struct uart_port *port, unsigned int val, unsigned int off) @@ -221,7 +224,7 @@ static void msm_serial_set_mnd_regs_tcxoby4(struct uart= _port *port) =20 static void msm_serial_set_mnd_regs(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 /* * These registers don't exist so we change the clk input rate @@ -404,7 +407,7 @@ static inline void msm_wait_for_xmitr(struct uart_port = *port) =20 static void msm_stop_tx(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 msm_port->imr &=3D ~UART_IMR_TXLEV; msm_write(port, msm_port->imr, UART_IMR); @@ -412,7 +415,7 @@ static void msm_stop_tx(struct uart_port *port) =20 static void msm_start_tx(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); struct msm_dma *dma =3D &msm_port->tx_dma; =20 /* Already started in DMA mode */ @@ -690,7 +693,7 @@ static void msm_start_rx_dma(struct msm_port *msm_port) =20 static void msm_stop_rx(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); struct msm_dma *dma =3D &msm_port->rx_dma; =20 msm_port->imr &=3D ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); @@ -702,7 +705,7 @@ static void msm_stop_rx(struct uart_port *port) =20 static void msm_enable_ms(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 msm_port->imr |=3D UART_IMR_DELTA_CTS; msm_write(port, msm_port->imr, UART_IMR); @@ -714,7 +717,7 @@ static void msm_handle_rx_dm(struct uart_port *port, un= signed int misr) struct tty_port *tport =3D &port->state->port; unsigned int sr; int count =3D 0; - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 if ((msm_read(port, UART_SR) & UART_SR_OVERRUN)) { port->icount.overrun++; @@ -837,7 +840,7 @@ static void msm_handle_rx(struct uart_port *port) static void msm_handle_tx_pio(struct uart_port *port, unsigned int tx_coun= t) { struct circ_buf *xmit =3D &port->state->xmit; - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); unsigned int num_chars; unsigned int tf_pointer =3D 0; void __iomem *tf; @@ -883,7 +886,7 @@ static void msm_handle_tx_pio(struct uart_port *port, u= nsigned int tx_count) =20 static void msm_handle_tx(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); struct circ_buf *xmit =3D &msm_port->uart.state->xmit; struct msm_dma *dma =3D &msm_port->tx_dma; unsigned int pio_count, dma_count, dma_min; @@ -947,7 +950,7 @@ static void msm_handle_delta_cts(struct uart_port *port) static irqreturn_t msm_uart_irq(int irq, void *dev_id) { struct uart_port *port =3D dev_id; - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); struct msm_dma *dma =3D &msm_port->rx_dma; unsigned long flags; unsigned int misr; @@ -1002,7 +1005,7 @@ static unsigned int msm_get_mctrl(struct uart_port *p= ort) =20 static void msm_reset(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); unsigned int mr; =20 /* reset everything */ @@ -1055,7 +1058,7 @@ static const struct msm_baud_map * msm_find_best_baud(struct uart_port *port, unsigned int baud, unsigned long *rate) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); unsigned int divisor, result; unsigned long target, old, best_rate =3D 0, diff, best_diff =3D ULONG_MAX; const struct msm_baud_map *entry, *end, *best; @@ -1124,7 +1127,7 @@ static int msm_set_baud_rate(struct uart_port *port, = unsigned int baud, unsigned long *saved_flags) { unsigned int rxstale, watermark, mask; - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); const struct msm_baud_map *entry; unsigned long flags, rate; =20 @@ -1185,7 +1188,7 @@ static int msm_set_baud_rate(struct uart_port *port, = unsigned int baud, =20 static void msm_init_clock(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 clk_prepare_enable(msm_port->clk); clk_prepare_enable(msm_port->pclk); @@ -1194,7 +1197,7 @@ static void msm_init_clock(struct uart_port *port) =20 static int msm_startup(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); unsigned int data, rfr_level, mask; int ret; =20 @@ -1246,7 +1249,7 @@ static int msm_startup(struct uart_port *port) =20 static void msm_shutdown(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 msm_port->imr =3D 0; msm_write(port, 0, UART_IMR); /* disable interrupts */ @@ -1262,7 +1265,7 @@ static void msm_shutdown(struct uart_port *port) static void msm_set_termios(struct uart_port *port, struct ktermios *termi= os, struct ktermios *old) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); struct msm_dma *dma =3D &msm_port->rx_dma; unsigned long flags; unsigned int baud, mr; @@ -1416,7 +1419,7 @@ static int msm_verify_port(struct uart_port *port, st= ruct serial_struct *ser) static void msm_power(struct uart_port *port, unsigned int state, unsigned int oldstate) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 switch (state) { case 0: @@ -1435,7 +1438,7 @@ static void msm_power(struct uart_port *port, unsigne= d int state, #ifdef CONFIG_CONSOLE_POLL static int msm_poll_get_char_single(struct uart_port *port) { - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); unsigned int rf_reg =3D msm_port->is_uartdm ? UARTDM_RF : UART_RF; =20 if (!(msm_read(port, UART_SR) & UART_SR_RX_READY)) @@ -1489,7 +1492,7 @@ static int msm_poll_get_char(struct uart_port *port) { u32 imr; int c; - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 /* Disable all interrupts */ imr =3D msm_read(port, UART_IMR); @@ -1509,7 +1512,7 @@ static int msm_poll_get_char(struct uart_port *port) static void msm_poll_put_char(struct uart_port *port, unsigned char c) { u32 imr; - struct msm_port *msm_port =3D UART_TO_MSM(port); + struct msm_port *msm_port =3D to_msm_port(port); =20 /* Disable all interrupts */ imr =3D msm_read(port, UART_IMR); @@ -1677,7 +1680,7 @@ static void msm_console_write(struct console *co, con= st char *s, BUG_ON(co->index < 0 || co->index >=3D UART_NR); =20 port =3D msm_get_port_from_line(co->index); - msm_port =3D UART_TO_MSM(port); + msm_port =3D to_msm_port(port); =20 __msm_console_write(port, s, count, msm_port->is_uartdm); } @@ -1808,7 +1811,7 @@ static int msm_serial_probe(struct platform_device *p= dev) =20 port =3D msm_get_port_from_line(line); port->dev =3D &pdev->dev; - msm_port =3D UART_TO_MSM(port); + msm_port =3D to_msm_port(port); =20 id =3D of_match_device(msm_uartdm_table, &pdev->dev); if (id) --=20 2.30.2 From nobody Mon Apr 20 07:28:16 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A85AC433EF for ; Tue, 21 Jun 2022 12:50:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350877AbiFUMui (ORCPT ); Tue, 21 Jun 2022 08:50:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350756AbiFUMuV (ORCPT ); Tue, 21 Jun 2022 08:50:21 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2799B2872B; Tue, 21 Jun 2022 05:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655815819; x=1687351819; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ucK4emxgkr+bGORz4Ymh1FOn2Kz+GCbQazo5XTt0L2c=; b=Kj9HlHpXevdiyGZG/NBW5Qu+Wa+3PIn29VI9Cx17QYnG9HuESZsVi+y+ /UrULffPPGbzIrnU4fLv1ZCCtHeFcYXdydurzXcT+R9z5dKUpk4CFev5+ n0QBiq47ZZaSqI+pfbzWps8A2WdxOKduk6yXOdKSFXG20gg0AEgKJbdsP bCWZFSkaXCxFma99/KhYopizjo9vGWMUwM5+XPT6CqMwi3mgaadJmsNL0 oa4qsms5kd/oldmJbNDOIdMNic37+zP0j4KrE2zQaS3lgccBuanS3ENmy JIowjLe9hRBGgfoPked83aIYTBKLlKGtLv9wAebIZG1/i4B8DF5q8FThG Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="341792986" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="341792986" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:18 -0700 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="833561570" Received: from zjeffery-mobl1.ger.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.249.41.211]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:15 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: linux-serial@vger.kernel.org, Greg KH , Jiri Slaby , Andy Gross , Bjorn Andersson , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v2 2/6] serial: msm: Rename UART_* defines to MSM_UART_* Date: Tue, 21 Jun 2022 15:49:54 +0300 Message-Id: <20220621124958.3342-3-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> References: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Using UART_* to name defines is a bit problematic. When trying to do unrelated cleanup which also involved tweaking header inclusion logic, caused UART_CSR from serial_reg.h to leak into msm's namespace which is also among msm defines. Thus, rename all UART_* ones to MSM_UART_* to avoid eliminate possibility of collisions. Signed-off-by: Ilpo J=C3=A4rvinen Reviewed-by: Jiri Slaby --- drivers/tty/serial/msm_serial.c | 501 ++++++++++++++++---------------- 1 file changed, 250 insertions(+), 251 deletions(-) diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_seria= l.c index 15cab9c4b295..3159889ddae1 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c @@ -29,103 +29,103 @@ #include #include =20 -#define UART_MR1 0x0000 - -#define UART_MR1_AUTO_RFR_LEVEL0 0x3F -#define UART_MR1_AUTO_RFR_LEVEL1 0x3FF00 -#define UART_DM_MR1_AUTO_RFR_LEVEL1 0xFFFFFF00 -#define UART_MR1_RX_RDY_CTL BIT(7) -#define UART_MR1_CTS_CTL BIT(6) - -#define UART_MR2 0x0004 -#define UART_MR2_ERROR_MODE BIT(6) -#define UART_MR2_BITS_PER_CHAR 0x30 -#define UART_MR2_BITS_PER_CHAR_5 (0x0 << 4) -#define UART_MR2_BITS_PER_CHAR_6 (0x1 << 4) -#define UART_MR2_BITS_PER_CHAR_7 (0x2 << 4) -#define UART_MR2_BITS_PER_CHAR_8 (0x3 << 4) -#define UART_MR2_STOP_BIT_LEN_ONE (0x1 << 2) -#define UART_MR2_STOP_BIT_LEN_TWO (0x3 << 2) -#define UART_MR2_PARITY_MODE_NONE 0x0 -#define UART_MR2_PARITY_MODE_ODD 0x1 -#define UART_MR2_PARITY_MODE_EVEN 0x2 -#define UART_MR2_PARITY_MODE_SPACE 0x3 -#define UART_MR2_PARITY_MODE 0x3 - -#define UART_CSR 0x0008 - -#define UART_TF 0x000C +#define MSM_UART_MR1 0x0000 + +#define MSM_UART_MR1_AUTO_RFR_LEVEL0 0x3F +#define MSM_UART_MR1_AUTO_RFR_LEVEL1 0x3FF00 +#define MSM_UART_DM_MR1_AUTO_RFR_LEVEL1 0xFFFFFF00 +#define MSM_UART_MR1_RX_RDY_CTL BIT(7) +#define MSM_UART_MR1_CTS_CTL BIT(6) + +#define MSM_UART_MR2 0x0004 +#define MSM_UART_MR2_ERROR_MODE BIT(6) +#define MSM_UART_MR2_BITS_PER_CHAR 0x30 +#define MSM_UART_MR2_BITS_PER_CHAR_5 (0x0 << 4) +#define MSM_UART_MR2_BITS_PER_CHAR_6 (0x1 << 4) +#define MSM_UART_MR2_BITS_PER_CHAR_7 (0x2 << 4) +#define MSM_UART_MR2_BITS_PER_CHAR_8 (0x3 << 4) +#define MSM_UART_MR2_STOP_BIT_LEN_ONE (0x1 << 2) +#define MSM_UART_MR2_STOP_BIT_LEN_TWO (0x3 << 2) +#define MSM_UART_MR2_PARITY_MODE_NONE 0x0 +#define MSM_UART_MR2_PARITY_MODE_ODD 0x1 +#define MSM_UART_MR2_PARITY_MODE_EVEN 0x2 +#define MSM_UART_MR2_PARITY_MODE_SPACE 0x3 +#define MSM_UART_MR2_PARITY_MODE 0x3 + +#define MSM_UART_CSR 0x0008 + +#define MSM_UART_TF 0x000C #define UARTDM_TF 0x0070 =20 -#define UART_CR 0x0010 -#define UART_CR_CMD_NULL (0 << 4) -#define UART_CR_CMD_RESET_RX (1 << 4) -#define UART_CR_CMD_RESET_TX (2 << 4) -#define UART_CR_CMD_RESET_ERR (3 << 4) -#define UART_CR_CMD_RESET_BREAK_INT (4 << 4) -#define UART_CR_CMD_START_BREAK (5 << 4) -#define UART_CR_CMD_STOP_BREAK (6 << 4) -#define UART_CR_CMD_RESET_CTS (7 << 4) -#define UART_CR_CMD_RESET_STALE_INT (8 << 4) -#define UART_CR_CMD_PACKET_MODE (9 << 4) -#define UART_CR_CMD_MODE_RESET (12 << 4) -#define UART_CR_CMD_SET_RFR (13 << 4) -#define UART_CR_CMD_RESET_RFR (14 << 4) -#define UART_CR_CMD_PROTECTION_EN (16 << 4) -#define UART_CR_CMD_STALE_EVENT_DISABLE (6 << 8) -#define UART_CR_CMD_STALE_EVENT_ENABLE (80 << 4) -#define UART_CR_CMD_FORCE_STALE (4 << 8) -#define UART_CR_CMD_RESET_TX_READY (3 << 8) -#define UART_CR_TX_DISABLE BIT(3) -#define UART_CR_TX_ENABLE BIT(2) -#define UART_CR_RX_DISABLE BIT(1) -#define UART_CR_RX_ENABLE BIT(0) -#define UART_CR_CMD_RESET_RXBREAK_START ((1 << 11) | (2 << 4)) - -#define UART_IMR 0x0014 -#define UART_IMR_TXLEV BIT(0) -#define UART_IMR_RXSTALE BIT(3) -#define UART_IMR_RXLEV BIT(4) -#define UART_IMR_DELTA_CTS BIT(5) -#define UART_IMR_CURRENT_CTS BIT(6) -#define UART_IMR_RXBREAK_START BIT(10) - -#define UART_IPR_RXSTALE_LAST 0x20 -#define UART_IPR_STALE_LSB 0x1F -#define UART_IPR_STALE_TIMEOUT_MSB 0x3FF80 -#define UART_DM_IPR_STALE_TIMEOUT_MSB 0xFFFFFF80 - -#define UART_IPR 0x0018 -#define UART_TFWR 0x001C -#define UART_RFWR 0x0020 -#define UART_HCR 0x0024 - -#define UART_MREG 0x0028 -#define UART_NREG 0x002C -#define UART_DREG 0x0030 -#define UART_MNDREG 0x0034 -#define UART_IRDA 0x0038 -#define UART_MISR_MODE 0x0040 -#define UART_MISR_RESET 0x0044 -#define UART_MISR_EXPORT 0x0048 -#define UART_MISR_VAL 0x004C -#define UART_TEST_CTRL 0x0050 - -#define UART_SR 0x0008 -#define UART_SR_HUNT_CHAR BIT(7) -#define UART_SR_RX_BREAK BIT(6) -#define UART_SR_PAR_FRAME_ERR BIT(5) -#define UART_SR_OVERRUN BIT(4) -#define UART_SR_TX_EMPTY BIT(3) -#define UART_SR_TX_READY BIT(2) -#define UART_SR_RX_FULL BIT(1) -#define UART_SR_RX_READY BIT(0) - -#define UART_RF 0x000C +#define MSM_UART_CR 0x0010 +#define MSM_UART_CR_CMD_NULL (0 << 4) +#define MSM_UART_CR_CMD_RESET_RX (1 << 4) +#define MSM_UART_CR_CMD_RESET_TX (2 << 4) +#define MSM_UART_CR_CMD_RESET_ERR (3 << 4) +#define MSM_UART_CR_CMD_RESET_BREAK_INT (4 << 4) +#define MSM_UART_CR_CMD_START_BREAK (5 << 4) +#define MSM_UART_CR_CMD_STOP_BREAK (6 << 4) +#define MSM_UART_CR_CMD_RESET_CTS (7 << 4) +#define MSM_UART_CR_CMD_RESET_STALE_INT (8 << 4) +#define MSM_UART_CR_CMD_PACKET_MODE (9 << 4) +#define MSM_UART_CR_CMD_MODE_RESET (12 << 4) +#define MSM_UART_CR_CMD_SET_RFR (13 << 4) +#define MSM_UART_CR_CMD_RESET_RFR (14 << 4) +#define MSM_UART_CR_CMD_PROTECTION_EN (16 << 4) +#define MSM_UART_CR_CMD_STALE_EVENT_DISABLE (6 << 8) +#define MSM_UART_CR_CMD_STALE_EVENT_ENABLE (80 << 4) +#define MSM_UART_CR_CMD_FORCE_STALE (4 << 8) +#define MSM_UART_CR_CMD_RESET_TX_READY (3 << 8) +#define MSM_UART_CR_TX_DISABLE BIT(3) +#define MSM_UART_CR_TX_ENABLE BIT(2) +#define MSM_UART_CR_RX_DISABLE BIT(1) +#define MSM_UART_CR_RX_ENABLE BIT(0) +#define MSM_UART_CR_CMD_RESET_RXBREAK_START ((1 << 11) | (2 << 4)) + +#define MSM_UART_IMR 0x0014 +#define MSM_UART_IMR_TXLEV BIT(0) +#define MSM_UART_IMR_RXSTALE BIT(3) +#define MSM_UART_IMR_RXLEV BIT(4) +#define MSM_UART_IMR_DELTA_CTS BIT(5) +#define MSM_UART_IMR_CURRENT_CTS BIT(6) +#define MSM_UART_IMR_RXBREAK_START BIT(10) + +#define MSM_UART_IPR_RXSTALE_LAST 0x20 +#define MSM_UART_IPR_STALE_LSB 0x1F +#define MSM_UART_IPR_STALE_TIMEOUT_MSB 0x3FF80 +#define MSM_UART_DM_IPR_STALE_TIMEOUT_MSB 0xFFFFFF80 + +#define MSM_UART_IPR 0x0018 +#define MSM_UART_TFWR 0x001C +#define MSM_UART_RFWR 0x0020 +#define MSM_UART_HCR 0x0024 + +#define MSM_UART_MREG 0x0028 +#define MSM_UART_NREG 0x002C +#define MSM_UART_DREG 0x0030 +#define MSM_UART_MNDREG 0x0034 +#define MSM_UART_IRDA 0x0038 +#define MSM_UART_MISR_MODE 0x0040 +#define MSM_UART_MISR_RESET 0x0044 +#define MSM_UART_MISR_EXPORT 0x0048 +#define MSM_UART_MISR_VAL 0x004C +#define MSM_UART_TEST_CTRL 0x0050 + +#define MSM_UART_SR 0x0008 +#define MSM_UART_SR_HUNT_CHAR BIT(7) +#define MSM_UART_SR_RX_BREAK BIT(6) +#define MSM_UART_SR_PAR_FRAME_ERR BIT(5) +#define MSM_UART_SR_OVERRUN BIT(4) +#define MSM_UART_SR_TX_EMPTY BIT(3) +#define MSM_UART_SR_TX_READY BIT(2) +#define MSM_UART_SR_RX_FULL BIT(1) +#define MSM_UART_SR_RX_READY BIT(0) + +#define MSM_UART_RF 0x000C #define UARTDM_RF 0x0070 -#define UART_MISR 0x0010 -#define UART_ISR 0x0014 -#define UART_ISR_TX_READY BIT(7) +#define MSM_UART_MISR 0x0010 +#define MSM_UART_ISR 0x0014 +#define MSM_UART_ISR_TX_READY BIT(7) =20 #define UARTDM_RXFS 0x50 #define UARTDM_RXFS_BUF_SHIFT 0x7 @@ -203,10 +203,10 @@ unsigned int msm_read(struct uart_port *port, unsigne= d int off) */ static void msm_serial_set_mnd_regs_tcxo(struct uart_port *port) { - msm_write(port, 0x06, UART_MREG); - msm_write(port, 0xF1, UART_NREG); - msm_write(port, 0x0F, UART_DREG); - msm_write(port, 0x1A, UART_MNDREG); + msm_write(port, 0x06, MSM_UART_MREG); + msm_write(port, 0xF1, MSM_UART_NREG); + msm_write(port, 0x0F, MSM_UART_DREG); + msm_write(port, 0x1A, MSM_UART_MNDREG); port->uartclk =3D 1843200; } =20 @@ -215,10 +215,10 @@ static void msm_serial_set_mnd_regs_tcxo(struct uart_= port *port) */ static void msm_serial_set_mnd_regs_tcxoby4(struct uart_port *port) { - msm_write(port, 0x18, UART_MREG); - msm_write(port, 0xF6, UART_NREG); - msm_write(port, 0x0F, UART_DREG); - msm_write(port, 0x0A, UART_MNDREG); + msm_write(port, 0x18, MSM_UART_MREG); + msm_write(port, 0xF6, MSM_UART_NREG); + msm_write(port, 0x0F, MSM_UART_DREG); + msm_write(port, 0x0A, MSM_UART_MNDREG); port->uartclk =3D 1843200; } =20 @@ -395,22 +395,22 @@ static inline void msm_wait_for_xmitr(struct uart_por= t *port) { unsigned int timeout =3D 500000; =20 - while (!(msm_read(port, UART_SR) & UART_SR_TX_EMPTY)) { - if (msm_read(port, UART_ISR) & UART_ISR_TX_READY) + while (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_TX_EMPTY)) { + if (msm_read(port, MSM_UART_ISR) & MSM_UART_ISR_TX_READY) break; udelay(1); if (!timeout--) break; } - msm_write(port, UART_CR_CMD_RESET_TX_READY, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_TX_READY, MSM_UART_CR); } =20 static void msm_stop_tx(struct uart_port *port) { struct msm_port *msm_port =3D to_msm_port(port); =20 - msm_port->imr &=3D ~UART_IMR_TXLEV; - msm_write(port, msm_port->imr, UART_IMR); + msm_port->imr &=3D ~MSM_UART_IMR_TXLEV; + msm_write(port, msm_port->imr, MSM_UART_IMR); } =20 static void msm_start_tx(struct uart_port *port) @@ -422,8 +422,8 @@ static void msm_start_tx(struct uart_port *port) if (dma->count) return; =20 - msm_port->imr |=3D UART_IMR_TXLEV; - msm_write(port, msm_port->imr, UART_IMR); + msm_port->imr |=3D MSM_UART_IMR_TXLEV; + msm_write(port, msm_port->imr, MSM_UART_IMR); } =20 static void msm_reset_dm_count(struct uart_port *port, int count) @@ -459,8 +459,8 @@ static void msm_complete_tx_dma(void *args) msm_write(port, val, UARTDM_DMEN); =20 if (msm_port->is_uartdm > UARTDM_1P3) { - msm_write(port, UART_CR_CMD_RESET_TX, UART_CR); - msm_write(port, UART_CR_TX_ENABLE, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_TX, MSM_UART_CR); + msm_write(port, MSM_UART_CR_TX_ENABLE, MSM_UART_CR); } =20 count =3D dma->count - state.residue; @@ -471,8 +471,8 @@ static void msm_complete_tx_dma(void *args) xmit->tail &=3D UART_XMIT_SIZE - 1; =20 /* Restore "Tx FIFO below watermark" interrupt */ - msm_port->imr |=3D UART_IMR_TXLEV; - msm_write(port, msm_port->imr, UART_IMR); + msm_port->imr |=3D MSM_UART_IMR_TXLEV; + msm_write(port, msm_port->imr, MSM_UART_IMR); =20 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) uart_write_wakeup(port); @@ -519,8 +519,8 @@ static int msm_handle_tx_dma(struct msm_port *msm_port,= unsigned int count) * Using DMA complete for Tx FIFO reload, no need for * "Tx FIFO below watermark" one, disable it */ - msm_port->imr &=3D ~UART_IMR_TXLEV; - msm_write(port, msm_port->imr, UART_IMR); + msm_port->imr &=3D ~MSM_UART_IMR_TXLEV; + msm_write(port, msm_port->imr, MSM_UART_IMR); =20 dma->count =3D count; =20 @@ -562,10 +562,10 @@ static void msm_complete_rx_dma(void *args) val &=3D ~dma->enable_bit; msm_write(port, val, UARTDM_DMEN); =20 - if (msm_read(port, UART_SR) & UART_SR_OVERRUN) { + if (msm_read(port, MSM_UART_SR) & MSM_UART_SR_OVERRUN) { port->icount.overrun++; tty_insert_flip_char(tport, 0, TTY_OVERRUN); - msm_write(port, UART_CR_CMD_RESET_ERR, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_ERR, MSM_UART_CR); } =20 count =3D msm_read(port, UARTDM_RX_TOTAL_SNAP); @@ -587,7 +587,7 @@ static void msm_complete_rx_dma(void *args) continue; } =20 - if (!(port->read_status_mask & UART_SR_RX_BREAK)) + if (!(port->read_status_mask & MSM_UART_SR_RX_BREAK)) flag =3D TTY_NORMAL; =20 spin_unlock_irqrestore(&port->lock, flags); @@ -641,23 +641,23 @@ static void msm_start_rx_dma(struct msm_port *msm_por= t) * Using DMA for FIFO off-load, no need for "Rx FIFO over * watermark" or "stale" interrupts, disable them */ - msm_port->imr &=3D ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); + msm_port->imr &=3D ~(MSM_UART_IMR_RXLEV | MSM_UART_IMR_RXSTALE); =20 /* * Well, when DMA is ADM3 engine(implied by <=3D UARTDM v1.3), * we need RXSTALE to flush input DMA fifo to memory */ if (msm_port->is_uartdm < UARTDM_1P4) - msm_port->imr |=3D UART_IMR_RXSTALE; + msm_port->imr |=3D MSM_UART_IMR_RXSTALE; =20 - msm_write(uart, msm_port->imr, UART_IMR); + msm_write(uart, msm_port->imr, MSM_UART_IMR); =20 dma->count =3D UARTDM_RX_SIZE; =20 dma_async_issue_pending(dma->chan); =20 - msm_write(uart, UART_CR_CMD_RESET_STALE_INT, UART_CR); - msm_write(uart, UART_CR_CMD_STALE_EVENT_ENABLE, UART_CR); + msm_write(uart, MSM_UART_CR_CMD_RESET_STALE_INT, MSM_UART_CR); + msm_write(uart, MSM_UART_CR_CMD_STALE_EVENT_ENABLE, MSM_UART_CR); =20 val =3D msm_read(uart, UARTDM_DMEN); val |=3D dma->enable_bit; @@ -679,16 +679,16 @@ static void msm_start_rx_dma(struct msm_port *msm_por= t) * Switch from DMA to SW/FIFO mode. After clearing Rx BAM (UARTDM_DMEN), * receiver must be reset. */ - msm_write(uart, UART_CR_CMD_RESET_RX, UART_CR); - msm_write(uart, UART_CR_RX_ENABLE, UART_CR); + msm_write(uart, MSM_UART_CR_CMD_RESET_RX, MSM_UART_CR); + msm_write(uart, MSM_UART_CR_RX_ENABLE, MSM_UART_CR); =20 - msm_write(uart, UART_CR_CMD_RESET_STALE_INT, UART_CR); + msm_write(uart, MSM_UART_CR_CMD_RESET_STALE_INT, MSM_UART_CR); msm_write(uart, 0xFFFFFF, UARTDM_DMRX); - msm_write(uart, UART_CR_CMD_STALE_EVENT_ENABLE, UART_CR); + msm_write(uart, MSM_UART_CR_CMD_STALE_EVENT_ENABLE, MSM_UART_CR); =20 /* Re-enable RX interrupts */ - msm_port->imr |=3D (UART_IMR_RXLEV | UART_IMR_RXSTALE); - msm_write(uart, msm_port->imr, UART_IMR); + msm_port->imr |=3D MSM_UART_IMR_RXLEV | MSM_UART_IMR_RXSTALE; + msm_write(uart, msm_port->imr, MSM_UART_IMR); } =20 static void msm_stop_rx(struct uart_port *port) @@ -696,8 +696,8 @@ static void msm_stop_rx(struct uart_port *port) struct msm_port *msm_port =3D to_msm_port(port); struct msm_dma *dma =3D &msm_port->rx_dma; =20 - msm_port->imr &=3D ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); - msm_write(port, msm_port->imr, UART_IMR); + msm_port->imr &=3D ~(MSM_UART_IMR_RXLEV | MSM_UART_IMR_RXSTALE); + msm_write(port, msm_port->imr, MSM_UART_IMR); =20 if (dma->chan) msm_stop_dma(port, dma); @@ -707,8 +707,8 @@ static void msm_enable_ms(struct uart_port *port) { struct msm_port *msm_port =3D to_msm_port(port); =20 - msm_port->imr |=3D UART_IMR_DELTA_CTS; - msm_write(port, msm_port->imr, UART_IMR); + msm_port->imr |=3D MSM_UART_IMR_DELTA_CTS; + msm_write(port, msm_port->imr, MSM_UART_IMR); } =20 static void msm_handle_rx_dm(struct uart_port *port, unsigned int misr) @@ -719,18 +719,18 @@ static void msm_handle_rx_dm(struct uart_port *port, = unsigned int misr) int count =3D 0; struct msm_port *msm_port =3D to_msm_port(port); =20 - if ((msm_read(port, UART_SR) & UART_SR_OVERRUN)) { + if ((msm_read(port, MSM_UART_SR) & MSM_UART_SR_OVERRUN)) { port->icount.overrun++; tty_insert_flip_char(tport, 0, TTY_OVERRUN); - msm_write(port, UART_CR_CMD_RESET_ERR, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_ERR, MSM_UART_CR); } =20 - if (misr & UART_IMR_RXSTALE) { + if (misr & MSM_UART_IMR_RXSTALE) { count =3D msm_read(port, UARTDM_RX_TOTAL_SNAP) - msm_port->old_snap_state; msm_port->old_snap_state =3D 0; } else { - count =3D 4 * (msm_read(port, UART_RFWR)); + count =3D 4 * (msm_read(port, MSM_UART_RFWR)); msm_port->old_snap_state +=3D count; } =20 @@ -742,8 +742,8 @@ static void msm_handle_rx_dm(struct uart_port *port, un= signed int misr) unsigned char buf[4]; int sysrq, r_count, i; =20 - sr =3D msm_read(port, UART_SR); - if ((sr & UART_SR_RX_READY) =3D=3D 0) { + sr =3D msm_read(port, MSM_UART_SR); + if ((sr & MSM_UART_SR_RX_READY) =3D=3D 0) { msm_port->old_snap_state -=3D count; break; } @@ -762,7 +762,7 @@ static void msm_handle_rx_dm(struct uart_port *port, un= signed int misr) continue; } =20 - if (!(port->read_status_mask & UART_SR_RX_BREAK)) + if (!(port->read_status_mask & MSM_UART_SR_RX_BREAK)) flag =3D TTY_NORMAL; =20 spin_unlock(&port->lock); @@ -776,10 +776,10 @@ static void msm_handle_rx_dm(struct uart_port *port, = unsigned int misr) =20 tty_flip_buffer_push(tport); =20 - if (misr & (UART_IMR_RXSTALE)) - msm_write(port, UART_CR_CMD_RESET_STALE_INT, UART_CR); + if (misr & (MSM_UART_IMR_RXSTALE)) + msm_write(port, MSM_UART_CR_CMD_RESET_STALE_INT, MSM_UART_CR); msm_write(port, 0xFFFFFF, UARTDM_DMRX); - msm_write(port, UART_CR_CMD_STALE_EVENT_ENABLE, UART_CR); + msm_write(port, MSM_UART_CR_CMD_STALE_EVENT_ENABLE, MSM_UART_CR); =20 /* Try to use DMA */ msm_start_rx_dma(msm_port); @@ -795,25 +795,25 @@ static void msm_handle_rx(struct uart_port *port) * Handle overrun. My understanding of the hardware is that overrun * is not tied to the RX buffer, so we handle the case out of band. */ - if ((msm_read(port, UART_SR) & UART_SR_OVERRUN)) { + if ((msm_read(port, MSM_UART_SR) & MSM_UART_SR_OVERRUN)) { port->icount.overrun++; tty_insert_flip_char(tport, 0, TTY_OVERRUN); - msm_write(port, UART_CR_CMD_RESET_ERR, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_ERR, MSM_UART_CR); } =20 /* and now the main RX loop */ - while ((sr =3D msm_read(port, UART_SR)) & UART_SR_RX_READY) { + while ((sr =3D msm_read(port, MSM_UART_SR)) & MSM_UART_SR_RX_READY) { unsigned int c; char flag =3D TTY_NORMAL; int sysrq; =20 - c =3D msm_read(port, UART_RF); + c =3D msm_read(port, MSM_UART_RF); =20 - if (sr & UART_SR_RX_BREAK) { + if (sr & MSM_UART_SR_RX_BREAK) { port->icount.brk++; if (uart_handle_break(port)) continue; - } else if (sr & UART_SR_PAR_FRAME_ERR) { + } else if (sr & MSM_UART_SR_PAR_FRAME_ERR) { port->icount.frame++; } else { port->icount.rx++; @@ -822,9 +822,9 @@ static void msm_handle_rx(struct uart_port *port) /* Mask conditions we're ignorning. */ sr &=3D port->read_status_mask; =20 - if (sr & UART_SR_RX_BREAK) + if (sr & MSM_UART_SR_RX_BREAK) flag =3D TTY_BREAK; - else if (sr & UART_SR_PAR_FRAME_ERR) + else if (sr & MSM_UART_SR_PAR_FRAME_ERR) flag =3D TTY_FRAME; =20 spin_unlock(&port->lock); @@ -848,7 +848,7 @@ static void msm_handle_tx_pio(struct uart_port *port, u= nsigned int tx_count) if (msm_port->is_uartdm) tf =3D port->membase + UARTDM_TF; else - tf =3D port->membase + UART_TF; + tf =3D port->membase + MSM_UART_TF; =20 if (tx_count && msm_port->is_uartdm) msm_reset_dm_count(port, tx_count); @@ -857,7 +857,7 @@ static void msm_handle_tx_pio(struct uart_port *port, u= nsigned int tx_count) int i; char buf[4] =3D { 0 }; =20 - if (!(msm_read(port, UART_SR) & UART_SR_TX_READY)) + if (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_TX_READY)) break; =20 if (msm_port->is_uartdm) @@ -898,7 +898,7 @@ static void msm_handle_tx(struct uart_port *port) if (msm_port->is_uartdm) tf =3D port->membase + UARTDM_TF; else - tf =3D port->membase + UART_TF; + tf =3D port->membase + MSM_UART_TF; =20 buf[0] =3D port->x_char; =20 @@ -942,7 +942,7 @@ static void msm_handle_tx(struct uart_port *port) =20 static void msm_handle_delta_cts(struct uart_port *port) { - msm_write(port, UART_CR_CMD_RESET_CTS, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_CTS, MSM_UART_CR); port->icount.cts++; wake_up_interruptible(&port->state->port.delta_msr_wait); } @@ -957,20 +957,20 @@ static irqreturn_t msm_uart_irq(int irq, void *dev_id) u32 val; =20 spin_lock_irqsave(&port->lock, flags); - misr =3D msm_read(port, UART_MISR); - msm_write(port, 0, UART_IMR); /* disable interrupt */ + misr =3D msm_read(port, MSM_UART_MISR); + msm_write(port, 0, MSM_UART_IMR); /* disable interrupt */ =20 - if (misr & UART_IMR_RXBREAK_START) { + if (misr & MSM_UART_IMR_RXBREAK_START) { msm_port->break_detected =3D true; - msm_write(port, UART_CR_CMD_RESET_RXBREAK_START, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_RXBREAK_START, MSM_UART_CR); } =20 - if (misr & (UART_IMR_RXLEV | UART_IMR_RXSTALE)) { + if (misr & (MSM_UART_IMR_RXLEV | MSM_UART_IMR_RXSTALE)) { if (dma->count) { - val =3D UART_CR_CMD_STALE_EVENT_DISABLE; - msm_write(port, val, UART_CR); - val =3D UART_CR_CMD_RESET_STALE_INT; - msm_write(port, val, UART_CR); + val =3D MSM_UART_CR_CMD_STALE_EVENT_DISABLE; + msm_write(port, val, MSM_UART_CR); + val =3D MSM_UART_CR_CMD_RESET_STALE_INT; + msm_write(port, val, MSM_UART_CR); /* * Flush DMA input fifo to memory, this will also * trigger DMA RX completion @@ -982,12 +982,12 @@ static irqreturn_t msm_uart_irq(int irq, void *dev_id) msm_handle_rx(port); } } - if (misr & UART_IMR_TXLEV) + if (misr & MSM_UART_IMR_TXLEV) msm_handle_tx(port); - if (misr & UART_IMR_DELTA_CTS) + if (misr & MSM_UART_IMR_DELTA_CTS) msm_handle_delta_cts(port); =20 - msm_write(port, msm_port->imr, UART_IMR); /* restore interrupt */ + msm_write(port, msm_port->imr, MSM_UART_IMR); /* restore interrupt */ spin_unlock_irqrestore(&port->lock, flags); =20 return IRQ_HANDLED; @@ -995,7 +995,7 @@ static irqreturn_t msm_uart_irq(int irq, void *dev_id) =20 static unsigned int msm_tx_empty(struct uart_port *port) { - return (msm_read(port, UART_SR) & UART_SR_TX_EMPTY) ? TIOCSER_TEMT : 0; + return (msm_read(port, MSM_UART_SR) & MSM_UART_SR_TX_EMPTY) ? TIOCSER_TEM= T : 0; } =20 static unsigned int msm_get_mctrl(struct uart_port *port) @@ -1009,15 +1009,15 @@ static void msm_reset(struct uart_port *port) unsigned int mr; =20 /* reset everything */ - msm_write(port, UART_CR_CMD_RESET_RX, UART_CR); - msm_write(port, UART_CR_CMD_RESET_TX, UART_CR); - msm_write(port, UART_CR_CMD_RESET_ERR, UART_CR); - msm_write(port, UART_CR_CMD_RESET_BREAK_INT, UART_CR); - msm_write(port, UART_CR_CMD_RESET_CTS, UART_CR); - msm_write(port, UART_CR_CMD_RESET_RFR, UART_CR); - mr =3D msm_read(port, UART_MR1); - mr &=3D ~UART_MR1_RX_RDY_CTL; - msm_write(port, mr, UART_MR1); + msm_write(port, MSM_UART_CR_CMD_RESET_RX, MSM_UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_TX, MSM_UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_ERR, MSM_UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_BREAK_INT, MSM_UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_CTS, MSM_UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_RFR, MSM_UART_CR); + mr =3D msm_read(port, MSM_UART_MR1); + mr &=3D ~MSM_UART_MR1_RX_RDY_CTL; + msm_write(port, mr, MSM_UART_MR1); =20 /* Disable DM modes */ if (msm_port->is_uartdm) @@ -1028,24 +1028,24 @@ static void msm_set_mctrl(struct uart_port *port, u= nsigned int mctrl) { unsigned int mr; =20 - mr =3D msm_read(port, UART_MR1); + mr =3D msm_read(port, MSM_UART_MR1); =20 if (!(mctrl & TIOCM_RTS)) { - mr &=3D ~UART_MR1_RX_RDY_CTL; - msm_write(port, mr, UART_MR1); - msm_write(port, UART_CR_CMD_RESET_RFR, UART_CR); + mr &=3D ~MSM_UART_MR1_RX_RDY_CTL; + msm_write(port, mr, MSM_UART_MR1); + msm_write(port, MSM_UART_CR_CMD_RESET_RFR, MSM_UART_CR); } else { - mr |=3D UART_MR1_RX_RDY_CTL; - msm_write(port, mr, UART_MR1); + mr |=3D MSM_UART_MR1_RX_RDY_CTL; + msm_write(port, mr, MSM_UART_MR1); } } =20 static void msm_break_ctl(struct uart_port *port, int break_ctl) { if (break_ctl) - msm_write(port, UART_CR_CMD_START_BREAK, UART_CR); + msm_write(port, MSM_UART_CR_CMD_START_BREAK, MSM_UART_CR); else - msm_write(port, UART_CR_CMD_STOP_BREAK, UART_CR); + msm_write(port, MSM_UART_CR_CMD_STOP_BREAK, MSM_UART_CR); } =20 struct msm_baud_map { @@ -1142,45 +1142,45 @@ static int msm_set_baud_rate(struct uart_port *port= , unsigned int baud, *saved_flags =3D flags; port->uartclk =3D rate; =20 - msm_write(port, entry->code, UART_CSR); + msm_write(port, entry->code, MSM_UART_CSR); =20 /* RX stale watermark */ rxstale =3D entry->rxstale; - watermark =3D UART_IPR_STALE_LSB & rxstale; + watermark =3D MSM_UART_IPR_STALE_LSB & rxstale; if (msm_port->is_uartdm) { - mask =3D UART_DM_IPR_STALE_TIMEOUT_MSB; + mask =3D MSM_UART_DM_IPR_STALE_TIMEOUT_MSB; } else { - watermark |=3D UART_IPR_RXSTALE_LAST; - mask =3D UART_IPR_STALE_TIMEOUT_MSB; + watermark |=3D MSM_UART_IPR_RXSTALE_LAST; + mask =3D MSM_UART_IPR_STALE_TIMEOUT_MSB; } =20 watermark |=3D mask & (rxstale << 2); =20 - msm_write(port, watermark, UART_IPR); + msm_write(port, watermark, MSM_UART_IPR); =20 /* set RX watermark */ watermark =3D (port->fifosize * 3) / 4; - msm_write(port, watermark, UART_RFWR); + msm_write(port, watermark, MSM_UART_RFWR); =20 /* set TX watermark */ - msm_write(port, 10, UART_TFWR); + msm_write(port, 10, MSM_UART_TFWR); =20 - msm_write(port, UART_CR_CMD_PROTECTION_EN, UART_CR); + msm_write(port, MSM_UART_CR_CMD_PROTECTION_EN, MSM_UART_CR); msm_reset(port); =20 /* Enable RX and TX */ - msm_write(port, UART_CR_TX_ENABLE | UART_CR_RX_ENABLE, UART_CR); + msm_write(port, MSM_UART_CR_TX_ENABLE | MSM_UART_CR_RX_ENABLE, MSM_UART_C= R); =20 /* turn on RX and CTS interrupts */ - msm_port->imr =3D UART_IMR_RXLEV | UART_IMR_RXSTALE | - UART_IMR_CURRENT_CTS | UART_IMR_RXBREAK_START; + msm_port->imr =3D MSM_UART_IMR_RXLEV | MSM_UART_IMR_RXSTALE | + MSM_UART_IMR_CURRENT_CTS | MSM_UART_IMR_RXBREAK_START; =20 - msm_write(port, msm_port->imr, UART_IMR); + msm_write(port, msm_port->imr, MSM_UART_IMR); =20 if (msm_port->is_uartdm) { - msm_write(port, UART_CR_CMD_RESET_STALE_INT, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_STALE_INT, MSM_UART_CR); msm_write(port, 0xFFFFFF, UARTDM_DMRX); - msm_write(port, UART_CR_CMD_STALE_EVENT_ENABLE, UART_CR); + msm_write(port, MSM_UART_CR_CMD_STALE_EVENT_ENABLE, MSM_UART_CR); } =20 return baud; @@ -1212,18 +1212,18 @@ static int msm_startup(struct uart_port *port) rfr_level =3D port->fifosize; =20 /* set automatic RFR level */ - data =3D msm_read(port, UART_MR1); + data =3D msm_read(port, MSM_UART_MR1); =20 if (msm_port->is_uartdm) - mask =3D UART_DM_MR1_AUTO_RFR_LEVEL1; + mask =3D MSM_UART_DM_MR1_AUTO_RFR_LEVEL1; else - mask =3D UART_MR1_AUTO_RFR_LEVEL1; + mask =3D MSM_UART_MR1_AUTO_RFR_LEVEL1; =20 data &=3D ~mask; - data &=3D ~UART_MR1_AUTO_RFR_LEVEL0; + data &=3D ~MSM_UART_MR1_AUTO_RFR_LEVEL0; data |=3D mask & (rfr_level << 2); - data |=3D UART_MR1_AUTO_RFR_LEVEL0 & rfr_level; - msm_write(port, data, UART_MR1); + data |=3D MSM_UART_MR1_AUTO_RFR_LEVEL0 & rfr_level; + msm_write(port, data, MSM_UART_MR1); =20 if (msm_port->is_uartdm) { msm_request_tx_dma(msm_port, msm_port->uart.mapbase); @@ -1252,7 +1252,7 @@ static void msm_shutdown(struct uart_port *port) struct msm_port *msm_port =3D to_msm_port(port); =20 msm_port->imr =3D 0; - msm_write(port, 0, UART_IMR); /* disable interrupts */ + msm_write(port, 0, MSM_UART_IMR); /* disable interrupts */ =20 if (msm_port->is_uartdm) msm_release_dma(msm_port); @@ -1282,60 +1282,60 @@ static void msm_set_termios(struct uart_port *port,= struct ktermios *termios, tty_termios_encode_baud_rate(termios, baud, baud); =20 /* calculate parity */ - mr =3D msm_read(port, UART_MR2); - mr &=3D ~UART_MR2_PARITY_MODE; + mr =3D msm_read(port, MSM_UART_MR2); + mr &=3D ~MSM_UART_MR2_PARITY_MODE; if (termios->c_cflag & PARENB) { if (termios->c_cflag & PARODD) - mr |=3D UART_MR2_PARITY_MODE_ODD; + mr |=3D MSM_UART_MR2_PARITY_MODE_ODD; else if (termios->c_cflag & CMSPAR) - mr |=3D UART_MR2_PARITY_MODE_SPACE; + mr |=3D MSM_UART_MR2_PARITY_MODE_SPACE; else - mr |=3D UART_MR2_PARITY_MODE_EVEN; + mr |=3D MSM_UART_MR2_PARITY_MODE_EVEN; } =20 /* calculate bits per char */ - mr &=3D ~UART_MR2_BITS_PER_CHAR; + mr &=3D ~MSM_UART_MR2_BITS_PER_CHAR; switch (termios->c_cflag & CSIZE) { case CS5: - mr |=3D UART_MR2_BITS_PER_CHAR_5; + mr |=3D MSM_UART_MR2_BITS_PER_CHAR_5; break; case CS6: - mr |=3D UART_MR2_BITS_PER_CHAR_6; + mr |=3D MSM_UART_MR2_BITS_PER_CHAR_6; break; case CS7: - mr |=3D UART_MR2_BITS_PER_CHAR_7; + mr |=3D MSM_UART_MR2_BITS_PER_CHAR_7; break; case CS8: default: - mr |=3D UART_MR2_BITS_PER_CHAR_8; + mr |=3D MSM_UART_MR2_BITS_PER_CHAR_8; break; } =20 /* calculate stop bits */ - mr &=3D ~(UART_MR2_STOP_BIT_LEN_ONE | UART_MR2_STOP_BIT_LEN_TWO); + mr &=3D ~(MSM_UART_MR2_STOP_BIT_LEN_ONE | MSM_UART_MR2_STOP_BIT_LEN_TWO); if (termios->c_cflag & CSTOPB) - mr |=3D UART_MR2_STOP_BIT_LEN_TWO; + mr |=3D MSM_UART_MR2_STOP_BIT_LEN_TWO; else - mr |=3D UART_MR2_STOP_BIT_LEN_ONE; + mr |=3D MSM_UART_MR2_STOP_BIT_LEN_ONE; =20 /* set parity, bits per char, and stop bit */ - msm_write(port, mr, UART_MR2); + msm_write(port, mr, MSM_UART_MR2); =20 /* calculate and set hardware flow control */ - mr =3D msm_read(port, UART_MR1); - mr &=3D ~(UART_MR1_CTS_CTL | UART_MR1_RX_RDY_CTL); + mr =3D msm_read(port, MSM_UART_MR1); + mr &=3D ~(MSM_UART_MR1_CTS_CTL | MSM_UART_MR1_RX_RDY_CTL); if (termios->c_cflag & CRTSCTS) { - mr |=3D UART_MR1_CTS_CTL; - mr |=3D UART_MR1_RX_RDY_CTL; + mr |=3D MSM_UART_MR1_CTS_CTL; + mr |=3D MSM_UART_MR1_RX_RDY_CTL; } - msm_write(port, mr, UART_MR1); + msm_write(port, mr, MSM_UART_MR1); =20 /* Configure status bits to ignore based on termio flags. */ port->read_status_mask =3D 0; if (termios->c_iflag & INPCK) - port->read_status_mask |=3D UART_SR_PAR_FRAME_ERR; + port->read_status_mask |=3D MSM_UART_SR_PAR_FRAME_ERR; if (termios->c_iflag & (IGNBRK | BRKINT | PARMRK)) - port->read_status_mask |=3D UART_SR_RX_BREAK; + port->read_status_mask |=3D MSM_UART_SR_RX_BREAK; =20 uart_update_timeout(port, termios->c_cflag, baud); =20 @@ -1439,9 +1439,9 @@ static void msm_power(struct uart_port *port, unsigne= d int state, static int msm_poll_get_char_single(struct uart_port *port) { struct msm_port *msm_port =3D to_msm_port(port); - unsigned int rf_reg =3D msm_port->is_uartdm ? UARTDM_RF : UART_RF; + unsigned int rf_reg =3D msm_port->is_uartdm ? UARTDM_RF : MSM_UART_RF; =20 - if (!(msm_read(port, UART_SR) & UART_SR_RX_READY)) + if (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_RX_READY)) return NO_POLL_CHAR; =20 return msm_read(port, rf_reg) & 0xff; @@ -1459,7 +1459,7 @@ static int msm_poll_get_char_dm(struct uart_port *por= t) c =3D sp[sizeof(slop) - count]; count--; /* Or if FIFO is empty */ - } else if (!(msm_read(port, UART_SR) & UART_SR_RX_READY)) { + } else if (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_RX_READY)) { /* * If RX packing buffer has less than a word, force stale to * push contents into RX FIFO @@ -1467,14 +1467,13 @@ static int msm_poll_get_char_dm(struct uart_port *p= ort) count =3D msm_read(port, UARTDM_RXFS); count =3D (count >> UARTDM_RXFS_BUF_SHIFT) & UARTDM_RXFS_BUF_MASK; if (count) { - msm_write(port, UART_CR_CMD_FORCE_STALE, UART_CR); + msm_write(port, MSM_UART_CR_CMD_FORCE_STALE, MSM_UART_CR); slop =3D msm_read(port, UARTDM_RF); c =3D sp[0]; count--; - msm_write(port, UART_CR_CMD_RESET_STALE_INT, UART_CR); + msm_write(port, MSM_UART_CR_CMD_RESET_STALE_INT, MSM_UART_CR); msm_write(port, 0xFFFFFF, UARTDM_DMRX); - msm_write(port, UART_CR_CMD_STALE_EVENT_ENABLE, - UART_CR); + msm_write(port, MSM_UART_CR_CMD_STALE_EVENT_ENABLE, MSM_UART_CR); } else { c =3D NO_POLL_CHAR; } @@ -1495,8 +1494,8 @@ static int msm_poll_get_char(struct uart_port *port) struct msm_port *msm_port =3D to_msm_port(port); =20 /* Disable all interrupts */ - imr =3D msm_read(port, UART_IMR); - msm_write(port, 0, UART_IMR); + imr =3D msm_read(port, MSM_UART_IMR); + msm_write(port, 0, MSM_UART_IMR); =20 if (msm_port->is_uartdm) c =3D msm_poll_get_char_dm(port); @@ -1504,7 +1503,7 @@ static int msm_poll_get_char(struct uart_port *port) c =3D msm_poll_get_char_single(port); =20 /* Enable interrupts */ - msm_write(port, imr, UART_IMR); + msm_write(port, imr, MSM_UART_IMR); =20 return c; } @@ -1515,25 +1514,25 @@ static void msm_poll_put_char(struct uart_port *por= t, unsigned char c) struct msm_port *msm_port =3D to_msm_port(port); =20 /* Disable all interrupts */ - imr =3D msm_read(port, UART_IMR); - msm_write(port, 0, UART_IMR); + imr =3D msm_read(port, MSM_UART_IMR); + msm_write(port, 0, MSM_UART_IMR); =20 if (msm_port->is_uartdm) msm_reset_dm_count(port, 1); =20 /* Wait until FIFO is empty */ - while (!(msm_read(port, UART_SR) & UART_SR_TX_READY)) + while (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_TX_READY)) cpu_relax(); =20 /* Write a character */ - msm_write(port, c, msm_port->is_uartdm ? UARTDM_TF : UART_TF); + msm_write(port, c, msm_port->is_uartdm ? UARTDM_TF : MSM_UART_TF); =20 /* Wait until FIFO is empty */ - while (!(msm_read(port, UART_SR) & UART_SR_TX_READY)) + while (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_TX_READY)) cpu_relax(); =20 /* Enable interrupts */ - msm_write(port, imr, UART_IMR); + msm_write(port, imr, MSM_UART_IMR); } #endif =20 @@ -1591,7 +1590,7 @@ static struct msm_port msm_uart_ports[] =3D { }, }; =20 -#define UART_NR ARRAY_SIZE(msm_uart_ports) +#define MSM_UART_NR ARRAY_SIZE(msm_uart_ports) =20 static inline struct uart_port *msm_get_port_from_line(unsigned int line) { @@ -1612,7 +1611,7 @@ static void __msm_console_write(struct uart_port *por= t, const char *s, if (is_uartdm) tf =3D port->membase + UARTDM_TF; else - tf =3D port->membase + UART_TF; + tf =3D port->membase + MSM_UART_TF; =20 /* Account for newlines that will get a carriage return added */ for (i =3D 0; i < count; i++) @@ -1658,7 +1657,7 @@ static void __msm_console_write(struct uart_port *por= t, const char *s, } } =20 - while (!(msm_read(port, UART_SR) & UART_SR_TX_READY)) + while (!(msm_read(port, MSM_UART_SR) & MSM_UART_SR_TX_READY)) cpu_relax(); =20 iowrite32_rep(tf, buf, 1); @@ -1677,7 +1676,7 @@ static void msm_console_write(struct console *co, con= st char *s, struct uart_port *port; struct msm_port *msm_port; =20 - BUG_ON(co->index < 0 || co->index >=3D UART_NR); + BUG_ON(co->index < 0 || co->index >=3D MSM_UART_NR); =20 port =3D msm_get_port_from_line(co->index); msm_port =3D to_msm_port(port); @@ -1693,7 +1692,7 @@ static int msm_console_setup(struct console *co, char= *options) int parity =3D 'n'; int flow =3D 'n'; =20 - if (unlikely(co->index >=3D UART_NR || co->index < 0)) + if (unlikely(co->index >=3D MSM_UART_NR || co->index < 0)) return -ENXIO; =20 port =3D msm_get_port_from_line(co->index); @@ -1774,7 +1773,7 @@ static struct uart_driver msm_uart_driver =3D { .owner =3D THIS_MODULE, .driver_name =3D "msm_serial", .dev_name =3D "ttyMSM", - .nr =3D UART_NR, + .nr =3D MSM_UART_NR, .cons =3D MSM_CONSOLE, }; =20 @@ -1804,7 +1803,7 @@ static int msm_serial_probe(struct platform_device *p= dev) if (line < 0) line =3D atomic_inc_return(&msm_uart_next_id) - 1; =20 - if (unlikely(line < 0 || line >=3D UART_NR)) + if (unlikely(line < 0 || line >=3D MSM_UART_NR)) return -ENXIO; =20 dev_info(&pdev->dev, "msm_serial: detected port #%d\n", line); --=20 2.30.2 From nobody Mon Apr 20 07:28:16 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C9EAC43334 for ; Tue, 21 Jun 2022 12:50:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350865AbiFUMug (ORCPT ); Tue, 21 Jun 2022 08:50:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350812AbiFUMuW (ORCPT ); Tue, 21 Jun 2022 08:50:22 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 955EE2A43D; Tue, 21 Jun 2022 05:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655815821; x=1687351821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MjaLBNVZD6GIe/krItfqqymmS/cXarankYY7kmlJRRQ=; b=ksD0ioJ+KUj+l9YH1eGdw8L4jXMrXRJtucUcrLEuSFbM2lZe+o+8eoUJ F/tUnIi25TSsifJCdyhhGWigZy4xJlSQQs1Fg2iCSxK/kGvXrv7FXjq9a QuEdQDs9BNrDSkGYqBRzeMQBNjrzmSqecEhtGzn0q0XjvcMUnYLy3qJox 5cjPlpue5OZu23/Tg+oY7Mq6qG1IEv456Kb0gvD7yliKaa5k330tPH9xk NwWW2vEjoJJl2f/TLIIaUWJakI7Lfc4O/j+lB0dviz+kftIzOrbsf8N3T dYQoGBN2aRQ6B17n6sfB3w+EyYfwHddBKmSIJW/rx3q0bXTunJaX7WwVo g==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="341792996" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="341792996" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:21 -0700 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="833561579" Received: from zjeffery-mobl1.ger.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.249.41.211]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:19 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: linux-serial@vger.kernel.org, Greg KH , Jiri Slaby , linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v2 3/6] serial: Use bits for UART_LSR_BRK_ERROR_BITS/MSR_ANY_DELTA Date: Tue, 21 Jun 2022 15:49:55 +0300 Message-Id: <20220621124958.3342-4-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> References: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Instead of listing the bits for UART_LSR_BRK_ERROR_BITS and UART_MSR_ANY_DELTA in comment, use them to define instead. Signed-off-by: Ilpo J=C3=A4rvinen Reviewed-by: Jiri Slaby --- include/uapi/linux/serial_reg.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_re= g.h index f51bc8f36813..bab3b39266cc 100644 --- a/include/uapi/linux/serial_reg.h +++ b/include/uapi/linux/serial_reg.h @@ -139,7 +139,7 @@ #define UART_LSR_PE 0x04 /* Parity error indicator */ #define UART_LSR_OE 0x02 /* Overrun error indicator */ #define UART_LSR_DR 0x01 /* Receiver data ready */ -#define UART_LSR_BRK_ERROR_BITS 0x1E /* BI, FE, PE, OE bits */ +#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI|UART_LSR_FE|UART_LSR_PE|UART_= LSR_OE) =20 #define UART_MSR 6 /* In: Modem Status Register */ #define UART_MSR_DCD 0x80 /* Data Carrier Detect */ @@ -150,7 +150,7 @@ #define UART_MSR_TERI 0x04 /* Trailing edge ring indicator */ #define UART_MSR_DDSR 0x02 /* Delta DSR */ #define UART_MSR_DCTS 0x01 /* Delta CTS */ -#define UART_MSR_ANY_DELTA 0x0F /* Any of the delta bits! */ +#define UART_MSR_ANY_DELTA (UART_MSR_DDCD|UART_MSR_TERI|UART_MSR_DDSR|UART= _MSR_DCTS) =20 #define UART_SCR 7 /* I/O: Scratch Register */ =20 --=20 2.30.2 From nobody Mon Apr 20 07:28:16 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C93FCC43334 for ; Tue, 21 Jun 2022 12:50:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350898AbiFUMun (ORCPT ); Tue, 21 Jun 2022 08:50:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350754AbiFUMuZ (ORCPT ); Tue, 21 Jun 2022 08:50:25 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 640432A43F; Tue, 21 Jun 2022 05:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655815824; x=1687351824; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ixMQi5m0yAWtx781C2psFoRemTcSPTJq60wZ+v7XFco=; b=JZwwJmYnk9ohQVDVNeql+Oh/OPLHTMl+HiHKL9lm9JaVpfzqI8l7OddP Y98SuzNNvqtxuAWssWIwfeDLeXuBZdnfM4fVO4b9JVRtZKatRldXtBHMa a867k0fKYpFOjHK62bHUpjRQWxEUwIYiYYTiP1knAlPAG/NFxhae+3+4C KHKFQHh72YF0HyIqSpS9oZdJbK//npVoXIysQBvoEnsZ3QBqW+fiiWWAB 6ShdEn+a/tJd/yDMYQ/uSjtvHxf6wTqenWPnm2fjKMcSMNpyZKkRZRPdM WNDzQm+xM65kN6qJPIO2WRBY3RJ2mTdXnGjcm90Z5PyVHLwzb5198iYeR A==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="341793002" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="341793002" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:24 -0700 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="833561582" Received: from zjeffery-mobl1.ger.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.249.41.211]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:22 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: linux-serial@vger.kernel.org, Greg KH , Jiri Slaby , linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v2 4/6] serial: 8250: Use C99 array initializer & define UART_REG_UNMAPPED Date: Tue, 21 Jun 2022 15:49:56 +0300 Message-Id: <20220621124958.3342-5-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> References: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use C99 array initializer insteads of comments and make unmapped checks more obvious. Signed-off-by: Ilpo J=C3=A4rvinen Reviewed-by: Jiri Slaby --- drivers/tty/serial/8250/8250_port.c | 38 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/= 8250_port.c index 953b0fadfd4c..432742a567b6 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -336,27 +336,29 @@ static void default_serial_dl_write(struct uart_8250_= port *up, int value) =20 #ifdef CONFIG_SERIAL_8250_RT288X =20 +#define UART_REG_UNMAPPED -1 + /* Au1x00/RT288x UART hardware has a weird register layout */ static const s8 au_io_in_map[8] =3D { - 0, /* UART_RX */ - 2, /* UART_IER */ - 3, /* UART_IIR */ - 5, /* UART_LCR */ - 6, /* UART_MCR */ - 7, /* UART_LSR */ - 8, /* UART_MSR */ - -1, /* UART_SCR (unmapped) */ + [UART_RX] =3D 0, + [UART_IER] =3D 2, + [UART_IIR] =3D 3, + [UART_LCR] =3D 5, + [UART_MCR] =3D 6, + [UART_LSR] =3D 7, + [UART_MSR] =3D 8, + [UART_SCR] =3D UART_REG_UNMAPPED, }; =20 static const s8 au_io_out_map[8] =3D { - 1, /* UART_TX */ - 2, /* UART_IER */ - 4, /* UART_FCR */ - 5, /* UART_LCR */ - 6, /* UART_MCR */ - -1, /* UART_LSR (unmapped) */ - -1, /* UART_MSR (unmapped) */ - -1, /* UART_SCR (unmapped) */ + [UART_TX] =3D 1, + [UART_IER] =3D 2, + [UART_FCR] =3D 4, + [UART_LCR] =3D 5, + [UART_MCR] =3D 6, + [UART_LSR] =3D UART_REG_UNMAPPED, + [UART_MSR] =3D UART_REG_UNMAPPED, + [UART_SCR] =3D UART_REG_UNMAPPED, }; =20 unsigned int au_serial_in(struct uart_port *p, int offset) @@ -364,7 +366,7 @@ unsigned int au_serial_in(struct uart_port *p, int offs= et) if (offset >=3D ARRAY_SIZE(au_io_in_map)) return UINT_MAX; offset =3D au_io_in_map[offset]; - if (offset < 0) + if (offset =3D=3D UART_REG_UNMAPPED) return UINT_MAX; return __raw_readl(p->membase + (offset << p->regshift)); } @@ -374,7 +376,7 @@ void au_serial_out(struct uart_port *p, int offset, int= value) if (offset >=3D ARRAY_SIZE(au_io_out_map)) return; offset =3D au_io_out_map[offset]; - if (offset < 0) + if (offset =3D=3D UART_REG_UNMAPPED) return; __raw_writel(value, p->membase + (offset << p->regshift)); } --=20 2.30.2 From nobody Mon Apr 20 07:28:16 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 512EBC433EF for ; Tue, 21 Jun 2022 12:50:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350938AbiFUMuu (ORCPT ); Tue, 21 Jun 2022 08:50:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350839AbiFUMub (ORCPT ); Tue, 21 Jun 2022 08:50:31 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 880532A439; Tue, 21 Jun 2022 05:50:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655815829; x=1687351829; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yH8POsgRhRXCiIZTZnKwKTqk7N6N290ggzSM4QXCYYM=; b=FAPOlgJLI0ytHrgmQ3vpEfIs0M61wYLg21c4scQRoOTIJrNter2CUikL LOl7fXk6cZVTkRiCX3oUGwVvcHyh3BNt4QBOYEhdDNOfntKeR2t38MBT5 b6hT8+Cbj8CpJ0UH2KWCa057gSCk6Dw9fXAdOj3v8XOapggr2wMeMTRYS SfHrVBQ7eKh9j4cwNsMHi4z18S57zS62h75xcZPhrdCilzWef7z4uqM3E OfQXtBP77bxCCz5TTVshepKEAEe0QpLVganItw8hsbOSgRsK1MlILgCqa lPEXhdRf1pGaud1Sh9vUs8vYS2cGfzhMsHJlUCWjm0Y/ddd29774x26yy A==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="341793011" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="341793011" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:29 -0700 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="833561587" Received: from zjeffery-mobl1.ger.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.249.41.211]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:25 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: linux-serial@vger.kernel.org, Greg KH , Jiri Slaby , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , =?UTF-8?q?Andreas=20F=C3=A4rber?= , Manivannan Sadhasivam , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-actions@lists.infradead.org, linux-unisoc@lists.infradead.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v2 5/6] serial: Use UART_XMIT_SIZE Date: Tue, 21 Jun 2022 15:49:57 +0300 Message-Id: <20220621124958.3342-6-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> References: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Both UART_XMIT_SIZE and SERIAL_XMIT_SIZE are defined. Make them all UART_XMIT_SIZE. Signed-off-by: Ilpo J=C3=A4rvinen --- drivers/tty/amiserial.c | 18 +++++++++--------- drivers/tty/mips_ejtag_fdc.c | 2 +- drivers/tty/serial/meson_uart.c | 2 +- drivers/tty/serial/owl-uart.c | 2 +- drivers/tty/serial/rda-uart.c | 2 +- include/linux/serial.h | 6 ------ include/linux/serial_core.h | 1 + 7 files changed, 14 insertions(+), 19 deletions(-) diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c index afb2d373dd47..5458e2b1c125 100644 --- a/drivers/tty/amiserial.c +++ b/drivers/tty/amiserial.c @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -283,12 +284,12 @@ static void transmit_chars(struct serial_state *info) =20 amiga_custom.serdat =3D info->xmit.buf[info->xmit.tail++] | 0x100; mb(); - info->xmit.tail =3D info->xmit.tail & (SERIAL_XMIT_SIZE-1); + info->xmit.tail =3D info->xmit.tail & (UART_XMIT_SIZE - 1); info->icount.tx++; =20 if (CIRC_CNT(info->xmit.head, info->xmit.tail, - SERIAL_XMIT_SIZE) < WAKEUP_CHARS) + UART_XMIT_SIZE) < WAKEUP_CHARS) tty_wakeup(info->tport.tty); =20 #ifdef SERIAL_DEBUG_INTR @@ -708,13 +709,13 @@ static int rs_put_char(struct tty_struct *tty, unsign= ed char ch) local_irq_save(flags); if (CIRC_SPACE(info->xmit.head, info->xmit.tail, - SERIAL_XMIT_SIZE) =3D=3D 0) { + UART_XMIT_SIZE) =3D=3D 0) { local_irq_restore(flags); return 0; } =20 info->xmit.buf[info->xmit.head++] =3D ch; - info->xmit.head &=3D SERIAL_XMIT_SIZE-1; + info->xmit.head &=3D UART_XMIT_SIZE - 1; local_irq_restore(flags); return 1; } @@ -753,15 +754,14 @@ static int rs_write(struct tty_struct * tty, const un= signed char *buf, int count while (1) { c =3D CIRC_SPACE_TO_END(info->xmit.head, info->xmit.tail, - SERIAL_XMIT_SIZE); + UART_XMIT_SIZE); if (count < c) c =3D count; if (c <=3D 0) { break; } memcpy(info->xmit.buf + info->xmit.head, buf, c); - info->xmit.head =3D ((info->xmit.head + c) & - (SERIAL_XMIT_SIZE-1)); + info->xmit.head =3D (info->xmit.head + c) & (UART_XMIT_SIZE - 1); buf +=3D c; count -=3D c; ret +=3D c; @@ -788,14 +788,14 @@ static unsigned int rs_write_room(struct tty_struct *= tty) { struct serial_state *info =3D tty->driver_data; =20 - return CIRC_SPACE(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE); + return CIRC_SPACE(info->xmit.head, info->xmit.tail, UART_XMIT_SIZE); } =20 static unsigned int rs_chars_in_buffer(struct tty_struct *tty) { struct serial_state *info =3D tty->driver_data; =20 - return CIRC_CNT(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE); + return CIRC_CNT(info->xmit.head, info->xmit.tail, UART_XMIT_SIZE); } =20 static void rs_flush_buffer(struct tty_struct *tty) diff --git a/drivers/tty/mips_ejtag_fdc.c b/drivers/tty/mips_ejtag_fdc.c index 49907427a165..e81701a66429 100644 --- a/drivers/tty/mips_ejtag_fdc.c +++ b/drivers/tty/mips_ejtag_fdc.c @@ -916,7 +916,7 @@ static int mips_ejtag_fdc_tty_probe(struct mips_cdmm_de= vice *dev) mips_ejtag_fdc_write(priv, REG_FDCFG, cfg); =20 /* Make each port's xmit FIFO big enough to fill FDC TX FIFO */ - priv->xmit_size =3D min(tx_fifo * 4, (unsigned int)SERIAL_XMIT_SIZE); + priv->xmit_size =3D min(tx_fifo * 4, (unsigned int)UART_XMIT_SIZE); =20 driver =3D tty_alloc_driver(NUM_TTY_CHANNELS, TTY_DRIVER_REAL_RAW); if (IS_ERR(driver)) diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uar= t.c index 4869c0059c98..6c8db19fd572 100644 --- a/drivers/tty/serial/meson_uart.c +++ b/drivers/tty/serial/meson_uart.c @@ -162,7 +162,7 @@ static void meson_uart_start_tx(struct uart_port *port) =20 ch =3D xmit->buf[xmit->tail]; writel(ch, port->membase + AML_UART_WFIFO); - xmit->tail =3D (xmit->tail+1) & (SERIAL_XMIT_SIZE - 1); + xmit->tail =3D (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; } =20 diff --git a/drivers/tty/serial/owl-uart.c b/drivers/tty/serial/owl-uart.c index 44d20e5a7dd3..888e17e3f25f 100644 --- a/drivers/tty/serial/owl-uart.c +++ b/drivers/tty/serial/owl-uart.c @@ -201,7 +201,7 @@ static void owl_uart_send_chars(struct uart_port *port) =20 ch =3D xmit->buf[xmit->tail]; owl_uart_write(port, ch, OWL_UART_TXDAT); - xmit->tail =3D (xmit->tail + 1) & (SERIAL_XMIT_SIZE - 1); + xmit->tail =3D (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; } =20 diff --git a/drivers/tty/serial/rda-uart.c b/drivers/tty/serial/rda-uart.c index f556b4955f59..feb2054aba37 100644 --- a/drivers/tty/serial/rda-uart.c +++ b/drivers/tty/serial/rda-uart.c @@ -353,7 +353,7 @@ static void rda_uart_send_chars(struct uart_port *port) =20 ch =3D xmit->buf[xmit->tail]; rda_uart_write(port, ch, RDA_UART_RXTX_BUFFER); - xmit->tail =3D (xmit->tail + 1) & (SERIAL_XMIT_SIZE - 1); + xmit->tail =3D (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; } =20 diff --git a/include/linux/serial.h b/include/linux/serial.h index 0b8b7d7c8f33..70a9866e4abb 100644 --- a/include/linux/serial.h +++ b/include/linux/serial.h @@ -9,7 +9,6 @@ #ifndef _LINUX_SERIAL_H #define _LINUX_SERIAL_H =20 -#include #include =20 /* Helper for dealing with UART_LCR_WLEN* defines */ @@ -25,11 +24,6 @@ struct async_icount { __u32 buf_overrun; }; =20 -/* - * The size of the serial xmit buffer is 1 page, or 4096 bytes - */ -#define SERIAL_XMIT_SIZE PAGE_SIZE - #include =20 #endif /* _LINUX_SERIAL_H */ diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 5518b70177b3..1767dee98021 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -296,6 +296,7 @@ struct uart_state { struct uart_port *uart_port; }; =20 +/* The size of the serial xmit buffer is 1 page, or 4096 bytes */ #define UART_XMIT_SIZE PAGE_SIZE =20 =20 --=20 2.30.2 From nobody Mon Apr 20 07:28:16 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 86037C43334 for ; Tue, 21 Jun 2022 12:50:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350968AbiFUMuy (ORCPT ); Tue, 21 Jun 2022 08:50:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350812AbiFUMug (ORCPT ); Tue, 21 Jun 2022 08:50:36 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E2ED2A714; Tue, 21 Jun 2022 05:50:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655815835; x=1687351835; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jphQvuNWUDLk1nLZ5YpCob7RfIIJgmVazyGz6XAGpTk=; b=UeRJHhMK/gybZNqB2FSrb18X3qmoi5L9jqpm6UZm54au3VViNfZ3hfeo h9oH+IuSjd7XY4TCsG3NhJdmhyNv5blmOc2OlVZ3zrSDsQMaKPgY1+Qxj 1h+46GYoSUKm4ER5zwPRrZ5R7pUxtw2dQHQCJEDdwJVFCnq8XJttuauwK LKRMYLf1n/iU5VIQaUmjJWrPil0Pcsx3DRRJNqSGFl6WCg6EP3zATlwYN nxmb78GliEdqtBh+USvSc3fLHTGMzL7YyoudiRTFFgwUO1HMkvRI3x9b1 MisEdv+dacLRn9r7Nb6kcSG5nzcBu3oCQVZ8xRqKboDpNhZVNz3uALNRl w==; X-IronPort-AV: E=McAfee;i="6400,9594,10384"; a="341793021" X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="341793021" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:34 -0700 X-IronPort-AV: E=Sophos;i="5.92,209,1650956400"; d="scan'208";a="833561596" Received: from zjeffery-mobl1.ger.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.249.41.211]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2022 05:50:30 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: linux-serial@vger.kernel.org, Greg KH , Jiri Slaby , Thomas Bogendoerfer , William Hubbs , Chris Brannon , Kirk Reiser , Samuel Thibault , "David S. Miller" , linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, speakup@linux-speakup.org, sparclinux@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v2 6/6] serial: Consolidate BOTH_EMPTY use Date: Tue, 21 Jun 2022 15:49:58 +0300 Message-Id: <20220621124958.3342-7-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> References: <20220621124958.3342-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Per file BOTH_EMPTY defines are littering our source code here and there. Define once in serial.h and create helper for the check too. Signed-off-by: Ilpo J=C3=A4rvinen Reviewed-by: Jiri Slaby --- arch/mips/ath79/early_printk.c | 9 +++++---- drivers/accessibility/speakup/serialio.h | 3 +-- drivers/tty/serial/8250/8250_early.c | 4 +--- drivers/tty/serial/8250/8250_port.c | 12 +++++------- drivers/tty/serial/omap-serial.c | 7 +++---- drivers/tty/serial/pch_uart.c | 7 +++---- drivers/tty/serial/pxa.c | 5 ++--- drivers/tty/serial/sunsu.c | 4 +--- drivers/tty/serial/vr41xx_siu.c | 4 +--- include/linux/serial.h | 9 +++++++++ 10 files changed, 31 insertions(+), 33 deletions(-) diff --git a/arch/mips/ath79/early_printk.c b/arch/mips/ath79/early_printk.c index 8751d067f98f..f6d02b425a10 100644 --- a/arch/mips/ath79/early_printk.c +++ b/arch/mips/ath79/early_printk.c @@ -8,6 +8,7 @@ =20 #include #include +#include #include #include #include @@ -29,15 +30,15 @@ static inline void prom_putchar_wait(void __iomem *reg,= u32 mask, u32 val) } while (1); } =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - static void prom_putchar_ar71xx(char ch) { void __iomem *base =3D (void __iomem *)(KSEG1ADDR(AR71XX_UART_BASE)); =20 - prom_putchar_wait(base + UART_LSR * 4, BOTH_EMPTY, BOTH_EMPTY); + prom_putchar_wait(base + UART_LSR * 4, UART_LSR_BOTH_EMPTY, + UART_LSR_BOTH_EMPTY); __raw_writel((unsigned char)ch, base + UART_TX * 4); - prom_putchar_wait(base + UART_LSR * 4, BOTH_EMPTY, BOTH_EMPTY); + prom_putchar_wait(base + UART_LSR * 4, UART_LSR_BOTH_EMPTY, + UART_LSR_BOTH_EMPTY); } =20 static void prom_putchar_ar933x(char ch) diff --git a/drivers/accessibility/speakup/serialio.h b/drivers/accessibili= ty/speakup/serialio.h index 6f8f86f161bb..b4f9a1925b81 100644 --- a/drivers/accessibility/speakup/serialio.h +++ b/drivers/accessibility/speakup/serialio.h @@ -33,9 +33,8 @@ struct old_serial_port { #define NUM_DISABLE_TIMEOUTS 3 /* buffer timeout in ms */ #define SPK_TIMEOUT 100 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) =20 #define spk_serial_tx_busy() \ - ((inb(speakup_info.port_tts + UART_LSR) & BOTH_EMPTY) !=3D BOTH_EMPTY) + (!uart_lsr_tx_empty(inb(speakup_info.port_tts + UART_LSR))) =20 #endif diff --git a/drivers/tty/serial/8250/8250_early.c b/drivers/tty/serial/8250= /8250_early.c index e52585064565..f271becfc46c 100644 --- a/drivers/tty/serial/8250/8250_early.c +++ b/drivers/tty/serial/8250/8250_early.c @@ -84,8 +84,6 @@ static void serial8250_early_out(struct uart_port *port, = int offset, int value) } } =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - static void serial_putc(struct uart_port *port, unsigned char c) { unsigned int status; @@ -94,7 +92,7 @@ static void serial_putc(struct uart_port *port, unsigned = char c) =20 for (;;) { status =3D serial8250_early_in(port, UART_LSR); - if ((status & BOTH_EMPTY) =3D=3D BOTH_EMPTY) + if (uart_lsr_tx_empty(status)) break; cpu_relax(); } diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/= 8250_port.c index 432742a567b6..647bd351e611 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -50,8 +50,6 @@ #define DEBUG_AUTOCONF(fmt...) do { } while (0) #endif =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - /* * Here we define the default xmit fifo size used for each type of UART. */ @@ -1841,7 +1839,7 @@ void serial8250_tx_chars(struct uart_8250_port *up) if (uart_circ_empty(xmit)) break; if ((up->capabilities & UART_CAP_HFIFO) && - (serial_in(up, UART_LSR) & BOTH_EMPTY) !=3D BOTH_EMPTY) + !uart_lsr_tx_empty(serial_in(up, UART_LSR))) break; /* The BCM2835 MINI UART THRE bit is really a not-full bit. */ if ((up->capabilities & UART_CAP_MINI) && @@ -2001,7 +1999,7 @@ static unsigned int serial8250_tx_empty(struct uart_p= ort *port) =20 serial8250_rpm_put(up); =20 - return (lsr & BOTH_EMPTY) =3D=3D BOTH_EMPTY ? TIOCSER_TEMT : 0; + return uart_lsr_tx_empty(lsr) ? TIOCSER_TEMT : 0; } =20 unsigned int serial8250_do_get_mctrl(struct uart_port *port) @@ -2149,7 +2147,7 @@ static void serial8250_put_poll_char(struct uart_port= *port, else serial_port_out(port, UART_IER, 0); =20 - wait_for_xmitr(up, BOTH_EMPTY); + wait_for_xmitr(up, UART_LSR_BOTH_EMPTY); /* * Send the character out. */ @@ -2159,7 +2157,7 @@ static void serial8250_put_poll_char(struct uart_port= *port, * Finally, wait for transmitter to become empty * and restore the IER */ - wait_for_xmitr(up, BOTH_EMPTY); + wait_for_xmitr(up, UART_LSR_BOTH_EMPTY); serial_port_out(port, UART_IER, ier); serial8250_rpm_put(up); } @@ -3429,7 +3427,7 @@ void serial8250_console_write(struct uart_8250_port *= up, const char *s, * Finally, wait for transmitter to become empty * and restore the IER */ - wait_for_xmitr(up, BOTH_EMPTY); + wait_for_xmitr(up, UART_LSR_BOTH_EMPTY); =20 if (em485) { mdelay(port->rs485.delay_rts_after_send); diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-ser= ial.c index 98622c35d896..52cb1a68b053 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -1102,8 +1103,6 @@ serial_omap_type(struct uart_port *port) return up->name; } =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - static void __maybe_unused wait_for_xmitr(struct uart_omap_port *up) { unsigned int status, tmout =3D 10000; @@ -1118,7 +1117,7 @@ static void __maybe_unused wait_for_xmitr(struct uart= _omap_port *up) if (--tmout =3D=3D 0) break; udelay(1); - } while ((status & BOTH_EMPTY) !=3D BOTH_EMPTY); + } while (!uart_lsr_tx_empty(status)); =20 /* Wait up to 1s for flow control if necessary */ if (up->port.flags & UPF_CONS_FLOW) { @@ -1186,7 +1185,7 @@ static void omap_serial_early_putc(struct uart_port *= port, unsigned char c) =20 for (;;) { status =3D omap_serial_early_in(port, UART_LSR); - if ((status & BOTH_EMPTY) =3D=3D BOTH_EMPTY) + if (uart_lsr_tx_empty(status)) break; cpu_relax(); } diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c index 3b26524d48e3..8a9065e4a903 100644 --- a/drivers/tty/serial/pch_uart.c +++ b/drivers/tty/serial/pch_uart.c @@ -3,6 +3,7 @@ *Copyright (C) 2011 LAPIS Semiconductor Co., Ltd. */ #include +#include #include #include #include @@ -189,8 +190,6 @@ enum { #define PCH_UART_HAL_LOOP (PCH_UART_MCR_LOOP) #define PCH_UART_HAL_AFE (PCH_UART_MCR_AFE) =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - #define DEFAULT_UARTCLK 1843200 /* 1.8432 MHz */ #define CMITC_UARTCLK 192000000 /* 192.0000 MHz */ #define FRI2_64_UARTCLK 64000000 /* 64.0000 MHz */ @@ -1516,7 +1515,7 @@ static void pch_uart_put_poll_char(struct uart_port *= port, * Finally, wait for transmitter to become empty * and restore the IER */ - wait_for_xmitr(priv, BOTH_EMPTY); + wait_for_xmitr(priv, UART_LSR_BOTH_EMPTY); iowrite8(ier, priv->membase + UART_IER); } #endif /* CONFIG_CONSOLE_POLL */ @@ -1602,7 +1601,7 @@ pch_console_write(struct console *co, const char *s, = unsigned int count) * Finally, wait for transmitter to become empty * and restore the IER */ - wait_for_xmitr(priv, BOTH_EMPTY); + wait_for_xmitr(priv, UART_LSR_BOTH_EMPTY); iowrite8(ier, priv->membase + UART_IER); =20 if (port_locked) diff --git a/drivers/tty/serial/pxa.c b/drivers/tty/serial/pxa.c index e80ba8e10407..9309ffd87c8e 100644 --- a/drivers/tty/serial/pxa.c +++ b/drivers/tty/serial/pxa.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -575,8 +576,6 @@ static struct uart_driver serial_pxa_reg; =20 #ifdef CONFIG_SERIAL_PXA_CONSOLE =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - /* * Wait for transmitter & holding register to empty */ @@ -594,7 +593,7 @@ static void wait_for_xmitr(struct uart_pxa_port *up) if (--tmout =3D=3D 0) break; udelay(1); - } while ((status & BOTH_EMPTY) !=3D BOTH_EMPTY); + } while (!uart_lsr_tx_empty(status)); =20 /* Wait up to 1s for flow control if necessary */ if (up->port.flags & UPF_CONS_FLOW) { diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c index fff50b5b82eb..84d545e5a8c7 100644 --- a/drivers/tty/serial/sunsu.c +++ b/drivers/tty/serial/sunsu.c @@ -1249,8 +1249,6 @@ static int sunsu_kbd_ms_init(struct uart_sunsu_port *= up) =20 #ifdef CONFIG_SERIAL_SUNSU_CONSOLE =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - /* * Wait for transmitter & holding register to empty */ @@ -1268,7 +1266,7 @@ static void wait_for_xmitr(struct uart_sunsu_port *up) if (--tmout =3D=3D 0) break; udelay(1); - } while ((status & BOTH_EMPTY) !=3D BOTH_EMPTY); + } while (!uart_lsr_tx_empty(status)); =20 /* Wait up to 1s for flow control if necessary */ if (up->port.flags & UPF_CONS_FLOW) { diff --git a/drivers/tty/serial/vr41xx_siu.c b/drivers/tty/serial/vr41xx_si= u.c index e0bf003ca3a1..1ba689a81abd 100644 --- a/drivers/tty/serial/vr41xx_siu.c +++ b/drivers/tty/serial/vr41xx_siu.c @@ -703,8 +703,6 @@ static int siu_init_ports(struct platform_device *pdev) =20 #ifdef CONFIG_SERIAL_VR41XX_CONSOLE =20 -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) - static void wait_for_xmitr(struct uart_port *port) { int timeout =3D 10000; @@ -715,7 +713,7 @@ static void wait_for_xmitr(struct uart_port *port) if (lsr & UART_LSR_BI) lsr_break_flag[port->line] =3D UART_LSR_BI; =20 - if ((lsr & BOTH_EMPTY) =3D=3D BOTH_EMPTY) + if (uart_lsr_tx_empty(lsr)) break; } while (timeout-- > 0); =20 diff --git a/include/linux/serial.h b/include/linux/serial.h index 70a9866e4abb..3d6fe3ef92cf 100644 --- a/include/linux/serial.h +++ b/include/linux/serial.h @@ -10,10 +10,19 @@ #define _LINUX_SERIAL_H =20 #include +#include =20 /* Helper for dealing with UART_LCR_WLEN* defines */ #define UART_LCR_WLEN(x) ((x) - 5) =20 +/* FIFO and shifting register empty */ +#define UART_LSR_BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) + +static inline bool uart_lsr_tx_empty(u16 lsr) +{ + return (lsr & UART_LSR_BOTH_EMPTY) =3D=3D UART_LSR_BOTH_EMPTY; +} + /* * Counters of the input lines (CTS, DSR, RI, CD) interrupts */ --=20 2.30.2