linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] can: m_can: various cleanups
@ 2025-10-08 19:07 Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 1/7] can: m_can: m_can_init_ram(): make static Marc Kleine-Budde
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

While working on the m_can driver, I created several cleanups commits, make
m_can_init_ram() static, rename hrtimer function, convert debugging and
error output to netdev_(), replace open coded register write by
m_can_write(), remove not needed error messages and sanity checks and don't
wake up hte controller during m_can_get_berr_counter() if the interface is
down.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
Marc Kleine-Budde (7):
      can: m_can: m_can_init_ram(): make static
      can: m_can: hrtimer_callback(): rename to m_can_polling_timer()
      net: m_can: convert dev_{dbg,info,err} -> netdev_{dbg,info,err}
      can: m_can: m_can_interrupt_enable(): use m_can_write() instead of open coding it
      can: m_can: m_can_class_register(): remove error message in case devm_kzalloc() fails
      can: m_can: m_can_tx_submit(): remove unneeded sanity checks
      can: m_can: m_can_get_berr_counter(): don't wake up controller if interface is down

 drivers/net/can/m_can/m_can.c | 116 ++++++++++++++++++++----------------------
 drivers/net/can/m_can/m_can.h |   1 -
 2 files changed, 56 insertions(+), 61 deletions(-)
---
base-commit: 07fdad3a93756b872da7b53647715c48d0f4a2d0
change-id: 20250923-m_can-cleanups-d0436cd311a5

Best regards,
--  
Marc Kleine-Budde <mkl@pengutronix.de>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/7] can: m_can: m_can_init_ram(): make static
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 2/7] can: m_can: hrtimer_callback(): rename to m_can_polling_timer() Marc Kleine-Budde
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

Since commit eaacfeaca7ad ("can: m_can: Call the RAM init directly from
m_can_chip_config") m_can_init_ram() is not used outside of m_can.c.

Mark as static and remove the EXPORT_SYMBOL_GPL().

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 43 +++++++++++++++++++++----------------------
 drivers/net/can/m_can/m_can.h |  1 -
 2 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index e1d725979685..03e2c431ffab 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -1368,6 +1368,27 @@ static const struct can_bittiming_const m_can_data_bittiming_const_31X = {
 	.brp_inc = 1,
 };
 
+static int m_can_init_ram(struct m_can_classdev *cdev)
+{
+	int end, i, start;
+	int err = 0;
+
+	/* initialize the entire Message RAM in use to avoid possible
+	 * ECC/parity checksum errors when reading an uninitialized buffer
+	 */
+	start = cdev->mcfg[MRAM_SIDF].off;
+	end = cdev->mcfg[MRAM_TXB].off +
+		cdev->mcfg[MRAM_TXB].num * TXB_ELEMENT_SIZE;
+
+	for (i = start; i < end; i += 4) {
+		err = m_can_fifo_write_no_off(cdev, i, 0x0);
+		if (err)
+			break;
+	}
+
+	return err;
+}
+
 static int m_can_set_bittiming(struct net_device *dev)
 {
 	struct m_can_classdev *cdev = netdev_priv(dev);
@@ -2303,28 +2324,6 @@ static void m_can_of_parse_mram(struct m_can_classdev *cdev,
 		cdev->mcfg[MRAM_TXB].off, cdev->mcfg[MRAM_TXB].num);
 }
 
-int m_can_init_ram(struct m_can_classdev *cdev)
-{
-	int end, i, start;
-	int err = 0;
-
-	/* initialize the entire Message RAM in use to avoid possible
-	 * ECC/parity checksum errors when reading an uninitialized buffer
-	 */
-	start = cdev->mcfg[MRAM_SIDF].off;
-	end = cdev->mcfg[MRAM_TXB].off +
-		cdev->mcfg[MRAM_TXB].num * TXB_ELEMENT_SIZE;
-
-	for (i = start; i < end; i += 4) {
-		err = m_can_fifo_write_no_off(cdev, i, 0x0);
-		if (err)
-			break;
-	}
-
-	return err;
-}
-EXPORT_SYMBOL_GPL(m_can_init_ram);
-
 int m_can_class_get_clocks(struct m_can_classdev *cdev)
 {
 	int ret = 0;
diff --git a/drivers/net/can/m_can/m_can.h b/drivers/net/can/m_can/m_can.h
index bd4746c63af3..46948c46d980 100644
--- a/drivers/net/can/m_can/m_can.h
+++ b/drivers/net/can/m_can/m_can.h
@@ -135,7 +135,6 @@ void m_can_class_free_dev(struct net_device *net);
 int m_can_class_register(struct m_can_classdev *cdev);
 void m_can_class_unregister(struct m_can_classdev *cdev);
 int m_can_class_get_clocks(struct m_can_classdev *cdev);
-int m_can_init_ram(struct m_can_classdev *priv);
 int m_can_check_mram_cfg(struct m_can_classdev *cdev, u32 mram_max_size);
 
 int m_can_class_suspend(struct device *dev);

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/7] can: m_can: hrtimer_callback(): rename to m_can_polling_timer()
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 1/7] can: m_can: m_can_init_ram(): make static Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 3/7] net: m_can: convert dev_{dbg,info,err} -> netdev_{dbg,info,err} Marc Kleine-Budde
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

