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()
248 ecsr = readb(&priv->regs->ecsr); in rcar_can_error()
250 netdev_dbg(priv->ndev, "ACK Delimiter Error\n"); in rcar_can_error()
252 writeb(~RCAR_CAN_ECSR_ADEF, &priv->regs->ecsr); in rcar_can_error()
257 netdev_dbg(priv->ndev, "Bit Error (dominant)\n"); in rcar_can_error()
259 writeb(~RCAR_CAN_ECSR_BE0F, &priv->regs->ecsr); in rcar_can_error()
264 netdev_dbg(priv->ndev, "Bit Error (recessive)\n"); in rcar_can_error()
266 writeb(~RCAR_CAN_ECSR_BE1F, &priv->regs->ecsr); in rcar_can_error()
271 netdev_dbg(priv->ndev, "CRC Error\n"); in rcar_can_error()
273 writeb(~RCAR_CAN_ECSR_CEF, &priv->regs->ecsr); in rcar_can_error()
278 netdev_dbg(priv->ndev, "ACK Error\n"); in rcar_can_error()
280 writeb(~RCAR_CAN_ECSR_AEF, &priv->regs->ecsr); in rcar_can_error()
287 netdev_dbg(priv->ndev, "Form Error\n"); in rcar_can_error()
289 writeb(~RCAR_CAN_ECSR_FEF, &priv->regs->ecsr); in rcar_can_error()
294 netdev_dbg(priv->ndev, "Stuff Error\n"); in rcar_can_error()
296 writeb(~RCAR_CAN_ECSR_SEF, &priv->regs->ecsr); in rcar_can_error()
301 priv->can.can_stats.bus_error++; in rcar_can_error()
304 writeb(~RCAR_CAN_EIFR_BEIF, &priv->regs->eifr); in rcar_can_error()
307 netdev_dbg(priv->ndev, "Error warning interrupt\n"); in rcar_can_error()
308 priv->can.state = CAN_STATE_ERROR_WARNING; in rcar_can_error()
309 priv->can.can_stats.error_warning++; in rcar_can_error()
311 writeb(~RCAR_CAN_EIFR_EWIF, &priv->regs->eifr); in rcar_can_error()
317 netdev_dbg(priv->ndev, "Error passive interrupt\n"); in rcar_can_error()
318 priv->can.state = CAN_STATE_ERROR_PASSIVE; in rcar_can_error()
319 priv->can.can_stats.error_passive++; in rcar_can_error()
321 writeb(~RCAR_CAN_EIFR_EPIF, &priv->regs->eifr); in rcar_can_error()
327 netdev_dbg(priv->ndev, "Bus-off entry interrupt\n"); in rcar_can_error()
329 priv->ier = RCAR_CAN_IER_ERSIE; in rcar_can_error()
330 writeb(priv->ier, &priv->regs->ier); in rcar_can_error()
331 priv->can.state = CAN_STATE_BUS_OFF; in rcar_can_error()
333 writeb(~RCAR_CAN_EIFR_BOEIF, &priv->regs->eifr); in rcar_can_error()
334 priv->can.can_stats.bus_off++; in rcar_can_error()
340 netdev_dbg(priv->ndev, "Receive overrun error interrupt\n"); in rcar_can_error()
343 writeb(~RCAR_CAN_EIFR_ORIF, &priv->regs->eifr); in rcar_can_error()
350 netdev_dbg(priv->ndev, in rcar_can_error()
354 writeb(~RCAR_CAN_EIFR_OLIF, &priv->regs->eifr); in rcar_can_error()
370 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_tx_done() local
375 u8 unsent = readb(&priv->regs->tfcr); in rcar_can_tx_done()
379 if (priv->tx_head - priv->tx_tail <= unsent) in rcar_can_tx_done()
382 stats->tx_bytes += priv->tx_dlc[priv->tx_tail % in rcar_can_tx_done()
384 priv->tx_dlc[priv->tx_tail % RCAR_CAN_FIFO_DEPTH] = 0; in rcar_can_tx_done()
385 can_get_echo_skb(ndev, priv->tx_tail % RCAR_CAN_FIFO_DEPTH); in rcar_can_tx_done()
386 priv->tx_tail++; in rcar_can_tx_done()
390 isr = readb(&priv->regs->isr); in rcar_can_tx_done()
391 writeb(isr & ~RCAR_CAN_ISR_TXFF, &priv->regs->isr); in rcar_can_tx_done()
398 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_interrupt() local
401 isr = readb(&priv->regs->isr); in rcar_can_interrupt()
402 if (!(isr & priv->ier)) in rcar_can_interrupt()
412 if (napi_schedule_prep(&priv->napi)) { in rcar_can_interrupt()
414 priv->ier &= ~RCAR_CAN_IER_RXFIE; in rcar_can_interrupt()
415 writeb(priv->ier, &priv->regs->ier); in rcar_can_interrupt()
416 __napi_schedule(&priv->napi); in rcar_can_interrupt()
425 struct rcar_can_priv *priv = netdev_priv(dev); in rcar_can_set_bittiming() local
426 struct can_bittiming *bt = &priv->can.bittiming; in rcar_can_set_bittiming()
436 writel((bcr << 8) | priv->clock_select, &priv->regs->bcr); in rcar_can_set_bittiming()
441 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_start() local
451 ctlr = readw(&priv->regs->ctlr); in rcar_can_start()
453 writew(ctlr, &priv->regs->ctlr); in rcar_can_start()
456 writew(ctlr, &priv->regs->ctlr); in rcar_can_start()
458 if (readw(&priv->regs->str) & RCAR_CAN_STR_RSTST) in rcar_can_start()
467 writew(ctlr, &priv->regs->ctlr); in rcar_can_start()
470 writel(0, &priv->regs->mkr_2_9[6]); in rcar_can_start()
471 writel(0, &priv->regs->mkr_2_9[7]); in rcar_can_start()
473 writel(0, &priv->regs->mkivlr1); in rcar_can_start()
475 writel(0, &priv->regs->fidcr[0]); in rcar_can_start()
476 writel(RCAR_CAN_FIDCR_IDE | RCAR_CAN_FIDCR_RTR, &priv->regs->fidcr[1]); in rcar_can_start()
478 writel(RCAR_CAN_MIER1_RXFIE | RCAR_CAN_MIER1_TXFIE, &priv->regs->mier1); in rcar_can_start()
480 priv->ier = RCAR_CAN_IER_ERSIE | RCAR_CAN_IER_RXFIE | in rcar_can_start()
482 writeb(priv->ier, &priv->regs->ier); in rcar_can_start()
485 writeb(RCAR_CAN_ECSR_EDPM, &priv->regs->ecsr); in rcar_can_start()
488 (priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING ? in rcar_can_start()
490 RCAR_CAN_EIER_OLIE, &priv->regs->eier); in rcar_can_start()
491 priv->can.state = CAN_STATE_ERROR_ACTIVE; in rcar_can_start()
494 writew(ctlr & ~RCAR_CAN_CTLR_CANM, &priv->regs->ctlr); in rcar_can_start()
496 if (!(readw(&priv->regs->str) & RCAR_CAN_STR_RSTST)) in rcar_can_start()
500 writeb(RCAR_CAN_RFCR_RFE, &priv->regs->rfcr); in rcar_can_start()
501 writeb(RCAR_CAN_TFCR_TFE, &priv->regs->tfcr); in rcar_can_start()
506 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_open() local
509 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()
537 napi_disable(&priv->napi); in rcar_can_open()
540 clk_disable_unprepare(priv->can_clk); in rcar_can_open()
542 clk_disable_unprepare(priv->clk); in rcar_can_open()
549 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_stop() local
554 ctlr = readw(&priv->regs->ctlr); in rcar_can_stop()
556 writew(ctlr, &priv->regs->ctlr); in rcar_can_stop()
558 if (readw(&priv->regs->str) & RCAR_CAN_STR_RSTST) in rcar_can_stop()
561 writel(0, &priv->regs->mier0); in rcar_can_stop()
562 writel(0, &priv->regs->mier1); in rcar_can_stop()
563 writeb(0, &priv->regs->ier); in rcar_can_stop()
564 writeb(0, &priv->regs->eier); in rcar_can_stop()
567 writew(ctlr, &priv->regs->ctlr); in rcar_can_stop()
568 priv->can.state = CAN_STATE_STOPPED; in rcar_can_stop()
573 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_close() local
578 napi_disable(&priv->napi); in rcar_can_close()
579 clk_disable_unprepare(priv->can_clk); in rcar_can_close()
580 clk_disable_unprepare(priv->clk); in rcar_can_close()
589 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_start_xmit() local
606 &priv->regs->mb[RCAR_CAN_TX_FIFO_MBX].data[i]); in rcar_can_start_xmit()
609 writel(data, &priv->regs->mb[RCAR_CAN_TX_FIFO_MBX].id); in rcar_can_start_xmit()
611 writeb(cf->can_dlc, &priv->regs->mb[RCAR_CAN_TX_FIFO_MBX].dlc); in rcar_can_start_xmit()
613 priv->tx_dlc[priv->tx_head % RCAR_CAN_FIFO_DEPTH] = cf->can_dlc; in rcar_can_start_xmit()
614 can_put_echo_skb(skb, ndev, priv->tx_head % RCAR_CAN_FIFO_DEPTH); in rcar_can_start_xmit()
615 priv->tx_head++; in rcar_can_start_xmit()
620 writeb(0xff, &priv->regs->tfpcr); in rcar_can_start_xmit()
622 if (priv->tx_head - priv->tx_tail >= RCAR_CAN_FIFO_DEPTH) in rcar_can_start_xmit()
635 static void rcar_can_rx_pkt(struct rcar_can_priv *priv) in rcar_can_rx_pkt() argument
637 struct net_device_stats *stats = &priv->ndev->stats; in rcar_can_rx_pkt()
643 skb = alloc_can_skb(priv->ndev, &cf); in rcar_can_rx_pkt()
649 data = readl(&priv->regs->mb[RCAR_CAN_RX_FIFO_MBX].id); in rcar_can_rx_pkt()
655 dlc = readb(&priv->regs->mb[RCAR_CAN_RX_FIFO_MBX].dlc); in rcar_can_rx_pkt()
662 readb(&priv->regs->mb[RCAR_CAN_RX_FIFO_MBX].data[dlc]); in rcar_can_rx_pkt()
665 can_led_event(priv->ndev, CAN_LED_EVENT_RX); in rcar_can_rx_pkt()
674 struct rcar_can_priv *priv = container_of(napi, in rcar_can_rx_poll() local
681 isr = readb(&priv->regs->isr); in rcar_can_rx_poll()
684 writeb(isr & ~RCAR_CAN_ISR_RXFF, &priv->regs->isr); in rcar_can_rx_poll()
685 rfcr = readb(&priv->regs->rfcr); in rcar_can_rx_poll()
688 rcar_can_rx_pkt(priv); in rcar_can_rx_poll()
693 writeb(0xff, &priv->regs->rfpcr); in rcar_can_rx_poll()
698 priv->ier |= RCAR_CAN_IER_RXFIE; in rcar_can_rx_poll()
699 writeb(priv->ier, &priv->regs->ier); in rcar_can_rx_poll()
719 struct rcar_can_priv *priv = netdev_priv(dev); in rcar_can_get_berr_counter() local
722 err = clk_prepare_enable(priv->clk); in rcar_can_get_berr_counter()
725 bec->txerr = readb(&priv->regs->tecr); in rcar_can_get_berr_counter()
726 bec->rxerr = readb(&priv->regs->recr); in rcar_can_get_berr_counter()
727 clk_disable_unprepare(priv->clk); in rcar_can_get_berr_counter()
740 struct rcar_can_priv *priv; in rcar_can_probe() local
781 priv = netdev_priv(ndev); in rcar_can_probe()
783 priv->clk = devm_clk_get(&pdev->dev, "clkp1"); in rcar_can_probe()
784 if (IS_ERR(priv->clk)) { in rcar_can_probe()
785 err = PTR_ERR(priv->clk); in rcar_can_probe()
795 priv->can_clk = devm_clk_get(&pdev->dev, clock_names[clock_select]); in rcar_can_probe()
796 if (IS_ERR(priv->can_clk)) { in rcar_can_probe()
797 err = PTR_ERR(priv->can_clk); in rcar_can_probe()
805 priv->ndev = ndev; in rcar_can_probe()
806 priv->regs = addr; in rcar_can_probe()
807 priv->clock_select = clock_select; in rcar_can_probe()
808 priv->can.clock.freq = clk_get_rate(priv->can_clk); in rcar_can_probe()
809 priv->can.bittiming_const = &rcar_can_bittiming_const; in rcar_can_probe()
810 priv->can.do_set_mode = rcar_can_do_set_mode; in rcar_can_probe()
811 priv->can.do_get_berr_counter = rcar_can_get_berr_counter; in rcar_can_probe()
812 priv->can.ctrlmode_supported = CAN_CTRLMODE_BERR_REPORTING; in rcar_can_probe()
816 netif_napi_add(ndev, &priv->napi, rcar_can_rx_poll, in rcar_can_probe()
828 priv->regs, ndev->irq); in rcar_can_probe()
832 netif_napi_del(&priv->napi); in rcar_can_probe()
842 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_remove() local
845 netif_napi_del(&priv->napi); in rcar_can_remove()
853 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_suspend() local
860 ctlr = readw(&priv->regs->ctlr); in rcar_can_suspend()
862 writew(ctlr, &priv->regs->ctlr); in rcar_can_suspend()
864 writew(ctlr, &priv->regs->ctlr); in rcar_can_suspend()
865 priv->can.state = CAN_STATE_SLEEPING; in rcar_can_suspend()
867 clk_disable(priv->clk); in rcar_can_suspend()
874 struct rcar_can_priv *priv = netdev_priv(ndev); in rcar_can_resume() local
878 err = clk_enable(priv->clk); in rcar_can_resume()
884 ctlr = readw(&priv->regs->ctlr); in rcar_can_resume()
886 writew(ctlr, &priv->regs->ctlr); in rcar_can_resume()
888 writew(ctlr, &priv->regs->ctlr); in rcar_can_resume()
889 priv->can.state = CAN_STATE_ERROR_ACTIVE; in rcar_can_resume()