Lines Matching defs:spi

35 #include <linux/spi/spi.h>
147 struct spi_device *spi;
200 static int hi3110_spi_trans(struct spi_device *spi, int len)
202 struct hi3110_priv *priv = spi_get_drvdata(spi);
215 ret = spi_sync(spi, &m);
218 dev_err(&spi->dev, "spi transfer failed: ret = %d\n", ret);
222 static int hi3110_cmd(struct spi_device *spi, u8 command)
224 struct hi3110_priv *priv = spi_get_drvdata(spi);
227 dev_dbg(&spi->dev, "hi3110_cmd: %02X\n", command);
229 return hi3110_spi_trans(spi, 1);
232 static u8 hi3110_read(struct spi_device *spi, u8 command)
234 struct hi3110_priv *priv = spi_get_drvdata(spi);
238 hi3110_spi_trans(spi, 2);
244 static void hi3110_write(struct spi_device *spi, u8 reg, u8 val)
246 struct hi3110_priv *priv = spi_get_drvdata(spi);
250 hi3110_spi_trans(spi, 2);
253 static void hi3110_hw_tx_frame(struct spi_device *spi, u8 *buf, int len)
255 struct hi3110_priv *priv = spi_get_drvdata(spi);
259 hi3110_spi_trans(spi, len + 1);
262 static void hi3110_hw_tx(struct spi_device *spi, struct can_frame *frame)
286 hi3110_hw_tx_frame(spi, buf, HI3110_TX_EXT_BUF_LEN -
300 hi3110_hw_tx_frame(spi, buf, HI3110_TX_STD_BUF_LEN -
305 static void hi3110_hw_rx_frame(struct spi_device *spi, u8 *buf)
307 struct hi3110_priv *priv = spi_get_drvdata(spi);
310 hi3110_spi_trans(spi, HI3110_RX_BUF_LEN);
314 static void hi3110_hw_rx(struct spi_device *spi)
316 struct hi3110_priv *priv = spi_get_drvdata(spi);
327 hi3110_hw_rx_frame(spi, buf);
360 static void hi3110_hw_sleep(struct spi_device *spi)
362 hi3110_write(spi, HI3110_WRITE_CTRL0, HI3110_CTRL0_SLEEP_MODE);
369 struct spi_device *spi = priv->spi;
372 dev_err(&spi->dev, "hard_xmit called while tx busy\n");
411 struct spi_device *spi = priv->spi;
414 bec->txerr = hi3110_read(spi, HI3110_READ_TEC);
415 bec->rxerr = hi3110_read(spi, HI3110_READ_REC);
421 static int hi3110_set_normal_mode(struct spi_device *spi)
423 struct hi3110_priv *priv = spi_get_drvdata(spi);
426 hi3110_write(spi, HI3110_WRITE_INTE, HI3110_INT_BUSERR |
430 hi3110_write(spi, HI3110_WRITE_CTRL1, HI3110_CTRL1_TXEN);
439 hi3110_write(spi, HI3110_WRITE_CTRL0, reg);
443 reg = hi3110_read(spi, HI3110_READ_CTRL0);
455 struct spi_device *spi = priv->spi;
457 hi3110_write(spi, HI3110_WRITE_BTR0,
461 hi3110_write(spi, HI3110_WRITE_BTR1,
469 dev_dbg(&spi->dev, "BT: 0x%02x 0x%02x\n",
470 hi3110_read(spi, HI3110_READ_BTR0),
471 hi3110_read(spi, HI3110_READ_BTR1));
482 static int hi3110_hw_reset(struct spi_device *spi)
490 ret = hi3110_cmd(spi, HI3110_MASTER_RESET);
497 reg = hi3110_read(spi, HI3110_READ_CTRL0);
504 hi3110_read(spi, HI3110_READ_ERR);
509 static int hi3110_hw_probe(struct spi_device *spi)
513 hi3110_hw_reset(spi);
518 statf = hi3110_read(spi, HI3110_READ_STATF);
520 dev_dbg(&spi->dev, "statf: %02X\n", statf);
542 struct spi_device *spi = priv->spi;
547 free_irq(spi->irq, priv);
554 hi3110_write(spi, HI3110_WRITE_CTRL1, 0x0);
555 hi3110_write(spi, HI3110_WRITE_INTE, 0x0);
556 hi3110_read(spi, HI3110_READ_INTF);
560 hi3110_hw_sleep(spi);
575 struct spi_device *spi = priv->spi;
585 hi3110_hw_tx(spi, frame);
598 struct spi_device *spi = priv->spi;
603 hi3110_hw_reset(spi);
606 hi3110_set_normal_mode(spi);
610 hi3110_set_normal_mode(spi);
613 hi3110_hw_sleep(spi);
621 hi3110_hw_reset(spi);
624 hi3110_set_normal_mode(spi);
633 struct spi_device *spi = priv->spi;
643 (statf = hi3110_read(spi, HI3110_READ_STATF)))) {
644 hi3110_hw_rx(spi);
647 intf = hi3110_read(spi, HI3110_READ_INTF);
648 eflag = hi3110_read(spi, HI3110_READ_ERR);
669 txerr = hi3110_read(spi, HI3110_READ_TEC);
670 rxerr = hi3110_read(spi, HI3110_READ_REC);
680 hi3110_hw_sleep(spi);
716 cf->data[6] = hi3110_read(spi, HI3110_READ_TEC);
717 cf->data[7] = hi3110_read(spi, HI3110_READ_REC);
740 struct spi_device *spi = priv->spi;
755 ret = request_threaded_irq(spi->irq, NULL, hi3110_can_ist,
758 dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq);
771 ret = hi3110_hw_reset(spi);
779 ret = hi3110_set_normal_mode(spi);
791 free_irq(spi->irq, priv);
792 hi3110_hw_sleep(spi);
826 MODULE_DEVICE_TABLE(spi, hi3110_id_table);
828 static int hi3110_can_probe(struct spi_device *spi)
830 struct device *dev = &spi->dev;
838 clk = devm_clk_get_optional(&spi->dev, NULL);
881 priv->model = spi_get_device_id(spi)->driver_data;
885 spi_set_drvdata(spi, priv);
888 spi->bits_per_word = 8;
889 ret = spi_setup(spi);
893 priv->power = devm_regulator_get_optional(&spi->dev, "vdd");
894 priv->transceiver = devm_regulator_get_optional(&spi->dev, "xceiver");
905 priv->spi = spi;
908 priv->spi_tx_buf = devm_kzalloc(&spi->dev, HI3110_RX_BUF_LEN,
914 priv->spi_rx_buf = devm_kzalloc(&spi->dev, HI3110_RX_BUF_LEN,
922 SET_NETDEV_DEV(net, &spi->dev);
924 ret = hi3110_hw_probe(spi);
929 hi3110_hw_sleep(spi);
951 static void hi3110_can_remove(struct spi_device *spi)
953 struct hi3110_priv *priv = spi_get_drvdata(spi);
967 struct spi_device *spi = to_spi_device(dev);
968 struct hi3110_priv *priv = spi_get_drvdata(spi);
972 disable_irq(spi->irq);
980 hi3110_hw_sleep(spi);
997 struct spi_device *spi = to_spi_device(dev);
998 struct hi3110_priv *priv = spi_get_drvdata(spi);
1011 enable_irq(spi->irq);