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()
1007 struct c_can_priv *priv = netdev_priv(dev); in c_can_poll() local
1008 u16 curr, last = priv->last_status; in c_can_poll()
1011 priv->last_status = curr = priv->read_reg(priv, C_CAN_STS_REG); in c_can_poll()
1013 if (priv->type != BOSCH_D_CAN) in c_can_poll()
1014 priv->write_reg(priv, C_CAN_STS_REG, LEC_UNUSED); in c_can_poll()
1036 priv->can.state = CAN_STATE_ERROR_ACTIVE; in c_can_poll()
1040 priv->can.state = CAN_STATE_ERROR_ACTIVE; in c_can_poll()
1054 if (priv->can.state != CAN_STATE_BUS_OFF) in c_can_poll()
1055 c_can_irq_control(priv, true); in c_can_poll()
1064 struct c_can_priv *priv = netdev_priv(dev); in c_can_isr() local
1066 if (!priv->read_reg(priv, C_CAN_INT_REG)) in c_can_isr()
1070 c_can_irq_control(priv, false); in c_can_isr()
1071 napi_schedule(&priv->napi); in c_can_isr()
1079 struct c_can_priv *priv = netdev_priv(dev); in c_can_open() local
1081 c_can_pm_runtime_get_sync(priv); in c_can_open()
1082 c_can_reset_ram(priv, true); in c_can_open()
1106 napi_enable(&priv->napi); in c_can_open()
1108 c_can_irq_control(priv, true); in c_can_open()
1118 c_can_reset_ram(priv, false); in c_can_open()
1119 c_can_pm_runtime_put_sync(priv); in c_can_open()
1125 struct c_can_priv *priv = netdev_priv(dev); in c_can_close() local
1128 napi_disable(&priv->napi); in c_can_close()
1133 c_can_reset_ram(priv, false); in c_can_close()
1134 c_can_pm_runtime_put_sync(priv); in c_can_close()
1144 struct c_can_priv *priv; in alloc_c_can_dev() local
1150 priv = netdev_priv(dev); in alloc_c_can_dev()
1151 netif_napi_add(dev, &priv->napi, c_can_poll, C_CAN_NAPI_WEIGHT); in alloc_c_can_dev()
1153 priv->dev = dev; in alloc_c_can_dev()
1154 priv->can.bittiming_const = &c_can_bittiming_const; in alloc_c_can_dev()
1155 priv->can.do_set_mode = c_can_set_mode; in alloc_c_can_dev()
1156 priv->can.do_get_berr_counter = c_can_get_berr_counter; in alloc_c_can_dev()
1157 priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK | in alloc_c_can_dev()
1170 struct c_can_priv *priv = netdev_priv(dev); in c_can_power_down() local
1175 WARN_ON(priv->type != BOSCH_D_CAN); in c_can_power_down()
1178 val = priv->read_reg(priv, C_CAN_CTRL_EX_REG); in c_can_power_down()
1180 priv->write_reg(priv, C_CAN_CTRL_EX_REG, val); in c_can_power_down()
1184 while (!(priv->read_reg(priv, C_CAN_STS_REG) & STATUS_PDA) && in c_can_power_down()
1193 c_can_reset_ram(priv, false); in c_can_power_down()
1194 c_can_pm_runtime_put_sync(priv); in c_can_power_down()
1204 struct c_can_priv *priv = netdev_priv(dev); in c_can_power_up() local
1210 WARN_ON(priv->type != BOSCH_D_CAN); in c_can_power_up()
1212 c_can_pm_runtime_get_sync(priv); in c_can_power_up()
1213 c_can_reset_ram(priv, true); in c_can_power_up()
1216 val = priv->read_reg(priv, C_CAN_CTRL_EX_REG); in c_can_power_up()
1218 priv->write_reg(priv, C_CAN_CTRL_EX_REG, val); in c_can_power_up()
1219 val = priv->read_reg(priv, C_CAN_CTRL_REG); in c_can_power_up()
1221 priv->write_reg(priv, C_CAN_CTRL_REG, val); in c_can_power_up()
1225 while ((priv->read_reg(priv, C_CAN_STS_REG) & STATUS_PDA) && in c_can_power_up()
1234 c_can_irq_control(priv, true); in c_can_power_up()
1243 struct c_can_priv *priv = netdev_priv(dev); in free_c_can_dev() local
1245 netif_napi_del(&priv->napi); in free_c_can_dev()
1259 struct c_can_priv *priv = netdev_priv(dev); in register_c_can_dev() local
1269 c_can_pm_runtime_enable(priv); in register_c_can_dev()
1276 c_can_pm_runtime_disable(priv); in register_c_can_dev()
1286 struct c_can_priv *priv = netdev_priv(dev); in unregister_c_can_dev() local
1290 c_can_pm_runtime_disable(priv); in unregister_c_can_dev()