提交 d2c2490e 编写于 作者: D David S. Miller

Merge tag 'linux-can-fixes-for-4.14-20171024' of...

Merge tag 'linux-can-fixes-for-4.14-20171024' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can

Marc Kleine-Budde says:

====================
pull-request: can 2017-10-24

here's another pull request for net/master.

The patch by Gerhard Bertelsmann fixes the CAN_CTRLMODE_LOOPBACK in the
sun4i driver. Two patches by Jimmy Assarsson for the kvaser_usb driver
fix a print in the error path of the kvaser_usb_close() and remove a
wrong warning message with the Leaf v2 firmware version v4.1.844.
====================
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
...@@ -342,7 +342,7 @@ static int sun4i_can_start(struct net_device *dev) ...@@ -342,7 +342,7 @@ static int sun4i_can_start(struct net_device *dev)
/* enter the selected mode */ /* enter the selected mode */
mod_reg_val = readl(priv->base + SUN4I_REG_MSEL_ADDR); mod_reg_val = readl(priv->base + SUN4I_REG_MSEL_ADDR);
if (priv->can.ctrlmode & CAN_CTRLMODE_PRESUME_ACK) if (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK)
mod_reg_val |= SUN4I_MSEL_LOOPBACK_MODE; mod_reg_val |= SUN4I_MSEL_LOOPBACK_MODE;
else if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) else if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
mod_reg_val |= SUN4I_MSEL_LISTEN_ONLY_MODE; mod_reg_val |= SUN4I_MSEL_LISTEN_ONLY_MODE;
...@@ -811,7 +811,6 @@ static int sun4ican_probe(struct platform_device *pdev) ...@@ -811,7 +811,6 @@ static int sun4ican_probe(struct platform_device *pdev)
priv->can.ctrlmode_supported = CAN_CTRLMODE_BERR_REPORTING | priv->can.ctrlmode_supported = CAN_CTRLMODE_BERR_REPORTING |
CAN_CTRLMODE_LISTENONLY | CAN_CTRLMODE_LISTENONLY |
CAN_CTRLMODE_LOOPBACK | CAN_CTRLMODE_LOOPBACK |
CAN_CTRLMODE_PRESUME_ACK |
CAN_CTRLMODE_3_SAMPLES; CAN_CTRLMODE_3_SAMPLES;
priv->base = addr; priv->base = addr;
priv->clk = clk; priv->clk = clk;
......
...@@ -137,6 +137,7 @@ static inline bool kvaser_is_usbcan(const struct usb_device_id *id) ...@@ -137,6 +137,7 @@ static inline bool kvaser_is_usbcan(const struct usb_device_id *id)
#define CMD_RESET_ERROR_COUNTER 49 #define CMD_RESET_ERROR_COUNTER 49
#define CMD_TX_ACKNOWLEDGE 50 #define CMD_TX_ACKNOWLEDGE 50
#define CMD_CAN_ERROR_EVENT 51 #define CMD_CAN_ERROR_EVENT 51
#define CMD_FLUSH_QUEUE_REPLY 68
#define CMD_LEAF_USB_THROTTLE 77 #define CMD_LEAF_USB_THROTTLE 77
#define CMD_LEAF_LOG_MESSAGE 106 #define CMD_LEAF_LOG_MESSAGE 106
...@@ -1301,6 +1302,11 @@ static void kvaser_usb_handle_message(const struct kvaser_usb *dev, ...@@ -1301,6 +1302,11 @@ static void kvaser_usb_handle_message(const struct kvaser_usb *dev,
goto warn; goto warn;
break; break;
case CMD_FLUSH_QUEUE_REPLY:
if (dev->family != KVASER_LEAF)
goto warn;
break;
default: default:
warn: dev_warn(dev->udev->dev.parent, warn: dev_warn(dev->udev->dev.parent,
"Unhandled message (%d)\n", msg->id); "Unhandled message (%d)\n", msg->id);
...@@ -1609,7 +1615,8 @@ static int kvaser_usb_close(struct net_device *netdev) ...@@ -1609,7 +1615,8 @@ static int kvaser_usb_close(struct net_device *netdev)
if (err) if (err)
netdev_warn(netdev, "Cannot flush queue, error %d\n", err); netdev_warn(netdev, "Cannot flush queue, error %d\n", err);
if (kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, priv->channel)) err = kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, priv->channel);
if (err)
netdev_warn(netdev, "Cannot reset card, error %d\n", err); netdev_warn(netdev, "Cannot reset card, error %d\n", err);
err = kvaser_usb_stop_chip(priv); err = kvaser_usb_stop_chip(priv);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册