Lines Matching refs:mod
266 static inline void ican3_set_page(struct ican3_dev *mod, unsigned int page) in ican3_set_page() argument
269 iowrite8(page, &mod->dpmctrl->window_address); in ican3_set_page()
283 static int ican3_old_recv_msg(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_old_recv_msg() argument
289 ican3_set_page(mod, QUEUE_OLD_CONTROL); in ican3_old_recv_msg()
290 peer = ioread8(mod->dpm + MSYNC_PEER); in ican3_old_recv_msg()
291 locl = ioread8(mod->dpm + MSYNC_LOCL); in ican3_old_recv_msg()
295 netdev_dbg(mod->ndev, "no mbox for reading\n"); in ican3_old_recv_msg()
307 ican3_set_page(mod, mbox_page); in ican3_old_recv_msg()
308 memcpy_fromio(msg, mod->dpm, sizeof(*msg)); in ican3_old_recv_msg()
316 ican3_set_page(mod, QUEUE_OLD_CONTROL); in ican3_old_recv_msg()
317 iowrite8(locl, mod->dpm + MSYNC_LOCL); in ican3_old_recv_msg()
328 static int ican3_old_send_msg(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_old_send_msg() argument
334 ican3_set_page(mod, QUEUE_OLD_CONTROL); in ican3_old_send_msg()
335 peer = ioread8(mod->dpm + MSYNC_PEER); in ican3_old_send_msg()
336 locl = ioread8(mod->dpm + MSYNC_LOCL); in ican3_old_send_msg()
340 netdev_err(mod->ndev, "no mbox for writing\n"); in ican3_old_send_msg()
349 ican3_set_page(mod, mbox_page); in ican3_old_send_msg()
350 memcpy_toio(mod->dpm, msg, sizeof(*msg)); in ican3_old_send_msg()
356 ican3_set_page(mod, QUEUE_OLD_CONTROL); in ican3_old_send_msg()
357 iowrite8(locl, mod->dpm + MSYNC_LOCL); in ican3_old_send_msg()
365 static void ican3_init_new_host_interface(struct ican3_dev *mod) in ican3_init_new_host_interface() argument
372 spin_lock_irqsave(&mod->lock, flags); in ican3_init_new_host_interface()
375 mod->rx_num = 0; in ican3_init_new_host_interface()
376 mod->rx_int = 0; in ican3_init_new_host_interface()
379 ican3_set_page(mod, QUEUE_TOHOST); in ican3_init_new_host_interface()
380 dst = mod->dpm; in ican3_init_new_host_interface()
385 desc.pointer = mod->free_page; in ican3_init_new_host_interface()
393 mod->free_page++; in ican3_init_new_host_interface()
397 ican3_set_page(mod, QUEUE_FROMHOST_MID); in ican3_init_new_host_interface()
398 dst = mod->dpm; in ican3_init_new_host_interface()
401 mod->tx_num = 0; in ican3_init_new_host_interface()
406 desc.pointer = mod->free_page; in ican3_init_new_host_interface()
414 mod->free_page++; in ican3_init_new_host_interface()
418 ican3_set_page(mod, QUEUE_FROMHOST_HIGH); in ican3_init_new_host_interface()
419 dst = mod->dpm; in ican3_init_new_host_interface()
423 desc.pointer = mod->free_page; in ican3_init_new_host_interface()
425 mod->free_page++; in ican3_init_new_host_interface()
428 ican3_set_page(mod, QUEUE_FROMHOST_LOW); in ican3_init_new_host_interface()
429 dst = mod->dpm; in ican3_init_new_host_interface()
433 desc.pointer = mod->free_page; in ican3_init_new_host_interface()
435 mod->free_page++; in ican3_init_new_host_interface()
437 spin_unlock_irqrestore(&mod->lock, flags); in ican3_init_new_host_interface()
444 static void ican3_init_fast_host_interface(struct ican3_dev *mod) in ican3_init_fast_host_interface() argument
452 spin_lock_irqsave(&mod->lock, flags); in ican3_init_fast_host_interface()
455 mod->fastrx_start = mod->free_page; in ican3_init_fast_host_interface()
456 mod->fastrx_num = 0; in ican3_init_fast_host_interface()
472 ican3_set_page(mod, mod->free_page); in ican3_init_fast_host_interface()
475 dst = mod->dpm + addr; in ican3_init_fast_host_interface()
482 mod->free_page++; in ican3_init_fast_host_interface()
488 mod->free_page++; in ican3_init_fast_host_interface()
491 mod->fasttx_start = mod->free_page; in ican3_init_fast_host_interface()
492 mod->fasttx_num = 0; in ican3_init_fast_host_interface()
508 ican3_set_page(mod, mod->free_page); in ican3_init_fast_host_interface()
511 dst = mod->dpm + addr; in ican3_init_fast_host_interface()
518 mod->free_page++; in ican3_init_fast_host_interface()
522 spin_unlock_irqrestore(&mod->lock, flags); in ican3_init_fast_host_interface()
532 static int ican3_new_send_msg(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_new_send_msg() argument
535 void __iomem *desc_addr = mod->dpm + (mod->tx_num * sizeof(desc)); in ican3_new_send_msg()
538 ican3_set_page(mod, QUEUE_FROMHOST_MID); in ican3_new_send_msg()
542 netdev_dbg(mod->ndev, "%s: no free buffers\n", __func__); in ican3_new_send_msg()
547 ican3_set_page(mod, desc.pointer); in ican3_new_send_msg()
548 memcpy_toio(mod->dpm, msg, sizeof(*msg)); in ican3_new_send_msg()
551 ican3_set_page(mod, QUEUE_FROMHOST_MID); in ican3_new_send_msg()
556 mod->tx_num = (desc.control & DESC_WRAP) ? 0 : (mod->tx_num + 1); in ican3_new_send_msg()
563 static int ican3_new_recv_msg(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_new_recv_msg() argument
566 void __iomem *desc_addr = mod->dpm + (mod->rx_num * sizeof(desc)); in ican3_new_recv_msg()
569 ican3_set_page(mod, QUEUE_TOHOST); in ican3_new_recv_msg()
573 netdev_dbg(mod->ndev, "%s: no buffers to recv\n", __func__); in ican3_new_recv_msg()
578 ican3_set_page(mod, desc.pointer); in ican3_new_recv_msg()
579 memcpy_fromio(msg, mod->dpm, sizeof(*msg)); in ican3_new_recv_msg()
582 ican3_set_page(mod, QUEUE_TOHOST); in ican3_new_recv_msg()
587 mod->rx_num = (desc.control & DESC_WRAP) ? 0 : (mod->rx_num + 1); in ican3_new_recv_msg()
595 static int ican3_send_msg(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_send_msg() argument
600 spin_lock_irqsave(&mod->lock, flags); in ican3_send_msg()
602 if (mod->iftype == 0) in ican3_send_msg()
603 ret = ican3_old_send_msg(mod, msg); in ican3_send_msg()
605 ret = ican3_new_send_msg(mod, msg); in ican3_send_msg()
607 spin_unlock_irqrestore(&mod->lock, flags); in ican3_send_msg()
611 static int ican3_recv_msg(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_recv_msg() argument
616 spin_lock_irqsave(&mod->lock, flags); in ican3_recv_msg()
618 if (mod->iftype == 0) in ican3_recv_msg()
619 ret = ican3_old_recv_msg(mod, msg); in ican3_recv_msg()
621 ret = ican3_new_recv_msg(mod, msg); in ican3_recv_msg()
623 spin_unlock_irqrestore(&mod->lock, flags); in ican3_recv_msg()
631 static int ican3_msg_connect(struct ican3_dev *mod) in ican3_msg_connect() argument
639 return ican3_send_msg(mod, &msg); in ican3_msg_connect()
642 static int ican3_msg_disconnect(struct ican3_dev *mod) in ican3_msg_disconnect() argument
650 return ican3_send_msg(mod, &msg); in ican3_msg_disconnect()
653 static int ican3_msg_newhostif(struct ican3_dev *mod) in ican3_msg_newhostif() argument
663 WARN_ON(mod->iftype != 0); in ican3_msg_newhostif()
665 ret = ican3_send_msg(mod, &msg); in ican3_msg_newhostif()
670 mod->iftype = 1; in ican3_msg_newhostif()
674 static int ican3_msg_fasthostif(struct ican3_dev *mod) in ican3_msg_fasthostif() argument
684 addr = DPM_PAGE_ADDR(mod->fastrx_start); in ican3_msg_fasthostif()
691 addr = DPM_PAGE_ADDR(mod->fasttx_start); in ican3_msg_fasthostif()
698 WARN_ON(mod->iftype != 1); in ican3_msg_fasthostif()
700 return ican3_send_msg(mod, &msg); in ican3_msg_fasthostif()
707 static int ican3_set_id_filter(struct ican3_dev *mod, bool accept) in ican3_set_id_filter() argument
724 ret = ican3_send_msg(mod, &msg); in ican3_set_id_filter()
745 return ican3_send_msg(mod, &msg); in ican3_set_id_filter()
751 static int ican3_set_bus_state(struct ican3_dev *mod, bool on) in ican3_set_bus_state() argument
759 return ican3_send_msg(mod, &msg); in ican3_set_bus_state()
762 static int ican3_set_termination(struct ican3_dev *mod, bool on) in ican3_set_termination() argument
772 return ican3_send_msg(mod, &msg); in ican3_set_termination()
775 static int ican3_send_inquiry(struct ican3_dev *mod, u8 subspec) in ican3_send_inquiry() argument
785 return ican3_send_msg(mod, &msg); in ican3_send_inquiry()
788 static int ican3_set_buserror(struct ican3_dev *mod, u8 quota) in ican3_set_buserror() argument
798 return ican3_send_msg(mod, &msg); in ican3_set_buserror()
805 static void ican3_to_can_frame(struct ican3_dev *mod, in ican3_to_can_frame() argument
837 static void can_frame_to_ican3(struct ican3_dev *mod, in can_frame_to_ican3() argument
850 if (mod->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT) in can_frame_to_ican3()
881 static void ican3_handle_idvers(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_handle_idvers() argument
883 netdev_dbg(mod->ndev, "IDVERS response: %s\n", msg->data); in ican3_handle_idvers()
886 static void ican3_handle_msglost(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_handle_msglost() argument
888 struct net_device *dev = mod->ndev; in ican3_handle_msglost()
899 netdev_err(mod->ndev, "lost %d control messages\n", msg->data[0]); in ican3_handle_msglost()
928 static int ican3_handle_cevtind(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_handle_cevtind() argument
930 struct net_device *dev = mod->ndev; in ican3_handle_cevtind()
932 enum can_state state = mod->can.state; in ican3_handle_cevtind()
939 netdev_err(mod->ndev, "unable to handle errors on non-SJA1000\n"); in ican3_handle_cevtind()
945 netdev_err(mod->ndev, "error message too short\n"); in ican3_handle_cevtind()
967 netdev_dbg(mod->ndev, "bus error interrupt\n"); in ican3_handle_cevtind()
971 kfree_skb(skb_dequeue(&mod->echoq)); in ican3_handle_cevtind()
981 ret = ican3_set_buserror(mod, 1); in ican3_handle_cevtind()
983 netdev_err(mod->ndev, "unable to re-enable bus-error\n"); in ican3_handle_cevtind()
988 if (!(mod->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING)) in ican3_handle_cevtind()
998 netdev_dbg(mod->ndev, "data overrun interrupt\n"); in ican3_handle_cevtind()
1007 netdev_dbg(mod->ndev, "error warning + passive interrupt\n"); in ican3_handle_cevtind()
1011 mod->can.can_stats.bus_off++; in ican3_handle_cevtind()
1025 mod->can.can_stats.bus_error++; in ican3_handle_cevtind()
1051 if (state != mod->can.state && (state == CAN_STATE_ERROR_WARNING || in ican3_handle_cevtind()
1055 mod->can.can_stats.error_warning++; in ican3_handle_cevtind()
1060 mod->can.can_stats.error_passive++; in ican3_handle_cevtind()
1070 mod->can.state = state; in ican3_handle_cevtind()
1075 static void ican3_handle_inquiry(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_handle_inquiry() argument
1080 mod->bec.rxerr = msg->data[5]; in ican3_handle_inquiry()
1081 mod->bec.txerr = msg->data[6]; in ican3_handle_inquiry()
1082 complete(&mod->buserror_comp); in ican3_handle_inquiry()
1085 mod->termination_enabled = msg->data[6] & HWCONF_TERMINATE_ON; in ican3_handle_inquiry()
1086 complete(&mod->termination_comp); in ican3_handle_inquiry()
1089 netdev_err(mod->ndev, "received an unknown inquiry response\n"); in ican3_handle_inquiry()
1094 static void ican3_handle_unknown_message(struct ican3_dev *mod, in ican3_handle_unknown_message() argument
1097 netdev_warn(mod->ndev, "received unknown message: spec 0x%.2x length %d\n", in ican3_handle_unknown_message()
1104 static void ican3_handle_message(struct ican3_dev *mod, struct ican3_msg *msg) in ican3_handle_message() argument
1106 netdev_dbg(mod->ndev, "%s: modno %d spec 0x%.2x len %d bytes\n", __func__, in ican3_handle_message()
1107 mod->num, msg->spec, le16_to_cpu(msg->len)); in ican3_handle_message()
1111 ican3_handle_idvers(mod, msg); in ican3_handle_message()
1115 ican3_handle_msglost(mod, msg); in ican3_handle_message()
1118 ican3_handle_cevtind(mod, msg); in ican3_handle_message()
1121 ican3_handle_inquiry(mod, msg); in ican3_handle_message()
1124 ican3_handle_unknown_message(mod, msg); in ican3_handle_message()
1133 static void ican3_put_echo_skb(struct ican3_dev *mod, struct sk_buff *skb) in ican3_put_echo_skb() argument
1140 skb_queue_tail(&mod->echoq, skb); in ican3_put_echo_skb()
1143 static unsigned int ican3_get_echo_skb(struct ican3_dev *mod) in ican3_get_echo_skb() argument
1145 struct sk_buff *skb = skb_dequeue(&mod->echoq); in ican3_get_echo_skb()
1151 netdev_err(mod->ndev, "BUG: echo skb not occupied\n"); in ican3_get_echo_skb()
1167 skb->dev = mod->ndev; in ican3_get_echo_skb()
1181 static bool ican3_echo_skb_matches(struct ican3_dev *mod, struct sk_buff *skb) in ican3_echo_skb_matches() argument
1184 struct sk_buff *echo_skb = skb_peek(&mod->echoq); in ican3_echo_skb_matches()
1205 static bool ican3_txok(struct ican3_dev *mod) in ican3_txok() argument
1211 if (skb_queue_len(&mod->echoq) >= ICAN3_TX_BUFFERS) in ican3_txok()
1215 ican3_set_page(mod, mod->fasttx_start + (mod->fasttx_num / 16)); in ican3_txok()
1216 desc = mod->dpm + ((mod->fasttx_num % 16) * sizeof(*desc)); in ican3_txok()
1231 static int ican3_recv_skb(struct ican3_dev *mod) in ican3_recv_skb() argument
1233 struct net_device *ndev = mod->ndev; in ican3_recv_skb()
1241 spin_lock_irqsave(&mod->lock, flags); in ican3_recv_skb()
1244 ican3_set_page(mod, mod->fastrx_start + (mod->fastrx_num / 16)); in ican3_recv_skb()
1245 desc_addr = mod->dpm + ((mod->fastrx_num % 16) * sizeof(desc)); in ican3_recv_skb()
1248 spin_unlock_irqrestore(&mod->lock, flags); in ican3_recv_skb()
1262 ican3_to_can_frame(mod, &desc, cf); in ican3_recv_skb()
1274 if (ican3_echo_skb_matches(mod, skb)) { in ican3_recv_skb()
1276 stats->tx_bytes += ican3_get_echo_skb(mod); in ican3_recv_skb()
1290 spin_lock_irqsave(&mod->lock, flags); in ican3_recv_skb()
1292 ican3_set_page(mod, mod->fastrx_start + (mod->fastrx_num / 16)); in ican3_recv_skb()
1296 mod->fastrx_num = (desc.control & DESC_WRAP) ? 0 in ican3_recv_skb()
1297 : (mod->fastrx_num + 1); in ican3_recv_skb()
1300 spin_unlock_irqrestore(&mod->lock, flags); in ican3_recv_skb()
1306 struct ican3_dev *mod = container_of(napi, struct ican3_dev, napi); in ican3_napi() local
1314 ret = ican3_recv_msg(mod, &msg); in ican3_napi()
1318 ican3_handle_message(mod, &msg); in ican3_napi()
1323 ret = ican3_recv_skb(mod); in ican3_napi()
1335 spin_lock_irqsave(&mod->lock, flags); in ican3_napi()
1338 if (netif_queue_stopped(mod->ndev) && ican3_txok(mod)) in ican3_napi()
1339 netif_wake_queue(mod->ndev); in ican3_napi()
1341 spin_unlock_irqrestore(&mod->lock, flags); in ican3_napi()
1344 iowrite8(1 << mod->num, &mod->ctrl->int_enable); in ican3_napi()
1350 struct ican3_dev *mod = dev_id; in ican3_irq() local
1357 stat = ioread8(&mod->ctrl->int_disable) & (1 << mod->num); in ican3_irq()
1358 if (stat == (1 << mod->num)) in ican3_irq()
1362 ioread8(&mod->dpmctrl->interrupt); in ican3_irq()
1365 iowrite8(1 << mod->num, &mod->ctrl->int_disable); in ican3_irq()
1366 napi_schedule(&mod->napi); in ican3_irq()
1379 static int ican3_reset_module(struct ican3_dev *mod) in ican3_reset_module() argument
1385 iowrite8(1 << mod->num, &mod->ctrl->int_disable); in ican3_reset_module()
1388 mod->free_page = DPM_FREE_START; in ican3_reset_module()
1390 ican3_set_page(mod, QUEUE_OLD_CONTROL); in ican3_reset_module()
1391 runold = ioread8(mod->dpm + TARGET_RUNNING); in ican3_reset_module()
1394 iowrite8(0x00, &mod->dpmctrl->hwreset); in ican3_reset_module()
1399 ican3_set_page(mod, QUEUE_OLD_CONTROL); in ican3_reset_module()
1400 runnew = ioread8(mod->dpm + TARGET_RUNNING); in ican3_reset_module()
1407 netdev_err(mod->ndev, "failed to reset CAN module\n"); in ican3_reset_module()
1411 static void ican3_shutdown_module(struct ican3_dev *mod) in ican3_shutdown_module() argument
1413 ican3_msg_disconnect(mod); in ican3_shutdown_module()
1414 ican3_reset_module(mod); in ican3_shutdown_module()
1420 static int ican3_startup_module(struct ican3_dev *mod) in ican3_startup_module() argument
1424 ret = ican3_reset_module(mod); in ican3_startup_module()
1426 netdev_err(mod->ndev, "unable to reset module\n"); in ican3_startup_module()
1431 iowrite8(1 << mod->num, &mod->ctrl->int_enable); in ican3_startup_module()
1433 ret = ican3_msg_connect(mod); in ican3_startup_module()
1435 netdev_err(mod->ndev, "unable to connect to module\n"); in ican3_startup_module()
1439 ican3_init_new_host_interface(mod); in ican3_startup_module()
1440 ret = ican3_msg_newhostif(mod); in ican3_startup_module()
1442 netdev_err(mod->ndev, "unable to switch to new-style interface\n"); in ican3_startup_module()
1447 ret = ican3_set_termination(mod, true); in ican3_startup_module()
1449 netdev_err(mod->ndev, "unable to enable termination\n"); in ican3_startup_module()
1454 ret = ican3_set_buserror(mod, 1); in ican3_startup_module()
1456 netdev_err(mod->ndev, "unable to set bus-error\n"); in ican3_startup_module()
1460 ican3_init_fast_host_interface(mod); in ican3_startup_module()
1461 ret = ican3_msg_fasthostif(mod); in ican3_startup_module()
1463 netdev_err(mod->ndev, "unable to switch to fast host interface\n"); in ican3_startup_module()
1467 ret = ican3_set_id_filter(mod, true); in ican3_startup_module()
1469 netdev_err(mod->ndev, "unable to set acceptance filter\n"); in ican3_startup_module()
1482 struct ican3_dev *mod = netdev_priv(ndev); in ican3_open() local
1488 netdev_err(mod->ndev, "unable to start CAN layer\n"); in ican3_open()
1493 ret = ican3_set_bus_state(mod, true); in ican3_open()
1495 netdev_err(mod->ndev, "unable to set bus-on\n"); in ican3_open()
1501 mod->can.state = CAN_STATE_ERROR_ACTIVE; in ican3_open()
1509 struct ican3_dev *mod = netdev_priv(ndev); in ican3_stop() local
1514 mod->can.state = CAN_STATE_STOPPED; in ican3_stop()
1517 ret = ican3_set_bus_state(mod, false); in ican3_stop()
1519 netdev_err(mod->ndev, "unable to set bus-off\n"); in ican3_stop()
1524 skb_queue_purge(&mod->echoq); in ican3_stop()
1533 struct ican3_dev *mod = netdev_priv(ndev); in ican3_xmit() local
1542 spin_lock_irqsave(&mod->lock, flags); in ican3_xmit()
1545 if (!ican3_txok(mod)) { in ican3_xmit()
1546 netdev_err(mod->ndev, "BUG: no free descriptors\n"); in ican3_xmit()
1547 spin_unlock_irqrestore(&mod->lock, flags); in ican3_xmit()
1552 ican3_set_page(mod, mod->fasttx_start + (mod->fasttx_num / 16)); in ican3_xmit()
1553 desc_addr = mod->dpm + ((mod->fasttx_num % 16) * sizeof(desc)); in ican3_xmit()
1558 can_frame_to_ican3(mod, cf, &desc); in ican3_xmit()
1566 ican3_put_echo_skb(mod, skb); in ican3_xmit()
1577 iowrite8(0x01, &mod->dpmctrl->interrupt); in ican3_xmit()
1583 mod->fasttx_num = (desc.control & DESC_WRAP) ? 0 in ican3_xmit()
1584 : (mod->fasttx_num + 1); in ican3_xmit()
1587 if (!ican3_txok(mod)) in ican3_xmit()
1590 spin_unlock_irqrestore(&mod->lock, flags); in ican3_xmit()
1626 struct ican3_dev *mod = netdev_priv(ndev); in ican3_set_bittiming() local
1627 struct can_bittiming *bt = &mod->can.bittiming; in ican3_set_bittiming()
1634 if (mod->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES) in ican3_set_bittiming()
1645 return ican3_send_msg(mod, &msg); in ican3_set_bittiming()
1650 struct ican3_dev *mod = netdev_priv(ndev); in ican3_set_mode() local
1657 ret = ican3_set_bus_state(mod, true); in ican3_set_mode()
1664 mod->can.state = CAN_STATE_ERROR_ACTIVE; in ican3_set_mode()
1675 struct ican3_dev *mod = netdev_priv(ndev); in ican3_get_berr_counter() local
1678 ret = ican3_send_inquiry(mod, INQUIRY_STATUS); in ican3_get_berr_counter()
1682 if (!wait_for_completion_timeout(&mod->buserror_comp, HZ)) { in ican3_get_berr_counter()
1683 netdev_info(mod->ndev, "%s timed out\n", __func__); in ican3_get_berr_counter()
1687 bec->rxerr = mod->bec.rxerr; in ican3_get_berr_counter()
1688 bec->txerr = mod->bec.txerr; in ican3_get_berr_counter()
1700 struct ican3_dev *mod = netdev_priv(to_net_dev(dev)); in ican3_sysfs_show_term() local
1703 ret = ican3_send_inquiry(mod, INQUIRY_TERMINATION); in ican3_sysfs_show_term()
1707 if (!wait_for_completion_timeout(&mod->termination_comp, HZ)) { in ican3_sysfs_show_term()
1708 netdev_info(mod->ndev, "%s timed out\n", __func__); in ican3_sysfs_show_term()
1712 return snprintf(buf, PAGE_SIZE, "%u\n", mod->termination_enabled); in ican3_sysfs_show_term()
1719 struct ican3_dev *mod = netdev_priv(to_net_dev(dev)); in ican3_sysfs_set_term() local
1726 ret = ican3_set_termination(mod, enable); in ican3_sysfs_set_term()
1753 struct ican3_dev *mod; in ican3_probe() local
1768 ndev = alloc_candev(sizeof(*mod), 0); in ican3_probe()
1776 mod = netdev_priv(ndev); in ican3_probe()
1777 mod->ndev = ndev; in ican3_probe()
1778 mod->num = pdata->modno; in ican3_probe()
1779 netif_napi_add(ndev, &mod->napi, ican3_napi, ICAN3_RX_BUFFERS); in ican3_probe()
1780 skb_queue_head_init(&mod->echoq); in ican3_probe()
1781 spin_lock_init(&mod->lock); in ican3_probe()
1782 init_completion(&mod->termination_comp); in ican3_probe()
1783 init_completion(&mod->buserror_comp); in ican3_probe()
1789 mod->free_page = DPM_FREE_START; in ican3_probe()
1795 mod->can.clock.freq = ICAN3_CAN_CLOCK; in ican3_probe()
1796 mod->can.bittiming_const = &ican3_bittiming_const; in ican3_probe()
1797 mod->can.do_set_bittiming = ican3_set_bittiming; in ican3_probe()
1798 mod->can.do_set_mode = ican3_set_mode; in ican3_probe()
1799 mod->can.do_get_berr_counter = ican3_get_berr_counter; in ican3_probe()
1800 mod->can.ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES in ican3_probe()
1805 mod->irq = platform_get_irq(pdev, 0); in ican3_probe()
1806 if (mod->irq < 0) { in ican3_probe()
1812 ndev->irq = mod->irq; in ican3_probe()
1822 mod->dpm = ioremap(res->start, resource_size(res)); in ican3_probe()
1823 if (!mod->dpm) { in ican3_probe()
1829 mod->dpmctrl = mod->dpm + DPM_PAGE_SIZE; in ican3_probe()
1839 mod->ctrl = ioremap(res->start, resource_size(res)); in ican3_probe()
1840 if (!mod->ctrl) { in ican3_probe()
1847 iowrite8(1 << mod->num, &mod->ctrl->int_disable); in ican3_probe()
1848 ret = request_irq(mod->irq, ican3_irq, IRQF_SHARED, DRV_NAME, mod); in ican3_probe()
1855 napi_enable(&mod->napi); in ican3_probe()
1856 ret = ican3_startup_module(mod); in ican3_probe()
1873 napi_disable(&mod->napi); in ican3_probe()
1874 iowrite8(1 << mod->num, &mod->ctrl->int_disable); in ican3_probe()
1875 free_irq(mod->irq, mod); in ican3_probe()
1877 iounmap(mod->ctrl); in ican3_probe()
1879 iounmap(mod->dpm); in ican3_probe()
1889 struct ican3_dev *mod = netdev_priv(ndev); in ican3_remove() local
1893 napi_disable(&mod->napi); in ican3_remove()
1894 iowrite8(1 << mod->num, &mod->ctrl->int_disable); in ican3_remove()
1895 free_irq(mod->irq, mod); in ican3_remove()
1898 ican3_shutdown_module(mod); in ican3_remove()
1901 iounmap(mod->ctrl); in ican3_remove()
1902 iounmap(mod->dpm); in ican3_remove()