Lines Matching refs:priv

85 static void sja1000_write_cmdreg(struct sja1000_priv *priv, u8 val)  in sja1000_write_cmdreg()  argument
93 spin_lock_irqsave(&priv->cmdreg_lock, flags); in sja1000_write_cmdreg()
94 priv->write_reg(priv, SJA1000_CMR, val); in sja1000_write_cmdreg()
95 priv->read_reg(priv, SJA1000_SR); in sja1000_write_cmdreg()
96 spin_unlock_irqrestore(&priv->cmdreg_lock, flags); in sja1000_write_cmdreg()
99 static int sja1000_is_absent(struct sja1000_priv *priv) in sja1000_is_absent() argument
101 return (priv->read_reg(priv, SJA1000_MOD) == 0xFF); in sja1000_is_absent()
106 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_probe_chip() local
108 if (priv->reg_base && sja1000_is_absent(priv)) { in sja1000_probe_chip()
117 struct sja1000_priv *priv = netdev_priv(dev); in set_reset_mode() local
118 unsigned char status = priv->read_reg(priv, SJA1000_MOD); in set_reset_mode()
122 priv->write_reg(priv, SJA1000_IER, IRQ_OFF); in set_reset_mode()
127 priv->can.state = CAN_STATE_STOPPED; in set_reset_mode()
132 priv->write_reg(priv, SJA1000_MOD, MOD_RM); in set_reset_mode()
134 status = priv->read_reg(priv, SJA1000_MOD); in set_reset_mode()
142 struct sja1000_priv *priv = netdev_priv(dev); in set_normal_mode() local
143 unsigned char status = priv->read_reg(priv, SJA1000_MOD); in set_normal_mode()
150 priv->can.state = CAN_STATE_ERROR_ACTIVE; in set_normal_mode()
152 if (priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) in set_normal_mode()
153 priv->write_reg(priv, SJA1000_IER, IRQ_ALL); in set_normal_mode()
155 priv->write_reg(priv, SJA1000_IER, in set_normal_mode()
161 if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) in set_normal_mode()
163 if (priv->can.ctrlmode & CAN_CTRLMODE_PRESUME_ACK) in set_normal_mode()
165 priv->write_reg(priv, SJA1000_MOD, mod_reg_val); in set_normal_mode()
169 status = priv->read_reg(priv, SJA1000_MOD); in set_normal_mode()
185 struct sja1000_priv *priv = netdev_priv(dev); in chipset_init() local
188 priv->write_reg(priv, SJA1000_CDR, priv->cdr | CDR_PELICAN); in chipset_init()
191 priv->write_reg(priv, SJA1000_ACCC0, 0x00); in chipset_init()
192 priv->write_reg(priv, SJA1000_ACCC1, 0x00); in chipset_init()
193 priv->write_reg(priv, SJA1000_ACCC2, 0x00); in chipset_init()
194 priv->write_reg(priv, SJA1000_ACCC3, 0x00); in chipset_init()
196 priv->write_reg(priv, SJA1000_ACCM0, 0xFF); in chipset_init()
197 priv->write_reg(priv, SJA1000_ACCM1, 0xFF); in chipset_init()
198 priv->write_reg(priv, SJA1000_ACCM2, 0xFF); in chipset_init()
199 priv->write_reg(priv, SJA1000_ACCM3, 0xFF); in chipset_init()
201 priv->write_reg(priv, SJA1000_OCR, priv->ocr | OCR_MODE_NORMAL); in chipset_init()
206 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_start() local
209 if (priv->can.state != CAN_STATE_STOPPED) in sja1000_start()
213 if (!(priv->read_reg(priv, SJA1000_CDR) & CDR_PELICAN)) in sja1000_start()
217 priv->write_reg(priv, SJA1000_TXERR, 0x0); in sja1000_start()
218 priv->write_reg(priv, SJA1000_RXERR, 0x0); in sja1000_start()
219 priv->read_reg(priv, SJA1000_ECC); in sja1000_start()
222 priv->read_reg(priv, SJA1000_IR); in sja1000_start()
246 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_set_bittiming() local
247 struct can_bittiming *bt = &priv->can.bittiming; in sja1000_set_bittiming()
253 if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES) in sja1000_set_bittiming()
258 priv->write_reg(priv, SJA1000_BTR0, btr0); in sja1000_set_bittiming()
259 priv->write_reg(priv, SJA1000_BTR1, btr1); in sja1000_set_bittiming()
267 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_get_berr_counter() local
269 bec->txerr = priv->read_reg(priv, SJA1000_TXERR); in sja1000_get_berr_counter()
270 bec->rxerr = priv->read_reg(priv, SJA1000_RXERR); in sja1000_get_berr_counter()
284 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_start_xmit() local
307 priv->write_reg(priv, SJA1000_FI, fi); in sja1000_start_xmit()
308 priv->write_reg(priv, SJA1000_ID1, (id & 0x1fe00000) >> 21); in sja1000_start_xmit()
309 priv->write_reg(priv, SJA1000_ID2, (id & 0x001fe000) >> 13); in sja1000_start_xmit()
310 priv->write_reg(priv, SJA1000_ID3, (id & 0x00001fe0) >> 5); in sja1000_start_xmit()
311 priv->write_reg(priv, SJA1000_ID4, (id & 0x0000001f) << 3); in sja1000_start_xmit()
314 priv->write_reg(priv, SJA1000_FI, fi); in sja1000_start_xmit()
315 priv->write_reg(priv, SJA1000_ID1, (id & 0x000007f8) >> 3); in sja1000_start_xmit()
316 priv->write_reg(priv, SJA1000_ID2, (id & 0x00000007) << 5); in sja1000_start_xmit()
320 priv->write_reg(priv, dreg++, cf->data[i]); in sja1000_start_xmit()
324 if (priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT) in sja1000_start_xmit()
327 if (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK) in sja1000_start_xmit()
332 sja1000_write_cmdreg(priv, cmd_reg_val); in sja1000_start_xmit()
339 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_rx() local
353 fi = priv->read_reg(priv, SJA1000_FI); in sja1000_rx()
358 id = (priv->read_reg(priv, SJA1000_ID1) << 21) in sja1000_rx()
359 | (priv->read_reg(priv, SJA1000_ID2) << 13) in sja1000_rx()
360 | (priv->read_reg(priv, SJA1000_ID3) << 5) in sja1000_rx()
361 | (priv->read_reg(priv, SJA1000_ID4) >> 3); in sja1000_rx()
366 id = (priv->read_reg(priv, SJA1000_ID1) << 3) in sja1000_rx()
367 | (priv->read_reg(priv, SJA1000_ID2) >> 5); in sja1000_rx()
375 cf->data[i] = priv->read_reg(priv, dreg++); in sja1000_rx()
381 sja1000_write_cmdreg(priv, CMD_RRB); in sja1000_rx()
392 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_err() local
396 enum can_state state = priv->can.state; in sja1000_err()
405 txerr = priv->read_reg(priv, SJA1000_TXERR); in sja1000_err()
406 rxerr = priv->read_reg(priv, SJA1000_RXERR); in sja1000_err()
418 sja1000_write_cmdreg(priv, CMD_CDO); /* clear bit */ in sja1000_err()
434 priv->can.can_stats.bus_error++; in sja1000_err()
437 ecc = priv->read_reg(priv, SJA1000_ECC); in sja1000_err()
471 alc = priv->read_reg(priv, SJA1000_ALC); in sja1000_err()
472 priv->can.can_stats.arbitration_lost++; in sja1000_err()
478 if (state != priv->can.state) { in sja1000_err()
498 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_interrupt() local
503 if (priv->pre_irq) in sja1000_interrupt()
504 priv->pre_irq(priv); in sja1000_interrupt()
507 if (priv->read_reg(priv, SJA1000_IER) == IRQ_OFF) in sja1000_interrupt()
510 while ((isrc = priv->read_reg(priv, SJA1000_IR)) && in sja1000_interrupt()
513 status = priv->read_reg(priv, SJA1000_SR); in sja1000_interrupt()
515 if (status == 0xFF && sja1000_is_absent(priv)) in sja1000_interrupt()
523 if (priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT && in sja1000_interrupt()
530 priv->read_reg(priv, SJA1000_FI) & 0xf; in sja1000_interrupt()
541 status = priv->read_reg(priv, SJA1000_SR); in sja1000_interrupt()
543 if (status == 0xFF && sja1000_is_absent(priv)) in sja1000_interrupt()
555 if (priv->post_irq) in sja1000_interrupt()
556 priv->post_irq(priv); in sja1000_interrupt()
567 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_open() local
579 if (!(priv->flags & SJA1000_CUSTOM_IRQ_HANDLER)) { in sja1000_open()
580 err = request_irq(dev->irq, sja1000_interrupt, priv->irq_flags, in sja1000_open()
600 struct sja1000_priv *priv = netdev_priv(dev); in sja1000_close() local
605 if (!(priv->flags & SJA1000_CUSTOM_IRQ_HANDLER)) in sja1000_close()
618 struct sja1000_priv *priv; in alloc_sja1000dev() local
625 priv = netdev_priv(dev); in alloc_sja1000dev()
627 priv->dev = dev; in alloc_sja1000dev()
628 priv->can.bittiming_const = &sja1000_bittiming_const; in alloc_sja1000dev()
629 priv->can.do_set_bittiming = sja1000_set_bittiming; in alloc_sja1000dev()
630 priv->can.do_set_mode = sja1000_set_mode; in alloc_sja1000dev()
631 priv->can.do_get_berr_counter = sja1000_get_berr_counter; in alloc_sja1000dev()
632 priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK | in alloc_sja1000dev()
639 spin_lock_init(&priv->cmdreg_lock); in alloc_sja1000dev()
642 priv->priv = (void *)priv + sizeof(struct sja1000_priv); in alloc_sja1000dev()