| From 9b97bf14434544e8a86faa0490f4815b8d99f3d3 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 9 Mar 2021 10:17:23 +0100 |
| Subject: can: kvaser_pciefd: Always disable bus load reporting |
| |
| From: Jimmy Assarsson <extja@kvaser.com> |
| |
| [ Upstream commit 7c6e6bce08f918b64459415f58061d4d6df44994 ] |
| |
| Under certain circumstances, when switching from Kvaser's linuxcan driver |
| (kvpciefd) to the SocketCAN driver (kvaser_pciefd), the bus load reporting |
| is not disabled. |
| This is flooding the kernel log with prints like: |
| [3485.574677] kvaser_pciefd 0000:02:00.0: Received unexpected packet type 0x00000009 |
| |
| Always put the controller in the expected state, instead of assuming that |
| bus load reporting is inactive. |
| |
| Note: If bus load reporting is enabled when the driver is loaded, you will |
| still get a number of bus load packages (and printouts), before it is |
| disabled. |
| |
| Fixes: 26ad340e582d ("can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices") |
| Link: https://lore.kernel.org/r/20210309091724.31262-1-jimmyassarsson@gmail.com |
| Signed-off-by: Jimmy Assarsson <extja@kvaser.com> |
| Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/can/kvaser_pciefd.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/drivers/net/can/kvaser_pciefd.c b/drivers/net/can/kvaser_pciefd.c |
| index 72acd1ba162d..e7a26ec9bdc1 100644 |
| --- a/drivers/net/can/kvaser_pciefd.c |
| +++ b/drivers/net/can/kvaser_pciefd.c |
| @@ -57,6 +57,7 @@ MODULE_DESCRIPTION("CAN driver for Kvaser CAN/PCIe devices"); |
| #define KVASER_PCIEFD_KCAN_STAT_REG 0x418 |
| #define KVASER_PCIEFD_KCAN_MODE_REG 0x41c |
| #define KVASER_PCIEFD_KCAN_BTRN_REG 0x420 |
| +#define KVASER_PCIEFD_KCAN_BUS_LOAD_REG 0x424 |
| #define KVASER_PCIEFD_KCAN_BTRD_REG 0x428 |
| #define KVASER_PCIEFD_KCAN_PWM_REG 0x430 |
| /* Loopback control register */ |
| @@ -947,6 +948,9 @@ static int kvaser_pciefd_setup_can_ctrls(struct kvaser_pciefd *pcie) |
| timer_setup(&can->bec_poll_timer, kvaser_pciefd_bec_poll_timer, |
| 0); |
| |
| + /* Disable Bus load reporting */ |
| + iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_BUS_LOAD_REG); |
| + |
| tx_npackets = ioread32(can->reg_base + |
| KVASER_PCIEFD_KCAN_TX_NPACKETS_REG); |
| if (((tx_npackets >> KVASER_PCIEFD_KCAN_TX_NPACKETS_MAX_SHIFT) & |
| -- |
| 2.30.1 |
| |