Lines Matching refs:can

409 	struct can_priv can;  member
428 struct kvaser_pciefd_can *can[KVASER_PCIEFD_MAX_CAN_CHANNELS]; member
514 static inline void kvaser_pciefd_send_kcan_cmd(struct kvaser_pciefd_can *can, u32 cmd) in kvaser_pciefd_send_kcan_cmd() argument
517 FIELD_PREP(KVASER_PCIEFD_KCAN_CMD_SEQ_MASK, ++can->cmd_seq), in kvaser_pciefd_send_kcan_cmd()
518 can->reg_base + KVASER_PCIEFD_KCAN_CMD_REG); in kvaser_pciefd_send_kcan_cmd()
521 static inline void kvaser_pciefd_request_status(struct kvaser_pciefd_can *can) in kvaser_pciefd_request_status() argument
523 kvaser_pciefd_send_kcan_cmd(can, KVASER_PCIEFD_KCAN_CMD_SRQ); in kvaser_pciefd_request_status()
526 static inline void kvaser_pciefd_abort_flush_reset(struct kvaser_pciefd_can *can) in kvaser_pciefd_abort_flush_reset() argument
528 kvaser_pciefd_send_kcan_cmd(can, KVASER_PCIEFD_KCAN_CMD_AT); in kvaser_pciefd_abort_flush_reset()
531 static void kvaser_pciefd_enable_err_gen(struct kvaser_pciefd_can *can) in kvaser_pciefd_enable_err_gen() argument
536 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_enable_err_gen()
537 mode = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_enable_err_gen()
540 iowrite32(mode, can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_enable_err_gen()
542 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_enable_err_gen()
545 static void kvaser_pciefd_disable_err_gen(struct kvaser_pciefd_can *can) in kvaser_pciefd_disable_err_gen() argument
550 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_disable_err_gen()
551 mode = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_disable_err_gen()
553 iowrite32(mode, can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_disable_err_gen()
554 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_disable_err_gen()
557 static inline void kvaser_pciefd_set_tx_irq(struct kvaser_pciefd_can *can) in kvaser_pciefd_set_tx_irq() argument
567 iowrite32(msk, can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_set_tx_irq()
577 static void kvaser_pciefd_setup_controller(struct kvaser_pciefd_can *can) in kvaser_pciefd_setup_controller() argument
582 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_setup_controller()
583 mode = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_setup_controller()
584 if (can->can.ctrlmode & CAN_CTRLMODE_FD) { in kvaser_pciefd_setup_controller()
586 if (can->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO) in kvaser_pciefd_setup_controller()
595 if (can->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) in kvaser_pciefd_setup_controller()
604 iowrite32(mode, can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_setup_controller()
606 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_setup_controller()
609 static void kvaser_pciefd_start_controller_flush(struct kvaser_pciefd_can *can) in kvaser_pciefd_start_controller_flush() argument
614 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_start_controller_flush()
615 iowrite32(GENMASK(31, 0), can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_start_controller_flush()
617 can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_start_controller_flush()
618 status = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_STAT_REG); in kvaser_pciefd_start_controller_flush()
621 kvaser_pciefd_abort_flush_reset(can); in kvaser_pciefd_start_controller_flush()
626 mode = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_start_controller_flush()
628 iowrite32(mode, can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_start_controller_flush()
630 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_start_controller_flush()
633 static int kvaser_pciefd_bus_on(struct kvaser_pciefd_can *can) in kvaser_pciefd_bus_on() argument
638 timer_delete(&can->bec_poll_timer); in kvaser_pciefd_bus_on()
639 if (!completion_done(&can->flush_comp)) in kvaser_pciefd_bus_on()
640 kvaser_pciefd_start_controller_flush(can); in kvaser_pciefd_bus_on()
642 if (!wait_for_completion_timeout(&can->flush_comp, in kvaser_pciefd_bus_on()
644 netdev_err(can->can.dev, "Timeout during bus on flush\n"); in kvaser_pciefd_bus_on()
648 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_bus_on()
649 iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_bus_on()
650 iowrite32(GENMASK(31, 0), can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_bus_on()
652 can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_bus_on()
653 mode = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_bus_on()
655 iowrite32(mode, can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_bus_on()
656 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_bus_on()
658 if (!wait_for_completion_timeout(&can->start_comp, in kvaser_pciefd_bus_on()
660 netdev_err(can->can.dev, "Timeout during bus on reset\n"); in kvaser_pciefd_bus_on()
664 iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_bus_on()
665 iowrite32(GENMASK(31, 0), can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_bus_on()
667 kvaser_pciefd_set_tx_irq(can); in kvaser_pciefd_bus_on()
668 kvaser_pciefd_setup_controller(can); in kvaser_pciefd_bus_on()
669 can->can.state = CAN_STATE_ERROR_ACTIVE; in kvaser_pciefd_bus_on()
670 netif_wake_queue(can->can.dev); in kvaser_pciefd_bus_on()
671 can->bec.txerr = 0; in kvaser_pciefd_bus_on()
672 can->bec.rxerr = 0; in kvaser_pciefd_bus_on()
673 can->err_rep_cnt = 0; in kvaser_pciefd_bus_on()
678 static void kvaser_pciefd_pwm_stop(struct kvaser_pciefd_can *can) in kvaser_pciefd_pwm_stop() argument
684 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_pwm_stop()
685 pwm_ctrl = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_PWM_REG); in kvaser_pciefd_pwm_stop()
689 iowrite32(pwm_ctrl, can->reg_base + KVASER_PCIEFD_KCAN_PWM_REG); in kvaser_pciefd_pwm_stop()
690 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_pwm_stop()
693 static void kvaser_pciefd_pwm_start(struct kvaser_pciefd_can *can) in kvaser_pciefd_pwm_start() argument
699 kvaser_pciefd_pwm_stop(can); in kvaser_pciefd_pwm_start()
700 spin_lock_irqsave(&can->lock, irq); in kvaser_pciefd_pwm_start()
702 top = can->kv_pcie->bus_freq / (2 * 500000) - 1; in kvaser_pciefd_pwm_start()
706 iowrite32(pwm_ctrl, can->reg_base + KVASER_PCIEFD_KCAN_PWM_REG); in kvaser_pciefd_pwm_start()
712 iowrite32(pwm_ctrl, can->reg_base + KVASER_PCIEFD_KCAN_PWM_REG); in kvaser_pciefd_pwm_start()
713 spin_unlock_irqrestore(&can->lock, irq); in kvaser_pciefd_pwm_start()
719 struct kvaser_pciefd_can *can = netdev_priv(netdev); in kvaser_pciefd_open() local
721 can->tx_idx = 0; in kvaser_pciefd_open()
722 can->ack_idx = 0; in kvaser_pciefd_open()
728 ret = kvaser_pciefd_bus_on(can); in kvaser_pciefd_open()
739 struct kvaser_pciefd_can *can = netdev_priv(netdev); in kvaser_pciefd_stop() local
743 if (!completion_done(&can->flush_comp)) in kvaser_pciefd_stop()
744 kvaser_pciefd_start_controller_flush(can); in kvaser_pciefd_stop()
746 if (!wait_for_completion_timeout(&can->flush_comp, in kvaser_pciefd_stop()
748 netdev_err(can->can.dev, "Timeout during stop\n"); in kvaser_pciefd_stop()
751 iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_stop()
752 timer_delete(&can->bec_poll_timer); in kvaser_pciefd_stop()
754 can->can.state = CAN_STATE_STOPPED; in kvaser_pciefd_stop()
761 static unsigned int kvaser_pciefd_tx_avail(const struct kvaser_pciefd_can *can) in kvaser_pciefd_tx_avail() argument
763 return can->tx_max_count - (READ_ONCE(can->tx_idx) - READ_ONCE(can->ack_idx)); in kvaser_pciefd_tx_avail()
767 struct can_priv *can, u8 seq, in kvaser_pciefd_prepare_tx_packet() argument
774 if (can->ctrlmode & CAN_CTRLMODE_ONE_SHOT) in kvaser_pciefd_prepare_tx_packet()
797 can_get_cc_dlc((struct can_frame *)cf, can->ctrlmode)); in kvaser_pciefd_prepare_tx_packet()
811 struct kvaser_pciefd_can *can = netdev_priv(netdev); in kvaser_pciefd_start_xmit() local
813 unsigned int seq = can->tx_idx & (can->can.echo_skb_max - 1); in kvaser_pciefd_start_xmit()
819 if (!netif_subqueue_maybe_stop(netdev, 0, kvaser_pciefd_tx_avail(can), 1, 1)) in kvaser_pciefd_start_xmit()
822 nr_words = kvaser_pciefd_prepare_tx_packet(&packet, &can->can, seq, skb); in kvaser_pciefd_start_xmit()
825 WRITE_ONCE(can->can.echo_skb[seq], NULL); in kvaser_pciefd_start_xmit()
829 WRITE_ONCE(can->tx_idx, can->tx_idx + 1); in kvaser_pciefd_start_xmit()
833 can->reg_base + KVASER_PCIEFD_KCAN_FIFO_REG); in kvaser_pciefd_start_xmit()
835 can->reg_base + KVASER_PCIEFD_KCAN_FIFO_REG); in kvaser_pciefd_start_xmit()
841 iowrite32_rep(can->reg_base + in kvaser_pciefd_start_xmit()
845 __raw_writel(data_last, can->reg_base + in kvaser_pciefd_start_xmit()
849 __raw_writel(0, can->reg_base + in kvaser_pciefd_start_xmit()
853 netif_subqueue_maybe_stop(netdev, 0, kvaser_pciefd_tx_avail(can), 1, 1); in kvaser_pciefd_start_xmit()
858 static int kvaser_pciefd_set_bittiming(struct kvaser_pciefd_can *can, bool data) in kvaser_pciefd_set_bittiming() argument
866 bt = &can->can.fd.data_bittiming; in kvaser_pciefd_set_bittiming()
868 bt = &can->can.bittiming; in kvaser_pciefd_set_bittiming()
875 spin_lock_irqsave(&can->lock, irq_flags); in kvaser_pciefd_set_bittiming()
876 mode = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_set_bittiming()
879 can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_set_bittiming()
882 ret = readl_poll_timeout(can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG, in kvaser_pciefd_set_bittiming()
885 spin_unlock_irqrestore(&can->lock, irq_flags); in kvaser_pciefd_set_bittiming()
890 iowrite32(btrn, can->reg_base + KVASER_PCIEFD_KCAN_BTRD_REG); in kvaser_pciefd_set_bittiming()
892 iowrite32(btrn, can->reg_base + KVASER_PCIEFD_KCAN_BTRN_REG); in kvaser_pciefd_set_bittiming()
894 iowrite32(mode, can->reg_base + KVASER_PCIEFD_KCAN_MODE_REG); in kvaser_pciefd_set_bittiming()
895 spin_unlock_irqrestore(&can->lock, irq_flags); in kvaser_pciefd_set_bittiming()
912 struct kvaser_pciefd_can *can = netdev_priv(ndev); in kvaser_pciefd_set_mode() local
917 if (!can->can.restart_ms) in kvaser_pciefd_set_mode()
918 ret = kvaser_pciefd_bus_on(can); in kvaser_pciefd_set_mode()
930 struct kvaser_pciefd_can *can = netdev_priv(ndev); in kvaser_pciefd_get_berr_counter() local
932 bec->rxerr = can->bec.rxerr; in kvaser_pciefd_get_berr_counter()
933 bec->txerr = can->bec.txerr; in kvaser_pciefd_get_berr_counter()
940 struct kvaser_pciefd_can *can = timer_container_of(can, data, in kvaser_pciefd_bec_poll_timer() local
943 kvaser_pciefd_enable_err_gen(can); in kvaser_pciefd_bec_poll_timer()
944 kvaser_pciefd_request_status(can); in kvaser_pciefd_bec_poll_timer()
945 can->err_rep_cnt = 0; in kvaser_pciefd_bec_poll_timer()
966 struct kvaser_pciefd_can *can; in kvaser_pciefd_setup_can_ctrls() local
974 can = netdev_priv(netdev); in kvaser_pciefd_setup_can_ctrls()
977 can->reg_base = KVASER_PCIEFD_KCAN_CHX_ADDR(pcie, i); in kvaser_pciefd_setup_can_ctrls()
978 can->kv_pcie = pcie; in kvaser_pciefd_setup_can_ctrls()
979 can->cmd_seq = 0; in kvaser_pciefd_setup_can_ctrls()
980 can->err_rep_cnt = 0; in kvaser_pciefd_setup_can_ctrls()
981 can->completed_tx_pkts = 0; in kvaser_pciefd_setup_can_ctrls()
982 can->completed_tx_bytes = 0; in kvaser_pciefd_setup_can_ctrls()
983 can->bec.txerr = 0; in kvaser_pciefd_setup_can_ctrls()
984 can->bec.rxerr = 0; in kvaser_pciefd_setup_can_ctrls()
986 init_completion(&can->start_comp); in kvaser_pciefd_setup_can_ctrls()
987 init_completion(&can->flush_comp); in kvaser_pciefd_setup_can_ctrls()
988 timer_setup(&can->bec_poll_timer, kvaser_pciefd_bec_poll_timer, 0); in kvaser_pciefd_setup_can_ctrls()
991 iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_BUS_LOAD_REG); in kvaser_pciefd_setup_can_ctrls()
995 ioread32(can->reg_base + KVASER_PCIEFD_KCAN_TX_NR_PACKETS_REG)); in kvaser_pciefd_setup_can_ctrls()
996 can->tx_max_count = min(KVASER_PCIEFD_CAN_TX_MAX_COUNT, tx_nr_packets_max - 1); in kvaser_pciefd_setup_can_ctrls()
998 can->can.clock.freq = pcie->freq; in kvaser_pciefd_setup_can_ctrls()
999 spin_lock_init(&can->lock); in kvaser_pciefd_setup_can_ctrls()
1001 can->can.bittiming_const = &kvaser_pciefd_bittiming_const; in kvaser_pciefd_setup_can_ctrls()
1002 can->can.fd.data_bittiming_const = &kvaser_pciefd_bittiming_const; in kvaser_pciefd_setup_can_ctrls()
1003 can->can.do_set_bittiming = kvaser_pciefd_set_nominal_bittiming; in kvaser_pciefd_setup_can_ctrls()
1004 can->can.fd.do_set_data_bittiming = kvaser_pciefd_set_data_bittiming; in kvaser_pciefd_setup_can_ctrls()
1005 can->can.do_set_mode = kvaser_pciefd_set_mode; in kvaser_pciefd_setup_can_ctrls()
1006 can->can.do_get_berr_counter = kvaser_pciefd_get_berr_counter; in kvaser_pciefd_setup_can_ctrls()
1007 can->can.ctrlmode_supported = CAN_CTRLMODE_LISTENONLY | in kvaser_pciefd_setup_can_ctrls()
1013 status = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_STAT_REG); in kvaser_pciefd_setup_can_ctrls()
1023 can->can.ctrlmode_supported |= CAN_CTRLMODE_ONE_SHOT; in kvaser_pciefd_setup_can_ctrls()
1028 iowrite32(GENMASK(31, 0), can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_setup_can_ctrls()
1030 can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_setup_can_ctrls()
1032 pcie->can[i] = can; in kvaser_pciefd_setup_can_ctrls()
1033 kvaser_pciefd_pwm_start(can); in kvaser_pciefd_setup_can_ctrls()
1044 int ret = register_candev(pcie->can[i]->can.dev); in kvaser_pciefd_reg_candev()
1051 unregister_candev(pcie->can[j]->can.dev); in kvaser_pciefd_reg_candev()
1205 priv = &pcie->can[ch_id]->can; in kvaser_pciefd_handle_data_packet()
1247 static void kvaser_pciefd_change_state(struct kvaser_pciefd_can *can, in kvaser_pciefd_change_state() argument
1256 old_state = can->can.state; in kvaser_pciefd_change_state()
1257 can_change_state(can->can.dev, cf, tx_state, rx_state); in kvaser_pciefd_change_state()
1260 struct net_device *ndev = can->can.dev; in kvaser_pciefd_change_state()
1263 spin_lock_irqsave(&can->lock, irq_flags); in kvaser_pciefd_change_state()
1264 netif_stop_queue(can->can.dev); in kvaser_pciefd_change_state()
1265 spin_unlock_irqrestore(&can->lock, irq_flags); in kvaser_pciefd_change_state()
1267 if (!can->can.restart_ms) { in kvaser_pciefd_change_state()
1268 kvaser_pciefd_start_controller_flush(can); in kvaser_pciefd_change_state()
1274 can->can.restart_ms) { in kvaser_pciefd_change_state()
1275 can->can.can_stats.restarts++; in kvaser_pciefd_change_state()
1312 static int kvaser_pciefd_rx_error_frame(struct kvaser_pciefd_can *can, in kvaser_pciefd_rx_error_frame() argument
1317 struct net_device *ndev = can->can.dev; in kvaser_pciefd_rx_error_frame()
1321 old_state = can->can.state; in kvaser_pciefd_rx_error_frame()
1327 if (can->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) in kvaser_pciefd_rx_error_frame()
1330 kvaser_pciefd_change_state(can, &bec, cf, new_state, tx_state, rx_state); in kvaser_pciefd_rx_error_frame()
1333 can->err_rep_cnt++; in kvaser_pciefd_rx_error_frame()
1334 can->can.can_stats.bus_error++; in kvaser_pciefd_rx_error_frame()
1340 can->bec.txerr = bec.txerr; in kvaser_pciefd_rx_error_frame()
1341 can->bec.rxerr = bec.rxerr; in kvaser_pciefd_rx_error_frame()
1343 if (can->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) { in kvaser_pciefd_rx_error_frame()
1349 kvaser_pciefd_set_skb_timestamp(can->kv_pcie, skb, p->timestamp); in kvaser_pciefd_rx_error_frame()
1362 struct kvaser_pciefd_can *can; in kvaser_pciefd_handle_error_packet() local
1368 can = pcie->can[ch_id]; in kvaser_pciefd_handle_error_packet()
1369 kvaser_pciefd_rx_error_frame(can, p); in kvaser_pciefd_handle_error_packet()
1370 if (can->err_rep_cnt >= KVASER_PCIEFD_MAX_ERR_REP) in kvaser_pciefd_handle_error_packet()
1372 kvaser_pciefd_disable_err_gen(can); in kvaser_pciefd_handle_error_packet()
1374 mod_timer(&can->bec_poll_timer, KVASER_PCIEFD_BEC_POLL_FREQ); in kvaser_pciefd_handle_error_packet()
1379 static int kvaser_pciefd_handle_status_resp(struct kvaser_pciefd_can *can, in kvaser_pciefd_handle_status_resp() argument
1386 old_state = can->can.state; in kvaser_pciefd_handle_status_resp()
1393 struct net_device *ndev = can->can.dev; in kvaser_pciefd_handle_status_resp()
1398 kvaser_pciefd_change_state(can, &bec, cf, new_state, tx_state, rx_state); in kvaser_pciefd_handle_status_resp()
1400 kvaser_pciefd_set_skb_timestamp(can->kv_pcie, skb, p->timestamp); in kvaser_pciefd_handle_status_resp()
1408 can->bec.txerr = bec.txerr; in kvaser_pciefd_handle_status_resp()
1409 can->bec.rxerr = bec.rxerr; in kvaser_pciefd_handle_status_resp()
1412 mod_timer(&can->bec_poll_timer, KVASER_PCIEFD_BEC_POLL_FREQ); in kvaser_pciefd_handle_status_resp()
1420 struct kvaser_pciefd_can *can; in kvaser_pciefd_handle_status_packet() local
1428 can = pcie->can[ch_id]; in kvaser_pciefd_handle_status_packet()
1430 status = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_STAT_REG); in kvaser_pciefd_handle_status_packet()
1440 can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_handle_status_packet()
1441 kvaser_pciefd_abort_flush_reset(can); in kvaser_pciefd_handle_status_packet()
1450 ioread32(can->reg_base + KVASER_PCIEFD_KCAN_TX_NR_PACKETS_REG)); in kvaser_pciefd_handle_status_packet()
1454 can->reg_base + KVASER_PCIEFD_KCAN_CTRL_REG); in kvaser_pciefd_handle_status_packet()
1458 kvaser_pciefd_handle_status_resp(can, p); in kvaser_pciefd_handle_status_packet()
1459 if (can->can.state != CAN_STATE_BUS_OFF && in kvaser_pciefd_handle_status_packet()
1460 can->can.state != CAN_STATE_ERROR_ACTIVE) { in kvaser_pciefd_handle_status_packet()
1461 mod_timer(&can->bec_poll_timer, KVASER_PCIEFD_BEC_POLL_FREQ); in kvaser_pciefd_handle_status_packet()
1466 if (!completion_done(&can->start_comp)) in kvaser_pciefd_handle_status_packet()
1467 complete(&can->start_comp); in kvaser_pciefd_handle_status_packet()
1473 static void kvaser_pciefd_handle_nack_packet(struct kvaser_pciefd_can *can, in kvaser_pciefd_handle_nack_packet() argument
1479 skb = alloc_can_err_skb(can->can.dev, &cf); in kvaser_pciefd_handle_nack_packet()
1480 can->can.dev->stats.tx_errors++; in kvaser_pciefd_handle_nack_packet()
1484 can->can.can_stats.arbitration_lost++; in kvaser_pciefd_handle_nack_packet()
1491 kvaser_pciefd_set_skb_timestamp(can->kv_pcie, skb, p->timestamp); in kvaser_pciefd_handle_nack_packet()
1494 can->can.dev->stats.rx_dropped++; in kvaser_pciefd_handle_nack_packet()
1495 netdev_warn(can->can.dev, "No memory left for err_skb\n"); in kvaser_pciefd_handle_nack_packet()
1502 struct kvaser_pciefd_can *can; in kvaser_pciefd_handle_ack_packet() local
1509 can = pcie->can[ch_id]; in kvaser_pciefd_handle_ack_packet()
1515 kvaser_pciefd_handle_nack_packet(can, p); in kvaser_pciefd_handle_ack_packet()
1520 netdev_dbg(can->can.dev, "Packet was flushed\n"); in kvaser_pciefd_handle_ack_packet()
1526 if (echo_idx != (can->ack_idx & (can->can.echo_skb_max - 1))) in kvaser_pciefd_handle_ack_packet()
1528 skb = can->can.echo_skb[echo_idx]; in kvaser_pciefd_handle_ack_packet()
1532 len = can_get_echo_skb(can->can.dev, echo_idx, &frame_len); in kvaser_pciefd_handle_ack_packet()
1535 smp_store_release(&can->ack_idx, can->ack_idx + 1); in kvaser_pciefd_handle_ack_packet()
1536 can->completed_tx_pkts++; in kvaser_pciefd_handle_ack_packet()
1537 can->completed_tx_bytes += frame_len; in kvaser_pciefd_handle_ack_packet()
1540 can->can.dev->stats.tx_bytes += len; in kvaser_pciefd_handle_ack_packet()
1541 can->can.dev->stats.tx_packets++; in kvaser_pciefd_handle_ack_packet()
1551 struct kvaser_pciefd_can *can; in kvaser_pciefd_handle_eflush_packet() local
1557 can = pcie->can[ch_id]; in kvaser_pciefd_handle_eflush_packet()
1559 if (!completion_done(&can->flush_comp)) in kvaser_pciefd_handle_eflush_packet()
1560 complete(&can->flush_comp); in kvaser_pciefd_handle_eflush_packet()
1661 struct kvaser_pciefd_can *can = pcie->can[i]; in kvaser_pciefd_read_buffer() local
1663 if (!can->completed_tx_pkts) in kvaser_pciefd_read_buffer()
1665 netif_subqueue_completed_wake(can->can.dev, 0, in kvaser_pciefd_read_buffer()
1666 can->completed_tx_pkts, in kvaser_pciefd_read_buffer()
1667 can->completed_tx_bytes, in kvaser_pciefd_read_buffer()
1668 kvaser_pciefd_tx_avail(can), 1); in kvaser_pciefd_read_buffer()
1669 can->completed_tx_pkts = 0; in kvaser_pciefd_read_buffer()
1670 can->completed_tx_bytes = 0; in kvaser_pciefd_read_buffer()
1700 static void kvaser_pciefd_transmit_irq(struct kvaser_pciefd_can *can) in kvaser_pciefd_transmit_irq() argument
1702 u32 irq = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_transmit_irq()
1705 netdev_err(can->can.dev, "Tx FIFO overflow\n"); in kvaser_pciefd_transmit_irq()
1708 netdev_err(can->can.dev, in kvaser_pciefd_transmit_irq()
1712 netdev_err(can->can.dev, "CAN FD frame in CAN mode\n"); in kvaser_pciefd_transmit_irq()
1715 netdev_err(can->can.dev, "Rx FIFO overflow\n"); in kvaser_pciefd_transmit_irq()
1717 iowrite32(irq, can->reg_base + KVASER_PCIEFD_KCAN_IRQ_REG); in kvaser_pciefd_transmit_irq()
1737 kvaser_pciefd_transmit_irq(pcie->can[i]); in kvaser_pciefd_irq_handler()
1750 struct kvaser_pciefd_can *can = pcie->can[i]; in kvaser_pciefd_teardown_can_ctrls() local
1752 if (can) { in kvaser_pciefd_teardown_can_ctrls()
1753 iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_teardown_can_ctrls()
1754 kvaser_pciefd_pwm_stop(can); in kvaser_pciefd_teardown_can_ctrls()
1755 free_candev(can->can.dev); in kvaser_pciefd_teardown_can_ctrls()
1767 iowrite32(0, pcie->can[i]->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); in kvaser_pciefd_disable_irq_srcs()
1884 struct kvaser_pciefd_can *can = pcie->can[i]; in kvaser_pciefd_remove() local
1886 unregister_candev(can->can.dev); in kvaser_pciefd_remove()
1887 timer_delete(&can->bec_poll_timer); in kvaser_pciefd_remove()
1888 kvaser_pciefd_pwm_stop(can); in kvaser_pciefd_remove()
1896 free_candev(pcie->can[i]->can.dev); in kvaser_pciefd_remove()