Lines Matching refs:priv

138 	u32 (*read_reg)(const struct xcan_priv *priv, enum xcan_reg reg);
139 void (*write_reg)(const struct xcan_priv *priv, enum xcan_reg reg,
169 static void xcan_write_reg_le(const struct xcan_priv *priv, enum xcan_reg reg, in xcan_write_reg_le() argument
172 iowrite32(val, priv->reg_base + reg); in xcan_write_reg_le()
183 static u32 xcan_read_reg_le(const struct xcan_priv *priv, enum xcan_reg reg) in xcan_read_reg_le() argument
185 return ioread32(priv->reg_base + reg); in xcan_read_reg_le()
196 static void xcan_write_reg_be(const struct xcan_priv *priv, enum xcan_reg reg, in xcan_write_reg_be() argument
199 iowrite32be(val, priv->reg_base + reg); in xcan_write_reg_be()
210 static u32 xcan_read_reg_be(const struct xcan_priv *priv, enum xcan_reg reg) in xcan_read_reg_be() argument
212 return ioread32be(priv->reg_base + reg); in xcan_read_reg_be()
226 struct xcan_priv *priv = netdev_priv(ndev); in set_reset_mode() local
229 priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_RESET_MASK); in set_reset_mode()
232 while (!(priv->read_reg(priv, XCAN_SR_OFFSET) & XCAN_SR_CONFIG_MASK)) { in set_reset_mode()
252 struct xcan_priv *priv = netdev_priv(ndev); in xcan_set_bittiming() local
253 struct can_bittiming *bt = &priv->can.bittiming; in xcan_set_bittiming()
260 is_config_mode = priv->read_reg(priv, XCAN_SR_OFFSET) & in xcan_set_bittiming()
280 priv->write_reg(priv, XCAN_BRPR_OFFSET, btr0); in xcan_set_bittiming()
281 priv->write_reg(priv, XCAN_BTR_OFFSET, btr1); in xcan_set_bittiming()
284 priv->read_reg(priv, XCAN_BRPR_OFFSET), in xcan_set_bittiming()
285 priv->read_reg(priv, XCAN_BTR_OFFSET)); in xcan_set_bittiming()
302 struct xcan_priv *priv = netdev_priv(ndev); in xcan_chip_start() local
317 priv->write_reg(priv, XCAN_IER_OFFSET, XCAN_INTR_ALL); in xcan_chip_start()
320 if (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK) { in xcan_chip_start()
328 priv->write_reg(priv, XCAN_MSR_OFFSET, reg_msr); in xcan_chip_start()
329 priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_CEN_MASK); in xcan_chip_start()
332 while (!(priv->read_reg(priv, XCAN_SR_OFFSET) & reg_sr_mask)) { in xcan_chip_start()
340 priv->read_reg(priv, XCAN_SR_OFFSET)); in xcan_chip_start()
342 priv->can.state = CAN_STATE_ERROR_ACTIVE; in xcan_chip_start()
390 struct xcan_priv *priv = netdev_priv(ndev); in xcan_start_xmit() local
399 if (unlikely(priv->read_reg(priv, XCAN_SR_OFFSET) & in xcan_start_xmit()
440 can_put_echo_skb(skb, ndev, priv->tx_head % priv->tx_max); in xcan_start_xmit()
441 priv->tx_head++; in xcan_start_xmit()
444 priv->write_reg(priv, XCAN_TXFIFO_ID_OFFSET, id); in xcan_start_xmit()
446 priv->write_reg(priv, XCAN_TXFIFO_DLC_OFFSET, dlc); in xcan_start_xmit()
448 priv->write_reg(priv, XCAN_TXFIFO_DW1_OFFSET, data[0]); in xcan_start_xmit()
452 priv->write_reg(priv, XCAN_TXFIFO_DW2_OFFSET, data[1]); in xcan_start_xmit()
457 if ((priv->tx_head - priv->tx_tail) == priv->tx_max) in xcan_start_xmit()
475 struct xcan_priv *priv = netdev_priv(ndev); in xcan_rx() local
488 id_xcan = priv->read_reg(priv, XCAN_RXFIFO_ID_OFFSET); in xcan_rx()
489 dlc = priv->read_reg(priv, XCAN_RXFIFO_DLC_OFFSET) >> in xcan_rx()
513 data[0] = priv->read_reg(priv, XCAN_RXFIFO_DW1_OFFSET); in xcan_rx()
514 data[1] = priv->read_reg(priv, XCAN_RXFIFO_DW2_OFFSET); in xcan_rx()
542 struct xcan_priv *priv = netdev_priv(ndev); in xcan_err_interrupt() local
550 err_status = priv->read_reg(priv, XCAN_ESR_OFFSET); in xcan_err_interrupt()
551 priv->write_reg(priv, XCAN_ESR_OFFSET, err_status); in xcan_err_interrupt()
552 txerr = priv->read_reg(priv, XCAN_ECR_OFFSET) & XCAN_ECR_TEC_MASK; in xcan_err_interrupt()
553 rxerr = ((priv->read_reg(priv, XCAN_ECR_OFFSET) & in xcan_err_interrupt()
555 status = priv->read_reg(priv, XCAN_SR_OFFSET); in xcan_err_interrupt()
558 priv->can.state = CAN_STATE_BUS_OFF; in xcan_err_interrupt()
559 priv->can.can_stats.bus_off++; in xcan_err_interrupt()
561 priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_RESET_MASK); in xcan_err_interrupt()
566 priv->can.state = CAN_STATE_ERROR_PASSIVE; in xcan_err_interrupt()
567 priv->can.can_stats.error_passive++; in xcan_err_interrupt()
577 priv->can.state = CAN_STATE_ERROR_WARNING; in xcan_err_interrupt()
578 priv->can.can_stats.error_warning++; in xcan_err_interrupt()
591 priv->can.can_stats.arbitration_lost++; in xcan_err_interrupt()
602 priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_RESET_MASK); in xcan_err_interrupt()
661 priv->can.can_stats.bus_error++; in xcan_err_interrupt()
671 __func__, priv->read_reg(priv, XCAN_ESR_OFFSET)); in xcan_err_interrupt()
684 struct xcan_priv *priv = netdev_priv(ndev); in xcan_state_interrupt() local
688 priv->can.state = CAN_STATE_SLEEPING; in xcan_state_interrupt()
692 priv->can.state = CAN_STATE_ERROR_ACTIVE; in xcan_state_interrupt()
708 struct xcan_priv *priv = netdev_priv(ndev); in xcan_rx_poll() local
712 isr = priv->read_reg(priv, XCAN_ISR_OFFSET); in xcan_rx_poll()
715 priv->write_reg(priv, XCAN_ICR_OFFSET, in xcan_rx_poll()
719 priv->write_reg(priv, XCAN_ICR_OFFSET, in xcan_rx_poll()
723 priv->write_reg(priv, XCAN_ICR_OFFSET, XCAN_IXR_RXNEMP_MASK); in xcan_rx_poll()
724 isr = priv->read_reg(priv, XCAN_ISR_OFFSET); in xcan_rx_poll()
732 ier = priv->read_reg(priv, XCAN_IER_OFFSET); in xcan_rx_poll()
734 priv->write_reg(priv, XCAN_IER_OFFSET, ier); in xcan_rx_poll()
746 struct xcan_priv *priv = netdev_priv(ndev); in xcan_tx_interrupt() local
749 while ((priv->tx_head - priv->tx_tail > 0) && in xcan_tx_interrupt()
751 priv->write_reg(priv, XCAN_ICR_OFFSET, XCAN_IXR_TXOK_MASK); in xcan_tx_interrupt()
752 can_get_echo_skb(ndev, priv->tx_tail % in xcan_tx_interrupt()
753 priv->tx_max); in xcan_tx_interrupt()
754 priv->tx_tail++; in xcan_tx_interrupt()
756 isr = priv->read_reg(priv, XCAN_ISR_OFFSET); in xcan_tx_interrupt()
776 struct xcan_priv *priv = netdev_priv(ndev); in xcan_interrupt() local
780 isr = priv->read_reg(priv, XCAN_ISR_OFFSET); in xcan_interrupt()
786 priv->write_reg(priv, XCAN_ICR_OFFSET, (XCAN_IXR_SLP_MASK | in xcan_interrupt()
798 priv->write_reg(priv, XCAN_ICR_OFFSET, (XCAN_IXR_ERROR_MASK | in xcan_interrupt()
806 ier = priv->read_reg(priv, XCAN_IER_OFFSET); in xcan_interrupt()
808 priv->write_reg(priv, XCAN_IER_OFFSET, ier); in xcan_interrupt()
809 napi_schedule(&priv->napi); in xcan_interrupt()
823 struct xcan_priv *priv = netdev_priv(ndev); in xcan_chip_stop() local
827 ier = priv->read_reg(priv, XCAN_IER_OFFSET); in xcan_chip_stop()
829 priv->write_reg(priv, XCAN_IER_OFFSET, ier); in xcan_chip_stop()
830 priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_RESET_MASK); in xcan_chip_stop()
831 priv->can.state = CAN_STATE_STOPPED; in xcan_chip_stop()
843 struct xcan_priv *priv = netdev_priv(ndev); in xcan_open() local
846 ret = request_irq(ndev->irq, xcan_interrupt, priv->irq_flags, in xcan_open()
853 ret = clk_prepare_enable(priv->can_clk); in xcan_open()
859 ret = clk_prepare_enable(priv->bus_clk); in xcan_open()
884 napi_enable(&priv->napi); in xcan_open()
892 clk_disable_unprepare(priv->bus_clk); in xcan_open()
894 clk_disable_unprepare(priv->can_clk); in xcan_open()
909 struct xcan_priv *priv = netdev_priv(ndev); in xcan_close() local
912 napi_disable(&priv->napi); in xcan_close()
914 clk_disable_unprepare(priv->bus_clk); in xcan_close()
915 clk_disable_unprepare(priv->can_clk); in xcan_close()
935 struct xcan_priv *priv = netdev_priv(ndev); in xcan_get_berr_counter() local
938 ret = clk_prepare_enable(priv->can_clk); in xcan_get_berr_counter()
942 ret = clk_prepare_enable(priv->bus_clk); in xcan_get_berr_counter()
946 bec->txerr = priv->read_reg(priv, XCAN_ECR_OFFSET) & XCAN_ECR_TEC_MASK; in xcan_get_berr_counter()
947 bec->rxerr = ((priv->read_reg(priv, XCAN_ECR_OFFSET) & in xcan_get_berr_counter()
950 clk_disable_unprepare(priv->bus_clk); in xcan_get_berr_counter()
951 clk_disable_unprepare(priv->can_clk); in xcan_get_berr_counter()
956 clk_disable_unprepare(priv->can_clk); in xcan_get_berr_counter()
980 struct xcan_priv *priv = netdev_priv(ndev); in xcan_suspend() local
987 priv->write_reg(priv, XCAN_MSR_OFFSET, XCAN_MSR_SLEEP_MASK); in xcan_suspend()
988 priv->can.state = CAN_STATE_SLEEPING; in xcan_suspend()
990 clk_disable(priv->bus_clk); in xcan_suspend()
991 clk_disable(priv->can_clk); in xcan_suspend()
1007 struct xcan_priv *priv = netdev_priv(ndev); in xcan_resume() local
1010 ret = clk_enable(priv->bus_clk); in xcan_resume()
1015 ret = clk_enable(priv->can_clk); in xcan_resume()
1018 clk_disable_unprepare(priv->bus_clk); in xcan_resume()
1022 priv->write_reg(priv, XCAN_MSR_OFFSET, 0); in xcan_resume()
1023 priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_CEN_MASK); in xcan_resume()
1024 priv->can.state = CAN_STATE_ERROR_ACTIVE; in xcan_resume()
1049 struct xcan_priv *priv; in xcan_probe() local
1074 priv = netdev_priv(ndev); in xcan_probe()
1075 priv->dev = ndev; in xcan_probe()
1076 priv->can.bittiming_const = &xcan_bittiming_const; in xcan_probe()
1077 priv->can.do_set_mode = xcan_do_set_mode; in xcan_probe()
1078 priv->can.do_get_berr_counter = xcan_get_berr_counter; in xcan_probe()
1079 priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK | in xcan_probe()
1081 priv->reg_base = addr; in xcan_probe()
1082 priv->tx_max = tx_max; in xcan_probe()
1093 priv->can_clk = devm_clk_get(&pdev->dev, "can_clk"); in xcan_probe()
1094 if (IS_ERR(priv->can_clk)) { in xcan_probe()
1096 ret = PTR_ERR(priv->can_clk); in xcan_probe()
1102 priv->bus_clk = devm_clk_get(&pdev->dev, "pclk"); in xcan_probe()
1103 if (IS_ERR(priv->bus_clk)) { in xcan_probe()
1105 ret = PTR_ERR(priv->bus_clk); in xcan_probe()
1109 priv->bus_clk = devm_clk_get(&pdev->dev, "s_axi_aclk"); in xcan_probe()
1110 if (IS_ERR(priv->bus_clk)) { in xcan_probe()
1112 ret = PTR_ERR(priv->bus_clk); in xcan_probe()
1117 ret = clk_prepare_enable(priv->can_clk); in xcan_probe()
1123 ret = clk_prepare_enable(priv->bus_clk); in xcan_probe()
1129 priv->write_reg = xcan_write_reg_le; in xcan_probe()
1130 priv->read_reg = xcan_read_reg_le; in xcan_probe()
1132 if (priv->read_reg(priv, XCAN_SR_OFFSET) != XCAN_SR_CONFIG_MASK) { in xcan_probe()
1133 priv->write_reg = xcan_write_reg_be; in xcan_probe()
1134 priv->read_reg = xcan_read_reg_be; in xcan_probe()
1137 priv->can.clock.freq = clk_get_rate(priv->can_clk); in xcan_probe()
1139 netif_napi_add(ndev, &priv->napi, xcan_rx_poll, rx_max); in xcan_probe()
1148 clk_disable_unprepare(priv->bus_clk); in xcan_probe()
1149 clk_disable_unprepare(priv->can_clk); in xcan_probe()
1151 priv->reg_base, ndev->irq, priv->can.clock.freq, in xcan_probe()
1152 priv->tx_max); in xcan_probe()
1157 clk_disable_unprepare(priv->bus_clk); in xcan_probe()
1159 clk_disable_unprepare(priv->can_clk); in xcan_probe()
1176 struct xcan_priv *priv = netdev_priv(ndev); in xcan_remove() local
1182 netif_napi_del(&priv->napi); in xcan_remove()