The original use of struct m_can_classdev::hrtimer was to support polling
for devices without IRQ, with the timer function called hrtimer_callback().

Commit 07f25091ca02 ("can: m_can: Implement receive coalescing") uses the
hrtimer for software-supported IRQ coalescence, with the timer function
called m_can_coalescing_timer().

To improve the readability of the driver, rename hrtimer_callback() to
m_can_polling_timer(), which better describes the functionality.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index 03e2c431ffab..d4aa46b236ea 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -2045,7 +2045,7 @@ static netdev_tx_t m_can_start_xmit(struct sk_buff *skb,
 	return ret;
 }
 
-static enum hrtimer_restart hrtimer_callback(struct hrtimer *timer)
+static enum hrtimer_restart m_can_polling_timer(struct hrtimer *timer)
 {
 	struct m_can_classdev *cdev = container_of(timer, struct
 						   m_can_classdev, hrtimer);
@@ -2418,7 +2418,7 @@ int m_can_class_register(struct m_can_classdev *cdev)
 
 	if (!cdev->net->irq) {
 		dev_dbg(cdev->dev, "Polling enabled, initialize hrtimer");
-		hrtimer_setup(&cdev->hrtimer, &hrtimer_callback, CLOCK_MONOTONIC,
+		hrtimer_setup(&cdev->hrtimer, m_can_polling_timer, CLOCK_MONOTONIC,
 			      HRTIMER_MODE_REL_PINNED);
 	} else {
 		hrtimer_setup(&cdev->hrtimer, m_can_coalescing_timer, CLOCK_MONOTONIC,

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/7] net: m_can: convert dev_{dbg,info,err} -> netdev_{dbg,info,err}
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 1/7] can: m_can: m_can_init_ram(): make static Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 2/7] can: m_can: hrtimer_callback(): rename to m_can_polling_timer() Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 4/7] can: m_can: m_can_interrupt_enable(): use m_can_write() instead of open coding it Marc Kleine-Budde
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

