Lines Matching refs:priv

211 static inline void c_can_pm_runtime_enable(const struct c_can_priv *priv)  in c_can_pm_runtime_enable()  argument
213 if (priv->device) in c_can_pm_runtime_enable()
214 pm_runtime_enable(priv->device); in c_can_pm_runtime_enable()
217 static inline void c_can_pm_runtime_disable(const struct c_can_priv *priv) in c_can_pm_runtime_disable() argument
219 if (priv->device) in c_can_pm_runtime_disable()
220 pm_runtime_disable(priv->device); in c_can_pm_runtime_disable()
223 static inline void c_can_pm_runtime_get_sync(const struct c_can_priv *priv) in c_can_pm_runtime_get_sync() argument
225 if (priv->device) in c_can_pm_runtime_get_sync()
226 pm_runtime_get_sync(priv->device); in c_can_pm_runtime_get_sync()
229 static inline void c_can_pm_runtime_put_sync(const struct c_can_priv *priv) in c_can_pm_runtime_put_sync() argument
231 if (priv->device) in c_can_pm_runtime_put_sync()
232 pm_runtime_put_sync(priv->device); in c_can_pm_runtime_put_sync()
235 static inline void c_can_reset_ram(const struct c_can_priv *priv, bool enable) in c_can_reset_ram() argument
237 if (priv->raminit) in c_can_reset_ram()
238 priv->raminit(priv, enable); in c_can_reset_ram()
241 static void c_can_irq_control(struct c_can_priv *priv, bool enable) in c_can_irq_control() argument
243 u32 ctrl = priv->read_reg(priv, C_CAN_CTRL_REG) & ~CONTROL_IRQMSK; in c_can_irq_control()
248 priv->write_reg(priv, C_CAN_CTRL_REG, ctrl); in c_can_irq_control()
253 struct c_can_priv *priv = netdev_priv(dev); in c_can_obj_update() local
256 priv->write_reg32(priv, reg, (cmd << 16) | obj); in c_can_obj_update()
259 if (!(priv->read_reg(priv, reg) & IF_COMR_BUSY)) in c_can_obj_update()
286 struct c_can_priv *priv = netdev_priv(dev); in c_can_inval_tx_object() local
288 priv->write_reg(priv, C_CAN_IFACE(MSGCTRL_REG, iface), 0); in c_can_inval_tx_object()
294 struct c_can_priv *priv = netdev_priv(dev); in c_can_inval_msg_object() local
296 priv->write_reg(priv, C_CAN_IFACE(ARB1_REG, iface), 0); in c_can_inval_msg_object()
297 priv->write_reg(priv, C_CAN_IFACE(ARB2_REG, iface), 0); in c_can_inval_msg_object()
304 struct c_can_priv *priv = netdev_priv(dev); in c_can_setup_tx_object() local
324 if (rtr != (bool)test_bit(idx, &priv->tx_dir)) { in c_can_setup_tx_object()
328 change_bit(idx, &priv->tx_dir); in c_can_setup_tx_object()
331 priv->write_reg32(priv, C_CAN_IFACE(ARB1_REG, iface), arb); in c_can_setup_tx_object()
333 priv->write_reg(priv, C_CAN_IFACE(MSGCTRL_REG, iface), ctrl); in c_can_setup_tx_object()
336 priv->write_reg(priv, C_CAN_IFACE(DATA1_REG, iface) + i / 2, in c_can_setup_tx_object()
354 struct c_can_priv *priv = netdev_priv(dev); in c_can_handle_lost_msg_obj() local
359 priv->write_reg(priv, C_CAN_IFACE(MSGCTRL_REG, iface), ctrl); in c_can_handle_lost_msg_obj()
380 struct c_can_priv *priv = netdev_priv(dev); in c_can_read_msg_object() local
393 arb = priv->read_reg32(priv, C_CAN_IFACE(ARB1_REG, iface)); in c_can_read_msg_object()
406 data = priv->read_reg(priv, dreg); in c_can_read_msg_object()
422 struct c_can_priv *priv = netdev_priv(dev); in c_can_setup_receive_object() local
425 priv->write_reg32(priv, C_CAN_IFACE(MASK1_REG, iface), mask); in c_can_setup_receive_object()
428 priv->write_reg32(priv, C_CAN_IFACE(ARB1_REG, iface), id); in c_can_setup_receive_object()
430 priv->write_reg(priv, C_CAN_IFACE(MSGCTRL_REG, iface), mcont); in c_can_setup_receive_object()
438 struct c_can_priv *priv = netdev_priv(dev); in c_can_start_xmit() local
447 idx = fls(atomic_read(&priv->tx_active)); in c_can_start_xmit()
459 priv->dlc[idx] = frame->can_dlc; in c_can_start_xmit()
463 atomic_add((1 << idx), &priv->tx_active); in c_can_start_xmit()
471 struct c_can_priv *priv, u32 init) in c_can_wait_for_ctrl_init() argument
475 while (init != (priv->read_reg(priv, C_CAN_CTRL_REG) & CONTROL_INIT)) { in c_can_wait_for_ctrl_init()
490 struct c_can_priv *priv = netdev_priv(dev); in c_can_set_bittiming() local
491 const struct can_bittiming *bt = &priv->can.bittiming; in c_can_set_bittiming()
509 ctrl_save = priv->read_reg(priv, C_CAN_CTRL_REG); in c_can_set_bittiming()
511 priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_CCE | CONTROL_INIT); in c_can_set_bittiming()
512 res = c_can_wait_for_ctrl_init(dev, priv, CONTROL_INIT); in c_can_set_bittiming()
516 priv->write_reg(priv, C_CAN_BTR_REG, reg_btr); in c_can_set_bittiming()
517 priv->write_reg(priv, C_CAN_BRPEXT_REG, reg_brpe); in c_can_set_bittiming()
518 priv->write_reg(priv, C_CAN_CTRL_REG, ctrl_save); in c_can_set_bittiming()
520 return c_can_wait_for_ctrl_init(dev, priv, 0); in c_can_set_bittiming()
556 struct c_can_priv *priv = netdev_priv(dev); in c_can_chip_config() local
559 priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_ENABLE_AR); in c_can_chip_config()
561 if ((priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) && in c_can_chip_config()
562 (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK)) { in c_can_chip_config()
564 priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_TEST); in c_can_chip_config()
565 priv->write_reg(priv, C_CAN_TEST_REG, TEST_LBACK | TEST_SILENT); in c_can_chip_config()
566 } else if (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK) { in c_can_chip_config()
568 priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_TEST); in c_can_chip_config()
569 priv->write_reg(priv, C_CAN_TEST_REG, TEST_LBACK); in c_can_chip_config()
570 } else if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) { in c_can_chip_config()
572 priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_TEST); in c_can_chip_config()
573 priv->write_reg(priv, C_CAN_TEST_REG, TEST_SILENT); in c_can_chip_config()
580 priv->write_reg(priv, C_CAN_STS_REG, LEC_UNUSED); in c_can_chip_config()
583 atomic_set(&priv->tx_active, 0); in c_can_chip_config()
584 priv->rxmasked = 0; in c_can_chip_config()
585 priv->tx_dir = 0; in c_can_chip_config()
593 struct c_can_priv *priv = netdev_priv(dev); in c_can_start() local
603 priv->comm_rcv_high = priv->type != BOSCH_D_CAN ? in c_can_start()
606 priv->can.state = CAN_STATE_ERROR_ACTIVE; in c_can_start()
609 p = pinctrl_get_select(priv->device, "active"); in c_can_start()
613 pinctrl_pm_select_default_state(priv->device); in c_can_start()
620 struct c_can_priv *priv = netdev_priv(dev); in c_can_stop() local
622 c_can_irq_control(priv, false); in c_can_stop()
625 priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_INIT); in c_can_stop()
629 priv->can.state = CAN_STATE_STOPPED; in c_can_stop()
634 struct c_can_priv *priv = netdev_priv(dev); in c_can_set_mode() local
643 c_can_irq_control(priv, true); in c_can_set_mode()
656 struct c_can_priv *priv = netdev_priv(dev); in __c_can_get_berr_counter() local
658 reg_err_counter = priv->read_reg(priv, C_CAN_ERR_CNT_REG); in __c_can_get_berr_counter()
669 struct c_can_priv *priv = netdev_priv(dev); in c_can_get_berr_counter() local
672 c_can_pm_runtime_get_sync(priv); in c_can_get_berr_counter()
674 c_can_pm_runtime_put_sync(priv); in c_can_get_berr_counter()
681 struct c_can_priv *priv = netdev_priv(dev); in c_can_do_tx() local
685 clr = pend = priv->read_reg(priv, C_CAN_INTPND2_REG); in c_can_do_tx()
693 bytes += priv->dlc[idx]; in c_can_do_tx()
698 atomic_sub(clr, &priv->tx_active); in c_can_do_tx()
743 struct c_can_priv *priv, u32 obj) in c_can_rx_object_get() argument
745 c_can_object_get(dev, IF_RX, obj, priv->comm_rcv_high); in c_can_rx_object_get()
749 struct c_can_priv *priv, u32 obj) in c_can_rx_finalize() argument
751 if (priv->type != BOSCH_D_CAN) in c_can_rx_finalize()
755 static int c_can_read_objects(struct net_device *dev, struct c_can_priv *priv, in c_can_read_objects() argument
763 c_can_rx_object_get(dev, priv, obj); in c_can_read_objects()
764 ctrl = priv->read_reg(priv, C_CAN_IFACE(MSGCTRL_REG, IF_RX)); in c_can_read_objects()
785 c_can_rx_finalize(dev, priv, obj); in c_can_read_objects()
794 static inline u32 c_can_get_pending(struct c_can_priv *priv) in c_can_get_pending() argument
796 u32 pend = priv->read_reg(priv, C_CAN_NEWDAT1_REG); in c_can_get_pending()
816 struct c_can_priv *priv = netdev_priv(dev); in c_can_do_rx_poll() local
828 pend = c_can_get_pending(priv); in c_can_do_rx_poll()
842 n = c_can_read_objects(dev, priv, toread, quota); in c_can_do_rx_poll()
858 struct c_can_priv *priv = netdev_priv(dev); in c_can_handle_state_change() local
867 priv->can.can_stats.error_warning++; in c_can_handle_state_change()
868 priv->can.state = CAN_STATE_ERROR_WARNING; in c_can_handle_state_change()
872 priv->can.can_stats.error_passive++; in c_can_handle_state_change()
873 priv->can.state = CAN_STATE_ERROR_PASSIVE; in c_can_handle_state_change()
877 priv->can.state = CAN_STATE_BUS_OFF; in c_can_handle_state_change()
878 priv->can.can_stats.bus_off++; in c_can_handle_state_change()
890 reg_err_counter = priv->read_reg(priv, C_CAN_ERR_CNT_REG); in c_can_handle_state_change()
935 struct c_can_priv *priv = netdev_priv(dev); in c_can_handle_bus_err() local
948 if (!(priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING)) in c_can_handle_bus_err()
952 priv->can.can_stats.bus_error++; in c_can_handle_bus_err()
1004 struct c_can_priv *priv = netdev_priv(dev); in c_can_poll() local
1005 u16 curr, last = priv->last_status; in c_can_poll()
1008 priv->last_status = curr = priv->read_reg(priv, C_CAN_STS_REG); in c_can_poll()
1010 if (priv->type != BOSCH_D_CAN) in c_can_poll()
1011 priv->write_reg(priv, C_CAN_STS_REG, LEC_UNUSED); in c_can_poll()
1033 priv->can.state = CAN_STATE_ERROR_ACTIVE; in c_can_poll()
1037 priv->can.state = CAN_STATE_ERROR_ACTIVE; in c_can_poll()
1051 if (priv->can.state != CAN_STATE_BUS_OFF) in c_can_poll()
1052 c_can_irq_control(priv, true); in c_can_poll()
1061 struct c_can_priv *priv = netdev_priv(dev); in c_can_isr() local
1063 if (!priv->read_reg(priv, C_CAN_INT_REG)) in c_can_isr()
1067 c_can_irq_control(priv, false); in c_can_isr()
1068 napi_schedule(&priv->napi); in c_can_isr()
1076 struct c_can_priv *priv = netdev_priv(dev); in c_can_open() local
1078 c_can_pm_runtime_get_sync(priv); in c_can_open()
1079 c_can_reset_ram(priv, true); in c_can_open()
1103 napi_enable(&priv->napi); in c_can_open()
1105 c_can_irq_control(priv, true); in c_can_open()
1115 c_can_reset_ram(priv, false); in c_can_open()
1116 c_can_pm_runtime_put_sync(priv); in c_can_open()
1122 struct c_can_priv *priv = netdev_priv(dev); in c_can_close() local
1125 napi_disable(&priv->napi); in c_can_close()
1130 c_can_reset_ram(priv, false); in c_can_close()
1131 c_can_pm_runtime_put_sync(priv); in c_can_close()
1141 struct c_can_priv *priv; in alloc_c_can_dev() local
1147 priv = netdev_priv(dev); in alloc_c_can_dev()
1148 netif_napi_add(dev, &priv->napi, c_can_poll, C_CAN_NAPI_WEIGHT); in alloc_c_can_dev()
1150 priv->dev = dev; in alloc_c_can_dev()
1151 priv->can.bittiming_const = &c_can_bittiming_const; in alloc_c_can_dev()
1152 priv->can.do_set_mode = c_can_set_mode; in alloc_c_can_dev()
1153 priv->can.do_get_berr_counter = c_can_get_berr_counter; in alloc_c_can_dev()
1154 priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK | in alloc_c_can_dev()
1167 struct c_can_priv *priv = netdev_priv(dev); in c_can_power_down() local
1172 WARN_ON(priv->type != BOSCH_D_CAN); in c_can_power_down()
1175 val = priv->read_reg(priv, C_CAN_CTRL_EX_REG); in c_can_power_down()
1177 priv->write_reg(priv, C_CAN_CTRL_EX_REG, val); in c_can_power_down()
1181 while (!(priv->read_reg(priv, C_CAN_STS_REG) & STATUS_PDA) && in c_can_power_down()
1190 c_can_reset_ram(priv, false); in c_can_power_down()
1191 c_can_pm_runtime_put_sync(priv); in c_can_power_down()
1201 struct c_can_priv *priv = netdev_priv(dev); in c_can_power_up() local
1207 WARN_ON(priv->type != BOSCH_D_CAN); in c_can_power_up()
1209 c_can_pm_runtime_get_sync(priv); in c_can_power_up()
1210 c_can_reset_ram(priv, true); in c_can_power_up()
1213 val = priv->read_reg(priv, C_CAN_CTRL_EX_REG); in c_can_power_up()
1215 priv->write_reg(priv, C_CAN_CTRL_EX_REG, val); in c_can_power_up()
1216 val = priv->read_reg(priv, C_CAN_CTRL_REG); in c_can_power_up()
1218 priv->write_reg(priv, C_CAN_CTRL_REG, val); in c_can_power_up()
1222 while ((priv->read_reg(priv, C_CAN_STS_REG) & STATUS_PDA) && in c_can_power_up()
1231 c_can_irq_control(priv, true); in c_can_power_up()
1240 struct c_can_priv *priv = netdev_priv(dev); in free_c_can_dev() local
1242 netif_napi_del(&priv->napi); in free_c_can_dev()
1256 struct c_can_priv *priv = netdev_priv(dev); in register_c_can_dev() local
1266 c_can_pm_runtime_enable(priv); in register_c_can_dev()
1273 c_can_pm_runtime_disable(priv); in register_c_can_dev()
1283 struct c_can_priv *priv = netdev_priv(dev); in unregister_c_can_dev() local
1287 c_can_pm_runtime_disable(priv); in unregister_c_can_dev()