From nobody Tue Sep 16 21:18:32 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 7EE00C4332F for ; Thu, 29 Dec 2022 15:50:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230175AbiL2Puo (ORCPT ); Thu, 29 Dec 2022 10:50:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233418AbiL2Pui (ORCPT ); Thu, 29 Dec 2022 10:50:38 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7602813F7E for ; Thu, 29 Dec 2022 07:50:36 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id k22-20020a05600c1c9600b003d1ee3a6289so13447646wms.2 for ; Thu, 29 Dec 2022 07:50:36 -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=uRwdQu5MiMvipA/jHJnFPhBPMARfFwJxa4aVOmTfNpg=; b=67dGg5+xjqMX/D0bD3SWdlDwwwKvCXeIzJHQBdkaJpKhIJbCAF9GRz8iR3gW6bF0D7 NKPeaP7a2AO+JKD+fbkHNekVmKtcGtnDoPQLtTY6qbHDYEumqhvpyAHtny7YwwHDcCSG JD5dE5eXKHxaXuhLP6YyqKF4yyJwS3o3NA5p3W7u1kZTr+ZJT4lrGs5hEMuS5iO6o/vt GIev6LVyYiORGCHre9xtjmsbINYF2OIMHCj3FBc/Im2zuoeLK4zPBQZ+7lkoDno0SLRf +ZsWFnbYamxsv/ym6lHs1QUs+N/4s5JTc/4l7U4Oi+X8PKQjWSN3ZEootpSnirmRktvn OccQ== 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=uRwdQu5MiMvipA/jHJnFPhBPMARfFwJxa4aVOmTfNpg=; b=XF9n8pcMk+7xr9bBdCA6CWRKscXuAg68v+6CNcQEH47km98FoqyAfb3KdhD32vKBN8 8HQS+Dm52gPjo0tMD9Cz4EZrf9i7xXLkspM2ujlqRV0FKK7Q9AjS7OPplVL1zdFPAFBJ L12xSKIGFImb5g66aP4IH/tFB/AjwvtuxeyrKU1quONIYdxvXn9E4dG+X8YUUqZO5hqb r7fENo7y4mLNT3LQPquezujDS6F1w9KpXU9MRLmp/fMR+06Bysy53oXyZBgzUEbPY4gC c8jju5q2FeSmzv0Y+j8dWYaTA0CVSPA92hQ9L/8kwLmhlXibhvlJ5RDQPc8KHiQNRj/u 1GDw== X-Gm-Message-State: AFqh2kr/JYGPwUsitWnZ/DPe5VK7nFsTWUtN5KuAerXqAh7RYnk6B9SY gBDN4ebyC7xl6D00AJJs6UbOgw== X-Google-Smtp-Source: AMrXdXvKIcEvg6Q7DVBAgfIR7uBHoLavWetAfhN1MjNJPUD9lLXqeIpajYo8Gr9zTKhTqluW2fKxLg== X-Received: by 2002:a05:600c:600a:b0:3d1:ed41:57c0 with SMTP id az10-20020a05600c600a00b003d1ed4157c0mr23663168wmb.30.1672329034988; Thu, 29 Dec 2022 07:50:34 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:34 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 01/14] tty: serial: qcom-geni-serial: stop operations in progress at shutdown Date: Thu, 29 Dec 2022 16:50:17 +0100 Message-Id: <20221229155030.418800-2-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 (support for which we'll introduce later) it causes trouble so fix it now. Fixes: e83766334f96 ("tty: serial: qcom_geni_serial: No need to stop tx/rx = on UART shutdown") 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 b487823f0e61..4f4c12f3c433 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -880,6 +880,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 Tue Sep 16 21:18:32 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 3CA6FC4332F for ; Thu, 29 Dec 2022 15:50:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233572AbiL2Put (ORCPT ); Thu, 29 Dec 2022 10:50:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233491AbiL2Pui (ORCPT ); Thu, 29 Dec 2022 10:50:38 -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 7434313F91 for ; Thu, 29 Dec 2022 07:50:37 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id c65-20020a1c3544000000b003cfffd00fc0so16615593wma.1 for ; Thu, 29 Dec 2022 07:50:37 -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=l16P3Tz2y+nugpkt7mRQCRUw70VUrSOE7TcjuQJSFbU=; b=NQvEW5kBBBA5F9hm0a4wpWiGJoW/JaGcLszVI+f3sgRIHfdTlkRR4NirlyL/VuYQ4r 3TwLxLAd8zfJJmUYNkCybr2eht0dLGdviZ5tUmJ6Y9MDy+U5m/0e9Fzp5lg1sO7eZjkq VHSNB4wiwpkd+bC83jGDzzQsHwoQn/kqQSTVGAq5jaO7yX7eOBcvNsyDtFoa7ArFUdg5 Bcw4jO33phTGIOHszk/Bj+8kUVzE280fS6Las+pHIrwGOLG7/xXmwa94Nesvsqh8q6uE RdEpGBWIknQOPx0ZPQeIbX7fS5BaQofYelWGZF7if5dRiuRx5pwr9C3bd7dTpKa9Y/Iy 5k7w== 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=l16P3Tz2y+nugpkt7mRQCRUw70VUrSOE7TcjuQJSFbU=; b=x7M6vMm15pkDsZpooc8hHYDjrdq0tUEfP3JE/Rqxpe3xTAdizOpKGRJoyNyZc6wIVZ DxIT9HcL4P07SHy+LWAPhaa6W626+pVUSbBtJ6PEvHpGIofMtKkahtTwfL/plEWDtbz3 TTi2xDmTz2IqjeT0B6qXG5tCXAlYfFIpz1E6S9vjgX49yDiBCfgeYRlEykEzQlgdKvS7 H/gjAU8gZsx1hvMXLPgCgkLhHaSG192p24k84ac1eU5mypDR4M4rLdRWhsuRCD5VO8ai noG1Px3VT7YiEnKGCf9r8Hn3rL0R26XGkZADli+ELQ14nZOAi/E/c5w91+gcxWYro1mm swNA== X-Gm-Message-State: AFqh2kp3qQ5bQvZfEaGruKHpPORvwXyNsluc9u4Xx09chiX3c725wFug +tqix955/41f9d5tbdQtAU5h0g== X-Google-Smtp-Source: AMrXdXv49hd8c4QJSOvJlzqfJl3/lA/m89biejJYnkqhYdy+1YkfHjxbMWkkYJaHQ6TxAwIHcZGdaQ== X-Received: by 2002:a05:600c:254:b0:3d2:2c86:d2b2 with SMTP id 20-20020a05600c025400b003d22c86d2b2mr26204124wmj.24.1672329036024; Thu, 29 Dec 2022 07:50:36 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:35 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 02/14] tty: serial: qcom-geni-serial: drop unneeded forward definitions Date: Thu, 29 Dec 2022 16:50:18 +0100 Message-Id: <20221229155030.418800-3-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 4f4c12f3c433..31e0faf702a3 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, @@ -1125,11 +1125,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 Tue Sep 16 21:18:32 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 814DFC4167B for ; Thu, 29 Dec 2022 15:50:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233594AbiL2Pu5 (ORCPT ); Thu, 29 Dec 2022 10:50:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233383AbiL2Puj (ORCPT ); Thu, 29 Dec 2022 10:50:39 -0500 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6119813FA0 for ; Thu, 29 Dec 2022 07:50:38 -0800 (PST) Received: by mail-wm1-x32a.google.com with SMTP id k26-20020a05600c1c9a00b003d972646a7dso10320695wms.5 for ; Thu, 29 Dec 2022 07:50:38 -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=yVGwSRNkV++8e1tKlPyV6LZX61uuumwYr0Qkw5f5jMg=; b=qdeIeDaYP+b+841I6BjiqZzY5PImnho+txhmq4D6ic7R9So491Uvy8ikcrCzHFbjGS w6t/yirz4+Bj2W3LRI+3g6ctsmi46P1nr4My7ZGj9gfSWHUQeZNMN+D6GWzVW0/LVWc6 uPhhVR+rzaCv6cc/+1l4nDsPAN4akFMsPwpHU//iejl9jKhWn5P94WffCcp3Xypar0hH 0fYoKqiPzmvQqaoVJOPjUZas2PCpaX5xFyBzlHLDlqVnDwV89jwmwyCgogm0qLQ6CE+Y uKGQcs/oBk21gA2jStWMbMY+0b8+0Fc6tpp6iSj8+FFtFLUXrjX/FRLL08ZE0BKyWPbP 2Org== 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=yVGwSRNkV++8e1tKlPyV6LZX61uuumwYr0Qkw5f5jMg=; b=F3wzVUdD5ViJAOUvrbNlYRGcP+crHxBm5xot+gN1rgJhdDPFJVp2C7wg4X5gs1aefN HWliMg0JnDz40rQnAozynAWkWFTlciVcPEUjVko9ywkmtqtid9LqV991PiZmGbTLd6tv 5EQBIQcEYAszsSmACgcYO5xZOFDRZWoXk2lCtbv+YuPDpFNhX1XobPaoD9dU17rWPpUc EVGEmQXDOlAXJ28zWZvATCGG56fYphI8Mc0jO1NIVIDuW188YIzJ+c0+e6e1jWzfV55N 5QaG9GWNhLZUhT9U7cKF26cAmSJhbc6FzybREP6sl2hpkVtKwj3M80HFiu3ZU5eD6Hqs aDGA== X-Gm-Message-State: AFqh2kqk93batXGETmJBMaaB6beNgSuq9BcdJBwg43QLYnv9dF1wp2hH iOG4ftbutARE6yaUPGxCrvQacA== X-Google-Smtp-Source: AMrXdXs8bMflY8UieNb+w9TOC6QrlrG5buh/R+qN1lJfk3+bpQVgte3LGsFnxtTjKbnbKtlyScEzJQ== X-Received: by 2002:a05:600c:2183:b0:3d2:17db:d6e7 with SMTP id e3-20020a05600c218300b003d217dbd6e7mr23575377wme.20.1672329036989; Thu, 29 Dec 2022 07:50:36 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:36 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 03/14] tty: serial: qcom-geni-serial: remove unused symbols Date: Thu, 29 Dec 2022 16:50:19 +0100 Message-Id: <20221229155030.418800-4-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 31e0faf702a3..359d9f0ba6ee 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 Tue Sep 16 21:18:32 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 97117C4167B for ; Thu, 29 Dec 2022 15:50:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233591AbiL2Pux (ORCPT ); Thu, 29 Dec 2022 10:50:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233386AbiL2Puj (ORCPT ); Thu, 29 Dec 2022 10:50:39 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C85C13F49 for ; Thu, 29 Dec 2022 07:50:38 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id m8-20020a05600c3b0800b003d96f801c48so11169845wms.0 for ; Thu, 29 Dec 2022 07:50:38 -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=pEdVYIDCyjQIozVI4BE2BvXtfHehdibvZ1uOyQg9tFw=; b=rBl5gV8tfSZs0wx8/3BCDl745B08pVzPfhtErDJtxzQwRSKqtP7V5t0N0QEJZas1HS SJLB2D7A4qv4+cpSR0A+XzRAzPlLULVRiH/XToUExR9lv0XtVzJhhvxxfyx24M7gHyFZ Y3O52tWSpFXdl/K1MgQBc4yq5+ruYA/DLvHJ9MuK4w7yAdq/j59H+1kcI2CBvPa5HQ9X YMVSJcJpcRn4LROWnLQzPqr/lWPZHVHoaBtf8vxA8jn/oI3ZMYxY0kkF2iP3H/y0Gnm+ LnL/X+JRgil9Ha/Wj8effJfxoeiLZ3M9MBY75EYNrsfwRs5BCRm++WbH/47aUN7pte05 EXVw== 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=pEdVYIDCyjQIozVI4BE2BvXtfHehdibvZ1uOyQg9tFw=; b=U7dlsI5inTWWgAO0CYamBRqv7GZ0qjveNGTmiZyV1pbaZUWD7ghxzCxso1wsyQ6mxl eKDvT+9MZQ9yxg29XVhSi7thkg3YIf9hkISBmYlBwWyDZ6ELtTMDtQG4/WqZzfLg4NAL HkzYCz8yJcN6ir13ifCicRXce97d1D6irCoKHmtIg+BQnJw2xvkj6kDYG9X3g+bz8DAO vo4SmVE4cGl+Xhj73a2y2SUhLW/zBqbyicI6oedSBZ0km28hV8IKPMLeRA61N4/DVIsA /RqaqhgvxqBKM7dUQgzFP/4RsHXFM4g0orNEc8C2llNidhkI4rx6w+AqF7FCGATM9NI0 PYDA== X-Gm-Message-State: AFqh2ko/EPuO2iUWEXw5qVWwC3OlizbOunFOIT3/2tWF0FoPE3F36AjF vANLd/6pme42AEqgEBQmnbM8Eg== X-Google-Smtp-Source: AMrXdXurWx7jopuz9KB4ZATRrdqs70MzxtWmuYNMxsjo46bv4aXdd8GMkbcoU6hNh+9QGB2Tu2KnsQ== X-Received: by 2002:a05:600c:b4d:b0:3d3:49db:d84 with SMTP id k13-20020a05600c0b4d00b003d349db0d84mr20148669wmr.20.1672329037892; Thu, 29 Dec 2022 07:50:37 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:37 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 04/14] tty: serial: qcom-geni-serial: align #define values Date: Thu, 29 Dec 2022 16:50:20 +0100 Message-Id: <20221229155030.418800-5-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 359d9f0ba6ee..a4a50f2a6554 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 Tue Sep 16 21:18:32 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 836C8C4332F for ; Thu, 29 Dec 2022 15:51:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233606AbiL2PvA (ORCPT ); Thu, 29 Dec 2022 10:51:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233472AbiL2Pul (ORCPT ); Thu, 29 Dec 2022 10:50:41 -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 480FA13F4F for ; Thu, 29 Dec 2022 07:50:39 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id ay2-20020a05600c1e0200b003d22e3e796dso13473857wmb.0 for ; Thu, 29 Dec 2022 07:50:39 -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=oTBjJnbC2jcK/U6kcPP63swBkiUWRZWtVNKlNlvxvdA=; b=rnJLV6jDgxvrOimj+97Y/JoPHeT2PyG9CgZ0J1458YFn1neIkvZxPvnuz6+RkVb8sN YfQYgRmrvRLxddDMUkhM+wWq+fnlT6sGpKZfhnb/k3RZTBo/zGBlFtngaoP0aaVKUMRn nlL2ajXaYDl333kbdMFE6qZv0Cy7BRQ7tH+LzO29PfQkAEaLo+/0QOqwhOjyW9YB0bQ/ Qjyj70j5x+kkEs0IbwAthpNcYPHlD0bu4l6D00ecbN4f//N+Ocb96VyJXD6YLROhE7jf vtUhlv7LvFZYwbV+tnJcy46NSrufoHe+5PYcZzsSGExuw7MOhNWKcE0OBf8JU0w8v+B1 xF0g== 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=oTBjJnbC2jcK/U6kcPP63swBkiUWRZWtVNKlNlvxvdA=; b=UkoC+12ibP1idsLaLigw0bZi26erAzc0+v45muSdItZ1bPEq5PFmowwMHGJp3DbIlq AygvHgFvK6EBZkSKHcDnbu04Ombf4kfAInkYyNj0aEaP6NAsdKftOpJJwGzK2A+Yst5C Q0ZUfNdiOAIfgRGsrvTKOgQevJMbimYCfCTRkDvGFhgv3NOF2qVVO9NVraCzWmHkT39Y moQ90k16ua48pOScdvy8MtBYNScn4D7RwkuRknuQsR1EYf5X2/7tJ+jEpQMgN6Clm5R2 8VlGQqKqf70AVHRKtnj9oiGjszaUyKtMRi+R2jmB6rjI130N4etqYufAPByfrmVDgTk8 lIPA== X-Gm-Message-State: AFqh2kokXaPd8IfhZH6hEep3g4MDB6IqmrW52B5vpCY1C2e/KRDMMgV9 RkC97QnD9DKqfp4lDWwYOP8avg== X-Google-Smtp-Source: AMrXdXuNsTn+hIZcSw2u0mTZWw+OrvRI963yf3H80jldX7PZ0QPLNIYHDlWbY3VC3btSjdGnXFeYyg== X-Received: by 2002:a05:600c:b92:b0:3d9:779e:9788 with SMTP id fl18-20020a05600c0b9200b003d9779e9788mr11404075wmb.37.1672329038812; Thu, 29 Dec 2022 07:50:38 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:38 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 05/14] tty: serial: qcom-geni-serial: improve the to_dev_port() macro Date: Thu, 29 Dec 2022 16:50:21 +0100 Message-Id: <20221229155030.418800-6-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 a4a50f2a6554..803a46ce4179 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; @@ -871,7 +873,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; @@ -920,7 +922,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); @@ -1006,7 +1008,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; @@ -1291,7 +1293,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 Tue Sep 16 21:18:32 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 773AFC3DA79 for ; Thu, 29 Dec 2022 15:51:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233633AbiL2PvR (ORCPT ); Thu, 29 Dec 2022 10:51:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233548AbiL2Pum (ORCPT ); Thu, 29 Dec 2022 10:50:42 -0500 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D2CD13F91 for ; Thu, 29 Dec 2022 07:50:41 -0800 (PST) Received: by mail-wm1-x32f.google.com with SMTP id m3so4512884wmq.0 for ; Thu, 29 Dec 2022 07:50:41 -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=DkB27LPR1wcJc7taGvEiK7AOVm/t2Nr5dcxakfWBn9k=; b=LEH6TFS3yo9QeOtdYvcsnaqBkKSh+uPUsa1dokWOiMyJAoALyxlxz2Haou9BOOx3LR dqBUCKcYJbrhmjY+CWhwZW6+zLpiGKsuFjy7LsqPOe0SwxCqSvBN4kXfJRLR40Qo017x LOmbHZ8d6R5R29SqxD6Tn+CeyIPT+UxLEHMwfcvCOQjbLd90j91FP8D6YAUp+tkOrDOz 3huBNH4ko659EKNzQ8Wk+fl6BBoWFDodYEq410F2eKpYVL/AUNXb4hMcYeqiHNTx7YsD 0PFwwA3FaIR1oyTdGFBreJ1Dc6TPcMcxv6CNRxjNe+rRMNgnt0bvbNGuIcQv3FDDhFwO w1sA== 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=DkB27LPR1wcJc7taGvEiK7AOVm/t2Nr5dcxakfWBn9k=; b=g8stYde9dq+nK0G7/ljfkJt228uS6LP4nOJZn2dPWyjWb+j3rVKZy1+6qnkalPkSlL kPeQqMvk1/qphlKzf22oFmYUjqF0pns8HAtq9AAj8pOXlRIu+lowFfk3+5KoT0iPicrQ 2yb+NVEpA+KZbZslyk8LlP2UkQTbA/flPq7syS7rOFUpc7ltf9tYRS2y8u7VYo8XQVAo HvJrIOcwh6WM7XDWJmPOaWgap3jCjGlMupm62i/5hrt6sd1/QWrrqvR0akZDFUftrcG9 iJ6LOiIkbirD88StSONrQMoVCL/XZSfnbhK5Jb5NZH5vGtb++LmFp3KiNboNfaFKZDek P/YA== X-Gm-Message-State: AFqh2ko1OskOXXwx7LNhvG1TCP7Aa84GCXkTRkJco2FT9BDw7CbfUEfZ aZgCxijlyR97PMvuDGT4ll0SxQ== X-Google-Smtp-Source: AMrXdXsKJDwO6zphv2uoFJnwJftPC07LYIDOtOdUdl7MRjiySXtYbWUWWA6VqMZHRPvJDsx6GTvI4A== X-Received: by 2002:a05:600c:22c4:b0:3cf:8ed7:712d with SMTP id 4-20020a05600c22c400b003cf8ed7712dmr23773442wmg.14.1672329039860; Thu, 29 Dec 2022 07:50:39 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:39 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 06/14] tty: serial: qcom-geni-serial: remove stray newlines Date: Thu, 29 Dec 2022 16:50:22 +0100 Message-Id: <20221229155030.418800-7-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 803a46ce4179..f4e2486b2115 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 Tue Sep 16 21:18:32 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 87647C4167B for ; Thu, 29 Dec 2022 15:51:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233664AbiL2Pv3 (ORCPT ); Thu, 29 Dec 2022 10:51:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231163AbiL2Puo (ORCPT ); Thu, 29 Dec 2022 10:50:44 -0500 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 329B7C9 for ; Thu, 29 Dec 2022 07:50:42 -0800 (PST) Received: by mail-wr1-x430.google.com with SMTP id z16so1269793wrw.1 for ; Thu, 29 Dec 2022 07:50:42 -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=lb0vU9ZSHO5r+oQcoBj4FnTeT47p74OitaDWVpDY66s=; b=gn0PqKEDVwLS6qBr3pmBW87z/OJoS2PNkLt64lbjK6Nxa/8tXhL1R9OyzI9Zbz6Oq2 A0tfCA/nXyS2iNmM2u1F5MAYvIe3VJArlgMbRamIjnCwHDb4uyqULqYh13vWDDnodTZ2 9xamHppbjlLKf7kA8i6j+rad3yluIUnu2qJaJKnBceUiixmZtZLVEuzjeaHlolllmRgr IZC1IKUzW1hGmOZTUdzR38vNxNN0REML789/w3e+20XkAjEJW8U9xHaeKGAfc/iBb4Ci baaarDRd6Jv1ugxZ2BqtXvf6dmrDJ1ugoon4HRdxKYQfOqzWB6OT/5nzTnKNOIeyY5Th zxUg== 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=lb0vU9ZSHO5r+oQcoBj4FnTeT47p74OitaDWVpDY66s=; b=0xAUf+CtUxCYiViHRrs6MaZ4pPQeGp4PbtXfCMbEIXE/Afei0QyRq2rj3qiqgEasH/ h6C63fwsHEuENmB5KrsV3FPTk8/XKZV5aDbb3mCkfJsVOFWZI9+7Vll3YvQMJOnLRusJ R06FScwh+ihN4c4/1WGPGMF7mxOsiayxdfU59QfH3DhGAmMNtcGXL3AHeDTB8aHhxZWQ vJ3+26do0YJAazxUz9kTqAvt0/EJO8ldODZzRNIeIEhbRAZjCotWgv+A9vuPiVdUm/7Y iAV72evjpfQPAa5sgkPevxe2OXhukC8D/aqQWN2P0UUIkLfYxGsQXwTH9lib8SQQNC1N Bung== X-Gm-Message-State: AFqh2kpMPkw4pMFEgcEo3rFNFYWsYW87l+7cFoMsAdXnWIJiwj6NDcq5 HmemqQa2XbRhytQef6lJH2qCMy4JZnffp9sF X-Google-Smtp-Source: AMrXdXuMwy3U4WcaXrx/yBwFi2f8h1TvwwsB8sikW66om9SJvxMkB7+tLhTlNPL3H0MO7rlqfGTNPA== X-Received: by 2002:a5d:65c4:0:b0:281:24c5:a533 with SMTP id e4-20020a5d65c4000000b0028124c5a533mr7550899wrw.23.1672329040793; Thu, 29 Dec 2022 07:50:40 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:40 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 07/14] tty: serial: qcom-geni-serial: refactor qcom_geni_serial_isr() Date: Thu, 29 Dec 2022 16:50:23 +0100 Message-Id: <20221229155030.418800-8-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 f4e2486b2115..92aefd4f8527 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 Tue Sep 16 21:18:32 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 9358EC3DA79 for ; Thu, 29 Dec 2022 15:51:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233574AbiL2Pvo (ORCPT ); Thu, 29 Dec 2022 10:51:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233560AbiL2Pup (ORCPT ); Thu, 29 Dec 2022 10:50:45 -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 2BF36307 for ; Thu, 29 Dec 2022 07:50:43 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id bi26-20020a05600c3d9a00b003d3404a89faso11534897wmb.1 for ; Thu, 29 Dec 2022 07:50:43 -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=F2MzVRg5qsZeZ18MD/OVh4kRzP+Ug6N74PqvU/3Swas=; b=Y5922RWr1l5HBO0JbK7W3Yjs7ASUaSdffFGQQEtjLvvPIEIvPMl8831AoB0e4ATkTn 6srnJDvyVx2vCYObMMJwu7Ok/5lBuhdxdlf2ucF18O2Xzt/jkCBiSyg/sMDbRM3ZBfIb PyTGmtPihb1Xvd8QhM2KhNK1UmojfHGha+kcLYu7xer8H0Y/PbrMCcLSXTiShyhl7zbs J+rOnMyw/ITsQE0l3Zg/HcmhcGwznCvl8bKx4UGEGl09jt46KxwrX59JRW5XM6a7FhIc arF5yHwcWHqKDF4d1ZCrAd+ZRF8i5Z55YG+IsQh3My0iQJ+JfXM/pzhPCCA+VN3psBr5 IMpQ== 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=F2MzVRg5qsZeZ18MD/OVh4kRzP+Ug6N74PqvU/3Swas=; b=lSvHgKCQgGUXqFdRrP81ZrzO4Raol7Wu0Hw9BFNYRdV04dAeq440irqrvsGqoVYjHn LYb9ub94kVgE/4fCFRg1/2TVBiP+sBWxCb/UtJGP4yXm2ZTYiN43nCl8ELSNTJ+KM7JS vjbnfD89oxalVoPduzVUgOQs0iLmWZx2vWQyDFh/4L4NS2GPcRKRh6UBvJDU0kuXsAJX E1e3gTvpVtBqbvmdg426QkvT1DrM7Pc1m1t0uuekfUuaOxdRnakOOTRqyjCnIsAjxrXn BqAgZvLZIlpENxKNK0wtMjlSGhAcMkTToh5/cfg3QDqaqOhfviIuOOx/5iM9szrzEXYy pnvw== X-Gm-Message-State: AFqh2kpKQiVqy7tk+8jTaILWQ6fqd3t7F/+XGgTqa+amrBc5OnUBswIG Q/hCASxswwzRg4C6q1UWIRBekQ== X-Google-Smtp-Source: AMrXdXtAkLnVo2ai/aPmHEOE8d9cd2QOOnUgDCzL++zMq+TxIIn/2285ryyO5APeXNQ7SkrNT1EWjg== X-Received: by 2002:a7b:c4c8:0:b0:3d3:5a4a:9101 with SMTP id g8-20020a7bc4c8000000b003d35a4a9101mr23683301wmk.23.1672329041742; Thu, 29 Dec 2022 07:50:41 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:41 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 08/14] tty: serial: qcom-geni-serial: remove unneeded tabs Date: Thu, 29 Dec 2022 16:50:24 +0100 Message-Id: <20221229155030.418800-9-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 92aefd4f8527..e34fe56247d9 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 Tue Sep 16 21:18:32 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 3FA8DC4332F for ; Thu, 29 Dec 2022 15:51:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231229AbiL2Pvd (ORCPT ); Thu, 29 Dec 2022 10:51:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233552AbiL2Pup (ORCPT ); Thu, 29 Dec 2022 10:50:45 -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 1B2042BF for ; Thu, 29 Dec 2022 07:50:43 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id o15so13397895wmr.4 for ; Thu, 29 Dec 2022 07:50:43 -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=WMVKrwdZWEXr4SpaY5rZECUzCmLZAbyQFJGjBVIK3cY=; b=M4K3oPLWC8XPeEjHXcBiEU120Ik7Q3MhxDOxbT6QisHcUgbXhyMnIIQVhzuXEhsnKi SOi42g9ylj8TQdeq9kuF52sBvj/8mx24DLAuRrYSbyKGnkur/8B6w/X2TeAj6t+pGK84 fR1fum/WpBxE150PCiI6gJ0nWLFaA4FMnMCcEpmU1vPfmGwwne0Rq1a32gC56qAe8Eay DJQg6pSrnYTQEKnHbwHsICnQBp4yUC3p7afEZrl2+8ptdG9i3ClZW/dstgJkOuzEr6+o fieZ1VtpPl7Obr/riPpG6Sxd6d/1q1F1zWOAqwRni9GGn+sxzDF1JW0ihLCuVnlb4JT5 IXqQ== 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=WMVKrwdZWEXr4SpaY5rZECUzCmLZAbyQFJGjBVIK3cY=; b=sNgeKacxQAQzZ0dkKI5PWS9IOD1vTdHhCCvzKUI3Wre4V2j9uuLaQpCb/gFGuTL9zq ZyTJXklZmMsmtHAlx9nSMuqzNTFau29vwJh+nCwJ3EnjDlxB2kJCSAYIM02hf2xfITQK f21xZlIt+7IIqP6FG/H8V/swFpXTVu45Kmdra12WBAte6rVZNan4nrAJOfmLLHKOwYn3 Mqu4/6Dp8xZ/fY6T/TwOS+kfr8XoYJreyZB2o/NhCep/M36vOHV9C2DqtdGyET8LgCdy S+LZGZG0QPGDj4fGJVFEmGV+On9gXbljExF7ZV8fVFI0/j4sjhywvRxhAwRFG5AWinTO Tp7A== X-Gm-Message-State: AFqh2kqGoUfZT3elGBJNxqGz7Gf0MIv0XstqnXhcju1XdzNYQ3HJCtUK 8/39HCh4oixszUKINCX3u23o3w== X-Google-Smtp-Source: AMrXdXt2KvdOsGmdgCgY2p4lN7SOGTNM5pDZhTjrxi31uhL0bxEl8B0zOb6NWjynO+iUA0avgVVXdg== X-Received: by 2002:a05:600c:1e10:b0:3d1:f496:e25f with SMTP id ay16-20020a05600c1e1000b003d1f496e25fmr21640763wmb.16.1672329042697; Thu, 29 Dec 2022 07:50:42 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:42 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v6 09/14] tty: serial: qcom-geni-serial: split out the FIFO tx code Date: Thu, 29 Dec 2022 16:50:25 +0100 Message-Id: <20221229155030.418800-10-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 e34fe56247d9..bd91a6a5ad37 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 Tue Sep 16 21:18:32 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 C07C9C4332F for ; Thu, 29 Dec 2022 15:51:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233711AbiL2Pvu (ORCPT ); Thu, 29 Dec 2022 10:51:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233568AbiL2Pup (ORCPT ); Thu, 29 Dec 2022 10:50:45 -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 20CA7D52 for ; Thu, 29 Dec 2022 07:50:44 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id m26-20020a05600c3b1a00b003d9811fcaafso6913748wms.5 for ; Thu, 29 Dec 2022 07:50:44 -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=NwBCercycDWxENvRn7oc2eoBsxPaVeGT4GXBPNhdJ8g=; b=Jzvdpkw/XzdpFAkG+Z+tcJ4DUdRteMl63kgHVvLleVIbz2q6VSIsuZayKGtEVN0xp/ Ru551p224IYpbyFIMcdWCLKGhQih//bMO5DN+c6F/sL/dC7qYetI1p0NTiwdoi0hWN2p m0ZSJHghLw6YmhNw5aHDYrN7rkC/+bC18/Y8vjyBO40kXtykn9XJenjYYrIQHGBB5OPn 5VQS1P2lRNLd87W4KzSa7Gt5rTvsPzjwmjd8D1xX+t7sQCR1NINYMuT7EWl7jXHfS3/L 8UzfyHug9AiglBcNocuqmBOrcQw9jnrG90cR7yabT7kCSrRKkIahDirX9kRwfXyH6kTi ACoQ== 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=NwBCercycDWxENvRn7oc2eoBsxPaVeGT4GXBPNhdJ8g=; b=NelSwECdPBISn0XTGMgUQV6kmnzAVELTNLGnVYQiu7UiA8Iq77p3tR4N9AtJUu3qvr tnojXPZNQl2m9yUKzvMAedzMgrphyBTfajJ+TaRyk+8Ayxqn/5weJAjZ0MKGp8xIGOOu 7/ovD3Yv89Du2fF7qZfzVvHyzWlp33OqPX1O6P9u1ls7nUdxojQ+ZW6IjL7t5ZW/iynW qadVudykKE9lEvoXC9PKZUhSZuKrMOC2Uhimop+8UqcoewKpFdVhMvW2mus5bhO69kE/ SjixKLklURcT0XzPh80gBTmq0UB/0dOb+H7Yyrd6Z4aqIVG2R8eSIE1Vl12M2zHXTt8z qU3w== X-Gm-Message-State: AFqh2kp0tXZvDBLYkokV4DLvveb2/BCuNX8ZUogF4JU3Ryw7ymKYADY5 wcCAaSWPAQOp3BHWDEazD6cAgA== X-Google-Smtp-Source: AMrXdXvOC32xwrMXSpTwy25RHomedm9W00SV+mnmjOkX6+N08DbgALpCWo/PzROMAO42429U4u2CyQ== X-Received: by 2002:a05:600c:1d89:b0:3d3:5cd6:781 with SMTP id p9-20020a05600c1d8900b003d35cd60781mr20126386wms.37.1672329043665; Thu, 29 Dec 2022 07:50:43 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:43 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v6 10/14] tty: serial: qcom-geni-serial: refactor qcom_geni_serial_send_chunk_fifo() Date: Thu, 29 Dec 2022 16:50:26 +0100 Message-Id: <20221229155030.418800-11-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 bd91a6a5ad37..3705c0f893a4 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 Tue Sep 16 21:18:32 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 B0BB2C3DA79 for ; Thu, 29 Dec 2022 15:52:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233724AbiL2Pv6 (ORCPT ); Thu, 29 Dec 2022 10:51:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233573AbiL2Puu (ORCPT ); Thu, 29 Dec 2022 10:50:50 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 841F22C9 for ; Thu, 29 Dec 2022 07:50:45 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id m8-20020a05600c3b0800b003d96f801c48so11170069wms.0 for ; Thu, 29 Dec 2022 07:50:45 -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=nKmGeFAtCyk6wBb7MKS50ERYhoSBE5l1Jj0s77qCt2Y=; b=qnqdNb4kxb1jxs1Spj/pvbWBW66ZYoSxr6UxXULQWtfkOqAV51A+ul4xRGmbCBYx3F 75Jo/Kq6YKjb8ax4Y+mB9hJdRfPoDXrl/MQUruQnz6XdeyMPOKl3tLF0NcMwPODcnYLc zhnEmbuSPfq1svTG/yEm69tkznGpVk3F1WvLi4lknvoxNArcUYEOCXgNc9MhXo5tyXRr xkhkSLwUJODNH0CBp2+hD5IrvCqUeRlECBRc3Tijj+JXPQbexfX4ZP2mILJrKN+kRRhA D7zpAqASHqdRD0eh6JuZmRhIFrxMm7TaBrbVg5I66wqjfFnXXvP5hUhHN4pFc0JyZN04 E4PQ== 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=nKmGeFAtCyk6wBb7MKS50ERYhoSBE5l1Jj0s77qCt2Y=; b=TQpsskHqPFfrSQHdLBGvl5PCR2VxfMGJ8sehnPTKjIdWFXWjLMZk+qWR1lHfIkKv02 bL9sxX1YnOSp7CpnNLCCFpqj063lkCSIy2z6P9Kh45z0bdInzbFrkk/MU2gvSBkcHoe6 QH0AzKjKDmMw32m79Ku5sPk25edw1EOCQX12CaRcwaluvFXBgclQCTyWn0EQQBaiH00M ZFpCBcnlOEAmOOzr+QP3OggP7fVGFUl2k9b+tD+O0rkrVVFq1Lbhct2mIXj0m+Ngm/S5 yU1gJRAmxBZ1/2I6XniAlmEHvse3S8mP7ZxL3h51gFYWDHDr+jZqLJJ3RJ3bzjzlLjBF ospA== X-Gm-Message-State: AFqh2kqQbiJaZy1dvyEfVcQqvLIHGiHy+y7k1lwRgnoqLHruRFCkE9cB htbfr05l6uzAuX7t2Irt81u3Ww== X-Google-Smtp-Source: AMrXdXtQRjHIeu0CRFLWb7kAQQMmQafohWQiZ+H9Q682c3hewHyO6M7UsBf0Fa8pxhZ++QBR8N8lUg== X-Received: by 2002:a1c:6a14:0:b0:3d1:f302:1975 with SMTP id f20-20020a1c6a14000000b003d1f3021975mr20473918wmc.33.1672329044677; Thu, 29 Dec 2022 07:50:44 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:44 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 11/14] tty: serial: qcom-geni-serial: drop the return value from handle_rx Date: Thu, 29 Dec 2022 16:50:27 +0100 Message-Id: <20221229155030.418800-12-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 3705c0f893a4..6daa3e205fc9 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 Tue Sep 16 21:18:32 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 EB654C3DA79 for ; Thu, 29 Dec 2022 15:52:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233737AbiL2PwC (ORCPT ); Thu, 29 Dec 2022 10:52:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233581AbiL2Puu (ORCPT ); Thu, 29 Dec 2022 10:50:50 -0500 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 27DD42189 for ; Thu, 29 Dec 2022 07:50:46 -0800 (PST) Received: by mail-wm1-x32e.google.com with SMTP id c65-20020a1c3544000000b003cfffd00fc0so16615964wma.1 for ; Thu, 29 Dec 2022 07:50:45 -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=uBv8zHTOOLxZy2RrVYyB+getwbO3vReNF6vfPrfTbok=; b=MWfcjKD0Jfk0DPzARtgBKo9MCzAqpWQbsPxJpwmPJa8Cbqv4lBhQF4rna9DKu8oj9/ 55sPiqdse7RyR1pE99U+ZoNYJ7vke7LL4agedG+0UoTCJIZ2Ovc1ayJUuhe31STItRhn VS+/Z0Xp/fmfKcTu+ufsT9FU5Y7ZrRWgSfcIwmLwSkmSRx2C6Lqs+n1q8s+0tJMs8akW k+z+OOehqll+QKY7t1pxwDpYvK4/twBRb9dzsO+6L0GVUjZESgj+IlXgYjNXQEXwK6dh qD+eN1ZT/J1wO1ssaLZxAWWbFmOzHbwqGvTlZLSkf11TXEwwnda80OgguU9jrqLrZDFC v6yA== 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=uBv8zHTOOLxZy2RrVYyB+getwbO3vReNF6vfPrfTbok=; b=eUZOoO9lSddkGvvhd+/xub8OWkUkZR5+qIwR4ofk/JRLACNkhGrDOsnPIJFIHnAcM0 9BMoUrLFoxFMZqG2hRdDBwlNYnoW0VuhHrX627i6fUMw301I18bhqa1PWl3CZb/y1O3j hAqT1fODCYgDA9mxloIe4VCQVWusmb/EktY5aS362k2fxvWnMxRajlJ3sL4J1zySMIgD rhJ+QRzhk/j5HNaiy4OXC0V3JMdyps+uL5Zh1jBb5trjYs5DfNozhUfcp62LvyoTAveG GhzRKHh0f0xECbzjfJki1q2yx3yO4P+93S29QrP/DwX+ryerPslwbtMLdCj/7GQGcvYc fV6g== X-Gm-Message-State: AFqh2kpS7L1ddYOzRyKoqU7/G3yRb0UCFlN2sNvpQQ/YzpAMMMoS8wZf DtSXmEIRd4jSRNunclMrvoOGBw== X-Google-Smtp-Source: AMrXdXuN12YDWaVW5BV/Kt9Vm4Z13l01wSqvmdr5l7KNl6nGg4MUTTVZ7DzF1PUZc+RzBLKLP68vGg== X-Received: by 2002:a1c:4c12:0:b0:3c6:e63e:89a6 with SMTP id z18-20020a1c4c12000000b003c6e63e89a6mr20354994wmf.2.1672329045627; Thu, 29 Dec 2022 07:50:45 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:45 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 12/14] tty: serial: qcom-geni-serial: use of_device_id data Date: Thu, 29 Dec 2022 16:50:28 +0100 Message-Id: <20221229155030.418800-13-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 6daa3e205fc9..0b3786040bfb 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) @@ -1346,13 +1351,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 { @@ -1362,7 +1368,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); @@ -1374,6 +1380,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"); @@ -1392,7 +1399,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) @@ -1422,7 +1429,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")) @@ -1444,7 +1451,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) @@ -1556,6 +1562,16 @@ static int qcom_geni_serial_sys_hib_resume(struct de= vice *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) @@ -1564,8 +1580,14 @@ static const struct dev_pm_ops qcom_geni_serial_pm_o= ps =3D { }; =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 Tue Sep 16 21:18:32 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 A075BC4167B for ; Thu, 29 Dec 2022 15:52:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233752AbiL2PwH (ORCPT ); Thu, 29 Dec 2022 10:52:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40762 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233598AbiL2Pu5 (ORCPT ); Thu, 29 Dec 2022 10:50:57 -0500 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC7F1265A for ; Thu, 29 Dec 2022 07:50:46 -0800 (PST) Received: by mail-wm1-x32f.google.com with SMTP id m3so4513086wmq.0 for ; Thu, 29 Dec 2022 07:50:46 -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=4kzrZQmNW5u/l4/1vb9iBZY0YVFfU2bOnHmtPuVdGbScyFaLWhKbgRrlhxtDjssfYe R7MNm+xzvPgFEyUktzm6RREID7GIjuIbqVd9h6aiB1pTwAbItO4bTjlMWru0Y97Qpk9n uMD/omxP3gOIyQScd+F25tHMNadcbCrQg1qnUVPugSBp7e5wAywlvRYJwGAcM7SGjIxt 7yZnqgJtBYb46Hy9F8CUXUwgQ+o4lnEvuMbSHAb9mHvObhlmpXFk1TDNfdjEyt+5qWg+ HQqS+NzY4O4245fiHiCHvaXsOVZGxYTssijiGTe+KICDuWgz0+ZOcNVJcPVu0uBBZ4Wf hK6g== 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=MblHwFaZH9l1POvEF2Rai2ZQgcNO/ik6IMA3EpPzGVTrw+kgRYyyoNHmgxjTeP7yws tTO63QetOnLyIiMKTwa1nR+fQtKAUeX1UY1Dvzu4XomMhkBarXIJ53yoIKjjmAjGIcFV 4xJI6HzYTBbuZ74UjqZkSKbGlDDPZNOtewzz4AnY+o7qyNZWaCsh9gKLtPjN2vCBb4/c gt/cWwYRjm9ftFh5kvaXahYkQwYGZ41C2eDLD8e0C0lZ6LKOixlxCDYU6HvAvj7U+a2e 7q8oaB/j+i2/neMacYkuYGz4IGRCcmBVuoBysf7KO3y4gN8vhfwA7qPJqyi2AkpIZ4Bf g6IQ== X-Gm-Message-State: AFqh2kpuQTY+j4s4hZ61diTw8Vc1uLMJYr/ja04WsHcXLpnUro+tKAF4 C6TPfH+Ba7zM7o8egNI2iMfjTw== X-Google-Smtp-Source: AMrXdXv/VSEhNbI3QagWbDm4m7zmgaLffIGnwbBoZ6BqvGbUS/wDYVUhT45sEgxHuItqffNN/ZwuZA== X-Received: by 2002:a05:600c:d1:b0:3d3:4d21:704d with SMTP id u17-20020a05600c00d100b003d34d21704dmr20349196wmm.14.1672329046542; Thu, 29 Dec 2022 07:50:46 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:46 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v6 13/14] soc: qcom-geni-se: add more symbol definitions Date: Thu, 29 Dec 2022 16:50:29 +0100 Message-Id: <20221229155030.418800-14-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 Tue Sep 16 21:18:32 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 15B1AC4332F for ; Thu, 29 Dec 2022 15:52:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233756AbiL2PwL (ORCPT ); Thu, 29 Dec 2022 10:52:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233548AbiL2Pv0 (ORCPT ); Thu, 29 Dec 2022 10:51:26 -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 04406D2FF for ; Thu, 29 Dec 2022 07:50:48 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id ay2-20020a05600c1e0200b003d22e3e796dso13474167wmb.0 for ; Thu, 29 Dec 2022 07:50:47 -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=xPo5nVt0Kpgd5EbSH8dlxDqDerGDGDTF8SgFZvR4FcE=; b=a0tRJHg/m6eGmTtv+MwfxFWmYta87WnxiQP0HjPqexrT+cOQICdHPPquM33MoJ7Gcq kHYOcH7RuCn9tSpgP/ryl6VV3QQfKF1S8WHUb0Ga/0tZxnBds1i9T/2tuYQbOExdZdlY /qEZctAwNqDsaFiq8LRNmSmAYSAXvKXU/THf4UgPI5giuLzJe26wIYjqcGKvS30F929F 14pyxnIkFQ+ViOOT9+7CyaiIPyxdnyQUgPjg5Bi5lxiZj0D+ilaT+BsKi5uToZYiLqzh dhdcjNt8kSa4POctMqW4aCFY24LxBNLhmAE1DV0lF/gaSPYdry6AwmEgLzHzAJ/369Xb aw8Q== 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=xPo5nVt0Kpgd5EbSH8dlxDqDerGDGDTF8SgFZvR4FcE=; b=jfRlqtzsZy5vzag106bkHnfwEDDbtVJbgHKkK7mH5B7OejVL/+0Q+tG7P6nCMqOHJT dvqz+chbNZGoo71cyv4FyqGAO/vnytS/UGxo8T1AnchXmc7poB1JSKHzKKTJRtWurc6i YfVrugbuk9RMtKQPjP/NNmnDfHPkoakagcswx6qfsF6I/oin5+DDCtga9liRYbyoRZbH GkWdgMd84O/Awx7gI+WX2C+5+E+cJxz+YdBCQRSvJJLjBJj3oBPujMPhur4gCib3+6QR ufMT1cGCQAB0BltB8/tThIMVkMy9ZXfNtb7ZScZ1FjV/dXyqm5LHgilemC2HG4AmD2NC B7+g== X-Gm-Message-State: AFqh2koM3vJLe/OnK5Pdq39H/cUy0AmySWhzDe+UeU0VCEfmgbQzrDbj WPw6SB9ocs1fEwdg/M/DQ8iSWw== X-Google-Smtp-Source: AMrXdXu9fJL0PfViWmOkUMZS8SdmdtmcB9MTmicIkWTq1zjJIp6RUmuwEWOjg9epco8KJP5axgwvgg== X-Received: by 2002:a05:600c:c07:b0:3d9:73fe:96f8 with SMTP id fm7-20020a05600c0c0700b003d973fe96f8mr12625796wmb.32.1672329047454; Thu, 29 Dec 2022 07:50:47 -0800 (PST) Received: from brgl-uxlite.home ([2a01:cb1d:334:ac00:8f7a:98d8:9d8d:ced8]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm25251647wmb.38.2022.12.29.07.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Dec 2022 07:50:47 -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?= , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-serial@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v6 14/14] tty: serial: qcom-geni-serial: add support for serial engine DMA Date: Thu, 29 Dec 2022 16:50:30 +0100 Message-Id: <20221229155030.418800-15-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221229155030.418800-1-brgl@bgdev.pl> References: <20221229155030.418800-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 0b3786040bfb..c1aea9d1dc16 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); qcom_geni_serial_start_rx(uport); port->setup =3D true; =20 @@ -1308,10 +1503,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, @@ -1329,9 +1524,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, @@ -1400,9 +1596,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 @@ -1564,12 +1760,12 @@ static int qcom_geni_serial_sys_hib_resume(struct d= evice *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