To ease debugging use the netdev_{dbg,info,err}() functions instead of
dev_{dbg,info,err}.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 54 +++++++++++++++++++++----------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index d4aa46b236ea..4ca84f9a2734 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -386,8 +386,8 @@ static int m_can_cccr_update_bits(struct m_can_classdev *cdev, u32 mask, u32 val
 	size_t tries = 10;
 
 	if (!(mask & CCCR_INIT) && !(val_before & CCCR_INIT)) {
-		dev_err(cdev->dev,
-			"refusing to configure device when in normal mode\n");
+		netdev_err(cdev->net,
+			   "refusing to configure device when in normal mode\n");
 		return -EBUSY;
 	}
 
@@ -469,7 +469,7 @@ static void m_can_coalescing_disable(struct m_can_classdev *cdev)
 static inline void m_can_enable_all_interrupts(struct m_can_classdev *cdev)
 {
 	if (!cdev->net->irq) {
-		dev_dbg(cdev->dev, "Start hrtimer\n");
+		netdev_dbg(cdev->net, "Start hrtimer\n");
 		hrtimer_start(&cdev->hrtimer,
 			      ms_to_ktime(HRTIMER_POLL_INTERVAL_MS),
 			      HRTIMER_MODE_REL_PINNED);
@@ -485,7 +485,7 @@ static inline void m_can_disable_all_interrupts(struct m_can_classdev *cdev)
 	m_can_write(cdev, M_CAN_ILE, 0x0);
 
 	if (!cdev->net->irq) {
-		dev_dbg(cdev->dev, "Stop hrtimer\n");
+		netdev_dbg(cdev->net, "Stop hrtimer\n");
 		hrtimer_try_to_cancel(&cdev->hrtimer);
 	}
 }
@@ -1474,7 +1474,7 @@ static int m_can_chip_config(struct net_device *dev)
 
 	err = m_can_init_ram(cdev);
 	if (err) {
-		dev_err(cdev->dev, "Message RAM configuration failed\n");
+		netdev_err(dev, "Message RAM configuration failed\n");
 		return err;
 	}
 
@@ -1704,7 +1704,7 @@ static int m_can_niso_supported(struct m_can_classdev *cdev)
 	/* Then clear the it again. */
 	ret = m_can_cccr_update_bits(cdev, CCCR_NISO, 0);
 	if (ret) {
-		dev_err(cdev->dev, "failed to revert the NON-ISO bit in CCCR\n");
+		netdev_err(cdev->net, "failed to revert the NON-ISO bit in CCCR\n");
 		return ret;
 	}
 
@@ -1723,8 +1723,8 @@ static int m_can_dev_setup(struct m_can_classdev *cdev)
 	m_can_version = m_can_check_core_release(cdev);
 	/* return if unsupported version */
 	if (!m_can_version) {
-		dev_err(cdev->dev, "Unsupported version number: %2d",
-			m_can_version);
+		netdev_err(cdev->net, "Unsupported version number: %2d",
+			   m_can_version);
 		return -EINVAL;
 	}
 
@@ -1782,8 +1782,8 @@ static int m_can_dev_setup(struct m_can_classdev *cdev)
 			cdev->can.ctrlmode_supported |= CAN_CTRLMODE_FD_NON_ISO;
 		break;
 	default:
-		dev_err(cdev->dev, "Unsupported version number: %2d",
-			cdev->version);
+		netdev_err(cdev->net, "Unsupported version number: %2d",
+			   cdev->version);
 		return -EINVAL;
 	}
 
@@ -2277,8 +2277,8 @@ int m_can_check_mram_cfg(struct m_can_classdev *cdev, u32 mram_max_size)
 	total_size = cdev->mcfg[MRAM_TXB].off - cdev->mcfg[MRAM_SIDF].off +
 			cdev->mcfg[MRAM_TXB].num * TXB_ELEMENT_SIZE;
 	if (total_size > mram_max_size) {
-		dev_err(cdev->dev, "Total size of mram config(%u) exceeds mram(%u)\n",
-			total_size, mram_max_size);
+		netdev_err(cdev->net, "Total size of mram config(%u) exceeds mram(%u)\n",
+			   total_size, mram_max_size);
 		return -EINVAL;
 	}
 
@@ -2313,15 +2313,15 @@ static void m_can_of_parse_mram(struct m_can_classdev *cdev,
 	cdev->mcfg[MRAM_TXB].num = mram_config_vals[7] &
 		FIELD_MAX(TXBC_NDTB_MASK);
 
-	dev_dbg(cdev->dev,
-		"sidf 0x%x %d xidf 0x%x %d rxf0 0x%x %d rxf1 0x%x %d rxb 0x%x %d txe 0x%x %d txb 0x%x %d\n",
-		cdev->mcfg[MRAM_SIDF].off, cdev->mcfg[MRAM_SIDF].num,
-		cdev->mcfg[MRAM_XIDF].off, cdev->mcfg[MRAM_XIDF].num,
-		cdev->mcfg[MRAM_RXF0].off, cdev->mcfg[MRAM_RXF0].num,
-		cdev->mcfg[MRAM_RXF1].off, cdev->mcfg[MRAM_RXF1].num,
-		cdev->mcfg[MRAM_RXB].off, cdev->mcfg[MRAM_RXB].num,
-		cdev->mcfg[MRAM_TXE].off, cdev->mcfg[MRAM_TXE].num,
-		cdev->mcfg[MRAM_TXB].off, cdev->mcfg[MRAM_TXB].num);
+	netdev_dbg(cdev->net,
+		   "sidf 0x%x %d xidf 0x%x %d rxf0 0x%x %d rxf1 0x%x %d rxb 0x%x %d txe 0x%x %d txb 0x%x %d\n",
+		   cdev->mcfg[MRAM_SIDF].off, cdev->mcfg[MRAM_SIDF].num,
+		   cdev->mcfg[MRAM_XIDF].off, cdev->mcfg[MRAM_XIDF].num,
+		   cdev->mcfg[MRAM_RXF0].off, cdev->mcfg[MRAM_RXF0].num,
+		   cdev->mcfg[MRAM_RXF1].off, cdev->mcfg[MRAM_RXF1].num,
+		   cdev->mcfg[MRAM_RXB].off, cdev->mcfg[MRAM_RXB].num,
+		   cdev->mcfg[MRAM_TXE].off, cdev->mcfg[MRAM_TXE].num,
+		   cdev->mcfg[MRAM_TXB].off, cdev->mcfg[MRAM_TXB].num);
 }
 
 int m_can_class_get_clocks(struct m_can_classdev *cdev)
@@ -2332,7 +2332,7 @@ int m_can_class_get_clocks(struct m_can_classdev *cdev)
 	cdev->cclk = devm_clk_get(cdev->dev, "cclk");
 
 	if (IS_ERR(cdev->hclk) || IS_ERR(cdev->cclk)) {
-		dev_err(cdev->dev, "no clock found\n");
+		netdev_err(cdev->net, "no clock found\n");
 		ret = -ENODEV;
 	}
 
@@ -2417,7 +2417,7 @@ int m_can_class_register(struct m_can_classdev *cdev)
 	}
 
 	if (!cdev->net->irq) {
-		dev_dbg(cdev->dev, "Polling enabled, initialize hrtimer");
+		netdev_dbg(cdev->net, "Polling enabled, initialize hrtimer");
 		hrtimer_setup(&cdev->hrtimer, m_can_polling_timer, CLOCK_MONOTONIC,
 			      HRTIMER_MODE_REL_PINNED);
 	} else {
@@ -2431,15 +2431,15 @@ int m_can_class_register(struct m_can_classdev *cdev)
 
 	ret = register_m_can_dev(cdev);
 	if (ret) {
-		dev_err(cdev->dev, "registering %s failed (err=%d)\n",
-			cdev->net->name, ret);
+		netdev_err(cdev->net, "registering %s failed (err=%d)\n",
+			   cdev->net->name, ret);
 		goto rx_offload_del;
 	}
 
 	of_can_transceiver(cdev->net);
 
-	dev_info(cdev->dev, "%s device registered (irq=%d, version=%d)\n",
-		 KBUILD_MODNAME, cdev->net->irq, cdev->version);
+	netdev_info(cdev->net, "device registered (irq=%d, version=%d)\n",
+		    cdev->net->irq, cdev->version);
 
 	/* Probe finished
 	 * Stop clocks. They will be reactivated once the M_CAN device is opened

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 4/7] can: m_can: m_can_interrupt_enable(): use m_can_write() instead of open coding it
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
                   ` (2 preceding siblings ...)
  2025-10-08 19:07 ` [PATCH 3/7] net: m_can: convert dev_{dbg,info,err} -> netdev_{dbg,info,err} Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 5/7] can: m_can: m_can_class_register(): remove error message in case devm_kzalloc() fails Marc Kleine-Budde
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

As everywhere else in the driver, use m_can_write() instead of open coding
it.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index 4ca84f9a2734..4cb4eee3602a 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -451,7 +451,7 @@ static void m_can_interrupt_enable(struct m_can_classdev *cdev, u32 interrupts)
 {
 	if (cdev->active_interrupts == interrupts)
 		return;
-	cdev->ops->write_reg(cdev, M_CAN_IE, interrupts);
+	m_can_write(cdev, M_CAN_IE, interrupts);
 	cdev->active_interrupts = interrupts;
 }
 

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 5/7] can: m_can: m_can_class_register(): remove error message in case devm_kzalloc() fails
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
                   ` (3 preceding siblings ...)
  2025-10-08 19:07 ` [PATCH 4/7] can: m_can: m_can_interrupt_enable(): use m_can_write() instead of open coding it Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 6/7] can: m_can: m_can_tx_submit(): remove unneeded sanity checks Marc Kleine-Budde
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

If devm_kzalloc() fails, it already outputs an error message. Remove the
error message from m_can_class_register() accordingly.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index 4cb4eee3602a..92a4feec4174 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -2399,10 +2399,8 @@ int m_can_class_register(struct m_can_classdev *cdev)
 			devm_kzalloc(cdev->dev,
 				     cdev->tx_fifo_size * sizeof(*cdev->tx_ops),
 				     GFP_KERNEL);
-		if (!cdev->tx_ops) {
-			dev_err(cdev->dev, "Failed to allocate tx_ops for workqueue\n");
+		if (!cdev->tx_ops)
 			return -ENOMEM;
-		}
 	}
 
 	ret = m_can_clk_start(cdev);

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6/7] can: m_can: m_can_tx_submit(): remove unneeded sanity checks
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
                   ` (4 preceding siblings ...)
  2025-10-08 19:07 ` [PATCH 5/7] can: m_can: m_can_class_register(): remove error message in case devm_kzalloc() fails Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-08 19:07 ` [PATCH 7/7] can: m_can: m_can_get_berr_counter(): don't wake up controller if interface is down Marc Kleine-Budde
  2025-10-17 14:22 ` [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

m_can_tx_submit() is only called for peripheral devices. So remove the
sanity check.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index 92a4feec4174..4451ea750b74 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -1960,11 +1960,6 @@ static netdev_tx_t m_can_tx_handler(struct m_can_classdev *cdev,
 
 static void m_can_tx_submit(struct m_can_classdev *cdev)
 {
-	if (cdev->version == 30)
-		return;
-	if (!cdev->is_peripheral)
-		return;
-
 	m_can_write(cdev, M_CAN_TXBAR, cdev->tx_peripheral_submit);
 	cdev->tx_peripheral_submit = 0;
 }

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 7/7] can: m_can: m_can_get_berr_counter(): don't wake up controller if interface is down
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
                   ` (5 preceding siblings ...)
  2025-10-08 19:07 ` [PATCH 6/7] can: m_can: m_can_tx_submit(): remove unneeded sanity checks Marc Kleine-Budde
@ 2025-10-08 19:07 ` Marc Kleine-Budde
  2025-10-17 14:22 ` [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
  7 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-08 19:07 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel, Marc Kleine-Budde

If the interface is down, the CAN controller might be powered down, the
clock disabled, and/or it's external reset asserted.

Don't wake up the controller to read the CAN bus error counters, if the
interface is down.

Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/m_can.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index 4451ea750b74..0b622248e229 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -790,6 +790,10 @@ static int m_can_get_berr_counter(const struct net_device *dev,
 	struct m_can_classdev *cdev = netdev_priv(dev);
 	int err;
 
+	/* Avoid waking up the controller if the interface is down */
+	if (!(dev->flags & IFF_UP))
+		return 0;
+
 	err = m_can_clk_start(cdev);
 	if (err)
 		return err;

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/7] can: m_can: various cleanups
  2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
                   ` (6 preceding siblings ...)
  2025-10-08 19:07 ` [PATCH 7/7] can: m_can: m_can_get_berr_counter(): don't wake up controller if interface is down Marc Kleine-Budde
