Skip to content

Commit

Permalink
can: sja1000: Add support for CAN_CTRLMODE_PRESUME_ACK
Browse files Browse the repository at this point in the history
SJA1000 has a self test mode (STM) which does not require
acknowledgement for the successful message transmission. In this mode a
node test is possible without any other active node on the bus.

This patch adds a possibility to set STM for SJA1000 controller through
specifying the corresponding CAN_CTRLMODE_PRESUME_ACK netlink flag.

Signed-off-by: Nikita Edward Baruzdin <nebaruzdin@gmail.com>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
  • Loading branch information
Nikita Edward Baruzdin authored and Marc Kleine-Budde committed Jul 15, 2014
1 parent dcf9e15 commit 5b853ec
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/net/can/sja1000/sja1000.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ static void set_normal_mode(struct net_device *dev)
{
struct sja1000_priv *priv = netdev_priv(dev);
unsigned char status = priv->read_reg(priv, SJA1000_MOD);
u8 mod_reg_val = 0x00;
int i;

for (i = 0; i < 100; i++) {
Expand All @@ -158,9 +159,10 @@ static void set_normal_mode(struct net_device *dev)

/* set chip to normal mode */
if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
priv->write_reg(priv, SJA1000_MOD, MOD_LOM);
else
priv->write_reg(priv, SJA1000_MOD, 0x00);
mod_reg_val |= MOD_LOM;
if (priv->can.ctrlmode & CAN_CTRLMODE_PRESUME_ACK)
mod_reg_val |= MOD_STM;
priv->write_reg(priv, SJA1000_MOD, mod_reg_val);

udelay(10);

Expand Down Expand Up @@ -632,7 +634,8 @@ struct net_device *alloc_sja1000dev(int sizeof_priv)
CAN_CTRLMODE_LISTENONLY |
CAN_CTRLMODE_3_SAMPLES |
CAN_CTRLMODE_ONE_SHOT |
CAN_CTRLMODE_BERR_REPORTING;
CAN_CTRLMODE_BERR_REPORTING |
CAN_CTRLMODE_PRESUME_ACK;

spin_lock_init(&priv->cmdreg_lock);

Expand Down

0 comments on commit 5b853ec

Please sign in to comment.