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()
670 netdev_dbg(ndev, "%s: error status register:0x%x\n", in xcan_err_interrupt()
682 static void xcan_state_interrupt(struct net_device *ndev, u32 isr) in xcan_state_interrupt() argument
684 struct xcan_priv *priv = netdev_priv(ndev); in xcan_state_interrupt()
707 struct net_device *ndev = napi->dev; in xcan_rx_poll() local
708 struct xcan_priv *priv = netdev_priv(ndev); in xcan_rx_poll()
717 work_done += xcan_rx(ndev); in xcan_rx_poll()
728 can_led_event(ndev, CAN_LED_EVENT_RX); in xcan_rx_poll()
744 static void xcan_tx_interrupt(struct net_device *ndev, u32 isr) in xcan_tx_interrupt() argument
746 struct xcan_priv *priv = netdev_priv(ndev); in xcan_tx_interrupt()
747 struct net_device_stats *stats = &ndev->stats; in xcan_tx_interrupt()
752 can_get_echo_skb(ndev, priv->tx_tail % in xcan_tx_interrupt()
758 can_led_event(ndev, CAN_LED_EVENT_TX); in xcan_tx_interrupt()
759 netif_wake_queue(ndev); in xcan_tx_interrupt()
775 struct net_device *ndev = (struct net_device *)dev_id; in xcan_interrupt() local
776 struct xcan_priv *priv = netdev_priv(ndev); in xcan_interrupt()
788 xcan_state_interrupt(ndev, isr); in xcan_interrupt()
793 xcan_tx_interrupt(ndev, isr); in xcan_interrupt()
801 xcan_err_interrupt(ndev, isr); in xcan_interrupt()
821 static void xcan_chip_stop(struct net_device *ndev) in xcan_chip_stop() argument
823 struct xcan_priv *priv = netdev_priv(ndev); in xcan_chip_stop()
841 static int xcan_open(struct net_device *ndev) in xcan_open() argument
843 struct xcan_priv *priv = netdev_priv(ndev); in xcan_open()
846 ret = request_irq(ndev->irq, xcan_interrupt, priv->irq_flags, in xcan_open()
847 ndev->name, ndev); in xcan_open()
849 netdev_err(ndev, "irq allocation for CAN failed\n"); in xcan_open()
855 netdev_err(ndev, "unable to enable device clock\n"); in xcan_open()
861 netdev_err(ndev, "unable to enable bus clock\n"); in xcan_open()
866 ret = set_reset_mode(ndev); in xcan_open()
868 netdev_err(ndev, "mode resetting failed!\n"); in xcan_open()
873 ret = open_candev(ndev); in xcan_open()
877 ret = xcan_chip_start(ndev); in xcan_open()
879 netdev_err(ndev, "xcan_chip_start failed!\n"); in xcan_open()
883 can_led_event(ndev, CAN_LED_EVENT_OPEN); in xcan_open()
885 netif_start_queue(ndev); in xcan_open()
890 close_candev(ndev); in xcan_open()
896 free_irq(ndev->irq, ndev); in xcan_open()
907 static int xcan_close(struct net_device *ndev) in xcan_close() argument
909 struct xcan_priv *priv = netdev_priv(ndev); in xcan_close()
911 netif_stop_queue(ndev); in xcan_close()
913 xcan_chip_stop(ndev); in xcan_close()
916 free_irq(ndev->irq, ndev); in xcan_close()
917 close_candev(ndev); in xcan_close()
919 can_led_event(ndev, CAN_LED_EVENT_STOP); in xcan_close()
932 static int xcan_get_berr_counter(const struct net_device *ndev, in xcan_get_berr_counter() argument
935 struct xcan_priv *priv = netdev_priv(ndev); in xcan_get_berr_counter()
979 struct net_device *ndev = platform_get_drvdata(pdev); in xcan_suspend() local
980 struct xcan_priv *priv = netdev_priv(ndev); in xcan_suspend()
982 if (netif_running(ndev)) { in xcan_suspend()
983 netif_stop_queue(ndev); in xcan_suspend()
984 netif_device_detach(ndev); in xcan_suspend()
1006 struct net_device *ndev = platform_get_drvdata(pdev); in xcan_resume() local
1007 struct xcan_priv *priv = netdev_priv(ndev); in xcan_resume()
1026 if (netif_running(ndev)) { in xcan_resume()
1027 netif_device_attach(ndev); in xcan_resume()
1028 netif_start_queue(ndev); in xcan_resume()
1048 struct net_device *ndev; in xcan_probe() local
1070 ndev = alloc_candev(sizeof(struct xcan_priv), tx_max); in xcan_probe()
1071 if (!ndev) in xcan_probe()
1074 priv = netdev_priv(ndev); in xcan_probe()
1075 priv->dev = ndev; in xcan_probe()
1085 ndev->irq = platform_get_irq(pdev, 0); in xcan_probe()
1086 ndev->flags |= IFF_ECHO; /* We support local echo */ in xcan_probe()
1088 platform_set_drvdata(pdev, ndev); in xcan_probe()
1089 SET_NETDEV_DEV(ndev, &pdev->dev); in xcan_probe()
1090 ndev->netdev_ops = &xcan_netdev_ops; in xcan_probe()
1139 netif_napi_add(ndev, &priv->napi, xcan_rx_poll, rx_max); in xcan_probe()
1141 ret = register_candev(ndev); in xcan_probe()
1147 devm_can_led_init(ndev); in xcan_probe()
1150 netdev_dbg(ndev, "reg_base=0x%p irq=%d clock=%d, tx fifo depth:%d\n", in xcan_probe()
1151 priv->reg_base, ndev->irq, priv->can.clock.freq, in xcan_probe()
1161 free_candev(ndev); in xcan_probe()
1175 struct net_device *ndev = platform_get_drvdata(pdev); in xcan_remove() local
1176 struct xcan_priv *priv = netdev_priv(ndev); in xcan_remove()
1178 if (set_reset_mode(ndev) < 0) in xcan_remove()
1179 netdev_err(ndev, "mode resetting failed!\n"); in xcan_remove()
1181 unregister_candev(ndev); in xcan_remove()
1183 free_candev(ndev); in xcan_remove()