@ 2025-10-17 14:22 ` Marc Kleine-Budde
  2025-10-21 18:56   ` Markus Schneider-Pargmann
  7 siblings, 1 reply; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-17 14:22 UTC (permalink / raw)
  To: Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel

[-- Attachment #1: Type: text/plain, Size: 804 bytes --]

On 08.10.2025 21:07:35, Marc Kleine-Budde wrote:
> While working on the m_can driver, I created several cleanups commits, make
> m_can_init_ram() static, rename hrtimer function, convert debugging and
> error output to netdev_(), replace open coded register write by
> m_can_write(), remove not needed error messages and sanity checks and don't
> wake up hte controller during m_can_get_berr_counter() if the interface is
> down.
> 
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

Applied to linux-can-next.

Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde          |
Embedded Linux                   | https://www.pengutronix.de |
Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/7] can: m_can: various cleanups
  2025-10-17 14:22 ` [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
@ 2025-10-21 18:56   ` Markus Schneider-Pargmann
  2025-10-21 19:05     ` Marc Kleine-Budde
  0 siblings, 1 reply; 11+ messages in thread
From: Markus Schneider-Pargmann @ 2025-10-21 18:56 UTC (permalink / raw)
  To: Marc Kleine-Budde, Chandrasekar Ramakrishnan, Vincent Mailhol,
	Markus Schneider-Pargmann
  Cc: linux-can, linux-kernel, kernel

[-- Attachment #1: Type: text/plain, Size: 759 bytes --]

On Fri Oct 17, 2025 at 4:22 PM CEST, Marc Kleine-Budde wrote:
> On 08.10.2025 21:07:35, Marc Kleine-Budde wrote:
>> While working on the m_can driver, I created several cleanups commits, make
>> m_can_init_ram() static, rename hrtimer function, convert debugging and
>> error output to netdev_(), replace open coded register write by
>> m_can_write(), remove not needed error messages and sanity checks and don't
>> wake up hte controller during m_can_get_berr_counter() if the interface is
>> down.
>> 
>> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
>
> Applied to linux-can-next.
>
> Marc

Sorry, a bit late due to vacation. The patches look good to me.

Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>

Best
Markus

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 289 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/7] can: m_can: various cleanups
  2025-10-21 18:56   ` Markus Schneider-Pargmann
