From patchwork Tue Dec 6 11:57:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065706 X-Patchwork-Delegate: kuba@kernel.org 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 A7E02C47090 for ; Tue, 6 Dec 2022 11:57:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234665AbiLFL5n (ORCPT ); Tue, 6 Dec 2022 06:57:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234857AbiLFL5j (ORCPT ); Tue, 6 Dec 2022 06:57:39 -0500 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 234696472 for ; Tue, 6 Dec 2022 03:57:38 -0800 (PST) Received: by mail-ed1-x532.google.com with SMTP id l11so19949781edb.4 for ; Tue, 06 Dec 2022 03:57:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=qNZbR/OCEKJKCF9Pyi6+mM/mCQOvMeAEcjhJky1x5bk=; b=NWXWNYnvN1jBg8fh4s6alBCUPRmNaziz7tTuEZ+3lKk9a1vsxZGan2QgpRPFxAXAP7 YsQ4Du++m8bcwKtpsi9WofamV42a9mEu1S/Fnqb6LfL6+40eaW4+0S7fTIkyY2HmDUiK lzWzBTLkGOwR9Sj1OClt/3jtRXnN4xSNEVMwxNfzsLQ6eQg38h/H1KPOUXF23luITTol vtY3VwKBxefY0dbmYHZvWLUFM37oFrl4EWpXOBjH7NRt2d8CfnEuR5gn0tlVq3YmhCyf WLiJ40Idltmo/IBDV+1sqF/ZJnty5NCiWqICdl+orbB0sLqxFoL70R47xDySUoYzufGE RBVQ== 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=qNZbR/OCEKJKCF9Pyi6+mM/mCQOvMeAEcjhJky1x5bk=; b=gDC1EJZG1IPcnDHY6oCUJNaIW1kIetDH3ZjXg2Aok9e9i8aBtU0yG6k2px9bs+yYI8 GpVTgM0amANmonoTS3Sq+3cwRpE/DB2GY5YAnJ3V9+X08SDrHtERfa6h6D2McIhHLzmi UsXjxq7KqUz3ZqXa8QU4Snrg9JA78qeSi5Ijwj1GS7EmWQeTIwvb5ooi+USuF6hkm+MU x26lWlgdT2VNJXC2mvMBsNP+Cg7k+MmHLH+3afhc3WeaXQVItG2nJC1g6yFfVf6wSexA D21WlOijaha6aLiP0ixYOADEdcuHFmJgLmEaAEdqnlFQjZhI95FIdCtsl1GANHnefFRz RlGQ== X-Gm-Message-State: ANoB5plPJwAmx0c/hm2kfKfX6eSIMjNgbRu/iCt2isNvuKpU8P0XpEjY kxce0ld7+7O4dw3SQ2if+oPWNAnMq5osc0r/ X-Google-Smtp-Source: AA0mqf489vUcETfBpNEXYBWARn81KzeGgaVU6pd9QSVl665/cF68KK+1pB0YvEGuCclDi/LRhIw2og== X-Received: by 2002:a05:6402:3785:b0:461:e598:e0bb with SMTP id et5-20020a056402378500b00461e598e0bbmr14889196edb.21.1670327856563; Tue, 06 Dec 2022 03:57:36 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:36 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 01/11] can: m_can: Eliminate double read of TXFQS in tx_handler Date: Tue, 6 Dec 2022 12:57:18 +0100 Message-Id: <20221206115728.1056014-2-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org The TXFQS register is read first to check if the fifo is full and then immediately again to get the putidx. This is unnecessary and adds significant overhead if read requests are done over a slow bus, for example SPI with tcan4x5x. Add a variable to store the value of the register. Split the m_can_tx_fifo_full function into two to avoid the hidden m_can_read call if not needed. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index e5575d2755e4..0cc0abde9b1d 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -368,9 +368,14 @@ m_can_txe_fifo_read(struct m_can_classdev *cdev, u32 fgi, u32 offset, u32 *val) return cdev->ops->read_fifo(cdev, addr_offset, val, 1); } +static inline bool _m_can_tx_fifo_full(u32 txfqs) +{ + return !!(txfqs & TXFQS_TFQF); +} + static inline bool m_can_tx_fifo_full(struct m_can_classdev *cdev) { - return !!(m_can_read(cdev, M_CAN_TXFQS) & TXFQS_TFQF); + return _m_can_tx_fifo_full(m_can_read(cdev, M_CAN_TXFQS)); } static void m_can_config_endisable(struct m_can_classdev *cdev, bool enable) @@ -1585,6 +1590,7 @@ static netdev_tx_t m_can_tx_handler(struct m_can_classdev *cdev) struct sk_buff *skb = cdev->tx_skb; struct id_and_dlc fifo_header; u32 cccr, fdflags; + u32 txfqs; int err; int putidx; @@ -1641,8 +1647,10 @@ static netdev_tx_t m_can_tx_handler(struct m_can_classdev *cdev) } else { /* Transmit routine for version >= v3.1.x */ + txfqs = m_can_read(cdev, M_CAN_TXFQS); + /* Check if FIFO full */ - if (m_can_tx_fifo_full(cdev)) { + if (_m_can_tx_fifo_full(txfqs)) { /* This shouldn't happen */ netif_stop_queue(dev); netdev_warn(dev, @@ -1658,8 +1666,7 @@ static netdev_tx_t m_can_tx_handler(struct m_can_classdev *cdev) } /* get put index for frame */ - putidx = FIELD_GET(TXFQS_TFQPI_MASK, - m_can_read(cdev, M_CAN_TXFQS)); + putidx = FIELD_GET(TXFQS_TFQPI_MASK, txfqs); /* Construct DLC Field, with CAN-FD configuration. * Use the put index of the fifo as the message marker, From patchwork Tue Dec 6 11:57:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065707 X-Patchwork-Delegate: kuba@kernel.org 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 D157EC4708E for ; Tue, 6 Dec 2022 11:57:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235156AbiLFL5p (ORCPT ); Tue, 6 Dec 2022 06:57:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235109AbiLFL5k (ORCPT ); Tue, 6 Dec 2022 06:57:40 -0500 Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 088C36596 for ; Tue, 6 Dec 2022 03:57:39 -0800 (PST) Received: by mail-ej1-x62d.google.com with SMTP id n21so5553668ejb.9 for ; Tue, 06 Dec 2022 03:57:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=fPY/i2W9DO4EoXlKXBgjR2RaogZYXbKp1PtuK+1K7lo=; b=lHue8XX3/w6oT10x3GOfSeKr/cEhp3RW+YOtl/a9x3yzg+YxzZu2POfZyEOPevFKpg RY3eovz4dJzdelqPaW9ezwc5ctZZ3YdDh2UT3juvKIubGKwaSZ3J0FtyBtFPWQiv1Drl VlzLIN589cuDcToWTH/Dl5+8Y9mZXD9nwa7gHqld/aSVEDKcEU799r8Du8LzTHkQ11KK UeVt3EG3B2/EdKldT/clXPZh4ZVmLYXfJtLCFMeUJM5Kc+EePKo5xLmBzS0o9v75I+cC Iypdn4hRgvQLcMQ7D2r83jh6oCYk4ORN5SuhLHw7MFEgXyeZdOHlbIOz0xI58esuPp0F 2bbQ== 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=fPY/i2W9DO4EoXlKXBgjR2RaogZYXbKp1PtuK+1K7lo=; b=pRvCMSxfBf5yxPJUwwR8kU8JHxhaXAm/r12p3+4Q2iL0MUU2ubAes9IC84jGhs/Dko aTIZ+rPY6cAfBHbVpZbexEoNK1Xh1zHsD+nXZWnFVYFr4WrlLSJbNZVRYyUQfwQu3AKY heAE2QXFqUmAbR2w6/4vZLXh/z08rKviH8SyGxVP/yt1TQAn1HeaIp99rC/WsNih0mGd dNbjRYxL39HO0X5ZK2zHJdYbvMyHXwlnDbqah1imaJBWvapr+SLUPFYKiRlIHJj3elE0 4F74+dwBras/oTXb78CQ4mbtPx6zFATq3cmtKE7z4VT9alRzQqjIqN5Fpy3spIXmyIaC rgmg== X-Gm-Message-State: ANoB5pmC1smO8USMwzWidtF2pox783OTbpR5wT2OzcHADelHKJb07YGr skDcUndejbuuXNoD3wL1cqiz/Q== X-Google-Smtp-Source: AA0mqf7xsb8tS6Ea0DlvvR6lLe4tw1gGV4xlvBn6EzLzPGCKm16uB7/45j/fxJ1XrHQfNT5a29sGNA== X-Received: by 2002:a17:906:48d6:b0:7c1:b67:6a28 with SMTP id d22-20020a17090648d600b007c10b676a28mr2000190ejt.2.1670327857491; Tue, 06 Dec 2022 03:57:37 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:37 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 02/11] can: m_can: Avoid reading irqstatus twice Date: Tue, 6 Dec 2022 12:57:19 +0100 Message-Id: <20221206115728.1056014-3-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org For peripheral devices the m_can_rx_handler is called directly after setting cdev->irqstatus. This means we don't have to read the irqstatus again in m_can_rx_handler. Avoid this by adding a parameter that is false for direct calls. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 0cc0abde9b1d..d30afbb3503b 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -895,14 +895,13 @@ static int m_can_handle_bus_errors(struct net_device *dev, u32 irqstatus, return work_done; } -static int m_can_rx_handler(struct net_device *dev, int quota) +static int m_can_rx_handler(struct net_device *dev, int quota, u32 irqstatus) { struct m_can_classdev *cdev = netdev_priv(dev); int rx_work_or_err; int work_done = 0; - u32 irqstatus, psr; + u32 psr; - irqstatus = cdev->irqstatus | m_can_read(cdev, M_CAN_IR); if (!irqstatus) goto end; @@ -946,12 +945,12 @@ static int m_can_rx_handler(struct net_device *dev, int quota) return work_done; } -static int m_can_rx_peripheral(struct net_device *dev) +static int m_can_rx_peripheral(struct net_device *dev, u32 irqstatus) { struct m_can_classdev *cdev = netdev_priv(dev); int work_done; - work_done = m_can_rx_handler(dev, NAPI_POLL_WEIGHT); + work_done = m_can_rx_handler(dev, NAPI_POLL_WEIGHT, irqstatus); /* Don't re-enable interrupts if the driver had a fatal error * (e.g., FIFO read failure). @@ -967,8 +966,11 @@ static int m_can_poll(struct napi_struct *napi, int quota) struct net_device *dev = napi->dev; struct m_can_classdev *cdev = netdev_priv(dev); int work_done; + u32 irqstatus; + + irqstatus = cdev->irqstatus | m_can_read(cdev, M_CAN_IR); - work_done = m_can_rx_handler(dev, quota); + work_done = m_can_rx_handler(dev, quota, irqstatus); /* Don't re-enable interrupts if the driver had a fatal error * (e.g., FIFO read failure). @@ -1078,7 +1080,7 @@ static irqreturn_t m_can_isr(int irq, void *dev_id) m_can_disable_all_interrupts(cdev); if (!cdev->is_peripheral) napi_schedule(&cdev->napi); - else if (m_can_rx_peripheral(dev) < 0) + else if (m_can_rx_peripheral(dev, ir) < 0) goto out_fail; } From patchwork Tue Dec 6 11:57:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065708 X-Patchwork-Delegate: kuba@kernel.org 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 4C667C4708C for ; Tue, 6 Dec 2022 11:57:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235164AbiLFL5q (ORCPT ); Tue, 6 Dec 2022 06:57:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235112AbiLFL5l (ORCPT ); Tue, 6 Dec 2022 06:57:41 -0500 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D8B225F7E for ; Tue, 6 Dec 2022 03:57:39 -0800 (PST) Received: by mail-ed1-x52a.google.com with SMTP id d20so19991244edn.0 for ; Tue, 06 Dec 2022 03:57:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=6/SM3kRtE0QNFZxUupuZ+9fh0CsrCFYSaqu7nZYqZws=; b=0+4ZNoct0t37OCBI0Y3zYjJ0HnauWB5gfqosr2YiHb/KDkgUB0W0OrWp6Td60o/qh2 mj23yCSgRd5vUr7yuTKBqXK1rKj0Dhlne1ZTLoggSHVQcVUnynig5NLWmEpmVyZtjCR9 irNVKd5e/1zjgrEagyZdtsouWAoDH1YU6TEqfWDYe8sKqoV5xy6a8vH3wt1gX/C2iF05 D9RYNZvOzX9Iu3F07nBTc6L5AZpNP9kV7QGs67cWBAQAzMJTfsXEK36ablfRhBOVi8rt LtImRuyGjgccVT2bgzzGb5sl8iVYYFbWE+C+3BKu1JbqA6qOh3YMau4R9iC5+p7Ap9Uw 8DQA== 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=6/SM3kRtE0QNFZxUupuZ+9fh0CsrCFYSaqu7nZYqZws=; b=LTOZstB7pQPdmsVETltlwrT9CJn8vAS4G/Km6crxoI+20OjIW6I3JDyjJpwYG3o2YR 9UbM5BBwEjCn/XgG3oBsjIUhbEs2jIO1Nl7835Acuft7xoIlYVSMaxavt09Ugxn763TC 4jRwaXml9Tqhnr+nWyfxfg+fdfz9C00j9B/or0E9+R6YPs3qUfdswfx4kEI207OHW5sG 1EPF+v94zQVlUepfs00wqnbuD0RpUCdYMj0Ap4BwcJxvL+QvQOykmWWH+Ki24SSTL07e hFyrMOKJsGkCNuWy0llZOOkeKBtdINiXH95GDEsAzrqHULjCNx6vnc6GxO3igWgnF0lS gE0A== X-Gm-Message-State: ANoB5pnJ0TsYVUpiNZw3VAt3iD0p94YrzHVh7QwSzLHTmItbk55eztO2 vjQUo8LC3pycfW5hyYw6D26b42s9BvSGK2Dw X-Google-Smtp-Source: AA0mqf7dfp5M+1XwnbbDWRD6RfH8MEGTMzGyhpgQVfsezjb8oi7qrVaCy9qNcQuAtPlBn6W5MrBokw== X-Received: by 2002:a05:6402:2b91:b0:457:23cb:20ab with SMTP id fj17-20020a0564022b9100b0045723cb20abmr12075583edb.254.1670327858359; Tue, 06 Dec 2022 03:57:38 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:38 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 03/11] can: m_can: Read register PSR only on error Date: Tue, 6 Dec 2022 12:57:20 +0100 Message-Id: <20221206115728.1056014-4-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Only read register PSR if there is an error indicated in irqstatus. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index d30afbb3503b..45c718413abf 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -900,7 +900,6 @@ static int m_can_rx_handler(struct net_device *dev, int quota, u32 irqstatus) struct m_can_classdev *cdev = netdev_priv(dev); int rx_work_or_err; int work_done = 0; - u32 psr; if (!irqstatus) goto end; @@ -926,13 +925,13 @@ static int m_can_rx_handler(struct net_device *dev, int quota, u32 irqstatus) } } - psr = m_can_read(cdev, M_CAN_PSR); - if (irqstatus & IR_ERR_STATE) - work_done += m_can_handle_state_errors(dev, psr); + work_done += m_can_handle_state_errors(dev, + m_can_read(cdev, M_CAN_PSR)); if (irqstatus & IR_ERR_BUS_30X) - work_done += m_can_handle_bus_errors(dev, irqstatus, psr); + work_done += m_can_handle_bus_errors(dev, irqstatus, + m_can_read(cdev, M_CAN_PSR)); if (irqstatus & IR_RF0N) { rx_work_or_err = m_can_do_rx_poll(dev, (quota - work_done)); From patchwork Tue Dec 6 11:57:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065709 X-Patchwork-Delegate: kuba@kernel.org 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 BE0C9C47090 for ; Tue, 6 Dec 2022 11:57:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235195AbiLFL5t (ORCPT ); Tue, 6 Dec 2022 06:57:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234032AbiLFL5o (ORCPT ); Tue, 6 Dec 2022 06:57:44 -0500 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B15C1958F for ; Tue, 6 Dec 2022 03:57:40 -0800 (PST) Received: by mail-ej1-x62e.google.com with SMTP id gh17so5589258ejb.6 for ; Tue, 06 Dec 2022 03:57:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=Jg8CR20tG79djQpdFo8U0Y6E9PQi/JvNHqoQZx2uO1Q=; b=zELG2lnh50u90Jp2YLLVqH4yZCkDv7zMa535EWcQPw1JEmENJog2b3Vqaw170TwLzo Mz0Z8SmeWTO+dx1Wuqlpp0fYpWLBXeqtfqlcCQZ70JmisGnxHt9gDi7T3KbSDRq/ytP9 hOJ1oP74mxN+w1SRByUuzSSnFrUwbbjXn5/yUDUm5d+yU+2mw2E8sTLFVTMtLfuaVQCE w9JaR1YlrXSrq2LmYnEkm41ANlQdDqwshQbgkP3nVdbMCwXWNo8ur1m++gxNIw1Je89n Fj1r+UbVNA+7252hQFEO7reV7YGsMfRiDo7pj5nAZKquSRfB/BQZxVhRqEzcqJfFlJaT GPzQ== 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=Jg8CR20tG79djQpdFo8U0Y6E9PQi/JvNHqoQZx2uO1Q=; b=FbWhxIrs6/X1trxyGW3B9c7GbTscJTNueRJ4EHB9OcJAxQVB4/VXEpMtMOD7TZ8gh2 qAHhC/+yq9ozZXmiensL9Ruv9I2uRmxfBUQ8g3pLzSpw8P2dX8tsnupQPrHf3iqq2QOY iS/AUDI4K3XId6suJkLIBnc0IB5+5gLLGgHCOmEmWl4MZhIMvSBMM4f2c6/0NaoBaNNX BM2o3Qt/a036gOQWVqXvZbv/jQacQhwJ7hknkP0C4D06L2upnWiwojXMU3tJx1hf3t2Z NiiovY8TIlo2H94Yd+kuqckFYAxgHrc15uurCwp2b4UbQbzkW0jrWRcJYE3x6LIagQub lfKA== X-Gm-Message-State: ANoB5pk7LeJQm02npJMUqfcVtp9HvxGOkifALMAODUgL5F5yL4Wna4if hjK2vcgUWREDJSnyipEIBvXLaw== X-Google-Smtp-Source: AA0mqf6XeLvgIxwGH4a6RLaphDtEo1NWHsQelYYFWjvNWuKUdCDgRQQAeNLelwlOJQCFkYYAsDhtig== X-Received: by 2002:a17:906:444b:b0:7ad:dd43:5d53 with SMTP id i11-20020a170906444b00b007addd435d53mr54435818ejp.376.1670327859238; Tue, 06 Dec 2022 03:57:39 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:38 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 04/11] can: m_can: Count TXE FIFO getidx in the driver Date: Tue, 6 Dec 2022 12:57:21 +0100 Message-Id: <20221206115728.1056014-5-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org The getindex simply increases by one for every iteration. There is no need to get the current getidx every time from a register. Instead we can just count and wrap if necessary. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 45c718413abf..a133f15fb90a 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1020,15 +1020,13 @@ static int m_can_echo_tx_event(struct net_device *dev) /* Get Tx Event fifo element count */ txe_count = FIELD_GET(TXEFS_EFFL_MASK, m_can_txefs); + fgi = FIELD_GET(TXEFS_EFGI_MASK, m_can_txefs); /* Get and process all sent elements */ for (i = 0; i < txe_count; i++) { u32 txe, timestamp = 0; int err; - /* retrieve get index */ - fgi = FIELD_GET(TXEFS_EFGI_MASK, m_can_read(cdev, M_CAN_TXEFS)); - /* get message marker, timestamp */ err = m_can_txe_fifo_read(cdev, fgi, 4, &txe); if (err) { @@ -1042,6 +1040,7 @@ static int m_can_echo_tx_event(struct net_device *dev) /* ack txe element */ m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK, fgi)); + fgi = (++fgi >= cdev->mcfg[MRAM_TXE].num ? 0 : fgi); /* update stats */ m_can_tx_update_stats(cdev, msg_mark, timestamp); From patchwork Tue Dec 6 11:57:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065710 X-Patchwork-Delegate: kuba@kernel.org 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 E6E7FC352A1 for ; Tue, 6 Dec 2022 11:57:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231274AbiLFL5v (ORCPT ); Tue, 6 Dec 2022 06:57:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234597AbiLFL5o (ORCPT ); Tue, 6 Dec 2022 06:57:44 -0500 Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C62E9FE9 for ; Tue, 6 Dec 2022 03:57:41 -0800 (PST) Received: by mail-ej1-x631.google.com with SMTP id n21so5553899ejb.9 for ; Tue, 06 Dec 2022 03:57:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=LBqwKcCdNszQ4mwUTsccWY77ZqBMhKPDh+uspgjRsrc=; b=DPqqNGeJB+CLzaOy8DcBdvQ4jz5mShTjsBsQBiKtpJutZ9pt4futlXIv7BoIoLxKe1 ikRhLz4m7cQ7T/l7BPYX0zBg6Cp/hp+OmXJU5HpZpP3uN7z10J7635BmX25nND0MK2Tt ETAsPvi5kdq5jXRVH1OfPi+3HJHP6RfuZU3hqfrKBWZyC4zngg96khNNLz2iKp+fWlPu /DW905aQp3qfroPlS0pWoDMY+fczDnQXUTEJmd18IHZ1e5ByrTF/YqizF7kWto6RKrSo U5Nxdv5WjyxypVZbti2mw4Eofk4Y/wAOxrrqLim6nMpKVEWYndu5AuE4fI/Xrfx7MCrq yhbQ== 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=LBqwKcCdNszQ4mwUTsccWY77ZqBMhKPDh+uspgjRsrc=; b=n9Ak/cboC56HJtHbyLIX3v/JPsXEUzLyro42HX9as8NYmk+DB1e0EZXQ7PBpLJeUkc aUCvaOMmBiuEZMnVcKF6ImJETq/oVBlukBTtCQwh1sCAqCSmYZu7hZ2+F/v5UIaMmNIh 4sUjlzAeYKGYjZE5h1rKyuPiBdVAzXVUpZMWaM4hXhU2G4ZhukYMytdbRzb8xO1EOJpE Fn/+AE7Ln1s+y7Wur29Jnylj0WSDRzyGV9y5b9D2AqcJQEFCWANy6bc63Lsa2956h9do KLxqRrknZsbDz2mINioSiOv5BrmZEHLDDJZPolN7KjM+FXEKhS1xMT5N2GSrtHHV/dZl I7AA== X-Gm-Message-State: ANoB5pkKiG3kP2dHrVcJ+gAJpqxVhAdey1VePXR6JK5Xuz19ldAH4l50 EN3WNWwCHUqzL7mc9RsdQItmuw== X-Google-Smtp-Source: AA0mqf47x0bv/bx0CdJ4booRAhJIul6kiSx0Wgt7a/P3vRxUPTwsqwUNqSNrfwYI9fJ+L1nGhmitIw== X-Received: by 2002:a17:906:ad86:b0:7c0:7e90:ec98 with SMTP id la6-20020a170906ad8600b007c07e90ec98mr3823617ejb.537.1670327860065; Tue, 06 Dec 2022 03:57:40 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:39 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 05/11] can: m_can: Count read getindex in the driver Date: Tue, 6 Dec 2022 12:57:22 +0100 Message-Id: <20221206115728.1056014-6-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org The getindex gets increased by one every time. We can calculate the correct getindex in the driver and avoid the additional reads of rxfs. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index a133f15fb90a..a0ae543d418c 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -476,19 +476,16 @@ static void m_can_receive_skb(struct m_can_classdev *cdev, } } -static int m_can_read_fifo(struct net_device *dev, u32 rxfs) +static int m_can_read_fifo(struct net_device *dev, u32 fgi) { struct net_device_stats *stats = &dev->stats; struct m_can_classdev *cdev = netdev_priv(dev); struct canfd_frame *cf; struct sk_buff *skb; struct id_and_dlc fifo_header; - u32 fgi; u32 timestamp = 0; int err; - /* calculate the fifo get index for where to read data */ - fgi = FIELD_GET(RXFS_FGI_MASK, rxfs); err = m_can_fifo_read(cdev, fgi, M_CAN_FIFO_ID, &fifo_header, 2); if (err) goto out_fail; @@ -553,6 +550,9 @@ static int m_can_do_rx_poll(struct net_device *dev, int quota) struct m_can_classdev *cdev = netdev_priv(dev); u32 pkts = 0; u32 rxfs; + u32 rx_count; + u32 fgi; + int i; int err; rxfs = m_can_read(cdev, M_CAN_RXF0S); @@ -561,14 +561,17 @@ static int m_can_do_rx_poll(struct net_device *dev, int quota) return 0; } - while ((rxfs & RXFS_FFL_MASK) && (quota > 0)) { - err = m_can_read_fifo(dev, rxfs); + rx_count = FIELD_GET(RXFS_FFL_MASK, rxfs); + fgi = FIELD_GET(RXFS_FGI_MASK, rxfs); + + for (i = 0; i < rx_count && quota > 0; ++i) { + err = m_can_read_fifo(dev, fgi); if (err) return err; quota--; pkts++; - rxfs = m_can_read(cdev, M_CAN_RXF0S); + fgi = (++fgi >= cdev->mcfg[MRAM_RXF0].num ? 0 : fgi); } return pkts; From patchwork Tue Dec 6 11:57:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065711 X-Patchwork-Delegate: kuba@kernel.org 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 1480BC4708C for ; Tue, 6 Dec 2022 11:57:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235213AbiLFL5x (ORCPT ); Tue, 6 Dec 2022 06:57:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234331AbiLFL5o (ORCPT ); Tue, 6 Dec 2022 06:57:44 -0500 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C3CC959D for ; Tue, 6 Dec 2022 03:57:41 -0800 (PST) Received: by mail-ej1-x632.google.com with SMTP id kw15so2151660ejc.10 for ; Tue, 06 Dec 2022 03:57:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=AsKoU9M+5cIpcCQPCOg/6Uvu2CSKHlAbnecsoPfhR2A=; b=S8E2gky0aD2LAAceaAf9+51yBgoDUwQ456G2qknYvpGcW+Lv1KIaqhFMZFAwnCxkyl mqYFr3NvLPQUJM8f5uQ+00DHBz5y9cw1EVN21AE5Mjg5n3j7GYGERfWykh5L5Q+epIrS iRxkfKU1jo2HLqGNC0K/ZUG7PbJrUxn1NPFJ3kYKaMlf9FWHnFPyI/IVhDDJ8pBX+9KJ Md/wa6c/nTFApV5QUcks/mV7ntMyjveqvnvIMgZDZRn9561Tktlawkq1bDl25OYYgGZn fs/oPsxBMD1bx1vwI/U1Op25szWAu96FHguNXJ4Fm36Zu2+t+1keu7i0nCwFSSiw7HZ1 RAcA== 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=AsKoU9M+5cIpcCQPCOg/6Uvu2CSKHlAbnecsoPfhR2A=; b=Gbg2hY+GWBdq/gUJQsYI4lSAwhP8DvctyX+6/rjur9IcfYNwfwkRHHv9IMwSg3VWdk DbzTxUhvboYOglfEDO50w2VFS5nEW3tC5nP+0bVFqrOMfvfc5kK2mOIwKpSn0vy0CgQF YQlJtert5XyGDASWuFXgTUFu7BR1v3AahUPA9KlBSrqsdZ5MADM6eLQlAj4dze9tYDoI TZJVLrAHAytYbLTLZD1x0SnfIEILwo/S5JBP9jpodvC2TFVVq9cmBMghrDOrf6WoZugi inECemIgQsRRIvPvcFWk/rJnwy33GqrFFq9vO73ay3ehaPIZ1oPTcw74HsoWFx8dOuyL 3KSA== X-Gm-Message-State: ANoB5pkmuv2a/etsMn131lPhhd+VWpbiXvKcvCQ4LGOXRC1r1gFa+i9D SLdoDXsJmcdcTpINR2fMZbx5lA== X-Google-Smtp-Source: AA0mqf5EGw2ZYPiRp+1wOueTLChciZ1I3gaAecnWP7Tl3f1EVPz2ufk8vb8tJCbslJ98ULsN9W9cyA== X-Received: by 2002:a17:906:6acc:b0:78d:b371:16e5 with SMTP id q12-20020a1709066acc00b0078db37116e5mr58056102ejs.456.1670327860866; Tue, 06 Dec 2022 03:57:40 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:40 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 06/11] can: m_can: Batch acknowledge transmit events Date: Tue, 6 Dec 2022 12:57:23 +0100 Message-Id: <20221206115728.1056014-7-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Transmit events from the txe fifo can be batch acknowledged by acknowledging the last read txe fifo item. This will save txe_count writes which is important for peripheral chips. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index a0ae543d418c..5572a6b3b94c 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1013,7 +1013,9 @@ static int m_can_echo_tx_event(struct net_device *dev) u32 txe_count = 0; u32 m_can_txefs; u32 fgi = 0; + int ack_fgi = -1; int i = 0; + int err = 0; unsigned int msg_mark; struct m_can_classdev *cdev = netdev_priv(dev); @@ -1028,28 +1030,29 @@ static int m_can_echo_tx_event(struct net_device *dev) /* Get and process all sent elements */ for (i = 0; i < txe_count; i++) { u32 txe, timestamp = 0; - int err; /* get message marker, timestamp */ err = m_can_txe_fifo_read(cdev, fgi, 4, &txe); if (err) { netdev_err(dev, "TXE FIFO read returned %d\n", err); - return err; + break; } msg_mark = FIELD_GET(TX_EVENT_MM_MASK, txe); timestamp = FIELD_GET(TX_EVENT_TXTS_MASK, txe) << 16; - /* ack txe element */ - m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK, - fgi)); + ack_fgi = fgi; fgi = (++fgi >= cdev->mcfg[MRAM_TXE].num ? 0 : fgi); /* update stats */ m_can_tx_update_stats(cdev, msg_mark, timestamp); } - return 0; + if (ack_fgi != -1) + m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK, + ack_fgi)); + + return err; } static irqreturn_t m_can_isr(int irq, void *dev_id) From patchwork Tue Dec 6 11:57:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065713 X-Patchwork-Delegate: kuba@kernel.org 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 48C17C4708E for ; Tue, 6 Dec 2022 11:58:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235170AbiLFL6B (ORCPT ); Tue, 6 Dec 2022 06:58:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51118 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235166AbiLFL5q (ORCPT ); Tue, 6 Dec 2022 06:57:46 -0500 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75DCE65B4 for ; Tue, 6 Dec 2022 03:57:43 -0800 (PST) Received: by mail-ej1-x62a.google.com with SMTP id n20so5724963ejh.0 for ; Tue, 06 Dec 2022 03:57:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=83PP3edth58TA8zB8E6Zh9GJd+Ky/ClAFIA3P8EFVEY=; b=ZmTzsvSEnQugnHmiOGpzBOFBYadRAHO8P94h8wRpc1ocO2mItjUJ8G2A2g1bg+aTxK qq/xGf0lhP9cuieUkkAAwVo1YGNexSDz4Y7524SetLJMGRPR1vqCD9LToU/YragnTqwa +GH5ZUrt2jJne1PAd0Fkh4L2kx0h4QnHM2ZrZm2OLzt++l2OaOCJuUW8L11kUwA4ZG9e fZoJl+oM0J7F+8P6/EMwvwIv6X5Dwo1HiRybxLpPB9V/LdijGr7UwhjZLgsY+VKngPWH WKWI72MG8U6NadKKD2SMTaZDziV4kUvYNJKZFIRxopvc4W9XvQDQB6YfamHcH+QVPuIj B3Gg== 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=83PP3edth58TA8zB8E6Zh9GJd+Ky/ClAFIA3P8EFVEY=; b=6Cit5bZy0p0T+rBR22OZFh+xaBfjtpYTrcXolecWjNy9GJZJBdlL9aK9uAfJ1it9V7 +a83xQyTG0o9GkZXg3+HUVbLN2cm59WfBqqsZYIazPxFb6HTzpK+q/K4YXLkHbtOwwm9 asFFgXv0ShNeJR4ej5R4hps2t2YSE1YnGSNwE+ZdNxBc+PVSYNpvfUCPtQXiLB0JjORW qvseByaqJgk50u2XrGLtDXwKzdwg1F+wWUXxPPIv5kT61DO28vvARbKa+TGGaYf1dROs MbYPW0NHkOxTRbM7LltRL8TtRlD9mb9sXn2+JQQkD8xvyNEQ1TM4aBt2LtHOhO2c3pSx //SQ== X-Gm-Message-State: ANoB5pkzfKkUKjQVtFmazwPnuz4aly6TQExTiXUsS9D5RhWrDU5SlYl5 LcqfAlbLFMOxn+AsLmZ1/VhR6w== X-Google-Smtp-Source: AA0mqf56KMKwHGEPqLdvA1xeKZO3WSzbx+Hrig6h2oxmyp3nkUwQmFWl3nop/IYAJYnzUEu2T7QIew== X-Received: by 2002:a17:906:2851:b0:78d:88c7:c1bf with SMTP id s17-20020a170906285100b0078d88c7c1bfmr57231518ejc.299.1670327861708; Tue, 06 Dec 2022 03:57:41 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:41 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 07/11] can: m_can: Batch acknowledge rx fifo Date: Tue, 6 Dec 2022 12:57:24 +0100 Message-Id: <20221206115728.1056014-8-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Instead of acknowledging every item of the fifo, only acknowledge the last item read. This behavior is documented in the datasheet. The new getindex will be the acknowledged item + 1. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 5572a6b3b94c..56f07f2023dd 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -529,9 +529,6 @@ static int m_can_read_fifo(struct net_device *dev, u32 fgi) } stats->rx_packets++; - /* acknowledge rx fifo 0 */ - m_can_write(cdev, M_CAN_RXF0A, fgi); - timestamp = FIELD_GET(RX_BUF_RXTS_MASK, fifo_header.dlc) << 16; m_can_receive_skb(cdev, skb, timestamp); @@ -552,8 +549,9 @@ static int m_can_do_rx_poll(struct net_device *dev, int quota) u32 rxfs; u32 rx_count; u32 fgi; + int ack_fgi = -1; int i; - int err; + int err = 0; rxfs = m_can_read(cdev, M_CAN_RXF0S); if (!(rxfs & RXFS_FFL_MASK)) { @@ -567,13 +565,20 @@ static int m_can_do_rx_poll(struct net_device *dev, int quota) for (i = 0; i < rx_count && quota > 0; ++i) { err = m_can_read_fifo(dev, fgi); if (err) - return err; + break; quota--; pkts++; + ack_fgi = fgi; fgi = (++fgi >= cdev->mcfg[MRAM_RXF0].num ? 0 : fgi); } + if (ack_fgi != -1) + m_can_write(cdev, M_CAN_RXF0A, ack_fgi); + + if (err) + return err; + return pkts; } From patchwork Tue Dec 6 11:57:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065714 X-Patchwork-Delegate: kuba@kernel.org 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 308DBC4708C for ; Tue, 6 Dec 2022 11:58:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234244AbiLFL6E (ORCPT ); Tue, 6 Dec 2022 06:58:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234685AbiLFL5p (ORCPT ); Tue, 6 Dec 2022 06:57:45 -0500 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75BFA6472 for ; Tue, 6 Dec 2022 03:57:43 -0800 (PST) Received: by mail-ej1-x634.google.com with SMTP id ud5so5618174ejc.4 for ; Tue, 06 Dec 2022 03:57:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=CcIt1IaTYEax5vtcXo6kulHEbyp3PY4P8eBt1nKytvc=; b=ctdptYH+HKK0dnEqg++UoD1XAweQtXUqNccU7/L76eMDHIErzeUt3U6s/1fqRzrUhl ecctv7dyhW5cwd9l1VdgZddpAJIitY/qqIw+l30VlveiezNqLurDmsyREuhuEu+jQBVl XANE5/Vkt/2QVxTzGgmiKZCKR3PbB6n8V+M4wiF3f+S0WlB2QaQEBrDmPe7JWmpZk3SU ruI8wuQsgk/pAjIHK5tfwAmyM95rn3BMpwDFpkmtL6nUy0kVGJFmpE8gqoKXbfHaXbgR KCmjLJxMyOc0lsBsd22XxQB6SA1j3UFFbS5oK1hU3140dnES75SaYSFu/XFgq+zSGpe6 ldqg== 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=CcIt1IaTYEax5vtcXo6kulHEbyp3PY4P8eBt1nKytvc=; b=BXc6bvCtH9bQeKPer4/vqLRNVe2BJi07ScQrEPeMxNFHmCyQPfa6gNFBqWETDK+MO+ tHECY3p/e4Bn8uDq7GTv3EtdbCfN585KThKXk+NEYJzV7Ovm9KR2kutIOwiEORcrsdjK 8fCBQIiFCoZybJgYb/Ekw3uxaUy98w/xKOSCT2wXYYc76wft6e7tNa7slyQ4n5GLdXhY SzKM/21H6nrY7rwlpklyLGB+GhnVzXPUqurRPWrgfQ18GC7ruWTY6sGWoAb0WQwvAGBY CnQ7fbQ5oOZhQg9uFRYfO03oZfzHW+cUhUDHIYdYCRhlizWPDS7saICnWij3MPj69K7U OLcw== X-Gm-Message-State: ANoB5pkuetoRAliL68UkOSMLGeaApV2Keh68xeqZm3+M9OPEwUpMBxKR emVeyFccrxSA4t0ozxMSlYlQ7A== X-Google-Smtp-Source: AA0mqf6Gdfe48BdCM2e+T5oQj3c783mk2Tdg5AY9Nt0wWI7EHcHGoFluXhjLuOUAWsy/ynzjwBg34w== X-Received: by 2002:a17:907:8b06:b0:7c0:8e3a:9a54 with SMTP id sz6-20020a1709078b0600b007c08e3a9a54mr25879568ejc.619.1670327862671; Tue, 06 Dec 2022 03:57:42 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:42 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 08/11] can: tcan4x5x: Remove invalid write in clear_interrupts Date: Tue, 6 Dec 2022 12:57:25 +0100 Message-Id: <20221206115728.1056014-9-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Register 0x824 TCAN4X5X_MCAN_INT_REG is a read-only register. Any writes to this register do not have any effect. Remove this write. The m_can driver aldready clears the interrupts in m_can_isr() by writing to M_CAN_IR which is translated to register 0x1050 which is a writable version of this register. Fixes: 5443c226ba91 ("can: tcan4x5x: Add tcan4x5x driver to the kernel") Signed-off-by: Markus Schneider-Pargmann --- Notes: v2: - Add fixes tag drivers/net/can/m_can/tcan4x5x-core.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/tcan4x5x-core.c index 41645a24384c..1fec394b3517 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -204,11 +204,6 @@ static int tcan4x5x_clear_interrupts(struct m_can_classdev *cdev) if (ret) return ret; - ret = tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_MCAN_INT_REG, - TCAN4X5X_ENABLE_MCAN_INT); - if (ret) - return ret; - ret = tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_INT_FLAGS, TCAN4X5X_CLEAR_ALL_INT); if (ret) From patchwork Tue Dec 6 11:57:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065715 X-Patchwork-Delegate: kuba@kernel.org 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 5F405C4708E for ; Tue, 6 Dec 2022 11:58:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235297AbiLFL6Y (ORCPT ); Tue, 6 Dec 2022 06:58:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235176AbiLFL5s (ORCPT ); Tue, 6 Dec 2022 06:57:48 -0500 Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59F9F9FEE for ; Tue, 6 Dec 2022 03:57:45 -0800 (PST) Received: by mail-ej1-x62d.google.com with SMTP id m18so4048513eji.5 for ; Tue, 06 Dec 2022 03:57:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=JjYuBcD7jZlcMi+USU++Fjz73CmyNYItk4pm8+k3tKw=; b=nkfae4PG+fak6KgW7NpaTgVTR1s5fmIbeyaIHwuH6k6RzMXAcjRf4MZT4xkRwBQJvj GC4TH5ZEFsU42Ruukc7h0vli299sxiDdAhBkQ4wX4fY7fcgXmAWumToF8jK9v2jFdG+n GdPFMB6sK4dF2HTrx1qpp1ZRdhkWvHYzTw5ic2CwPjRXKivWRPwE5sQvOwOXsJadgVH5 lElzZBdn6EJSHoirNtkAofdxX97Rc0cxtv+D63IXnow4sGs7WmmlYffD/Zs1wGPLxvCl 8QzqR6vE9los4tFcq91h3yrIGoQwVURZobC/WaKt09LqfZUtYZLZ63nskdeTStzoclAg SdQA== 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=JjYuBcD7jZlcMi+USU++Fjz73CmyNYItk4pm8+k3tKw=; b=32J5MkDVDT72UZew/wwJf0IUkzL8QJe2EKxtBc+bqQn+D4ufvEzdr8E5ZFm/oWSKr+ mCgdIAJni8jd1lvJnJ3SNpiR43pMjkJUmyV0NelmYwAExXf5XhwpMlmPSuTs13CucZkx djgX6adHDNMm1DycCTNhmDZCXK5dWKjIprYT9tV1M3cWSwiLwXkauCTpi4SUzowiQFF6 TOnQuGYAfppfgZx0j8S6zSXd2MHOb6TGq68zSSzpvQ19AZ8TR6OUNTX7qnD9ULubYAFE RtQgEpXCkB+smXLbuj9gf/2nMt2A4QQxH2V7ko7KxVPRpwm8BtiOiWfc3SrBTCTrZ1zz u7GA== X-Gm-Message-State: ANoB5pnyfnZeKv+y6I+wnueJ8eXGFZE9MVq4msxEgecVGsvCv2OAjIdB lg66/lCRmz0QYMSS1qOyI2ZMbg== X-Google-Smtp-Source: AA0mqf5jgQ4FcTy7pql9K1HWIuuGxaAGky+FaR2hbtqlMXGvIx/3XQ0qK5f+PJGcznSejAY31xwf4Q== X-Received: by 2002:a17:907:7884:b0:7c0:e6d8:6f22 with SMTP id ku4-20020a170907788400b007c0e6d86f22mr9275118ejc.670.1670327863538; Tue, 06 Dec 2022 03:57:43 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:43 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 09/11] can: tcan4x5x: Fix use of register error status mask Date: Tue, 6 Dec 2022 12:57:26 +0100 Message-Id: <20221206115728.1056014-10-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org TCAN4X5X_ERROR_STATUS is not a status register that needs clearing during interrupt handling. Instead this is a masking register that masks error interrupts. Writing TCAN4X5X_CLEAR_ALL_INT to this register effectively masks everything. Rename the register and mask all error interrupts only once by writing to the register in tcan4x5x_init. Fixes: 5443c226ba91 ("can: tcan4x5x: Add tcan4x5x driver to the kernel") Signed-off-by: Markus Schneider-Pargmann --- Notes: v2: - Add fixes tag drivers/net/can/m_can/tcan4x5x-core.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/tcan4x5x-core.c index 1fec394b3517..efa2381bf85b 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -10,7 +10,7 @@ #define TCAN4X5X_DEV_ID1 0x04 #define TCAN4X5X_REV 0x08 #define TCAN4X5X_STATUS 0x0C -#define TCAN4X5X_ERROR_STATUS 0x10 +#define TCAN4X5X_ERROR_STATUS_MASK 0x10 #define TCAN4X5X_CONTROL 0x14 #define TCAN4X5X_CONFIG 0x800 @@ -204,12 +204,7 @@ static int tcan4x5x_clear_interrupts(struct m_can_classdev *cdev) if (ret) return ret; - ret = tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_INT_FLAGS, - TCAN4X5X_CLEAR_ALL_INT); - if (ret) - return ret; - - return tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_ERROR_STATUS, + return tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_INT_FLAGS, TCAN4X5X_CLEAR_ALL_INT); } @@ -229,6 +224,11 @@ static int tcan4x5x_init(struct m_can_classdev *cdev) if (ret) return ret; + ret = tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_ERROR_STATUS_MASK, + TCAN4X5X_CLEAR_ALL_INT); + if (ret) + return ret; + /* Zero out the MCAN buffers */ ret = m_can_init_ram(cdev); if (ret) From patchwork Tue Dec 6 11:57:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065712 X-Patchwork-Delegate: kuba@kernel.org 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 53FA0C4708C for ; Tue, 6 Dec 2022 11:58:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235270AbiLFL56 (ORCPT ); Tue, 6 Dec 2022 06:57:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235172AbiLFL5s (ORCPT ); Tue, 6 Dec 2022 06:57:48 -0500 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59E57659E for ; Tue, 6 Dec 2022 03:57:44 -0800 (PST) Received: by mail-ed1-x534.google.com with SMTP id z92so19981483ede.1 for ; Tue, 06 Dec 2022 03:57:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=kMpVZlkR98KLQohjfLGaqieOVI5mlDmYYzLpVIJ3+Co=; b=CNSjIQxzqCV1Ed/RyG27x1c8mgM8Tm7zw0uvRKceaLzWH646iHNwQ1x8wRdEfDtUKH ISwpGpz79jBDwK3kHgqoi86GP80S170WIaoqWbZnWFfYDEaxNk96RkF0B+BPF7bVeDFB BBb4e7yL2DQV9/Q8b/epz5m5Y1T809jO/LZaivf8pWfqikakzWK8Xe2cAI2VxdSzXjNO gi9b5c3kbfHAei05cGAPV2I3nf3kObO+BpnsMPHeYAdIbRHjtu1XYgvjn8CnWCJ2yGa5 YefpFp13s+Epzc+uZOF+SIZ4PFV3shbKfwkDIbyju4KHUwLDawcfT7zf6kGFpCXy1r7y IwdQ== 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=kMpVZlkR98KLQohjfLGaqieOVI5mlDmYYzLpVIJ3+Co=; b=AP+Lq8Zz4VT88Subr49t49RUpV7NX034kqeP4hreOgMOjjTeqTDrB0TYv3d2bEYGVE FvOjhc3BlxMRd0cIVkEUbP8MFwNRdov7jjHBCr2rfUeCj4SYO438bYEV++5JuBOan6Nn iyCRZZSf9B2Nka6CKgeCy4RLFXOm5kIaQuAAQE+XQhfdwUdXtpqYMHa4Z77IlQ3FhNjL emKf1RmU10X3zyAhS60ycpMD5MHstG/3LNY1BnTCX9fVs+eLKm7hluv3lMB4rhrepJr1 xLI14incRDr/KlRScosLE4HmBOVBnt451Zso9aQig/ULUrX+Uh5mqEaAekzYgS2GI5hs vxBA== X-Gm-Message-State: ANoB5pnWOj029JxWxUjpDiYAo4HBDokwgSkSGW5OX+YT7ycT/pTW5ZUk wR+mNy9akNt9SB73wR+sizmKaA== X-Google-Smtp-Source: AA0mqf61HAelMEyMCoEKHZ1S+ZPOwlygRrC4yfJN6dnK1EOKnRU7bKQ8CmWUh0UFuoxIt90m6JQRNw== X-Received: by 2002:a05:6402:78e:b0:46c:6f53:bf19 with SMTP id d14-20020a056402078e00b0046c6f53bf19mr11625077edy.299.1670327864545; Tue, 06 Dec 2022 03:57:44 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:44 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 10/11] can: tcan4x5x: Fix register range of first two blocks Date: Tue, 6 Dec 2022 12:57:27 +0100 Message-Id: <20221206115728.1056014-11-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org According to the datasheet 0x10 is the last register in the first block, not register 0x2c. The datasheet lists the last register of the second block as 0x830, not 0x83c. Signed-off-by: Markus Schneider-Pargmann --- Notes: v2: - Fix end of first range, was 0x1c, is now 0x10 - Add fix for the end of the second range, was 0x3c, is now 0x30. drivers/net/can/m_can/tcan4x5x-regmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/m_can/tcan4x5x-regmap.c b/drivers/net/can/m_can/tcan4x5x-regmap.c index 26e212b8ca7a..33aed989e42a 100644 --- a/drivers/net/can/m_can/tcan4x5x-regmap.c +++ b/drivers/net/can/m_can/tcan4x5x-regmap.c @@ -91,8 +91,8 @@ static int tcan4x5x_regmap_read(void *context, } static const struct regmap_range tcan4x5x_reg_table_yes_range[] = { - regmap_reg_range(0x0000, 0x002c), /* Device ID and SPI Registers */ - regmap_reg_range(0x0800, 0x083c), /* Device configuration registers and Interrupt Flags*/ + regmap_reg_range(0x0000, 0x0010), /* Device ID and SPI Registers */ + regmap_reg_range(0x0800, 0x0830), /* Device configuration registers and Interrupt Flags*/ regmap_reg_range(0x1000, 0x10fc), /* M_CAN */ regmap_reg_range(0x8000, 0x87fc), /* MRAM */ }; From patchwork Tue Dec 6 11:57:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Schneider-Pargmann X-Patchwork-Id: 13065716 X-Patchwork-Delegate: kuba@kernel.org 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 6D47CC47090 for ; Tue, 6 Dec 2022 11:58:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235228AbiLFL60 (ORCPT ); Tue, 6 Dec 2022 06:58:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235181AbiLFL5s (ORCPT ); Tue, 6 Dec 2022 06:57:48 -0500 Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com [IPv6:2a00:1450:4864:20::636]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05150A468 for ; Tue, 6 Dec 2022 03:57:45 -0800 (PST) Received: by mail-ej1-x636.google.com with SMTP id kw15so2152140ejc.10 for ; Tue, 06 Dec 2022 03:57:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.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=ETAV5GbK15ksIb7Y/2hAQrE1+2csG56eJ5O31jfiSm0=; b=DsfemFw96NwbJCFj2aFQGgrtCd2kXAYLnSqdxWwK+f1C3ozv2O2qwOA162mGChL6hn 6I8b6+MpLsRWGQ819BWKWHuvh1pk4JJwfFFq5sZbdmqFSxYOgMaXX7rKn93GpyuDU2UM h5KKd8pg+2P+K+zmKtJ/mqUMtoyDqHdgVCEk+rCn/GRBXHyMCW+INlcHnX5ff/IH/dhh ngzvdJTJTYXIr/Rkgt7Z2UtfSw73i5H6jbxRqHzhD+lA6Z+QcIb+UbW7AP4SfJ2zc+dz R5gcQq8CvqHxKE6Ju1pQQRc2JNIv/7wcy8FwdrRHsATiQb5fx6TjiACsYI+HbPtLeLG5 6s6A== 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=ETAV5GbK15ksIb7Y/2hAQrE1+2csG56eJ5O31jfiSm0=; b=FptMU0m8JhIOODqa7UGn2ZlqwqRIkh3nE8POJ3jjnemaFrql3tR4yaTLbhnLSjRAW0 RBa8bpE/qRMnXMkgIsrn9MIOU2cj63oiO807soV30TqQgDQ8o8YjxogcJheIIErSj5U7 C96wCZ66uMjAZ0J5kxBfefmP38+orYQ778ObyBL4VFI8RVjXaBL9OhMEsC1wXpMJxXbS VHtj/ZR2d4C/lEHyCOUTeZ5HO1eTF0KHTH6rbje8kciawR382jwZ9gkgGxYnREruPBMh nk7kUDbc2J0mH1+AJ8oa6nyMumk7Pcnm/1q7bM/suwI4DTnue2AHonh15n1lob5vPKQj L71w== X-Gm-Message-State: ANoB5pmSz/k7ceuJcQRfsEVV5eMV1RfvFgbEtzpfrSxxyMdXW31Ezpew eCnY7dP56mEUza5V7+BmsorAkQ== X-Google-Smtp-Source: AA0mqf7GzGmbIAawAMwe6NRH9KO4raa68YejfLxvVTFxOOTu1R7RNxVCX6OXkVFF6vVz1mIthTIjtQ== X-Received: by 2002:a17:906:2552:b0:7ad:917b:61ec with SMTP id j18-20020a170906255200b007ad917b61ecmr59356203ejb.513.1670327865402; Tue, 06 Dec 2022 03:57:45 -0800 (PST) Received: from blmsp.fritz.box ([2001:4091:a245:805c:8713:84e4:2a9e:cbe8]) by smtp.gmail.com with ESMTPSA id ky20-20020a170907779400b007c0ac4e6b6esm6472076ejc.143.2022.12.06.03.57.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 03:57:45 -0800 (PST) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Wolfgang Grandegger Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann Subject: [PATCH v2 11/11] can: tcan4x5x: Specify separate read/write ranges Date: Tue, 6 Dec 2022 12:57:28 +0100 Message-Id: <20221206115728.1056014-12-msp@baylibre.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221206115728.1056014-1-msp@baylibre.com> References: <20221206115728.1056014-1-msp@baylibre.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Specify exactly which registers are read/writeable in the chip. This is supposed to help detect any violations in the future. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/tcan4x5x-regmap.c | 43 +++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/drivers/net/can/m_can/tcan4x5x-regmap.c b/drivers/net/can/m_can/tcan4x5x-regmap.c index 33aed989e42a..2b218ce04e9f 100644 --- a/drivers/net/can/m_can/tcan4x5x-regmap.c +++ b/drivers/net/can/m_can/tcan4x5x-regmap.c @@ -90,16 +90,47 @@ static int tcan4x5x_regmap_read(void *context, return 0; } -static const struct regmap_range tcan4x5x_reg_table_yes_range[] = { +static const struct regmap_range tcan4x5x_reg_table_wr_range[] = { + /* Device ID and SPI Registers */ + regmap_reg_range(0x000c, 0x0010), + /* Device configuration registers and Interrupt Flags*/ + regmap_reg_range(0x0800, 0x080c), + regmap_reg_range(0x0814, 0x0814), + regmap_reg_range(0x0820, 0x0820), + regmap_reg_range(0x0830, 0x0830), + /* M_CAN */ + regmap_reg_range(0x100c, 0x102c), + regmap_reg_range(0x1048, 0x1048), + regmap_reg_range(0x1050, 0x105c), + regmap_reg_range(0x1080, 0x1088), + regmap_reg_range(0x1090, 0x1090), + regmap_reg_range(0x1098, 0x10a0), + regmap_reg_range(0x10a8, 0x10b0), + regmap_reg_range(0x10b8, 0x10c0), + regmap_reg_range(0x10c8, 0x10c8), + regmap_reg_range(0x10d0, 0x10d4), + regmap_reg_range(0x10e0, 0x10e4), + regmap_reg_range(0x10f0, 0x10f0), + regmap_reg_range(0x10f8, 0x10f8), + /* MRAM */ + regmap_reg_range(0x8000, 0x87fc), +}; + +static const struct regmap_range tcan4x5x_reg_table_rd_range[] = { regmap_reg_range(0x0000, 0x0010), /* Device ID and SPI Registers */ regmap_reg_range(0x0800, 0x0830), /* Device configuration registers and Interrupt Flags*/ regmap_reg_range(0x1000, 0x10fc), /* M_CAN */ regmap_reg_range(0x8000, 0x87fc), /* MRAM */ }; -static const struct regmap_access_table tcan4x5x_reg_table = { - .yes_ranges = tcan4x5x_reg_table_yes_range, - .n_yes_ranges = ARRAY_SIZE(tcan4x5x_reg_table_yes_range), +static const struct regmap_access_table tcan4x5x_reg_table_wr = { + .yes_ranges = tcan4x5x_reg_table_wr_range, + .n_yes_ranges = ARRAY_SIZE(tcan4x5x_reg_table_wr_range), +}; + +static const struct regmap_access_table tcan4x5x_reg_table_rd = { + .yes_ranges = tcan4x5x_reg_table_rd_range, + .n_yes_ranges = ARRAY_SIZE(tcan4x5x_reg_table_rd_range), }; static const struct regmap_config tcan4x5x_regmap = { @@ -107,8 +138,8 @@ static const struct regmap_config tcan4x5x_regmap = { .reg_stride = 4, .pad_bits = 8, .val_bits = 32, - .wr_table = &tcan4x5x_reg_table, - .rd_table = &tcan4x5x_reg_table, + .wr_table = &tcan4x5x_reg_table_wr, + .rd_table = &tcan4x5x_reg_table_rd, .max_register = TCAN4X5X_MAX_REGISTER, .cache_type = REGCACHE_NONE, .read_flag_mask = (__force unsigned long)