From nobody Thu Sep 18 20:23:27 2025 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 A3738C4167B for ; Fri, 2 Dec 2022 08:56:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232773AbiLBI4N (ORCPT ); Fri, 2 Dec 2022 03:56:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232685AbiLBI4B (ORCPT ); Fri, 2 Dec 2022 03:56:01 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C32B1B0B57 for ; Fri, 2 Dec 2022 00:55:59 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id y16so6800585wrm.2 for ; Fri, 02 Dec 2022 00:55:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x1c6aXOWkMzrvJWb4ybDXSFS8VHGCMiU8NIu3wtX2eo=; b=694MnBs8EVHYUboDXpYYiI8nEEN7eca2HVwJjKcwng2hc1eDHB5VtphXEA/KVm66e5 9JWhUzz02mQvHH+kys8x2AfvJ0bLtkJ2FAO6skrmfKQiff94tAgD/XmXFhDbPoFJqvN6 DWhwhr5SJ5ZIqH4YDaIs3Eu5qcCAP+EDc0Ck+uD2UX1yeeT4hZx+qBt9/IdUQqke6hx0 pfxr9Jhq/yrOrq4X4pXHC0mtTHcunqxCZcXNE3xJ5R/5/ki4zOnwNPEtiyomyZVo1PJq zUtW6eiuouAdQHZ1iBTQKgQIEDNcIHvOQhDO2KGAiUSEP+8pHrDMTSE3uzcwQf2EeNQ6 75KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x1c6aXOWkMzrvJWb4ybDXSFS8VHGCMiU8NIu3wtX2eo=; b=ILVTnqLu64GeQZbYshetau/2ucW8LpRAPMahHFq5PUmNTiNgASMrWVE/l003V18XVu rfOwl9uJpJoOOYSrd1N1erv338eU2/VbL8zR4kxmiwzdBXwT/WGQ/Np8AU5vzL98aLI5 UxmJb7z890gcc/B+EPkXQJuKWjgInTRHoAn85GMsNPsLNkBth7L0lp4L/ip9XOIhkQ8c CRFRXjBzFx68HZuwaeFsKy+h8lQqWDf1tkt2MvnggXJvKnhN4mRHMYNAZkRvClAi+7t9 4dnsOpIyXrhdiabYLtx3RUJNfZ2xFClzy13ZtxCU2tuZsWj8P+lTE27WT/8hTIf/ZBOf yWmQ== X-Gm-Message-State: ANoB5pkHdN6/k3x4/H6ytydlBECRRJLgeSHSpVKy9exT1Fk91cI3Qj4q yi+h3fj0PXEzNxn+o2RZLK3p2A== X-Google-Smtp-Source: AA0mqf68uFv9ga9P20A66J6s/h4kE0KcUl74H+PdN1/QEUrgMX6n5hHxY+6gXFTaqlC/QMDBk5mjDQ== X-Received: by 2002:a5d:6191:0:b0:236:6102:bf3d with SMTP id j17-20020a5d6191000000b002366102bf3dmr42217654wru.705.1669971358337; Fri, 02 Dec 2022 00:55:58 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.55.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:55:57 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 01/14] tty: serial: qcom-geni-serial: drop unneeded forward definitions Date: Fri, 2 Dec 2022 09:55:41 +0100 Message-Id: <20221202085554.59637-2-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski If we shuffle the code a bit, we can drop all forward definitions of various static functions. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 79 +++++++++++++-------------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 83b66b73303a..9f2212e7b5ec 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -147,11 +147,6 @@ static const struct uart_ops qcom_geni_console_pops; static const struct uart_ops qcom_geni_uart_pops; static struct uart_driver qcom_geni_console_driver; static struct uart_driver qcom_geni_uart_driver; -static int handle_rx_console(struct uart_port *uport, u32 bytes, bool drop= ); -static int handle_rx_uart(struct uart_port *uport, u32 bytes, bool drop); -static unsigned int qcom_geni_serial_tx_empty(struct uart_port *port); -static void qcom_geni_serial_stop_rx(struct uart_port *uport); -static void qcom_geni_serial_handle_rx(struct uart_port *uport, bool drop); =20 #define to_dev_port(ptr, member) \ container_of(ptr, struct qcom_geni_serial_port, member) @@ -590,6 +585,11 @@ static int handle_rx_uart(struct uart_port *uport, u32= bytes, bool drop) return ret; } =20 +static unsigned int qcom_geni_serial_tx_empty(struct uart_port *uport) +{ + return !readl(uport->membase + SE_GENI_TX_FIFO_STATUS); +} + static void qcom_geni_serial_start_tx(struct uart_port *uport) { u32 irq_en; @@ -635,25 +635,29 @@ static void qcom_geni_serial_stop_tx(struct uart_port= *uport) writel(M_CMD_CANCEL_EN, uport->membase + SE_GENI_M_IRQ_CLEAR); } =20 -static void qcom_geni_serial_start_rx(struct uart_port *uport) +static void qcom_geni_serial_handle_rx(struct uart_port *uport, bool drop) { - u32 irq_en; u32 status; + u32 word_cnt; + u32 last_word_byte_cnt; + u32 last_word_partial; + u32 total_bytes; struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); =20 - status =3D readl(uport->membase + SE_GENI_STATUS); - if (status & S_GENI_CMD_ACTIVE) - qcom_geni_serial_stop_rx(uport); - - geni_se_setup_s_cmd(&port->se, UART_START_READ, 0); - - irq_en =3D readl(uport->membase + SE_GENI_S_IRQ_EN); - irq_en |=3D S_RX_FIFO_WATERMARK_EN | S_RX_FIFO_LAST_EN; - writel(irq_en, uport->membase + SE_GENI_S_IRQ_EN); + status =3D readl(uport->membase + SE_GENI_RX_FIFO_STATUS); + word_cnt =3D status & RX_FIFO_WC_MSK; + last_word_partial =3D status & RX_LAST; + last_word_byte_cnt =3D (status & RX_LAST_BYTE_VALID_MSK) >> + RX_LAST_BYTE_VALID_SHFT; =20 - irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); - irq_en |=3D M_RX_FIFO_WATERMARK_EN | M_RX_FIFO_LAST_EN; - writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); + if (!word_cnt) + return; + total_bytes =3D BYTES_PER_FIFO_WORD * (word_cnt - 1); + if (last_word_partial && last_word_byte_cnt) + total_bytes +=3D last_word_byte_cnt; + else + total_bytes +=3D BYTES_PER_FIFO_WORD; + port->handle_rx(uport, total_bytes, drop); } =20 static void qcom_geni_serial_stop_rx(struct uart_port *uport) @@ -694,29 +698,25 @@ static void qcom_geni_serial_stop_rx(struct uart_port= *uport) qcom_geni_serial_abort_rx(uport); } =20 -static void qcom_geni_serial_handle_rx(struct uart_port *uport, bool drop) +static void qcom_geni_serial_start_rx(struct uart_port *uport) { + u32 irq_en; u32 status; - u32 word_cnt; - u32 last_word_byte_cnt; - u32 last_word_partial; - u32 total_bytes; struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); =20 - status =3D readl(uport->membase + SE_GENI_RX_FIFO_STATUS); - word_cnt =3D status & RX_FIFO_WC_MSK; - last_word_partial =3D status & RX_LAST; - last_word_byte_cnt =3D (status & RX_LAST_BYTE_VALID_MSK) >> - RX_LAST_BYTE_VALID_SHFT; + status =3D readl(uport->membase + SE_GENI_STATUS); + if (status & S_GENI_CMD_ACTIVE) + qcom_geni_serial_stop_rx(uport); =20 - if (!word_cnt) - return; - total_bytes =3D BYTES_PER_FIFO_WORD * (word_cnt - 1); - if (last_word_partial && last_word_byte_cnt) - total_bytes +=3D last_word_byte_cnt; - else - total_bytes +=3D BYTES_PER_FIFO_WORD; - port->handle_rx(uport, total_bytes, drop); + geni_se_setup_s_cmd(&port->se, UART_START_READ, 0); + + irq_en =3D readl(uport->membase + SE_GENI_S_IRQ_EN); + irq_en |=3D S_RX_FIFO_WATERMARK_EN | S_RX_FIFO_LAST_EN; + writel(irq_en, uport->membase + SE_GENI_S_IRQ_EN); + + irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); + irq_en |=3D M_RX_FIFO_WATERMARK_EN | M_RX_FIFO_LAST_EN; + writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); } =20 static void qcom_geni_serial_handle_tx(struct uart_port *uport, bool done, @@ -1122,11 +1122,6 @@ static void qcom_geni_serial_set_termios(struct uart= _port *uport, qcom_geni_serial_start_rx(uport); } =20 -static unsigned int qcom_geni_serial_tx_empty(struct uart_port *uport) -{ - return !readl(uport->membase + SE_GENI_TX_FIFO_STATUS); -} - #ifdef CONFIG_SERIAL_QCOM_GENI_CONSOLE static int qcom_geni_console_setup(struct console *co, char *options) { --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 3681DC4332F for ; Fri, 2 Dec 2022 08:56:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232814AbiLBI4Y (ORCPT ); Fri, 2 Dec 2022 03:56:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232707AbiLBI4E (ORCPT ); Fri, 2 Dec 2022 03:56:04 -0500 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2618BEE32 for ; Fri, 2 Dec 2022 00:56:00 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id ay27-20020a05600c1e1b00b003d070f4060bso3717749wmb.2 for ; Fri, 02 Dec 2022 00:56:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S89n9QHiQI/y9x3/RBBeD2hc63bXZL5TZ/yxbLwZvtk=; b=WHOc2IwlJtP3msa5dp04MwOfIjoCyqf7msunV1drtI8gwRTxnLzQNGptkHrOMvarHA +bfJ/ZhseK9p5BKodxiYX0/5w9fp5lmwlSimZrs+7JHOAQgAEa46NWAFQue2/Q7iDBj1 oLzFPs5YXemMJCNwb+kafFV4BmzFM7jIclYUXnV9F4PsRpCvlHadsQGC3fVCk6s6zMVL zDYeGK/um5M8SVowqc1jXglRhbZm02r6/X7/raU1iUhI1Pt2ylWZIi+IiPw2oNM8uK7k FqgsaXOAybGN4/F8bbLX7xaC9nfdRzq2ozlZejdmvOoNEdfjBAVF1GDpP/Kok285J1Oc ufTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S89n9QHiQI/y9x3/RBBeD2hc63bXZL5TZ/yxbLwZvtk=; b=tcmPrVk0iOV3/eTYPH5XtkfbNkMGpQbhE6DHpSlUaAacC1k2cK8joej4cyADxhQTkn Eu+CaKiO5LBK74vHbQ4VlUreMp+szrrhd4flOVbcybpKQIP0MferVeBDFtCqjtYp4nlT WIWcwap4Pr1RBUoSeU1YIVBb+2bq6E3cDPVa7p8WxuVr0yf/tlCSP4CZLhBOepvRgGvC BbheoAvpS4JDnrhuJQikLUSkHmfNEf72PIgdUzQLNL0sIqcg6rwd4WLgwMqIwMtbTc1H JjCkg7XMUBE1wBoU4kYdKoh3+EzJ2ffSLKgcNUCnz5ez7UgeUXpAZq9uTaKVxw4QVmFq QekQ== X-Gm-Message-State: ANoB5pkm1gSvQV9rKn0uTMNYmBj9s4FXcb6Xg81fG2J4MsXkkgdY34FS J7zw2S6finru5IPGonzojb6wFg== X-Google-Smtp-Source: AA0mqf5N5FCu4mjWwOwadlHR5tBz3at09EQJlTZXMxfmxIlfbKbDZ73phiGEqxN4f4jxkwC1+7dQVw== X-Received: by 2002:a1c:f006:0:b0:3cf:7b68:631 with SMTP id a6-20020a1cf006000000b003cf7b680631mr56253232wmb.55.1669971359261; Fri, 02 Dec 2022 00:55:59 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.55.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:55:58 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 02/14] tty: serial: qcom-geni-serial: remove unused symbols Date: Fri, 2 Dec 2022 09:55:42 +0100 Message-Id: <20221202085554.59637-3-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski Drop all unused symbols from the driver. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 9f2212e7b5ec..7af5df6833c7 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -42,20 +42,11 @@ #define UART_TX_PAR_EN BIT(0) #define UART_CTS_MASK BIT(1) =20 -/* SE_UART_TX_WORD_LEN */ -#define TX_WORD_LEN_MSK GENMASK(9, 0) - /* SE_UART_TX_STOP_BIT_LEN */ -#define TX_STOP_BIT_LEN_MSK GENMASK(23, 0) #define TX_STOP_BIT_LEN_1 0 -#define TX_STOP_BIT_LEN_1_5 1 #define TX_STOP_BIT_LEN_2 2 =20 -/* SE_UART_TX_TRANS_LEN */ -#define TX_TRANS_LEN_MSK GENMASK(23, 0) - /* SE_UART_RX_TRANS_CFG */ -#define UART_RX_INS_STATUS_BIT BIT(2) #define UART_RX_PAR_EN BIT(3) =20 /* SE_UART_RX_WORD_LEN */ @@ -66,12 +57,9 @@ =20 /* SE_UART_TX_PARITY_CFG/RX_PARITY_CFG */ #define PAR_CALC_EN BIT(0) -#define PAR_MODE_MSK GENMASK(2, 1) -#define PAR_MODE_SHFT 1 #define PAR_EVEN 0x00 #define PAR_ODD 0x01 #define PAR_SPACE 0x10 -#define PAR_MARK 0x11 =20 /* SE_UART_MANUAL_RFR register fields */ #define UART_MANUAL_RFR_EN BIT(31) @@ -80,11 +68,8 @@ =20 /* UART M_CMD OP codes */ #define UART_START_TX 0x1 -#define UART_START_BREAK 0x4 -#define UART_STOP_BREAK 0x5 /* UART S_CMD OP codes */ #define UART_START_READ 0x1 -#define UART_PARAM 0x1 =20 #define UART_OVERSAMPLING 32 #define STALE_TIMEOUT 16 --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 9835AC47088 for ; Fri, 2 Dec 2022 08:56:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232675AbiLBI42 (ORCPT ); Fri, 2 Dec 2022 03:56:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232717AbiLBI4F (ORCPT ); Fri, 2 Dec 2022 03:56:05 -0500 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4241BF660 for ; Fri, 2 Dec 2022 00:56:01 -0800 (PST) Received: by mail-wm1-x32b.google.com with SMTP id n7so3050530wms.3 for ; Fri, 02 Dec 2022 00:56:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7EJrTQIS5zIHcJVe/CbMMVgFbpImlTtQ6/Fo8uf0cQs=; b=JIqlacfCsCrmPalBO+OWEy2050PGFO4+Z4HoYN3BUUX17PUxngGVj5jQldKkoECl5Q 54u/hQK7mLJb9TFrtlj/QfPaXo4bFtIezelgVJ7TBtJI+/Zqbvb3mcJQ7S5NF9EZ58sl RhGu6zoDpQwCDzXclKQLni7FD0MkCchGRBCCnXcWT/mgJrfwCQKN66xgCfQTsEN7m1CW ZQWmAa4A16X4GG8wAeqcksl2qFVzcrZlmO7c7QHiTntK40Ezz6vUuKA19d7n8ZPnP9B4 Sl2eoq9P4uD4Vvxf9yutqdRHLS1NG9ilfHwtovoQNJ2JmVRK5ytbbSJmk3EhiSfs96K8 6b7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7EJrTQIS5zIHcJVe/CbMMVgFbpImlTtQ6/Fo8uf0cQs=; b=1yp66aetLmtxnpBQULFykBLYO/Mx8nBYjUW6QEVsETDv3a2OuCGpkppbEx+xHahgmf 0AZVVepZCqBSkrM8a7UZE7Ci2CRyrMImi5Olfnwle5xupW8XMJOWQPYJIzEgv2tFabeB p4UJ9ExXn17gfVHCrBHWoD/J3F+SZ52phvVN3C6RYRfmFFc6NcrPiAderFDnnheUkw6L ghiUuJkvLSzHBdExw6OIIJYqMa+WRhjXp/qOlv29GuHzaw/M/ZPFzgHN58euo2j/8tT7 7+1Ca5/UgPnUpX7jqb0U0WT4v8yAZMUGzbTwcBEypKhT40OzFF7Ui0+lBSKk7/JxQUaH fowA== X-Gm-Message-State: ANoB5pkQ/5VieKSY1XGUJdd2yQZh2wbhCb3Xzb1yWekqmqKVPWA8Y4iH LfhOWK+lKji2/IskgLDiwWyg8w== X-Google-Smtp-Source: AA0mqf4H7BdOQHxq22fHKrgFGPUb7PNDquCgpqtQ/MMdOum4urukiu96DWWC6by43Pc+TSLm0iM8hw== X-Received: by 2002:a05:600c:4d09:b0:3d0:7e33:9e3f with SMTP id u9-20020a05600c4d0900b003d07e339e3fmr4635685wmp.163.1669971360183; Fri, 02 Dec 2022 00:56:00 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.55.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:55:59 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 03/14] tty: serial: qcom-geni-serial: align #define values Date: Fri, 2 Dec 2022 09:55:43 +0100 Message-Id: <20221202085554.59637-4-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski Keep the #define symbols aligned for better readability. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 62 +++++++++++++-------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 7af5df6833c7..97ee7c074b79 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -39,57 +39,57 @@ #define SE_UART_MANUAL_RFR 0x2ac =20 /* SE_UART_TRANS_CFG */ -#define UART_TX_PAR_EN BIT(0) -#define UART_CTS_MASK BIT(1) +#define UART_TX_PAR_EN BIT(0) +#define UART_CTS_MASK BIT(1) =20 /* SE_UART_TX_STOP_BIT_LEN */ -#define TX_STOP_BIT_LEN_1 0 -#define TX_STOP_BIT_LEN_2 2 +#define TX_STOP_BIT_LEN_1 0 +#define TX_STOP_BIT_LEN_2 2 =20 /* SE_UART_RX_TRANS_CFG */ -#define UART_RX_PAR_EN BIT(3) +#define UART_RX_PAR_EN BIT(3) =20 /* SE_UART_RX_WORD_LEN */ -#define RX_WORD_LEN_MASK GENMASK(9, 0) +#define RX_WORD_LEN_MASK GENMASK(9, 0) =20 /* SE_UART_RX_STALE_CNT */ -#define RX_STALE_CNT GENMASK(23, 0) +#define RX_STALE_CNT GENMASK(23, 0) =20 /* SE_UART_TX_PARITY_CFG/RX_PARITY_CFG */ -#define PAR_CALC_EN BIT(0) -#define PAR_EVEN 0x00 -#define PAR_ODD 0x01 -#define PAR_SPACE 0x10 +#define PAR_CALC_EN BIT(0) +#define PAR_EVEN 0x00 +#define PAR_ODD 0x01 +#define PAR_SPACE 0x10 =20 /* SE_UART_MANUAL_RFR register fields */ -#define UART_MANUAL_RFR_EN BIT(31) -#define UART_RFR_NOT_READY BIT(1) -#define UART_RFR_READY BIT(0) +#define UART_MANUAL_RFR_EN BIT(31) +#define UART_RFR_NOT_READY BIT(1) +#define UART_RFR_READY BIT(0) =20 /* UART M_CMD OP codes */ -#define UART_START_TX 0x1 +#define UART_START_TX 0x1 /* UART S_CMD OP codes */ -#define UART_START_READ 0x1 - -#define UART_OVERSAMPLING 32 -#define STALE_TIMEOUT 16 -#define DEFAULT_BITS_PER_CHAR 10 -#define GENI_UART_CONS_PORTS 1 -#define GENI_UART_PORTS 3 -#define DEF_FIFO_DEPTH_WORDS 16 -#define DEF_TX_WM 2 -#define DEF_FIFO_WIDTH_BITS 32 -#define UART_RX_WM 2 +#define UART_START_READ 0x1 + +#define UART_OVERSAMPLING 32 +#define STALE_TIMEOUT 16 +#define DEFAULT_BITS_PER_CHAR 10 +#define GENI_UART_CONS_PORTS 1 +#define GENI_UART_PORTS 3 +#define DEF_FIFO_DEPTH_WORDS 16 +#define DEF_TX_WM 2 +#define DEF_FIFO_WIDTH_BITS 32 +#define UART_RX_WM 2 =20 /* SE_UART_LOOPBACK_CFG */ -#define RX_TX_SORTED BIT(0) -#define CTS_RTS_SORTED BIT(1) -#define RX_TX_CTS_RTS_SORTED (RX_TX_SORTED | CTS_RTS_SORTED) +#define RX_TX_SORTED BIT(0) +#define CTS_RTS_SORTED BIT(1) +#define RX_TX_CTS_RTS_SORTED (RX_TX_SORTED | CTS_RTS_SORTED) =20 /* UART pin swap value */ -#define DEFAULT_IO_MACRO_IO0_IO1_MASK GENMASK(3, 0) +#define DEFAULT_IO_MACRO_IO0_IO1_MASK GENMASK(3, 0) #define IO_MACRO_IO0_SEL 0x3 -#define DEFAULT_IO_MACRO_IO2_IO3_MASK GENMASK(15, 4) +#define DEFAULT_IO_MACRO_IO2_IO3_MASK GENMASK(15, 4) #define IO_MACRO_IO2_IO3_SWAP 0x4640 =20 /* We always configure 4 bytes per FIFO word */ --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 4ED47C4332F for ; Fri, 2 Dec 2022 08:56:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232804AbiLBI4T (ORCPT ); Fri, 2 Dec 2022 03:56:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232711AbiLBI4E (ORCPT ); Fri, 2 Dec 2022 03:56:04 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8602CBF652 for ; Fri, 2 Dec 2022 00:56:01 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id y16so6800740wrm.2 for ; Fri, 02 Dec 2022 00:56:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DkZacf9TX3zvyVeUrL+nHxYirMYsPuTeW+Zo+lEbcT0=; b=audPTcU4fkq3Zx83ZmW8f2CeTC8lK8Q6HlKtxI12ZXi95gAUwG1BljzAeGhd+Q4ETq q4uBA2rcMSIgo97vPGQF19/ESkjO5BEdShrXtH44qvHvvbtlY3x29vFrXOwTahFV1R46 /THe6pVVBb53ahlU3Rv9xNDfsetJB21kYbLqB9zM3qixO4VTYAbDAa+L/AMzFQ9skcRc gkIdz74mXiWySIbVljOaZBagfeiB1KOW01S5Ozfsnt7ATOI+13bdr+dKfv82ney+BEuK Pv4zra6b+anW2con6ri1QHTHkkpNnn1SCYkSiiOPZxRkNPAHYhykTTiaA5bbkB6pV7Q3 cc1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DkZacf9TX3zvyVeUrL+nHxYirMYsPuTeW+Zo+lEbcT0=; b=IBdE0VYd1x4c1fmPWmdK2qasUpn3k3wkW/dXtyje+XC2NvothpYPFzaFjkGWFGVPXr zIxTBUGQpBi8AbUBbfFDEp8zTkszOS8uLgziNdCOQpsEmCtTuOgDuYvZT9gI01FcgNX2 tQ8yQRNbO4D3RMYIOn3yHDqbNY2FhFfMxJeFf++e+ij4FoDC5QpGOi02hRgesnbwibFi Vf8ZoBc00H1JPANNQ+UpUKJjNj1M/VXa8JDtVVcSEvLM81bKjg2rr2hLZ9901oO9POn+ oJXfnW1zpaU8+PF70ao/WCxei4SBoo30ZGR022q1ORm/cE2PwxpYVUUSMkvCAgYBCn03 Sa6Q== X-Gm-Message-State: ANoB5pmIbY7QQB26Vo0KW8IMbTGKFtNuz2egKgi8PAtUWQ9UQjk5tJrE kKcYmnvMuw8B32pLUms5EzfYpQ== X-Google-Smtp-Source: AA0mqf68rd7ytSpqr3O/nR2OCv810lyUs6399ZBHc39hqoYlG3CGoZyS/f2KcAaIjNJyqtzVtvt6hw== X-Received: by 2002:adf:e64f:0:b0:241:e2f1:8b44 with SMTP id b15-20020adfe64f000000b00241e2f18b44mr30150395wrn.300.1669971361117; Fri, 02 Dec 2022 00:56:01 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:00 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 04/14] tty: serial: qcom-geni-serial: improve the to_dev_port() macro Date: Fri, 2 Dec 2022 09:55:44 +0100 Message-Id: <20221202085554.59637-5-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski The member we want to resolve in struct qcom_geni_serial_port is called uport so we don't need an additional redundant parameter in this macro. While at it: turn the macro into a static inline function. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 36 ++++++++++++++------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 97ee7c074b79..e4139718e084 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -133,8 +133,10 @@ static const struct uart_ops qcom_geni_uart_pops; static struct uart_driver qcom_geni_console_driver; static struct uart_driver qcom_geni_uart_driver; =20 -#define to_dev_port(ptr, member) \ - container_of(ptr, struct qcom_geni_serial_port, member) +static inline struct qcom_geni_serial_port *to_dev_port(struct uart_port *= uport) +{ + return container_of(uport, struct qcom_geni_serial_port, uport); +} =20 static struct qcom_geni_serial_port qcom_geni_uart_ports[GENI_UART_PORTS] = =3D { [0] =3D { @@ -175,7 +177,7 @@ static struct qcom_geni_serial_port qcom_geni_console_p= ort =3D { static int qcom_geni_serial_request_port(struct uart_port *uport) { struct platform_device *pdev =3D to_platform_device(uport->dev); - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 uport->membase =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(uport->membase)) @@ -212,7 +214,7 @@ static void qcom_geni_serial_set_mctrl(struct uart_port= *uport, unsigned int mctrl) { u32 uart_manual_rfr =3D 0; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 if (uart_console(uport)) return; @@ -253,7 +255,7 @@ static bool qcom_geni_serial_poll_bit(struct uart_port = *uport, struct qcom_geni_private_data *private_data =3D uport->private_data; =20 if (private_data->drv) { - port =3D to_dev_port(uport, uport); + port =3D to_dev_port(uport); baud =3D port->baud; if (!baud) baud =3D 115200; @@ -506,7 +508,7 @@ static int handle_rx_console(struct uart_port *uport, u= 32 bytes, bool drop) u32 i; unsigned char buf[sizeof(u32)]; struct tty_port *tport; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 tport =3D &uport->state->port; for (i =3D 0; i < bytes; ) { @@ -549,7 +551,7 @@ static int handle_rx_console(struct uart_port *uport, u= 32 bytes, bool drop) static int handle_rx_uart(struct uart_port *uport, u32 bytes, bool drop) { struct tty_port *tport; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); u32 num_bytes_pw =3D port->tx_fifo_width / BITS_PER_BYTE; u32 words =3D ALIGN(bytes, num_bytes_pw) / num_bytes_pw; int ret; @@ -598,7 +600,7 @@ static void qcom_geni_serial_stop_tx(struct uart_port *= uport) { u32 irq_en; u32 status; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); irq_en &=3D ~(M_CMD_DONE_EN | M_TX_FIFO_WATERMARK_EN); @@ -627,7 +629,7 @@ static void qcom_geni_serial_handle_rx(struct uart_port= *uport, bool drop) u32 last_word_byte_cnt; u32 last_word_partial; u32 total_bytes; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 status =3D readl(uport->membase + SE_GENI_RX_FIFO_STATUS); word_cnt =3D status & RX_FIFO_WC_MSK; @@ -649,7 +651,7 @@ static void qcom_geni_serial_stop_rx(struct uart_port *= uport) { u32 irq_en; u32 status; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); u32 s_irq_status; =20 irq_en =3D readl(uport->membase + SE_GENI_S_IRQ_EN); @@ -687,7 +689,7 @@ static void qcom_geni_serial_start_rx(struct uart_port = *uport) { u32 irq_en; u32 status; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 status =3D readl(uport->membase + SE_GENI_STATUS); if (status & S_GENI_CMD_ACTIVE) @@ -707,7 +709,7 @@ static void qcom_geni_serial_start_rx(struct uart_port = *uport) static void qcom_geni_serial_handle_tx(struct uart_port *uport, bool done, bool active) { - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); struct circ_buf *xmit =3D &uport->state->xmit; size_t avail; size_t remaining; @@ -803,7 +805,7 @@ static irqreturn_t qcom_geni_serial_isr(int isr, void *= dev) struct uart_port *uport =3D dev; bool drop_rx =3D false; struct tty_port *tport =3D &uport->state->port; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 if (uport->suspended) return IRQ_NONE; @@ -869,7 +871,7 @@ static void qcom_geni_serial_shutdown(struct uart_port = *uport) =20 static int qcom_geni_serial_port_setup(struct uart_port *uport) { - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); u32 rxstale =3D DEFAULT_BITS_PER_CHAR * STALE_TIMEOUT; u32 proto; u32 pin_swap; @@ -917,7 +919,7 @@ static int qcom_geni_serial_port_setup(struct uart_port= *uport) static int qcom_geni_serial_startup(struct uart_port *uport) { int ret; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 if (!port->setup) { ret =3D qcom_geni_serial_port_setup(uport); @@ -1003,7 +1005,7 @@ static void qcom_geni_serial_set_termios(struct uart_= port *uport, u32 stop_bit_len; unsigned int clk_div; u32 ser_clk_cfg; - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); unsigned long clk_rate; u32 ver, sampling_rate; unsigned int avg_bw_core; @@ -1288,7 +1290,7 @@ static struct uart_driver qcom_geni_uart_driver =3D { static void qcom_geni_serial_pm(struct uart_port *uport, unsigned int new_state, unsigned int old_state) { - struct qcom_geni_serial_port *port =3D to_dev_port(uport, uport); + struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 /* If we've never been called, treat it as off */ if (old_state =3D=3D UART_PM_STATE_UNDEFINED) --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 B80B9C4332F for ; Fri, 2 Dec 2022 08:56:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232428AbiLBI4b (ORCPT ); Fri, 2 Dec 2022 03:56:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232680AbiLBI4G (ORCPT ); Fri, 2 Dec 2022 03:56:06 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81456BF677 for ; Fri, 2 Dec 2022 00:56:03 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id ay8-20020a05600c1e0800b003d0808d2826so1850136wmb.1 for ; Fri, 02 Dec 2022 00:56:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EonL2PwB0Makj2JepNmLczYfWSZatIPogqShuTJezMI=; b=oYHsfMhWwfknAvnmTRMSqU/q/3vAa10G9tV9dKVIdu3glvD97Ggh8LCKJcLKJYuMWr 39gIPP5ACetaVmqK9PSTa8JGh9D+rs0sB0vkXxUEbc9JVLIEahNAo1JI4qVkFsO5X4/q ReKJoyZ0NwMRRCxrXAhqHFMufaG/voSwTm5PynZX5x8JWq2c6VHcHyYuMZkcduzzSlAL 4KH+GH5+QtJtKrHh6ho6GoSd3vEX8spxcUM+Xt0GOjiNaNkqWKOCo1G63T/r5Qy8tAw9 JreMs3/y+VWhGRRw7CMAxG8cytxUyBtesK5VP2YdtBEFcXKQK6//F68gV8T8z/24Dx4t NFqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EonL2PwB0Makj2JepNmLczYfWSZatIPogqShuTJezMI=; b=uGruW9hQeSVq2kTk8x4reoaXJ9V4po4QEFEQjwj5MfSy9ImOV7ko6QLsjHOH7tyxOD nG57CneXJNBxAM/Az3wsb3BYZ1zCSJ4R1lvNAUiK43hapkPKYCMwZERb1xbUt31F389E I+LZtdRuBsjWjQjtMSc9WCM0xmbalvBE/dATvm+B3Gi+MD5z77AQnmKVG5GX5LbVxPOm p+FcNjYXS0x7ADJ+qYba3WJ3fk/LNj/cWEIslb0ie6bs0oJHU2l9agsslAo+NOrHxjsi uOFRNIn+aFY1SoHTRv/WvuIXw2QkLfhu71YfzB5V2VFM2mURI8HEYPIIoW78DvVoRZ5r /J9w== X-Gm-Message-State: ANoB5pkaCEBhxXxiqY6UCGz00+xnepENkvnhdQvl6JhrzkqDmnelEzGt V4iZFrCMKmcHiDoipuL/nfvHOg== X-Google-Smtp-Source: AA0mqf5qrryfLIvfLKURGncF5Wse92/xU0XhkhhVwtxC9tg+138vOjqYQUy19hPNNp9E8SqQgyxAsg== X-Received: by 2002:a05:600c:43d6:b0:3d0:387d:8eb6 with SMTP id f22-20020a05600c43d600b003d0387d8eb6mr31500939wmn.137.1669971362032; Fri, 02 Dec 2022 00:56:02 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:01 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 05/14] tty: serial: qcom-geni-serial: remove stray newlines Date: Fri, 2 Dec 2022 09:55:45 +0100 Message-Id: <20221202085554.59637-6-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski Remove stray newlines around #ifdefs for consistency with the rest of the driver code. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index e4139718e084..ec2523736e99 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -320,7 +320,6 @@ static void qcom_geni_serial_abort_rx(struct uart_port = *uport) } =20 #ifdef CONFIG_CONSOLE_POLL - static int qcom_geni_serial_get_char(struct uart_port *uport) { struct qcom_geni_private_data *private_data =3D uport->private_data; @@ -545,7 +544,6 @@ static int handle_rx_console(struct uart_port *uport, u= 32 bytes, bool drop) { return -EPERM; } - #endif /* CONFIG_SERIAL_QCOM_GENI_CONSOLE */ =20 static int handle_rx_uart(struct uart_port *uport, u32 bytes, bool drop) --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 AB7BDC4332F for ; Fri, 2 Dec 2022 08:57:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232859AbiLBI44 (ORCPT ); Fri, 2 Dec 2022 03:56:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232740AbiLBI4I (ORCPT ); Fri, 2 Dec 2022 03:56:08 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8E81BF909 for ; Fri, 2 Dec 2022 00:56:03 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id o7-20020a05600c510700b003cffc0b3374so3755047wms.0 for ; Fri, 02 Dec 2022 00:56:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hrodxjE3++JzSf9Q5uxlAVuutjj+cagca/Bct4wXLdY=; b=tIuPN7gVpzhf5tzAOu1OwiGIo8Y2MQmTpARnakTsWoSGJ5neM8dBZrSunMVPCJ7q4C IIHyD0b4thOp5VkFipRYdtXOUrCbI8TYsFNYGL4XhEIBxHTaNwwHkRb94WFirpaLkMwu qHKmGg7Tft980XwnRXwD4wE+IJUHxEqVNRGDemAZRniDFh+j5FNwrLZ39s8vUjNgv/HD 84tTBYV8nhrii+zA7SdX4Crpr5yJMNqLwajxOfVj73JmeEty1JP9ptohSQUleAUU4pM7 m5t/qIA78T3UqJNUSbzIhmu+v0IDgJ45d22b/44mx8Sw6B9xc0zrjMopg1kA6v8VDI1X 3+vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hrodxjE3++JzSf9Q5uxlAVuutjj+cagca/Bct4wXLdY=; b=eY5wR4bGs3QCu44j+wtn1D/KdWuF1pjdlzStcby2gJg6jC3H5Xt4hChewqEgjxehEt xRi+JqH0DdstqmYIQ8XO8+Qx3LpPu/Feqn0TPcvSyYxEim9X0rkIwuIFJfJSSkSc27WX 5BVlkAo9epvWkUdNiLtXJrI4H2BLrxEXNm6/ZFgELUTF4d1HGPjCsE8RG1bpwq2yO1k4 qWyrmNsXWZtgF2ToA/xmks3bGj3Jz5Vm1PRYA6ZgOdpZHFdg2B4iH3rE8tYq6MHKhrjX 46/laBXtLVWER8rcP9LZoueegbzplXJA32ouToud4vaK0xsLBXWgTWIMZTnCsUX1m8sD tfzw== X-Gm-Message-State: ANoB5pkGixVJeD6EYemwDJtYFyS8M78nM5smaAxd+QGaZuzAy6+MDzDk jSe8BLU65cqlR6AtUp9J3MBXxg== X-Google-Smtp-Source: AA0mqf61ZY7CS7HBSf5vp8aAXkwToX/vU8MNJwLF/dElJBE+4oQl0yyFZBodseqLwlp/q6Qd2NdIUQ== X-Received: by 2002:a05:600c:1907:b0:3cf:7981:9a7 with SMTP id j7-20020a05600c190700b003cf798109a7mr51178838wmq.87.1669971363351; Fri, 02 Dec 2022 00:56:03 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:02 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 06/14] tty: serial: qcom-geni-serial: refactor qcom_geni_serial_isr() Date: Fri, 2 Dec 2022 09:55:46 +0100 Message-Id: <20221202085554.59637-7-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> 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 From: Bartosz Golaszewski Simplify the conditions in qcom_geni_serial_isr() and fix indentation. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio Reviewed-by: Ilpo J=C3=A4rvinen --- drivers/tty/serial/qcom_geni_serial.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index ec2523736e99..fba02f71a874 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -827,20 +827,18 @@ static irqreturn_t qcom_geni_serial_isr(int isr, void= *dev) =20 if (m_irq_status & m_irq_en & (M_TX_FIFO_WATERMARK_EN | M_CMD_DONE_EN)) qcom_geni_serial_handle_tx(uport, m_irq_status & M_CMD_DONE_EN, - geni_status & M_GENI_CMD_ACTIVE); + geni_status & M_GENI_CMD_ACTIVE); =20 - if (s_irq_status & S_GP_IRQ_0_EN || s_irq_status & S_GP_IRQ_1_EN) { + if (s_irq_status & (S_GP_IRQ_0_EN | S_GP_IRQ_1_EN)) { if (s_irq_status & S_GP_IRQ_0_EN) uport->icount.parity++; drop_rx =3D true; - } else if (s_irq_status & S_GP_IRQ_2_EN || - s_irq_status & S_GP_IRQ_3_EN) { + } else if (s_irq_status & (S_GP_IRQ_2_EN | S_GP_IRQ_3_EN)) { uport->icount.brk++; port->brk =3D true; } =20 - if (s_irq_status & S_RX_FIFO_WATERMARK_EN || - s_irq_status & S_RX_FIFO_LAST_EN) + if (s_irq_status & (S_RX_FIFO_WATERMARK_EN | S_RX_FIFO_LAST_EN)) qcom_geni_serial_handle_rx(uport, drop_rx); =20 out_unlock: --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 33B7DC4167B for ; Fri, 2 Dec 2022 08:57:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232828AbiLBI5I (ORCPT ); Fri, 2 Dec 2022 03:57:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232815AbiLBI41 (ORCPT ); Fri, 2 Dec 2022 03:56:27 -0500 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E25EAC0552 for ; Fri, 2 Dec 2022 00:56:05 -0800 (PST) Received: by mail-wr1-x42a.google.com with SMTP id d1so6747158wrs.12 for ; Fri, 02 Dec 2022 00:56:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zbfRkHz4/aW9Ej0X8Fhaj4Le2T1GhSly/B7XfhIOtq0=; b=JktLJu4rVvE9sWZWbk7w7Rz8IZyV0rFZh+goJTP/i2KKdtHMA4S8T1vUcxSTh/5ywY sXpRLYx/VPIcPs14Tz98iyvtpyZC+uV/e8WmlIZe5YkBzcvgCuwzGYh2P6fw4WcfV074 vX4GWxX++bFE5BBxm44+CPuqtXpQGSAg4nrco7uhdkSfUX/yLy0uumrtiZJ6So0E0AWQ bgCMWEQ23qOm1apcuaTjanWDftzLAz827SbpcZ+daBynmQ5P2iXU1EZ7jNkdpjVlT3tX I4sKvXnQiW7/q3SnuUGjfwsuKOlqZkw4yl3O0pBJR3yAcRCWd0spk7xBIx2NGQ2IwjVt OcKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zbfRkHz4/aW9Ej0X8Fhaj4Le2T1GhSly/B7XfhIOtq0=; b=2vlFWxTtrRi1A9nCbok+ZNsO4Dp+0QUlOx1qSjscyvdzMOJxHFSYQOsqmc9ZXAYFzm DxRGUXU04a5rWQIwPm1Jsx0NAukCDIZHFpqzH+yjqYxE1ErDkc73h0O7fhZBssHEAPE8 OoTfxxVfXqLO/5MZ+40X6m7BXQnUEB7TlRjnseT/Ne9exAz3eSVqfsiHxBvJUPFyZdSF et8w3XaZfnkFX2s+yST/Pqfv5oB+lB8HHLGlBtUka1pMl96GXs3zCHSrkukVkcc0Zkah WDw9RFxZFVMHNufR4cVhrNIasGuPvW2I1z3FqB1NNsBhqy4lQDd1Nza1MrtykLKLg5PK fmhA== X-Gm-Message-State: ANoB5pmAuSJVPiwE5QCx/FQK66DOfNHVOtImuMj1kPQcBZn+h4PULrP9 THA1FG45bF1cVReN+GEey8E2WA== X-Google-Smtp-Source: AA0mqf6W5dJs+6xkkg/KNDhThIeAo4VOfAUHRRveInmom0lnH/BHM1cBfTRQY1FlCMakbSRwzwpicg== X-Received: by 2002:adf:f2d0:0:b0:242:7c:eb9c with SMTP id d16-20020adff2d0000000b00242007ceb9cmr24328148wrp.178.1669971364317; Fri, 02 Dec 2022 00:56:04 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:03 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 07/14] tty: serial: qcom-geni-serial: remove unneeded tabs Date: Fri, 2 Dec 2022 09:55:47 +0100 Message-Id: <20221202085554.59637-8-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski Remove redundant indentation in struct member assignment. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index fba02f71a874..68a1402fbe58 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -141,26 +141,26 @@ static inline struct qcom_geni_serial_port *to_dev_po= rt(struct uart_port *uport) static struct qcom_geni_serial_port qcom_geni_uart_ports[GENI_UART_PORTS] = =3D { [0] =3D { .uport =3D { - .iotype =3D UPIO_MEM, - .ops =3D &qcom_geni_uart_pops, - .flags =3D UPF_BOOT_AUTOCONF, - .line =3D 0, + .iotype =3D UPIO_MEM, + .ops =3D &qcom_geni_uart_pops, + .flags =3D UPF_BOOT_AUTOCONF, + .line =3D 0, }, }, [1] =3D { .uport =3D { - .iotype =3D UPIO_MEM, - .ops =3D &qcom_geni_uart_pops, - .flags =3D UPF_BOOT_AUTOCONF, - .line =3D 1, + .iotype =3D UPIO_MEM, + .ops =3D &qcom_geni_uart_pops, + .flags =3D UPF_BOOT_AUTOCONF, + .line =3D 1, }, }, [2] =3D { .uport =3D { - .iotype =3D UPIO_MEM, - .ops =3D &qcom_geni_uart_pops, - .flags =3D UPF_BOOT_AUTOCONF, - .line =3D 2, + .iotype =3D UPIO_MEM, + .ops =3D &qcom_geni_uart_pops, + .flags =3D UPF_BOOT_AUTOCONF, + .line =3D 2, }, }, }; --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 15EF2C4332F for ; Fri, 2 Dec 2022 08:57:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232764AbiLBI5F (ORCPT ); Fri, 2 Dec 2022 03:57:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232810AbiLBI4Y (ORCPT ); Fri, 2 Dec 2022 03:56:24 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5744BEC45 for ; Fri, 2 Dec 2022 00:56:05 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id y16so6800949wrm.2 for ; Fri, 02 Dec 2022 00:56:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=h9KBlEE4azsWDdEqHoIw3zf1p218z3Yb8Z5E0IDcw8M=; b=SkUvqcIAd73kDG42S6QB6U76WvXAzT/BOgDjn10hVqfNl12MhimRk/M1zOxlQZs477 gqQlU4L+UDnx94Z8r+153WErEZDY6kPYaj8r12w+JSkFdHulDnoOCnFwEru0Hwa6ddlf DazhVeJimLSunp4EVMYe7N48+yRfBdW+4iLi+1O7S8leBwAdYeYLCVJlcgltc11z7Po6 uPBuADvmfidd8+BknjDWreVMz6I1XvpIoTgB5RM9S35qsSNiWJiILmwxTOrTuIqZNEw5 A6Vf7fmE8IiaF+D9pbCEGsM/6yUQIpRycclDsaDRyfLnYiPjhZZ8m98ydP5fmImtNJEV MTPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=h9KBlEE4azsWDdEqHoIw3zf1p218z3Yb8Z5E0IDcw8M=; b=EIMj2SlG2TZwSDkYvgM85Vz+jHz30LhL5ZKXZKwqNhsX1iumBjN+H65nH7hn1CN7jW yjzzPQxWN0VDAXx5qOY37CJRc2VHmg3o+d+H0eIV5PvxSxdEDJZ4f8THxgIfOudiWLie cHWRtproUzbmjWZU95tiyX5OM7NqAlgo+/HB0Tt3HviYK8MLPlPgjzG4+Dp/Yj48UXWp RbkWB2IUzN0VIv6o4T9yn0EIYC3835w4TWcX+Q9QWqArvLlmCIoEW+81j7Fw6SM0PEBe RAl5xk9+Lf+co3LW8m8BPgLQ7sXS43kwbra6TPHJEvWRBS0DA4LHG/XeSj4Q8dlnkruw wHvA== X-Gm-Message-State: ANoB5pnZs0TBIluu0vXUjQ48xDJ/zXtaIdPnJUO0+crNwmLIpLLjCU6h fG4hHXiNMzSmShXIzSSMAyGZDg== X-Google-Smtp-Source: AA0mqf5b5ms65cPJXa1FoxhdEHJjBXpIj4wTipcyyNx37CsRn0kmBt/StwmPIy2w70s+JS7jPeUPbA== X-Received: by 2002:a5d:4149:0:b0:242:149c:5690 with SMTP id c9-20020a5d4149000000b00242149c5690mr15384879wrq.491.1669971365264; Fri, 02 Dec 2022 00:56:05 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:04 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v5 08/14] tty: serial: qcom-geni-serial: split out the FIFO tx code Date: Fri, 2 Dec 2022 09:55:48 +0100 Message-Id: <20221202085554.59637-9-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski qcom_geni_serial_handle_tx() is pretty big, let's move the code that handles the actual writing of data to a separate function which makes sense in preparation for introducing a dma variant of handle_tx(). Signed-off-by: Bartosz Golaszewski --- drivers/tty/serial/qcom_geni_serial.c | 60 +++++++++++++++------------ 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 68a1402fbe58..91336d2d20fc 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -704,19 +704,48 @@ static void qcom_geni_serial_start_rx(struct uart_por= t *uport) writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); } =20 +static int qcom_geni_serial_send_chunk_fifo(struct uart_port *uport, + unsigned int chunk) +{ + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + struct circ_buf *xmit =3D &uport->state->xmit; + size_t remaining =3D chunk; + int i, tail =3D xmit->tail; + + for (i =3D 0; i < chunk; ) { + unsigned int tx_bytes; + u8 buf[sizeof(u32)]; + int c; + + memset(buf, 0, sizeof(buf)); + tx_bytes =3D min_t(size_t, remaining, BYTES_PER_FIFO_WORD); + + for (c =3D 0; c < tx_bytes ; c++) { + buf[c] =3D xmit->buf[tail++]; + tail &=3D UART_XMIT_SIZE - 1; + } + + iowrite32_rep(uport->membase + SE_GENI_TX_FIFOn, buf, 1); + + i +=3D tx_bytes; + uport->icount.tx +=3D tx_bytes; + remaining -=3D tx_bytes; + port->tx_remaining -=3D tx_bytes; + } + + return tail; +} + static void qcom_geni_serial_handle_tx(struct uart_port *uport, bool done, bool active) { struct qcom_geni_serial_port *port =3D to_dev_port(uport); struct circ_buf *xmit =3D &uport->state->xmit; size_t avail; - size_t remaining; size_t pending; - int i; u32 status; u32 irq_en; unsigned int chunk; - int tail; =20 status =3D readl(uport->membase + SE_GENI_TX_FIFO_STATUS); =20 @@ -735,7 +764,6 @@ static void qcom_geni_serial_handle_tx(struct uart_port= *uport, bool done, avail =3D port->tx_fifo_depth - (status & TX_FIFO_WC); avail *=3D BYTES_PER_FIFO_WORD; =20 - tail =3D xmit->tail; chunk =3D min(avail, pending); if (!chunk) goto out_write_wakeup; @@ -750,29 +778,7 @@ static void qcom_geni_serial_handle_tx(struct uart_por= t *uport, bool done, uport->membase + SE_GENI_M_IRQ_EN); } =20 - remaining =3D chunk; - for (i =3D 0; i < chunk; ) { - unsigned int tx_bytes; - u8 buf[sizeof(u32)]; - int c; - - memset(buf, 0, sizeof(buf)); - tx_bytes =3D min_t(size_t, remaining, BYTES_PER_FIFO_WORD); - - for (c =3D 0; c < tx_bytes ; c++) { - buf[c] =3D xmit->buf[tail++]; - tail &=3D UART_XMIT_SIZE - 1; - } - - iowrite32_rep(uport->membase + SE_GENI_TX_FIFOn, buf, 1); - - i +=3D tx_bytes; - uport->icount.tx +=3D tx_bytes; - remaining -=3D tx_bytes; - port->tx_remaining -=3D tx_bytes; - } - - xmit->tail =3D tail; + xmit->tail =3D qcom_geni_serial_send_chunk_fifo(uport, chunk); =20 /* * The tx fifo watermark is level triggered and latched. Though we had --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 6ADC6C4332F for ; Fri, 2 Dec 2022 08:57:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233035AbiLBI5S (ORCPT ); Fri, 2 Dec 2022 03:57:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232842AbiLBI42 (ORCPT ); Fri, 2 Dec 2022 03:56:28 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3718C0568 for ; Fri, 2 Dec 2022 00:56:06 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id ay8-20020a05600c1e0800b003d0808d2826so1850236wmb.1 for ; Fri, 02 Dec 2022 00:56:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=at8CWDblZ4WCi9Y1OeAGaa4YOdEtlxTYBw/Cs3tSYBA=; b=G2Yb/sc7ahqc+jrJKB8b6M95ZGrp/Xaa0rbBWpp8mdfHoRlyHfxUh3VOTbv705mEry vov4YPUdl8oFiMnlnNC4EHKkNslHxSnc+i7A6bLKDiPMTmN4BDuRl+Dy6ZjlHCwmAa2+ UzNB99ScvlaFoYbiN+vBHEAEVDV6QZeHOhzaDmBUMZyObl24hVZpUd7VQ01iPf2Hl4/a cu5mmcW7KmNAt26cADHwq4l7hwCACO8Hrn/4aEcXTLX60ZU3u1ZoOWOPhhXjl3pndIcr ckMxTv3LyY1E6HTusyZyntp1/Mi/bKlG58D0GGV3vfdI9jlNuTQO5WFIIPHnpPe+zuge xQdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=at8CWDblZ4WCi9Y1OeAGaa4YOdEtlxTYBw/Cs3tSYBA=; b=15Wy7bx38mvuopAcAEfRz4LlAuLg4CSW2b+eSrHYOJrkbsrGa+1uPdjrw9YES+WZjW Twr8ntJpviC2AY7PL0/zIkNqWCY9YBmjWAAoPN8eXL2yAhbcl3wLc1yR3o9ozXInnkNb 0cwixz7wagiGytloXaF6SsYIMiuMmqWUFVFQd6wYQlvwVwbXe+22oGFwi9T8cIl0oy59 DYw7tLQ4eSKTTrQubdDm/9TrrvQfbwLwzBrSsz/FNVL1dK+Faday9pEZn/qNzvSYo2Dl /r1lIfqUH7lwD4CRrZYNbIT5jQ94nth5ZqKP6RMK1sNVONh3MCp0/mXt9GEzxtNUj8H4 XCwQ== X-Gm-Message-State: ANoB5pldlFkRf/jTzUF+YxAmBIwCWVmqQ9a594M76rC1Al43e+J5MrSN 5bB8YUAm+uh6Dj2Tugv/eM92Mg== X-Google-Smtp-Source: AA0mqf5YOHDP3k7FOdOIMbfX/1dFPul0NoVTQaFdE2DpkopDIgrHQ0NzXnU0CpB60zJip6OEqB3JGA== X-Received: by 2002:a05:600c:198a:b0:3b4:8603:e2ae with SMTP id t10-20020a05600c198a00b003b48603e2aemr42014201wmq.148.1669971366174; Fri, 02 Dec 2022 00:56:06 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:05 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v5 09/14] tty: serial: qcom-geni-serial: refactor qcom_geni_serial_send_chunk_fifo() Date: Fri, 2 Dec 2022 09:55:49 +0100 Message-Id: <20221202085554.59637-10-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski Shuffle the code a bit, drop unneeded variables, make types of others more consistent and use uart_xmit_advance() instead of handling tail->xmit manually. Signed-off-by: Bartosz Golaszewski --- drivers/tty/serial/qcom_geni_serial.c | 28 ++++++++++----------------- 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 91336d2d20fc..40daf58eb1e7 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -93,7 +93,7 @@ #define IO_MACRO_IO2_IO3_SWAP 0x4640 =20 /* We always configure 4 bytes per FIFO word */ -#define BYTES_PER_FIFO_WORD 4 +#define BYTES_PER_FIFO_WORD 4U =20 struct qcom_geni_private_data { /* NOTE: earlycon port will have NULL here */ @@ -704,36 +704,28 @@ static void qcom_geni_serial_start_rx(struct uart_por= t *uport) writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); } =20 -static int qcom_geni_serial_send_chunk_fifo(struct uart_port *uport, - unsigned int chunk) +static void qcom_geni_serial_send_chunk_fifo(struct uart_port *uport, + unsigned int chunk) { struct qcom_geni_serial_port *port =3D to_dev_port(uport); struct circ_buf *xmit =3D &uport->state->xmit; - size_t remaining =3D chunk; - int i, tail =3D xmit->tail; - - for (i =3D 0; i < chunk; ) { - unsigned int tx_bytes; - u8 buf[sizeof(u32)]; - int c; + unsigned int tx_bytes, c, remaining =3D chunk; + u8 buf[BYTES_PER_FIFO_WORD]; =20 + while (remaining) { memset(buf, 0, sizeof(buf)); - tx_bytes =3D min_t(size_t, remaining, BYTES_PER_FIFO_WORD); + tx_bytes =3D min(remaining, BYTES_PER_FIFO_WORD); =20 for (c =3D 0; c < tx_bytes ; c++) { - buf[c] =3D xmit->buf[tail++]; - tail &=3D UART_XMIT_SIZE - 1; + buf[c] =3D xmit->buf[xmit->tail]; + uart_xmit_advance(uport, 1); } =20 iowrite32_rep(uport->membase + SE_GENI_TX_FIFOn, buf, 1); =20 - i +=3D tx_bytes; - uport->icount.tx +=3D tx_bytes; remaining -=3D tx_bytes; port->tx_remaining -=3D tx_bytes; } - - return tail; } =20 static void qcom_geni_serial_handle_tx(struct uart_port *uport, bool done, @@ -778,7 +770,7 @@ static void qcom_geni_serial_handle_tx(struct uart_port= *uport, bool done, uport->membase + SE_GENI_M_IRQ_EN); } =20 - xmit->tail =3D qcom_geni_serial_send_chunk_fifo(uport, chunk); + qcom_geni_serial_send_chunk_fifo(uport, chunk); =20 /* * The tx fifo watermark is level triggered and latched. Though we had --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 2709FC47088 for ; Fri, 2 Dec 2022 08:57:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232454AbiLBI5W (ORCPT ); Fri, 2 Dec 2022 03:57:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231578AbiLBI4w (ORCPT ); Fri, 2 Dec 2022 03:56:52 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C124C0576 for ; Fri, 2 Dec 2022 00:56:07 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id y16so6801040wrm.2 for ; Fri, 02 Dec 2022 00:56:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1qH7b7fe8Hb5qheb3lmn+qvXpc5CyEBL9hWh3RvxG08=; b=wXhd4niCBjGs5r0Ayxt/b8cwpV0OG2fC/nCckzvY8jM+sm33VcJKPONwn5yuFJ3bqd y8GbjNGH3oNnwm6HI1S8PX04EZsWQ8clRBcCaAK7W43BRUPVrjfn0/zjdnEQB+dpaswU HE7thOq8HJhpo79FYC78di7vrx15tEm0KxRXJexhgTfNVZsxCIukAQMy+vNE8sNRLIiM nUbp1Ek8uf+DKngCLrrXPLduVCRAtR+Q6csQt/LCCZkUjzQW0HmcpcCXjUj38nipHtq+ RWtMjzQq9/XHzrV9xdftjkGoikdlDLVD2dmEGEo8pB3fEZXxH3dd7h2CcbU9PupAtxEz TEgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1qH7b7fe8Hb5qheb3lmn+qvXpc5CyEBL9hWh3RvxG08=; b=1qTIjrD33BuCDu5aSXCIKuW+66DKEbIcS2uTHB4/hhv66Vu6c+vUhQFRytw1O6Hi2X qSzdakW+wwyEVe4SayNWuI4Ctws12bO+i7xmbGqDnYxLf6palbtbSTdOMovvPQP6XXIB UFUvG15YrS5WI1/KU++XW9USQsnfR0/Q+SSTa+wzcRHQ8CJmd5xu9EtpL3iMyPkKz4Zl wo5lCeQFqBj7iO9bk8hCGT+7YULTrWGDgFjAxWHM/r0W+axb9oFZm2ALiaVe+olXjDAm jqsGtP71WyUZICRLZtAoWH6n2aS2VtHSsbbZ9NsfGov/xiVtQsNAW94rQJIXfmDPUTP8 Q0Rg== X-Gm-Message-State: ANoB5pmBjWgsqbu99wfiEVILalV8P080DjKUdVmI9CvlJVskBBtGjNKH cYlFSkgKAD+c0rjtJ28e6XkE3A== X-Google-Smtp-Source: AA0mqf4Fm3Z/7IMCc8A0/E/F8iXmDDmRENvVNvcb2ouLKhPXWXRTHB3SRXkJcJXsCd0yag4xRqjN4w== X-Received: by 2002:a05:6000:142:b0:242:49d9:9d8f with SMTP id r2-20020a056000014200b0024249d99d8fmr494642wrx.446.1669971367165; Fri, 02 Dec 2022 00:56:07 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:06 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 10/14] tty: serial: qcom-geni-serial: drop the return value from handle_rx Date: Fri, 2 Dec 2022 09:55:50 +0100 Message-Id: <20221202085554.59637-11-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski The return value of the handle_rx() callback is never checked. Drop it. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 40daf58eb1e7..163310107263 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -114,7 +114,7 @@ struct qcom_geni_serial_port { u32 tx_fifo_width; u32 rx_fifo_depth; bool setup; - int (*handle_rx)(struct uart_port *uport, u32 bytes, bool drop); + void (*handle_rx)(struct uart_port *uport, u32 bytes, bool drop); unsigned int baud; void *rx_fifo; u32 loopback; @@ -502,7 +502,7 @@ static void qcom_geni_serial_console_write(struct conso= le *co, const char *s, spin_unlock_irqrestore(&uport->lock, flags); } =20 -static int handle_rx_console(struct uart_port *uport, u32 bytes, bool drop) +static void handle_rx_console(struct uart_port *uport, u32 bytes, bool dro= p) { u32 i; unsigned char buf[sizeof(u32)]; @@ -537,16 +537,15 @@ static int handle_rx_console(struct uart_port *uport,= u32 bytes, bool drop) } if (!drop) tty_flip_buffer_push(tport); - return 0; } #else -static int handle_rx_console(struct uart_port *uport, u32 bytes, bool drop) +static void handle_rx_console(struct uart_port *uport, u32 bytes, bool dro= p) { - return -EPERM; + } #endif /* CONFIG_SERIAL_QCOM_GENI_CONSOLE */ =20 -static int handle_rx_uart(struct uart_port *uport, u32 bytes, bool drop) +static void handle_rx_uart(struct uart_port *uport, u32 bytes, bool drop) { struct tty_port *tport; struct qcom_geni_serial_port *port =3D to_dev_port(uport); @@ -557,7 +556,7 @@ static int handle_rx_uart(struct uart_port *uport, u32 = bytes, bool drop) tport =3D &uport->state->port; ioread32_rep(uport->membase + SE_GENI_RX_FIFOn, port->rx_fifo, words); if (drop) - return 0; + return; =20 ret =3D tty_insert_flip_string(tport, port->rx_fifo, bytes); if (ret !=3D bytes) { @@ -567,7 +566,6 @@ static int handle_rx_uart(struct uart_port *uport, u32 = bytes, bool drop) } uport->icount.rx +=3D ret; tty_flip_buffer_push(tport); - return ret; } =20 static unsigned int qcom_geni_serial_tx_empty(struct uart_port *uport) --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 00B8BC4167B for ; Fri, 2 Dec 2022 08:57:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232889AbiLBI5i (ORCPT ); Fri, 2 Dec 2022 03:57:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232878AbiLBI47 (ORCPT ); Fri, 2 Dec 2022 03:56:59 -0500 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77569BEE33 for ; Fri, 2 Dec 2022 00:56:08 -0800 (PST) Received: by mail-wr1-x42e.google.com with SMTP id h7so743931wrs.6 for ; Fri, 02 Dec 2022 00:56:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mhn1qIbRj4GDOEtAy3kSzr1h8b6twAgZO2RVMgsJctk=; b=yKzf1MHBzAN5P6s+EBKAowODbBjQFoGyW2W703PECsmuQvhT6kMLhqINcJPwKUbvig +8F8MABdi6YRzN6kmVWDxwHTf2eJ8Lxg71B48egai0GR5Z1Bwqz1CS3hSCq6tLB8gOHw E4JafwZwpiCxWqK+42Bz1ZHlPuPbjFQM1r/xTcOpEGsaLyhM6ONHypHHaE7d5c7gjq0x kAfvX0/Z97juloazfA+uiWd2yg//irE/LkZA2IZYY6jAhFB9MydTF9j69mtv6rq5ptFJ /40SUAPY5rVM1TDO9Vy7X83Wuh11ZGklLNIBVrb0rIyuMbgex+qz8jVvFQ7jUvOS0787 x1rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mhn1qIbRj4GDOEtAy3kSzr1h8b6twAgZO2RVMgsJctk=; b=AawH0s22LS+C5QKSL41reF3su55d6xbNOymOrWDT8nN/MANy1f0FIa33hrTFof6INP hyBoAlTwmcHJt9a7sjlro3TR1bU+Acg1dfWVKYes3DQH4qz9PYr4KgsdUE5wEZ8HVffM xieK6oHjK66tmRu8/dCbCx2cmQCO2W9KAZOxRRz059wsF3+cWNJ+Z9BR5uVE/cSJPICZ 5U9nDvS8v4nXJLhWXoI8kQtmbTDii4OP6jpZFuKQj181DvhvYM5Z+gN2xOfYGZe9qEH6 +ngWV6s1Qx0AMP3g6i0GMk8mHgV8stVjCYMSNkFnC0u3hx8qfNWKUwGguMTK+aJ2C1Gk It6A== X-Gm-Message-State: ANoB5pnCkRkP9yqAZIB5S/XhmMGIjqxCyFyhdGIUEpoX9tcAUCWQIJkf NIXC9Uy/a8TsSwrQ83JCe/VaHw== X-Google-Smtp-Source: AA0mqf69QrR4XyrshFfK0f2eqi7Is+b7ps0bS+2pdbi3+xly2yRVZGBbNKgMRVeeXlTeKqLnmd2skg== X-Received: by 2002:adf:b352:0:b0:242:153c:186e with SMTP id k18-20020adfb352000000b00242153c186emr12961360wrd.289.1669971368040; Fri, 02 Dec 2022 00:56:08 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:07 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 11/14] tty: serial: qcom-geni-serial: use of_device_id data Date: Fri, 2 Dec 2022 09:55:51 +0100 Message-Id: <20221202085554.59637-12-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski Instead of checking the device compatible in probe(), assign the device-specific data to struct of_device_id. We'll use it later when providing SE DMA support. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 46 ++++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 163310107263..808b0250d51e 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -95,6 +95,11 @@ /* We always configure 4 bytes per FIFO word */ #define BYTES_PER_FIFO_WORD 4U =20 +struct qcom_geni_device_data { + bool console; + void (*handle_rx)(struct uart_port *uport, u32 bytes, bool drop); +}; + struct qcom_geni_private_data { /* NOTE: earlycon port will have NULL here */ struct uart_driver *drv; @@ -114,7 +119,6 @@ struct qcom_geni_serial_port { u32 tx_fifo_width; u32 rx_fifo_depth; bool setup; - void (*handle_rx)(struct uart_port *uport, u32 bytes, bool drop); unsigned int baud; void *rx_fifo; u32 loopback; @@ -126,6 +130,7 @@ struct qcom_geni_serial_port { bool cts_rts_swap; =20 struct qcom_geni_private_data private_data; + const struct qcom_geni_device_data *dev_data; }; =20 static const struct uart_ops qcom_geni_console_pops; @@ -640,7 +645,7 @@ static void qcom_geni_serial_handle_rx(struct uart_port= *uport, bool drop) total_bytes +=3D last_word_byte_cnt; else total_bytes +=3D BYTES_PER_FIFO_WORD; - port->handle_rx(uport, total_bytes, drop); + port->dev_data->handle_rx(uport, total_bytes, drop); } =20 static void qcom_geni_serial_stop_rx(struct uart_port *uport) @@ -1343,13 +1348,14 @@ static int qcom_geni_serial_probe(struct platform_d= evice *pdev) struct uart_port *uport; struct resource *res; int irq; - bool console =3D false; struct uart_driver *drv; + const struct qcom_geni_device_data *data; =20 - if (of_device_is_compatible(pdev->dev.of_node, "qcom,geni-debug-uart")) - console =3D true; + data =3D of_device_get_match_data(&pdev->dev); + if (!data) + return -EINVAL; =20 - if (console) { + if (data->console) { drv =3D &qcom_geni_console_driver; line =3D of_alias_get_id(pdev->dev.of_node, "serial"); } else { @@ -1359,7 +1365,7 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) line =3D of_alias_get_id(pdev->dev.of_node, "hsuart"); } =20 - port =3D get_port_from_line(line, console); + port =3D get_port_from_line(line, data->console); if (IS_ERR(port)) { dev_err(&pdev->dev, "Invalid line %d\n", line); return PTR_ERR(port); @@ -1371,6 +1377,7 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) return -ENODEV; =20 uport->dev =3D &pdev->dev; + port->dev_data =3D data; port->se.dev =3D &pdev->dev; port->se.wrapper =3D dev_get_drvdata(pdev->dev.parent); port->se.clk =3D devm_clk_get(&pdev->dev, "se"); @@ -1389,7 +1396,7 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) port->rx_fifo_depth =3D DEF_FIFO_DEPTH_WORDS; port->tx_fifo_width =3D DEF_FIFO_WIDTH_BITS; =20 - if (!console) { + if (!data->console) { port->rx_fifo =3D devm_kcalloc(uport->dev, port->rx_fifo_depth, sizeof(u32), GFP_KERNEL); if (!port->rx_fifo) @@ -1419,7 +1426,7 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) uport->irq =3D irq; uport->has_sysrq =3D IS_ENABLED(CONFIG_SERIAL_QCOM_GENI_CONSOLE); =20 - if (!console) + if (!data->console) port->wakeup_irq =3D platform_get_irq_optional(pdev, 1); =20 if (of_property_read_bool(pdev->dev.of_node, "rx-tx-swap")) @@ -1441,7 +1448,6 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) port->private_data.drv =3D drv; uport->private_data =3D &port->private_data; platform_set_drvdata(pdev, port); - port->handle_rx =3D console ? handle_rx_console : handle_rx_uart; =20 ret =3D uart_add_one_port(drv, uport); if (ret) @@ -1521,14 +1527,30 @@ static int __maybe_unused qcom_geni_serial_sys_resu= me(struct device *dev) return ret; } =20 +static const struct qcom_geni_device_data qcom_geni_console_data =3D { + .console =3D true, + .handle_rx =3D handle_rx_console, +}; + +static const struct qcom_geni_device_data qcom_geni_uart_data =3D { + .console =3D false, + .handle_rx =3D handle_rx_uart, +}; + static const struct dev_pm_ops qcom_geni_serial_pm_ops =3D { SET_SYSTEM_SLEEP_PM_OPS(qcom_geni_serial_sys_suspend, qcom_geni_serial_sys_resume) }; =20 static const struct of_device_id qcom_geni_serial_match_table[] =3D { - { .compatible =3D "qcom,geni-debug-uart", }, - { .compatible =3D "qcom,geni-uart", }, + { + .compatible =3D "qcom,geni-debug-uart", + .data =3D &qcom_geni_console_data, + }, + { + .compatible =3D "qcom,geni-uart", + .data =3D &qcom_geni_uart_data, + }, {} }; MODULE_DEVICE_TABLE(of, qcom_geni_serial_match_table); --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 E2865C4167B for ; Fri, 2 Dec 2022 08:57:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233065AbiLBI5m (ORCPT ); Fri, 2 Dec 2022 03:57:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232892AbiLBI47 (ORCPT ); Fri, 2 Dec 2022 03:56:59 -0500 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8AB37C1BFB for ; Fri, 2 Dec 2022 00:56:09 -0800 (PST) Received: by mail-wr1-x434.google.com with SMTP id w15so6756842wrl.9 for ; Fri, 02 Dec 2022 00:56:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7Oo6s6EUUJAHLwqnGgZFQJNt6SIn7i9VCkQpm/Vrbzo=; b=kV1V5/gf8m5wqxaEveJyek5uZa0ea5mtXODUbKxzKlTcGhFaB+WjfI13Y0zcfaTHC9 YQeJbqAkcNvWF+yIkB5sJT81q5wAPbAKZfA0JzizaToD+pe8cyVNtumveJef6nqY9AsL Qp9F8dI6KJm+e+UJe5KTHrSkT0GoRNPcqriNW03miil0WG/fqGOTdaR9f7atgurt4el+ xyQsC+CKE2TXOr0M884NB0w809S0tO8hvSK1NOrcmvconJt5H/4UKWiYO2MgEqMQagwy D35/+zHdyZg7J78iORM92uBTWPm0Q6Nw6V/OE0A3KU1G/PC9KPjA2fCIHUHJ08CaxAOh 8Mow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7Oo6s6EUUJAHLwqnGgZFQJNt6SIn7i9VCkQpm/Vrbzo=; b=rTQszfLQJr+KRA6JOe2XkfDXTqKSDKLnl9kKc1oVYHT1lFMYgoTn5N9GoL4X3qmoFx 5GFHD+8/o97L5JMyPl2Uf9cTTLTsyp4qhGcLhatP4AhQtWNq95pPrt3M5j6xCV3L4oNM vNnmfGN4HptFZ6mRVQoHD2WqOpk+n/QgsLmbfmrWBAsONmHkTGJF2Sapy9zCS7VI2CGA +KoYOWKSrc71XUbTA20kmuXqUmxU43QUrik8dsTd8+dLZ4upCCUAYgWWNDW8G8pGe5fw d7NS/vAGcyULfB98QLk5ZAgoC2rQcaXEqmTDmYoJ0mMOb9jCs9BkxaRSL0pdXDLs4YjS 7HFw== X-Gm-Message-State: ANoB5pkUaQJsZYyJmvXunLgUQafw0t9lWJ+ETMGAgB2tG8gqVwr+Ef6i J9P/1y2DSJFan5nSNYbfWqNYON66puIDCdvr X-Google-Smtp-Source: AA0mqf4gv7CkQGJ5xzltg8br8MDWvvzUCeW/vPwG10FoEJPgIhv1Nh1/urLMkOjDJULRmqFKI+23PQ== X-Received: by 2002:a5d:4d51:0:b0:242:1bad:6f79 with SMTP id a17-20020a5d4d51000000b002421bad6f79mr14035680wru.342.1669971369107; Fri, 02 Dec 2022 00:56:09 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:08 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 12/14] tty: serial: qcom-geni-serial: stop operations in progress at shutdown Date: Fri, 2 Dec 2022 09:55:52 +0100 Message-Id: <20221202085554.59637-13-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski We don't stop transmissions in progress at shutdown. This is fine with FIFO SE mode but with DMA it causes trouble so fix it now. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/tty/serial/qcom_geni_serial.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 808b0250d51e..1dfc0122ff53 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -864,6 +864,8 @@ static void get_tx_fifo_size(struct qcom_geni_serial_po= rt *port) static void qcom_geni_serial_shutdown(struct uart_port *uport) { disable_irq(uport->irq); + qcom_geni_serial_stop_tx(uport); + qcom_geni_serial_stop_rx(uport); } =20 static int qcom_geni_serial_port_setup(struct uart_port *uport) --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 39AE3C4167B for ; Fri, 2 Dec 2022 08:57:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233082AbiLBI54 (ORCPT ); Fri, 2 Dec 2022 03:57:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232919AbiLBI5A (ORCPT ); Fri, 2 Dec 2022 03:57:00 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B645C23ED for ; Fri, 2 Dec 2022 00:56:10 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id o7-20020a05600c510700b003cffc0b3374so3755244wms.0 for ; Fri, 02 Dec 2022 00:56:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LuwEN90AtgG+bvIlYhOJ4Y3TdxahsORXGOntfwKDvGM=; b=W2JObHAU3OlA/ReHV0mZlqT9VGsOJBAzjZTf75NChTiLnLAqJJKbKA2+YHv6O3awEJ ypizr5p6eY0pqq5ceMKOm8Xq7oawzZ9tkjXMREbGux7beijwpJC5f/tFavRJDNnoaGbJ TTXPGw9HyLWDTSQeVS+U2tyvnP5iMQ73QTkeN2/kn8xB9KFmqBnKvLoj7umm+wC7gRz8 bYFIvsuLy2+VPgVDzsZM1jPp9AaSRHmc9ENTOE8kIfWJBRaUtBsYej9Skh8jwpVqzmgi iLzwSWMeckbRr3wud6bsYH/iwhFDxJ5X/LLq+UnGcTHGZtJHhYwy6Cpy6/sd0qi1Yhi5 Imtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LuwEN90AtgG+bvIlYhOJ4Y3TdxahsORXGOntfwKDvGM=; b=i5Ned2Np4ylE8WqkL6hpYkWGrXRWB3sYegl0a3FiIfmpdDrRs6WGsnKe72GiWg0Wl2 UBjRQNJYgFBFN0pYx3tH3Ir8ME/5h0Bz43zaX6/tyaya9XJ1ERUg9RhkDfx5KUP56PwX imNVaY5xnHxDJtgdhxwnAeFENrNZla47hn+8cXpUsMa1eZzyHOCTnHwBTKf0gMc49v9v dCeMJ8i0jIZ4jipPiX46cScU5+zfmHvG6dpGDYVXWpPNWK74Rthq2UvsvGU8+69zYnwx 9S7zqyKxUqUrZyIRocNJMwKzMgcmhNE1H/+UJMyHQsWt1WTBrFH8X8LnRVOnsPbegzKh YWow== X-Gm-Message-State: ANoB5pk9X9ZanoHd8sOYg6ZdlK1H5ab8gy4eWv+D5iIIHq+BMXgZvGGy rcW+uDIhdPLq8WwXE/EPXLIoRw== X-Google-Smtp-Source: AA0mqf4qOE8TfJOJSb6Zj6OMKm3aw3+RKHTTawqwv60hwYhonB8hQr5PXPSqp7HaccbeVor2+uX1Eg== X-Received: by 2002:a05:600c:21c6:b0:3c7:19a6:8146 with SMTP id x6-20020a05600c21c600b003c719a68146mr52634302wmj.158.1669971370022; Fri, 02 Dec 2022 00:56:10 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:09 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v5 13/14] soc: qcom-geni-se: add more symbol definitions Date: Fri, 2 Dec 2022 09:55:53 +0100 Message-Id: <20221202085554.59637-14-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski The following symbols will be used when adding support for SE DMA in the qcom geni serial driver. Signed-off-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- include/linux/qcom-geni-se.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/linux/qcom-geni-se.h b/include/linux/qcom-geni-se.h index f5672785c0c4..400213daa461 100644 --- a/include/linux/qcom-geni-se.h +++ b/include/linux/qcom-geni-se.h @@ -103,6 +103,7 @@ struct geni_se { #define SE_DMA_TX_FSM_RST 0xc58 #define SE_DMA_RX_IRQ_STAT 0xd40 #define SE_DMA_RX_IRQ_CLR 0xd44 +#define SE_DMA_RX_LEN_IN 0xd54 #define SE_DMA_RX_FSM_RST 0xd58 #define SE_HW_PARAM_0 0xe24 #define SE_HW_PARAM_1 0xe28 @@ -235,6 +236,8 @@ struct geni_se { #define RX_SBE BIT(2) #define RX_RESET_DONE BIT(3) #define RX_FLUSH_DONE BIT(4) +#define RX_DMA_PARITY_ERR BIT(5) +#define RX_DMA_BREAK GENMASK(8, 7) #define RX_GENI_GP_IRQ GENMASK(10, 5) #define RX_GENI_CANCEL_IRQ BIT(11) #define RX_GENI_GP_IRQ_EXT GENMASK(13, 12) --=20 2.37.2 From nobody Thu Sep 18 20:23:27 2025 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 3B99BC4332F for ; Fri, 2 Dec 2022 08:58:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233002AbiLBI6S (ORCPT ); Fri, 2 Dec 2022 03:58:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232766AbiLBI5G (ORCPT ); Fri, 2 Dec 2022 03:57:06 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 92AF2C35B8 for ; Fri, 2 Dec 2022 00:56:12 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id p13-20020a05600c468d00b003cf8859ed1bso3727423wmo.1 for ; Fri, 02 Dec 2022 00:56:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WPw7thSrS45qstEiKKG7LVim3F0rg+3QPQJZbEs5Dw4=; b=WWABFII3QiJ/N2Kv/xJ+xcBmLMdturc/QLeQjJ91CokGxBtwWzlPfoemd7BkMRcFtm wojzemA1OL4NzwQ6RY1GboVRhkL/5uS6a8n1XyfT1nOwQeQ5E/AMvI75nkBJv0Mv4j3U b53Tbu2IO8Ixn6HaUHOlKDzmbOK9VAomf7kvYjMwvK76zlCjVcvke4U3qLQ0o4nW//SM sgaOu/yeJK6b4Rqj5/NljaHHXMg7DzcPVzFDK+VnyNeYzYidxkh2LGEnl54FSmYff+7V 2CQXmRe8q/sFNte95y7AG8GrCRA23QxquQHh1ALIxanOv01U53b4AUXu2/lQX6B4mCMz lhDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WPw7thSrS45qstEiKKG7LVim3F0rg+3QPQJZbEs5Dw4=; b=G6X20AWoeKbRFK/ACRPk1vwwoCLw3hyH0Y2TcFl8nBcAW1V0BYO79m9MNrOWM5FSxI RqXiChITKoMdfelZZ8+BX746EOWEyCwkjdmeY27x0krGkO0desuUrz16Nt1u6OOk4QK3 jw3yh37YVBC0EkuzZrtCZTTiG3G7zOOZXaAKFgVLReWlPk0k6fDRAnrrSMiESmS9qnrx 447d42+HmxJw4FWKJYiV+NE0+41vPP0l/FgTFIuGsFIO88iID8SMRTmQiVqME6nzgKVU YLgXX14LSWLcXTSdsaHdPN7aTIGVDKChQhMDFQtGVAHYOtxaXSuTvF4pNhwnfy0w5/uH 54bg== X-Gm-Message-State: ANoB5plUsl5rBRVU+/MuCGEtypOmkOHtCjKfbDLOgHVkcEVh0xb3eaIQ Mpv9/rl7idMuVNXXPiZxmqybhg== X-Google-Smtp-Source: AA0mqf7qfpTwSUAYSnf+dzDLBPZs3xT7UCBeMPRdcQDeEklfajew/NMruNlI5FWjGYoTCvWDrwI8uA== X-Received: by 2002:a05:600c:468c:b0:3cf:7c81:caae with SMTP id p12-20020a05600c468c00b003cf7c81caaemr45745603wmo.135.1669971370962; Fri, 02 Dec 2022 00:56:10 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:29a4:6f04:ddb1:1ed7]) by smtp.gmail.com with ESMTPSA id a13-20020adfed0d000000b0024219b1cb1bsm6527517wro.60.2022.12.02.00.56.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Dec 2022 00:56:10 -0800 (PST) From: Bartosz Golaszewski To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Greg Kroah-Hartman , Jiri Slaby , Srinivas Kandagatla , Vinod Koul , Alex Elder , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v5 14/14] tty: serial: qcom-geni-serial: add support for serial engine DMA Date: Fri, 2 Dec 2022 09:55:54 +0100 Message-Id: <20221202085554.59637-15-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221202085554.59637-1-brgl@bgdev.pl> References: <20221202085554.59637-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bartosz Golaszewski The qcom-geni-serial driver currently only works in SE FIFO mode. This limits the UART speed to around 180 kB/s. In order to achieve higher speeds we need to use SE DMA mode. Keep the console port working in FIFO mode but extend the code to use DMA for the high-speed port. Signed-off-by: Bartosz Golaszewski --- drivers/tty/serial/qcom_geni_serial.c | 314 +++++++++++++++++++++----- 1 file changed, 255 insertions(+), 59 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 1dfc0122ff53..85c8771ae318 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -70,6 +70,8 @@ #define UART_START_TX 0x1 /* UART S_CMD OP codes */ #define UART_START_READ 0x1 +#define UART_PARAM 0x1 +#define UART_PARAM_RFR_OPEN BIT(7) =20 #define UART_OVERSAMPLING 32 #define STALE_TIMEOUT 16 @@ -95,9 +97,11 @@ /* We always configure 4 bytes per FIFO word */ #define BYTES_PER_FIFO_WORD 4U =20 +#define DMA_RX_BUF_SIZE 2048 + struct qcom_geni_device_data { bool console; - void (*handle_rx)(struct uart_port *uport, u32 bytes, bool drop); + enum geni_se_xfer_mode mode; }; =20 struct qcom_geni_private_data { @@ -118,9 +122,11 @@ struct qcom_geni_serial_port { u32 tx_fifo_depth; u32 tx_fifo_width; u32 rx_fifo_depth; + dma_addr_t tx_dma_addr; + dma_addr_t rx_dma_addr; bool setup; unsigned int baud; - void *rx_fifo; + void *rx_buf; u32 loopback; bool brk; =20 @@ -249,6 +255,16 @@ static struct qcom_geni_serial_port *get_port_from_lin= e(int line, bool console) return port; } =20 +static bool qcom_geni_serial_main_active(struct uart_port *uport) +{ + return readl(uport->membase + SE_GENI_STATUS) & M_GENI_CMD_ACTIVE; +} + +static bool qcom_geni_serial_secondary_active(struct uart_port *uport) +{ + return readl(uport->membase + SE_GENI_STATUS) & S_GENI_CMD_ACTIVE; +} + static bool qcom_geni_serial_poll_bit(struct uart_port *uport, int offset, int field, bool set) { @@ -552,18 +568,11 @@ static void handle_rx_console(struct uart_port *uport= , u32 bytes, bool drop) =20 static void handle_rx_uart(struct uart_port *uport, u32 bytes, bool drop) { - struct tty_port *tport; struct qcom_geni_serial_port *port =3D to_dev_port(uport); - u32 num_bytes_pw =3D port->tx_fifo_width / BITS_PER_BYTE; - u32 words =3D ALIGN(bytes, num_bytes_pw) / num_bytes_pw; + struct tty_port *tport =3D &uport->state->port; int ret; =20 - tport =3D &uport->state->port; - ioread32_rep(uport->membase + SE_GENI_RX_FIFOn, port->rx_fifo, words); - if (drop) - return; - - ret =3D tty_insert_flip_string(tport, port->rx_fifo, bytes); + ret =3D tty_insert_flip_string(tport, port->rx_buf, bytes); if (ret !=3D bytes) { dev_err(uport->dev, "%s:Unable to push data ret %d_bytes %d\n", __func__, ret, bytes); @@ -578,16 +587,75 @@ static unsigned int qcom_geni_serial_tx_empty(struct = uart_port *uport) return !readl(uport->membase + SE_GENI_TX_FIFO_STATUS); } =20 -static void qcom_geni_serial_start_tx(struct uart_port *uport) +static void qcom_geni_serial_stop_tx_dma(struct uart_port *uport) { - u32 irq_en; - u32 status; + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + bool done; + u32 m_irq_en; + + if (!qcom_geni_serial_main_active(uport)) + return; + + if (port->rx_dma_addr) { + geni_se_tx_dma_unprep(&port->se, port->tx_dma_addr, + port->tx_remaining); + port->tx_dma_addr =3D 0; + port->tx_remaining =3D 0; + } + + m_irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); + writel(m_irq_en, uport->membase + SE_GENI_M_IRQ_EN); + geni_se_cancel_m_cmd(&port->se); + + done =3D qcom_geni_serial_poll_bit(uport, SE_GENI_S_IRQ_STATUS, + S_CMD_CANCEL_EN, true); + if (!done) { + geni_se_abort_m_cmd(&port->se); + done =3D qcom_geni_serial_poll_bit(uport, SE_GENI_M_IRQ_STATUS, + M_CMD_ABORT_EN, true); + if (!done) + dev_err_ratelimited(uport->dev, "M_CMD_ABORT_EN not set"); + writel(M_CMD_ABORT_EN, uport->membase + SE_GENI_M_IRQ_CLEAR); + } + + writel(M_CMD_CANCEL_EN, uport->membase + SE_GENI_M_IRQ_CLEAR); +} + +static void qcom_geni_serial_start_tx_dma(struct uart_port *uport) +{ + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + struct circ_buf *xmit =3D &uport->state->xmit; + unsigned int xmit_size; + int ret; + + if (port->tx_dma_addr) + return; + + xmit_size =3D uart_circ_chars_pending(xmit); + if (xmit_size < WAKEUP_CHARS) + uart_write_wakeup(uport); =20 - status =3D readl(uport->membase + SE_GENI_STATUS); - if (status & M_GENI_CMD_ACTIVE) + xmit_size =3D CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); + + qcom_geni_serial_setup_tx(uport, xmit_size); + + ret =3D geni_se_tx_dma_prep(&port->se, &xmit->buf[xmit->tail], + xmit_size, &port->tx_dma_addr); + if (ret) { + dev_err(uport->dev, "unable to start TX SE DMA: %d\n", ret); + qcom_geni_serial_stop_tx_dma(uport); return; + } + + port->tx_remaining =3D xmit_size; +} + +static void qcom_geni_serial_start_tx_fifo(struct uart_port *uport) +{ + u32 irq_en; =20 - if (!qcom_geni_serial_tx_empty(uport)) + if (qcom_geni_serial_main_active(uport) || + !qcom_geni_serial_tx_empty(uport)) return; =20 irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); @@ -597,19 +665,17 @@ static void qcom_geni_serial_start_tx(struct uart_por= t *uport) writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); } =20 -static void qcom_geni_serial_stop_tx(struct uart_port *uport) +static void qcom_geni_serial_stop_tx_fifo(struct uart_port *uport) { u32 irq_en; - u32 status; struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); irq_en &=3D ~(M_CMD_DONE_EN | M_TX_FIFO_WATERMARK_EN); writel(0, uport->membase + SE_GENI_TX_WATERMARK_REG); writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); - status =3D readl(uport->membase + SE_GENI_STATUS); /* Possible stop tx is called multiple times. */ - if (!(status & M_GENI_CMD_ACTIVE)) + if (!qcom_geni_serial_main_active(uport)) return; =20 geni_se_cancel_m_cmd(&port->se); @@ -623,14 +689,13 @@ static void qcom_geni_serial_stop_tx(struct uart_port= *uport) writel(M_CMD_CANCEL_EN, uport->membase + SE_GENI_M_IRQ_CLEAR); } =20 -static void qcom_geni_serial_handle_rx(struct uart_port *uport, bool drop) +static void qcom_geni_serial_handle_rx_fifo(struct uart_port *uport, bool = drop) { u32 status; u32 word_cnt; u32 last_word_byte_cnt; u32 last_word_partial; u32 total_bytes; - struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 status =3D readl(uport->membase + SE_GENI_RX_FIFO_STATUS); word_cnt =3D status & RX_FIFO_WC_MSK; @@ -645,13 +710,12 @@ static void qcom_geni_serial_handle_rx(struct uart_po= rt *uport, bool drop) total_bytes +=3D last_word_byte_cnt; else total_bytes +=3D BYTES_PER_FIFO_WORD; - port->dev_data->handle_rx(uport, total_bytes, drop); + handle_rx_console(uport, total_bytes, drop); } =20 -static void qcom_geni_serial_stop_rx(struct uart_port *uport) +static void qcom_geni_serial_stop_rx_fifo(struct uart_port *uport) { u32 irq_en; - u32 status; struct qcom_geni_serial_port *port =3D to_dev_port(uport); u32 s_irq_status; =20 @@ -663,9 +727,7 @@ static void qcom_geni_serial_stop_rx(struct uart_port *= uport) irq_en &=3D ~(M_RX_FIFO_WATERMARK_EN | M_RX_FIFO_LAST_EN); writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); =20 - status =3D readl(uport->membase + SE_GENI_STATUS); - /* Possible stop rx is called multiple times. */ - if (!(status & S_GENI_CMD_ACTIVE)) + if (!qcom_geni_serial_secondary_active(uport)) return; =20 geni_se_cancel_s_cmd(&port->se); @@ -678,23 +740,20 @@ static void qcom_geni_serial_stop_rx(struct uart_port= *uport) s_irq_status =3D readl(uport->membase + SE_GENI_S_IRQ_STATUS); /* Flush the Rx buffer */ if (s_irq_status & S_RX_FIFO_LAST_EN) - qcom_geni_serial_handle_rx(uport, true); + qcom_geni_serial_handle_rx_fifo(uport, true); writel(s_irq_status, uport->membase + SE_GENI_S_IRQ_CLEAR); =20 - status =3D readl(uport->membase + SE_GENI_STATUS); - if (status & S_GENI_CMD_ACTIVE) + if (qcom_geni_serial_secondary_active(uport)) qcom_geni_serial_abort_rx(uport); } =20 -static void qcom_geni_serial_start_rx(struct uart_port *uport) +static void qcom_geni_serial_start_rx_fifo(struct uart_port *uport) { u32 irq_en; - u32 status; struct qcom_geni_serial_port *port =3D to_dev_port(uport); =20 - status =3D readl(uport->membase + SE_GENI_STATUS); - if (status & S_GENI_CMD_ACTIVE) - qcom_geni_serial_stop_rx(uport); + if (qcom_geni_serial_secondary_active(uport)) + qcom_geni_serial_stop_rx_fifo(uport); =20 geni_se_setup_s_cmd(&port->se, UART_START_READ, 0); =20 @@ -707,6 +766,94 @@ static void qcom_geni_serial_start_rx(struct uart_port= *uport) writel(irq_en, uport->membase + SE_GENI_M_IRQ_EN); } =20 +static void qcom_geni_serial_stop_rx_dma(struct uart_port *uport) +{ + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + + if (!qcom_geni_serial_secondary_active(uport)) + return; + + geni_se_cancel_s_cmd(&port->se); + qcom_geni_serial_poll_bit(uport, SE_GENI_S_IRQ_STATUS, + S_CMD_CANCEL_EN, true); + + if (qcom_geni_serial_secondary_active(uport)) + qcom_geni_serial_abort_rx(uport); + + if (port->rx_dma_addr) { + geni_se_rx_dma_unprep(&port->se, port->rx_dma_addr, + DMA_RX_BUF_SIZE); + port->rx_dma_addr =3D 0; + } +} + +static void qcom_geni_serial_start_rx_dma(struct uart_port *uport) +{ + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + int ret; + + if (qcom_geni_serial_secondary_active(uport)) + qcom_geni_serial_stop_rx_dma(uport); + + geni_se_setup_s_cmd(&port->se, UART_START_READ, UART_PARAM_RFR_OPEN); + + ret =3D geni_se_rx_dma_prep(&port->se, port->rx_buf, + DMA_RX_BUF_SIZE, + &port->rx_dma_addr); + if (ret) { + dev_err(uport->dev, "unable to start RX SE DMA: %d\n", ret); + qcom_geni_serial_stop_rx_dma(uport); + } +} + +static void qcom_geni_serial_handle_rx_dma(struct uart_port *uport, bool d= rop) +{ + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + u32 rx_in; + int ret; + + if (!qcom_geni_serial_secondary_active(uport)) + return; + + if (!port->rx_dma_addr) + return; + + geni_se_rx_dma_unprep(&port->se, port->rx_dma_addr, DMA_RX_BUF_SIZE); + port->rx_dma_addr =3D 0; + + rx_in =3D readl(uport->membase + SE_DMA_RX_LEN_IN); + if (!rx_in) { + dev_warn(uport->dev, "serial engine reports 0 RX bytes in!\n"); + return; + } + + if (!drop) + handle_rx_uart(uport, rx_in, drop); + + ret =3D geni_se_rx_dma_prep(&port->se, port->rx_buf, + DMA_RX_BUF_SIZE, + &port->rx_dma_addr); + if (ret) { + dev_err(uport->dev, "unable to start RX SE DMA: %d\n", ret); + qcom_geni_serial_stop_rx_dma(uport); + } +} + +static void qcom_geni_serial_start_rx(struct uart_port *uport) +{ + uport->ops->start_rx(uport); +} + +static void qcom_geni_serial_stop_rx(struct uart_port *uport) +{ + uport->ops->stop_rx(uport); +} + +static void qcom_geni_serial_stop_tx(struct uart_port *uport) +{ + uport->ops->stop_tx(uport); +} + static void qcom_geni_serial_send_chunk_fifo(struct uart_port *uport, unsigned int chunk) { @@ -731,8 +878,8 @@ static void qcom_geni_serial_send_chunk_fifo(struct uar= t_port *uport, } } =20 -static void qcom_geni_serial_handle_tx(struct uart_port *uport, bool done, - bool active) +static void qcom_geni_serial_handle_tx_fifo(struct uart_port *uport, + bool done, bool active) { struct qcom_geni_serial_port *port =3D to_dev_port(uport); struct circ_buf *xmit =3D &uport->state->xmit; @@ -752,7 +899,7 @@ static void qcom_geni_serial_handle_tx(struct uart_port= *uport, bool done, =20 /* All data has been transmitted and acknowledged as received */ if (!pending && !status && done) { - qcom_geni_serial_stop_tx(uport); + qcom_geni_serial_stop_tx_fifo(uport); goto out_write_wakeup; } =20 @@ -795,12 +942,32 @@ static void qcom_geni_serial_handle_tx(struct uart_po= rt *uport, bool done, uart_write_wakeup(uport); } =20 +static void qcom_geni_serial_handle_tx_dma(struct uart_port *uport) +{ + struct qcom_geni_serial_port *port =3D to_dev_port(uport); + struct circ_buf *xmit =3D &uport->state->xmit; + + uart_xmit_advance(uport, port->tx_remaining); + geni_se_tx_dma_unprep(&port->se, port->tx_dma_addr, port->tx_remaining); + port->tx_dma_addr =3D 0; + port->tx_remaining =3D 0; + + if (!uart_circ_empty(xmit)) + qcom_geni_serial_start_tx_dma(uport); + + if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) + uart_write_wakeup(uport); +} + static irqreturn_t qcom_geni_serial_isr(int isr, void *dev) { u32 m_irq_en; u32 m_irq_status; u32 s_irq_status; u32 geni_status; + u32 dma; + u32 dma_tx_status; + u32 dma_rx_status; struct uart_port *uport =3D dev; bool drop_rx =3D false; struct tty_port *tport =3D &uport->state->port; @@ -813,10 +980,15 @@ static irqreturn_t qcom_geni_serial_isr(int isr, void= *dev) =20 m_irq_status =3D readl(uport->membase + SE_GENI_M_IRQ_STATUS); s_irq_status =3D readl(uport->membase + SE_GENI_S_IRQ_STATUS); + dma_tx_status =3D readl(uport->membase + SE_DMA_TX_IRQ_STAT); + dma_rx_status =3D readl(uport->membase + SE_DMA_RX_IRQ_STAT); geni_status =3D readl(uport->membase + SE_GENI_STATUS); + dma =3D readl(uport->membase + SE_GENI_DMA_MODE_EN); m_irq_en =3D readl(uport->membase + SE_GENI_M_IRQ_EN); writel(m_irq_status, uport->membase + SE_GENI_M_IRQ_CLEAR); writel(s_irq_status, uport->membase + SE_GENI_S_IRQ_CLEAR); + writel(dma_tx_status, uport->membase + SE_DMA_TX_IRQ_CLR); + writel(dma_rx_status, uport->membase + SE_DMA_RX_IRQ_CLR); =20 if (WARN_ON(m_irq_status & M_ILLEGAL_CMD_EN)) goto out_unlock; @@ -826,10 +998,6 @@ static irqreturn_t qcom_geni_serial_isr(int isr, void = *dev) tty_insert_flip_char(tport, 0, TTY_OVERRUN); } =20 - if (m_irq_status & m_irq_en & (M_TX_FIFO_WATERMARK_EN | M_CMD_DONE_EN)) - qcom_geni_serial_handle_tx(uport, m_irq_status & M_CMD_DONE_EN, - geni_status & M_GENI_CMD_ACTIVE); - if (s_irq_status & (S_GP_IRQ_0_EN | S_GP_IRQ_1_EN)) { if (s_irq_status & S_GP_IRQ_0_EN) uport->icount.parity++; @@ -839,8 +1007,35 @@ static irqreturn_t qcom_geni_serial_isr(int isr, void= *dev) port->brk =3D true; } =20 - if (s_irq_status & (S_RX_FIFO_WATERMARK_EN | S_RX_FIFO_LAST_EN)) - qcom_geni_serial_handle_rx(uport, drop_rx); + if (dma) { + if (dma_tx_status & TX_DMA_DONE) + qcom_geni_serial_handle_tx_dma(uport); + + if (dma_rx_status) { + if (dma_rx_status & RX_RESET_DONE) + goto out_unlock; + + if (dma_rx_status & RX_DMA_PARITY_ERR) { + uport->icount.parity++; + drop_rx =3D true; + } + + if (dma_rx_status & RX_DMA_BREAK) + uport->icount.brk++; + + if (dma_rx_status & (RX_DMA_DONE | RX_EOT)) + qcom_geni_serial_handle_rx_dma(uport, drop_rx); + } + } else { + if (m_irq_status & m_irq_en & + (M_TX_FIFO_WATERMARK_EN | M_CMD_DONE_EN)) + qcom_geni_serial_handle_tx_fifo(uport, + m_irq_status & M_CMD_DONE_EN, + geni_status & M_GENI_CMD_ACTIVE); + + if (s_irq_status & (S_RX_FIFO_WATERMARK_EN | S_RX_FIFO_LAST_EN)) + qcom_geni_serial_handle_rx_fifo(uport, drop_rx); + } =20 out_unlock: uart_unlock_and_check_sysrq(uport); @@ -909,7 +1104,7 @@ static int qcom_geni_serial_port_setup(struct uart_por= t *uport) geni_se_config_packing(&port->se, BITS_PER_BYTE, BYTES_PER_FIFO_WORD, false, true, true); geni_se_init(&port->se, UART_RX_WM, port->rx_fifo_depth - 2); - geni_se_select_mode(&port->se, GENI_SE_FIFO); + geni_se_select_mode(&port->se, port->dev_data->mode); port->setup =3D true; =20 return 0; @@ -1307,10 +1502,10 @@ static void qcom_geni_serial_pm(struct uart_port *u= port, =20 static const struct uart_ops qcom_geni_console_pops =3D { .tx_empty =3D qcom_geni_serial_tx_empty, - .stop_tx =3D qcom_geni_serial_stop_tx, - .start_tx =3D qcom_geni_serial_start_tx, - .stop_rx =3D qcom_geni_serial_stop_rx, - .start_rx =3D qcom_geni_serial_start_rx, + .stop_tx =3D qcom_geni_serial_stop_tx_fifo, + .start_tx =3D qcom_geni_serial_start_tx_fifo, + .stop_rx =3D qcom_geni_serial_stop_rx_fifo, + .start_rx =3D qcom_geni_serial_start_rx_fifo, .set_termios =3D qcom_geni_serial_set_termios, .startup =3D qcom_geni_serial_startup, .request_port =3D qcom_geni_serial_request_port, @@ -1328,9 +1523,10 @@ static const struct uart_ops qcom_geni_console_pops = =3D { =20 static const struct uart_ops qcom_geni_uart_pops =3D { .tx_empty =3D qcom_geni_serial_tx_empty, - .stop_tx =3D qcom_geni_serial_stop_tx, - .start_tx =3D qcom_geni_serial_start_tx, - .stop_rx =3D qcom_geni_serial_stop_rx, + .stop_tx =3D qcom_geni_serial_stop_tx_dma, + .start_tx =3D qcom_geni_serial_start_tx_dma, + .start_rx =3D qcom_geni_serial_start_rx_dma, + .stop_rx =3D qcom_geni_serial_stop_rx_dma, .set_termios =3D qcom_geni_serial_set_termios, .startup =3D qcom_geni_serial_startup, .request_port =3D qcom_geni_serial_request_port, @@ -1399,9 +1595,9 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) port->tx_fifo_width =3D DEF_FIFO_WIDTH_BITS; =20 if (!data->console) { - port->rx_fifo =3D devm_kcalloc(uport->dev, - port->rx_fifo_depth, sizeof(u32), GFP_KERNEL); - if (!port->rx_fifo) + port->rx_buf =3D devm_kzalloc(uport->dev, + DMA_RX_BUF_SIZE, GFP_KERNEL); + if (!port->rx_buf) return -ENOMEM; } =20 @@ -1531,12 +1727,12 @@ static int __maybe_unused qcom_geni_serial_sys_resu= me(struct device *dev) =20 static const struct qcom_geni_device_data qcom_geni_console_data =3D { .console =3D true, - .handle_rx =3D handle_rx_console, + .mode =3D GENI_SE_FIFO, }; =20 static const struct qcom_geni_device_data qcom_geni_uart_data =3D { .console =3D false, - .handle_rx =3D handle_rx_uart, + .mode =3D GENI_SE_DMA, }; =20 static const struct dev_pm_ops qcom_geni_serial_pm_ops =3D { --=20 2.37.2