@ 2025-10-21 19:05     ` Marc Kleine-Budde
  0 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2025-10-21 19:05 UTC (permalink / raw)
  To: Markus Schneider-Pargmann
  Cc: Chandrasekar Ramakrishnan, Vincent Mailhol, linux-can,
	linux-kernel, kernel

[-- Attachment #1: Type: text/plain, Size: 1185 bytes --]

On 21.10.2025 20:56:01, Markus Schneider-Pargmann wrote:
> On Fri Oct 17, 2025 at 4:22 PM CEST, Marc Kleine-Budde wrote:
> > On 08.10.2025 21:07:35, Marc Kleine-Budde wrote:
> >> While working on the m_can driver, I created several cleanups commits, make
> >> m_can_init_ram() static, rename hrtimer function, convert debugging and
> >> error output to netdev_(), replace open coded register write by
> >> m_can_write(), remove not needed error messages and sanity checks and don't
> >> wake up hte controller during m_can_get_berr_counter() if the interface is
> >> down.
> >> 
> >> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
> >
> > Applied to linux-can-next.
> >
> > Marc
> 
> Sorry, a bit late due to vacation. The patches look good to me.

Hope you all had a good vacation!

> Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>

Thanks, it's already in net-next :)
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde          |
Embedded Linux                   | https://www.pengutronix.de |
Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-10-21 19:05 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-08 19:07 [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 1/7] can: m_can: m_can_init_ram(): make static Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 2/7] can: m_can: hrtimer_callback(): rename to m_can_polling_timer() Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 3/7] net: m_can: convert dev_{dbg,info,err} -> netdev_{dbg,info,err} Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 4/7] can: m_can: m_can_interrupt_enable(): use m_can_write() instead of open coding it Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 5/7] can: m_can: m_can_class_register(): remove error message in case devm_kzalloc() fails Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 6/7] can: m_can: m_can_tx_submit(): remove unneeded sanity checks Marc Kleine-Budde
2025-10-08 19:07 ` [PATCH 7/7] can: m_can: m_can_get_berr_counter(): don't wake up controller if interface is down Marc Kleine-Budde
2025-10-17 14:22 ` [PATCH 0/7] can: m_can: various cleanups Marc Kleine-Budde
2025-10-21 18:56   ` Markus Schneider-Pargmann
2025-10-21 19:05     ` Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).