Lines Matching refs:priv

220 	struct rcar_can_priv *priv = netdev_priv(ndev);  in rcar_can_error()  local
229 eifr = readb(&priv->regs->eifr); in rcar_can_error()
231 txerr = readb(&priv->regs->tecr); in rcar_can_error()
232 rxerr = readb(&priv->regs->recr); in rcar_can_error()
243 netdev_dbg(priv->ndev, "Bus error interrupt:\n"); in rcar_can_error()
247 ecsr = readb(&priv->regs->ecsr); in rcar_can_error()
249 netdev_dbg(priv->ndev, "ACK Delimiter Error\n"); in rcar_can_error()
251 writeb(~RCAR_CAN_ECSR_ADEF, &priv->regs->ecsr); in rcar_can_error()
256 netdev_dbg(priv->ndev, "Bit Error (dominant)\n"); in rcar_can_error()
258 writeb(~RCAR_CAN_ECSR_BE0F, &priv->regs->ecsr); in rcar_can_error()
263 netdev_dbg(priv->ndev, "Bit Error (recessive)\n"); in rcar_can_error()
265 writeb(~RCAR_CAN_ECSR_BE1F, &priv->regs->ecsr); in rcar_can_error()
270 netdev_dbg(priv->ndev, "CRC Error\n"); in rcar_can_error()
272 writeb(~RCAR_CAN_ECSR_CEF, &priv->regs->ecsr); in rcar_can_error()
277 netdev_dbg(priv->ndev, "ACK Error\n"); in rcar_can_error()
279 writeb(~RCAR_CAN_ECSR_AEF, &priv->regs->ecsr); in rcar_can_error()
286 netdev_dbg(priv->ndev, "Form Error\n"); in rcar_can_error()
288 writeb(~RCAR_CAN_ECSR_FEF, &priv->regs->ecsr); in rcar_can_error()
293 netdev_dbg(priv->ndev, "Stuff Error\n"); in rcar_can_error()
295 writeb(~RCAR_CAN_ECSR_SEF, &priv->regs->ecsr); in rcar_can_error()
300 priv->can.can_stats.bus_error++; in rcar_can_error()
303 writeb(~RCAR_CAN_EIFR_BEIF, &priv->regs->eifr); in rcar_can_error()
306 netdev_dbg(priv->ndev, "Error warning interrupt\n"); in rcar_can_error()
307 priv->can.state = CAN_STATE_ERROR_WARNING; in rcar_can_error()
308 priv->can.can_stats.error_warning++; in rcar_can_error()
310 writeb(~RCAR_CAN_EIFR_EWIF, &priv->regs->eifr); in rcar_can_error()
316 netdev_dbg(priv->ndev, "Error passive interrupt\n"); in rcar_can_error()
317 priv->can.state = CAN_STATE_ERROR_PASSIVE; in rcar_can_error()
318 priv->can.can_stats.error_passive++; in rcar_can_error()
320 writeb(~RCAR_CAN_EIFR_EPIF, &priv->regs->eifr); in rcar_can_error()
326 netdev_dbg(priv->ndev, "Bus-off entry interrupt\n"); in rcar_can_error()
328 priv->ier = RCAR_CAN_IER_ERSIE; in rcar_can_error()
329 writeb(priv->ier, &priv->regs->ier); in rcar_can_error()
330 priv->can.state = CAN_STATE_BUS_OFF; in rcar_can_error()
332 writeb(~RCAR_CAN_EIFR_BOEIF, &priv->regs->eifr); in rcar_can_error()
333 priv->can.can_stats.bus_off++; in rcar_can_error()
339 netdev_dbg(priv->ndev, "Receive overrun error interrupt\n"); in rcar_can_error()
342 writeb(~RCAR_CAN_EIFR_ORIF, &priv->regs->eifr); in rcar_can_error()
349 netdev_dbg(priv->ndev, in rcar_can_error()
353 writeb(~RCAR_CAN_EIFR_OLIF, &priv->regs->eifr); in rcar_can_error()
369 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_tx_done() local
374 u8 unsent = readb(&priv->regs->tfcr); in rcar_can_tx_done()
378 if (priv->tx_head - priv->tx_tail <= unsent) in rcar_can_tx_done()
381 stats->tx_bytes += priv->tx_dlc[priv->tx_tail % in rcar_can_tx_done()
383 priv->tx_dlc[priv->tx_tail % RCAR_CAN_FIFO_DEPTH] = 0; in rcar_can_tx_done()
384 can_get_echo_skb(ndev, priv->tx_tail % RCAR_CAN_FIFO_DEPTH); in rcar_can_tx_done()
385 priv->tx_tail++; in rcar_can_tx_done()
389 isr = readb(&priv->regs->isr); in rcar_can_tx_done()
390 writeb(isr & ~RCAR_CAN_ISR_TXFF, &priv->regs->isr); in rcar_can_tx_done()
397 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_interrupt() local
400 isr = readb(&priv->regs->isr); in rcar_can_interrupt()
401 if (!(isr & priv->ier)) in rcar_can_interrupt()
411 if (napi_schedule_prep(&priv->napi)) { in rcar_can_interrupt()
413 priv->ier &= ~RCAR_CAN_IER_RXFIE; in rcar_can_interrupt()
414 writeb(priv->ier, &priv->regs->ier); in rcar_can_interrupt()
415 __napi_schedule(&priv->napi); in rcar_can_interrupt()
424 struct rcar_can_priv *priv = netdev_priv(dev); in rcar_can_set_bittiming() local
425 struct can_bittiming *bt = &priv->can.bittiming; in rcar_can_set_bittiming()
435 writel((bcr << 8) | priv->clock_select, &priv->regs->bcr); in rcar_can_set_bittiming()
440 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_start() local
450 ctlr = readw(&priv->regs->ctlr); in rcar_can_start()
452 writew(ctlr, &priv->regs->ctlr); in rcar_can_start()
455 writew(ctlr, &priv->regs->ctlr); in rcar_can_start()
457 if (readw(&priv->regs->str) & RCAR_CAN_STR_RSTST) in rcar_can_start()
466 writew(ctlr, &priv->regs->ctlr); in rcar_can_start()
469 writel(0, &priv->regs->mkr_2_9[6]); in rcar_can_start()
470 writel(0, &priv->regs->mkr_2_9[7]); in rcar_can_start()
472 writel(0, &priv->regs->mkivlr1); in rcar_can_start()
474 writel(0, &priv->regs->fidcr[0]); in rcar_can_start()
475 writel(RCAR_CAN_FIDCR_IDE | RCAR_CAN_FIDCR_RTR, &priv->regs->fidcr[1]); in rcar_can_start()
477 writel(RCAR_CAN_MIER1_RXFIE | RCAR_CAN_MIER1_TXFIE, &priv->regs->mier1); in rcar_can_start()
479 priv->ier = RCAR_CAN_IER_ERSIE | RCAR_CAN_IER_RXFIE | in rcar_can_start()
481 writeb(priv->ier, &priv->regs->ier); in rcar_can_start()
484 writeb(RCAR_CAN_ECSR_EDPM, &priv->regs->ecsr); in rcar_can_start()
487 (priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING ? in rcar_can_start()
489 RCAR_CAN_EIER_OLIE, &priv->regs->eier); in rcar_can_start()
490 priv->can.state = CAN_STATE_ERROR_ACTIVE; in rcar_can_start()
493 writew(ctlr & ~RCAR_CAN_CTLR_CANM, &priv->regs->ctlr); in rcar_can_start()
495 if (!(readw(&priv->regs->str) & RCAR_CAN_STR_RSTST)) in rcar_can_start()
499 writeb(RCAR_CAN_RFCR_RFE, &priv->regs->rfcr); in rcar_can_start()
500 writeb(RCAR_CAN_TFCR_TFE, &priv->regs->tfcr); in rcar_can_start()
505 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_open() local
508 err = clk_prepare_enable(priv->clk); in rcar_can_open()
515 err = clk_prepare_enable(priv->can_clk); in rcar_can_open()
526 napi_enable(&priv->napi); in rcar_can_open()
538 napi_disable(&priv->napi); in rcar_can_open()
541 clk_disable_unprepare(priv->can_clk); in rcar_can_open()
543 clk_disable_unprepare(priv->clk); in rcar_can_open()
550 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_stop() local
555 ctlr = readw(&priv->regs->ctlr); in rcar_can_stop()
557 writew(ctlr, &priv->regs->ctlr); in rcar_can_stop()
559 if (readw(&priv->regs->str) & RCAR_CAN_STR_RSTST) in rcar_can_stop()
562 writel(0, &priv->regs->mier0); in rcar_can_stop()
563 writel(0, &priv->regs->mier1); in rcar_can_stop()
564 writeb(0, &priv->regs->ier); in rcar_can_stop()
565 writeb(0, &priv->regs->eier); in rcar_can_stop()
568 writew(ctlr, &priv->regs->ctlr); in rcar_can_stop()
569 priv->can.state = CAN_STATE_STOPPED; in rcar_can_stop()
574 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_close() local
579 napi_disable(&priv->napi); in rcar_can_close()
580 clk_disable_unprepare(priv->can_clk); in rcar_can_close()
581 clk_disable_unprepare(priv->clk); in rcar_can_close()
590 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_start_xmit() local
607 &priv->regs->mb[RCAR_CAN_TX_FIFO_MBX].data[i]); in rcar_can_start_xmit()
610 writel(data, &priv->regs->mb[RCAR_CAN_TX_FIFO_MBX].id); in rcar_can_start_xmit()
612 writeb(cf->can_dlc, &priv->regs->mb[RCAR_CAN_TX_FIFO_MBX].dlc); in rcar_can_start_xmit()
614 priv->tx_dlc[priv->tx_head % RCAR_CAN_FIFO_DEPTH] = cf->can_dlc; in rcar_can_start_xmit()
615 can_put_echo_skb(skb, ndev, priv->tx_head % RCAR_CAN_FIFO_DEPTH); in rcar_can_start_xmit()
616 priv->tx_head++; in rcar_can_start_xmit()
621 writeb(0xff, &priv->regs->tfpcr); in rcar_can_start_xmit()
623 if (priv->tx_head - priv->tx_tail >= RCAR_CAN_FIFO_DEPTH) in rcar_can_start_xmit()
636 static void rcar_can_rx_pkt(struct rcar_can_priv *priv) in rcar_can_rx_pkt() argument
638 struct net_device_stats *stats = &priv->ndev->stats; in rcar_can_rx_pkt()
644 skb = alloc_can_skb(priv->ndev, &cf); in rcar_can_rx_pkt()
650 data = readl(&priv->regs->mb[RCAR_CAN_RX_FIFO_MBX].id); in rcar_can_rx_pkt()
656 dlc = readb(&priv->regs->mb[RCAR_CAN_RX_FIFO_MBX].dlc); in rcar_can_rx_pkt()
663 readb(&priv->regs->mb[RCAR_CAN_RX_FIFO_MBX].data[dlc]); in rcar_can_rx_pkt()
666 can_led_event(priv->ndev, CAN_LED_EVENT_RX); in rcar_can_rx_pkt()
675 struct rcar_can_priv *priv = container_of(napi, in rcar_can_rx_poll() local
682 isr = readb(&priv->regs->isr); in rcar_can_rx_poll()
685 writeb(isr & ~RCAR_CAN_ISR_RXFF, &priv->regs->isr); in rcar_can_rx_poll()
686 rfcr = readb(&priv->regs->rfcr); in rcar_can_rx_poll()
689 rcar_can_rx_pkt(priv); in rcar_can_rx_poll()
694 writeb(0xff, &priv->regs->rfpcr); in rcar_can_rx_poll()
699 priv->ier |= RCAR_CAN_IER_RXFIE; in rcar_can_rx_poll()
700 writeb(priv->ier, &priv->regs->ier); in rcar_can_rx_poll()
720 struct rcar_can_priv *priv = netdev_priv(dev); in rcar_can_get_berr_counter() local
723 err = clk_prepare_enable(priv->clk); in rcar_can_get_berr_counter()
726 bec->txerr = readb(&priv->regs->tecr); in rcar_can_get_berr_counter()
727 bec->rxerr = readb(&priv->regs->recr); in rcar_can_get_berr_counter()
728 clk_disable_unprepare(priv->clk); in rcar_can_get_berr_counter()
741 struct rcar_can_priv *priv; in rcar_can_probe() local
782 priv = netdev_priv(ndev); in rcar_can_probe()
784 priv->clk = devm_clk_get(&pdev->dev, "clkp1"); in rcar_can_probe()
785 if (IS_ERR(priv->clk)) { in rcar_can_probe()
786 err = PTR_ERR(priv->clk); in rcar_can_probe()
797 priv->can_clk = devm_clk_get(&pdev->dev, clock_names[clock_select]); in rcar_can_probe()
798 if (IS_ERR(priv->can_clk)) { in rcar_can_probe()
799 err = PTR_ERR(priv->can_clk); in rcar_can_probe()
807 priv->ndev = ndev; in rcar_can_probe()
808 priv->regs = addr; in rcar_can_probe()
809 priv->clock_select = clock_select; in rcar_can_probe()
810 priv->can.clock.freq = clk_get_rate(priv->can_clk); in rcar_can_probe()
811 priv->can.bittiming_const = &rcar_can_bittiming_const; in rcar_can_probe()
812 priv->can.do_set_mode = rcar_can_do_set_mode; in rcar_can_probe()
813 priv->can.do_get_berr_counter = rcar_can_get_berr_counter; in rcar_can_probe()
814 priv->can.ctrlmode_supported = CAN_CTRLMODE_BERR_REPORTING; in rcar_can_probe()
818 netif_napi_add(ndev, &priv->napi, rcar_can_rx_poll, in rcar_can_probe()
830 priv->regs, ndev->irq); in rcar_can_probe()
834 netif_napi_del(&priv->napi); in rcar_can_probe()
844 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_remove() local
847 netif_napi_del(&priv->napi); in rcar_can_remove()
855 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_suspend() local
862 ctlr = readw(&priv->regs->ctlr); in rcar_can_suspend()
864 writew(ctlr, &priv->regs->ctlr); in rcar_can_suspend()
866 writew(ctlr, &priv->regs->ctlr); in rcar_can_suspend()
867 priv->can.state = CAN_STATE_SLEEPING; in rcar_can_suspend()
869 clk_disable(priv->clk); in rcar_can_suspend()
876 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_resume() local
880 err = clk_enable(priv->clk); in rcar_can_resume()
886 ctlr = readw(&priv->regs->ctlr); in rcar_can_resume()
888 writew(ctlr, &priv->regs->ctlr); in rcar_can_resume()
890 writew(ctlr, &priv->regs->ctlr); in rcar_can_resume()
891 priv->can.state = CAN_STATE_ERROR_ACTIVE; in rcar_can_resume()