Lines Matching refs:ndev
224 static int set_reset_mode(struct net_device *ndev) in set_reset_mode() argument
226 struct xcan_priv *priv = netdev_priv(ndev); in set_reset_mode()
234 netdev_warn(ndev, "timed out for config mode\n"); in set_reset_mode()
250 static int xcan_set_bittiming(struct net_device *ndev) in xcan_set_bittiming() argument
252 struct xcan_priv *priv = netdev_priv(ndev); in xcan_set_bittiming()
263 netdev_alert(ndev, in xcan_set_bittiming()
283 netdev_dbg(ndev, "BRPR=0x%08x, BTR=0x%08x\n", in xcan_set_bittiming()
300 static int xcan_chip_start(struct net_device *ndev) in xcan_chip_start() argument
302 struct xcan_priv *priv = netdev_priv(ndev); in xcan_chip_start()
308 err = set_reset_mode(ndev); in xcan_chip_start()
312 err = xcan_set_bittiming(ndev); in xcan_chip_start()
334 netdev_warn(ndev, in xcan_chip_start()
339 netdev_dbg(ndev, "status:#x%08x\n", in xcan_chip_start()
356 static int xcan_do_set_mode(struct net_device *ndev, enum can_mode mode) in xcan_do_set_mode() argument
362 ret = xcan_chip_start(ndev); in xcan_do_set_mode()
364 netdev_err(ndev, "xcan_chip_start failed!\n"); in xcan_do_set_mode()
367 netif_wake_queue(ndev); in xcan_do_set_mode()
388 static int xcan_start_xmit(struct sk_buff *skb, struct net_device *ndev) in xcan_start_xmit() argument
390 struct xcan_priv *priv = netdev_priv(ndev); in xcan_start_xmit()
391 struct net_device_stats *stats = &ndev->stats; in xcan_start_xmit()
395 if (can_dropped_invalid_skb(ndev, skb)) in xcan_start_xmit()
401 netif_stop_queue(ndev); in xcan_start_xmit()
402 netdev_err(ndev, "BUG!, TX FIFO full when queue awake!\n"); in xcan_start_xmit()
440 can_put_echo_skb(skb, ndev, priv->tx_head % priv->tx_max); in xcan_start_xmit()
458 netif_stop_queue(ndev); in xcan_start_xmit()
473 static int xcan_rx(struct net_device *ndev) in xcan_rx() argument
475 struct xcan_priv *priv = netdev_priv(ndev); in xcan_rx()
476 struct net_device_stats *stats = &ndev->stats; in xcan_rx()
481 skb = alloc_can_skb(ndev, &cf); in xcan_rx()
540 static void xcan_err_interrupt(struct net_device *ndev, u32 isr) in xcan_err_interrupt() argument
542 struct xcan_priv *priv = netdev_priv(ndev); in xcan_err_interrupt()
543 struct net_device_stats *stats = &ndev->stats; in xcan_err_interrupt()
548 skb = alloc_can_err_skb(ndev, &cf); in xcan_err_interrupt()
562 can_bus_off(ndev); in xcan_err_interrupt()
667 netdev_dbg(ndev, "%s: error status register:0x%x\n", in xcan_err_interrupt()
679 static void xcan_state_interrupt(struct net_device *ndev, u32 isr) in xcan_state_interrupt() argument
681 struct xcan_priv *priv = netdev_priv(ndev); in xcan_state_interrupt()
704 struct net_device *ndev = napi->dev; in xcan_rx_poll() local
705 struct xcan_priv *priv = netdev_priv(ndev); in xcan_rx_poll()
714 work_done += xcan_rx(ndev); in xcan_rx_poll()
725 can_led_event(ndev, CAN_LED_EVENT_RX); in xcan_rx_poll()
741 static void xcan_tx_interrupt(struct net_device *ndev, u32 isr) in xcan_tx_interrupt() argument
743 struct xcan_priv *priv = netdev_priv(ndev); in xcan_tx_interrupt()
744 struct net_device_stats *stats = &ndev->stats; in xcan_tx_interrupt()
749 can_get_echo_skb(ndev, priv->tx_tail % in xcan_tx_interrupt()
755 can_led_event(ndev, CAN_LED_EVENT_TX); in xcan_tx_interrupt()
756 netif_wake_queue(ndev); in xcan_tx_interrupt()
772 struct net_device *ndev = (struct net_device *)dev_id; in xcan_interrupt() local
773 struct xcan_priv *priv = netdev_priv(ndev); in xcan_interrupt()
785 xcan_state_interrupt(ndev, isr); in xcan_interrupt()
790 xcan_tx_interrupt(ndev, isr); in xcan_interrupt()
798 xcan_err_interrupt(ndev, isr); in xcan_interrupt()
818 static void xcan_chip_stop(struct net_device *ndev) in xcan_chip_stop() argument
820 struct xcan_priv *priv = netdev_priv(ndev); in xcan_chip_stop()
838 static int xcan_open(struct net_device *ndev) in xcan_open() argument
840 struct xcan_priv *priv = netdev_priv(ndev); in xcan_open()
843 ret = request_irq(ndev->irq, xcan_interrupt, priv->irq_flags, in xcan_open()
844 ndev->name, ndev); in xcan_open()
846 netdev_err(ndev, "irq allocation for CAN failed\n"); in xcan_open()
852 netdev_err(ndev, "unable to enable device clock\n"); in xcan_open()
858 netdev_err(ndev, "unable to enable bus clock\n"); in xcan_open()
863 ret = set_reset_mode(ndev); in xcan_open()
865 netdev_err(ndev, "mode resetting failed!\n"); in xcan_open()
870 ret = open_candev(ndev); in xcan_open()
874 ret = xcan_chip_start(ndev); in xcan_open()
876 netdev_err(ndev, "xcan_chip_start failed!\n"); in xcan_open()
880 can_led_event(ndev, CAN_LED_EVENT_OPEN); in xcan_open()
882 netif_start_queue(ndev); in xcan_open()
887 close_candev(ndev); in xcan_open()
893 free_irq(ndev->irq, ndev); in xcan_open()
904 static int xcan_close(struct net_device *ndev) in xcan_close() argument
906 struct xcan_priv *priv = netdev_priv(ndev); in xcan_close()
908 netif_stop_queue(ndev); in xcan_close()
910 xcan_chip_stop(ndev); in xcan_close()
913 free_irq(ndev->irq, ndev); in xcan_close()
914 close_candev(ndev); in xcan_close()
916 can_led_event(ndev, CAN_LED_EVENT_STOP); in xcan_close()
929 static int xcan_get_berr_counter(const struct net_device *ndev, in xcan_get_berr_counter() argument
932 struct xcan_priv *priv = netdev_priv(ndev); in xcan_get_berr_counter()
976 struct net_device *ndev = platform_get_drvdata(pdev); in xcan_suspend() local
977 struct xcan_priv *priv = netdev_priv(ndev); in xcan_suspend()
979 if (netif_running(ndev)) { in xcan_suspend()
980 netif_stop_queue(ndev); in xcan_suspend()
981 netif_device_detach(ndev); in xcan_suspend()
1003 struct net_device *ndev = platform_get_drvdata(pdev); in xcan_resume() local
1004 struct xcan_priv *priv = netdev_priv(ndev); in xcan_resume()
1023 if (netif_running(ndev)) { in xcan_resume()
1024 netif_device_attach(ndev); in xcan_resume()
1025 netif_start_queue(ndev); in xcan_resume()
1045 struct net_device *ndev; in xcan_probe() local
1067 ndev = alloc_candev(sizeof(struct xcan_priv), tx_max); in xcan_probe()
1068 if (!ndev) in xcan_probe()
1071 priv = netdev_priv(ndev); in xcan_probe()
1072 priv->dev = ndev; in xcan_probe()
1082 ndev->irq = platform_get_irq(pdev, 0); in xcan_probe()
1083 ndev->flags |= IFF_ECHO; /* We support local echo */ in xcan_probe()
1085 platform_set_drvdata(pdev, ndev); in xcan_probe()
1086 SET_NETDEV_DEV(ndev, &pdev->dev); in xcan_probe()
1087 ndev->netdev_ops = &xcan_netdev_ops; in xcan_probe()
1136 netif_napi_add(ndev, &priv->napi, xcan_rx_poll, rx_max); in xcan_probe()
1138 ret = register_candev(ndev); in xcan_probe()
1144 devm_can_led_init(ndev); in xcan_probe()
1147 netdev_dbg(ndev, "reg_base=0x%p irq=%d clock=%d, tx fifo depth:%d\n", in xcan_probe()
1148 priv->reg_base, ndev->irq, priv->can.clock.freq, in xcan_probe()
1158 free_candev(ndev); in xcan_probe()
1172 struct net_device *ndev = platform_get_drvdata(pdev); in xcan_remove() local
1173 struct xcan_priv *priv = netdev_priv(ndev); in xcan_remove()
1175 if (set_reset_mode(ndev) < 0) in xcan_remove()
1176 netdev_err(ndev, "mode resetting failed!\n"); in xcan_remove()
1178 unregister_candev(ndev); in xcan_remove()
1180 free_candev(ndev); in xcan_remove()