cfspi 82 drivers/net/caif/caif_spi.c static inline void *dma_alloc(struct cfspi *cfspi, dma_addr_t *daddr) cfspi 87 drivers/net/caif/caif_spi.c static inline void dma_free(struct cfspi *cfspi, void *cpu_addr, cfspi 95 drivers/net/caif/caif_spi.c static inline void *dma_alloc(struct cfspi *cfspi, dma_addr_t *daddr) cfspi 97 drivers/net/caif/caif_spi.c return dma_alloc_coherent(&cfspi->pdev->dev, SPI_DMA_BUF_LEN, daddr, cfspi 101 drivers/net/caif/caif_spi.c static inline void dma_free(struct cfspi *cfspi, void *cpu_addr, cfspi 104 drivers/net/caif/caif_spi.c dma_free_coherent(&cfspi->pdev->dev, SPI_DMA_BUF_LEN, cpu_addr, handle); cfspi 124 drivers/net/caif/caif_spi.c static inline void dev_debugfs_rem(struct cfspi *cfspi) cfspi 126 drivers/net/caif/caif_spi.c debugfs_remove(cfspi->dbgfs_frame); cfspi 127 drivers/net/caif/caif_spi.c debugfs_remove(cfspi->dbgfs_state); cfspi 128 drivers/net/caif/caif_spi.c debugfs_remove(cfspi->dbgfs_dir); cfspi 137 drivers/net/caif/caif_spi.c struct cfspi *cfspi = file->private_data; cfspi 150 drivers/net/caif/caif_spi.c "STATE: %d\n", cfspi->dbg_state); cfspi 152 drivers/net/caif/caif_spi.c "Previous CMD: 0x%x\n", cfspi->pcmd); cfspi 154 drivers/net/caif/caif_spi.c "Current CMD: 0x%x\n", cfspi->cmd); cfspi 156 drivers/net/caif/caif_spi.c "Previous TX len: %d\n", cfspi->tx_ppck_len); cfspi 158 drivers/net/caif/caif_spi.c "Previous RX len: %d\n", cfspi->rx_ppck_len); cfspi 160 drivers/net/caif/caif_spi.c "Current TX len: %d\n", cfspi->tx_cpck_len); cfspi 162 drivers/net/caif/caif_spi.c "Current RX len: %d\n", cfspi->rx_cpck_len); cfspi 164 drivers/net/caif/caif_spi.c "Next TX len: %d\n", cfspi->tx_npck_len); cfspi 166 drivers/net/caif/caif_spi.c "Next RX len: %d\n", cfspi->rx_npck_len); cfspi 209 drivers/net/caif/caif_spi.c struct cfspi *cfspi; cfspi 211 drivers/net/caif/caif_spi.c cfspi = file->private_data; cfspi 221 drivers/net/caif/caif_spi.c "Tx data (Len: %d):\n", cfspi->tx_cpck_len); cfspi 224 drivers/net/caif/caif_spi.c cfspi->xfer.va_tx[0], cfspi 225 drivers/net/caif/caif_spi.c (cfspi->tx_cpck_len + SPI_CMD_SZ), 100); cfspi 228 drivers/net/caif/caif_spi.c "Rx data (Len: %d):\n", cfspi->rx_cpck_len); cfspi 231 drivers/net/caif/caif_spi.c cfspi->xfer.va_rx, cfspi 232 drivers/net/caif/caif_spi.c (cfspi->rx_cpck_len + SPI_CMD_SZ), 100); cfspi 252 drivers/net/caif/caif_spi.c static inline void dev_debugfs_add(struct cfspi *cfspi) cfspi 254 drivers/net/caif/caif_spi.c cfspi->dbgfs_dir = debugfs_create_dir(cfspi->pdev->name, dbgfs_root); cfspi 255 drivers/net/caif/caif_spi.c cfspi->dbgfs_state = debugfs_create_file("state", 0444, cfspi 256 drivers/net/caif/caif_spi.c cfspi->dbgfs_dir, cfspi, cfspi 258 drivers/net/caif/caif_spi.c cfspi->dbgfs_frame = debugfs_create_file("frame", 0444, cfspi 259 drivers/net/caif/caif_spi.c cfspi->dbgfs_dir, cfspi, cfspi 263 drivers/net/caif/caif_spi.c inline void cfspi_dbg_state(struct cfspi *cfspi, int state) cfspi 265 drivers/net/caif/caif_spi.c cfspi->dbg_state = state; cfspi 277 drivers/net/caif/caif_spi.c static inline void dev_debugfs_add(struct cfspi *cfspi) cfspi 281 drivers/net/caif/caif_spi.c static inline void dev_debugfs_rem(struct cfspi *cfspi) cfspi 285 drivers/net/caif/caif_spi.c inline void cfspi_dbg_state(struct cfspi *cfspi, int state) cfspi 333 drivers/net/caif/caif_spi.c int cfspi_xmitfrm(struct cfspi *cfspi, u8 *buf, size_t len) cfspi 338 drivers/net/caif/caif_spi.c if (cfspi->slave && !cfspi->slave_talked) cfspi 339 drivers/net/caif/caif_spi.c cfspi->slave_talked = true; cfspi 347 drivers/net/caif/caif_spi.c skb = skb_dequeue(&cfspi->chead); cfspi 370 drivers/net/caif/caif_spi.c cfspi->ndev->stats.tx_packets++; cfspi 371 drivers/net/caif/caif_spi.c cfspi->ndev->stats.tx_bytes += skb->len; cfspi 387 drivers/net/caif/caif_spi.c int cfspi_xmitlen(struct cfspi *cfspi) cfspi 397 drivers/net/caif/caif_spi.c while (skb_peek(&cfspi->chead)) { cfspi 398 drivers/net/caif/caif_spi.c skb = skb_dequeue_tail(&cfspi->chead); cfspi 399 drivers/net/caif/caif_spi.c skb_queue_head(&cfspi->qhead, skb); cfspi 407 drivers/net/caif/caif_spi.c skb = skb_dequeue(&cfspi->qhead); cfspi 431 drivers/net/caif/caif_spi.c skb_queue_tail(&cfspi->chead, skb); cfspi 436 drivers/net/caif/caif_spi.c skb_queue_head(&cfspi->qhead, skb); cfspi 445 drivers/net/caif/caif_spi.c if (cfspi->flow_off_sent && cfspi->qhead.qlen < cfspi->qd_low_mark && cfspi 446 drivers/net/caif/caif_spi.c cfspi->cfdev.flowctrl) { cfspi 447 drivers/net/caif/caif_spi.c cfspi->flow_off_sent = 0; cfspi 448 drivers/net/caif/caif_spi.c cfspi->cfdev.flowctrl(cfspi->ndev, 1); cfspi 456 drivers/net/caif/caif_spi.c struct cfspi *cfspi = (struct cfspi *)ifc->priv; cfspi 462 drivers/net/caif/caif_spi.c if (cfspi->slave && !cfspi->slave_talked) { cfspi 468 drivers/net/caif/caif_spi.c spin_lock(&cfspi->lock); cfspi 470 drivers/net/caif/caif_spi.c set_bit(SPI_SS_ON, &cfspi->state); cfspi 471 drivers/net/caif/caif_spi.c set_bit(SPI_XFER, &cfspi->state); cfspi 473 drivers/net/caif/caif_spi.c set_bit(SPI_SS_OFF, &cfspi->state); cfspi 476 drivers/net/caif/caif_spi.c spin_unlock(&cfspi->lock); cfspi 480 drivers/net/caif/caif_spi.c wake_up_interruptible(&cfspi->wait); cfspi 485 drivers/net/caif/caif_spi.c struct cfspi *cfspi = (struct cfspi *)ifc->priv; cfspi 488 drivers/net/caif/caif_spi.c complete(&cfspi->comp); cfspi 493 drivers/net/caif/caif_spi.c struct cfspi *cfspi = NULL; cfspi 498 drivers/net/caif/caif_spi.c cfspi = netdev_priv(dev); cfspi 500 drivers/net/caif/caif_spi.c skb_queue_tail(&cfspi->qhead, skb); cfspi 502 drivers/net/caif/caif_spi.c spin_lock_irqsave(&cfspi->lock, flags); cfspi 503 drivers/net/caif/caif_spi.c if (!test_and_set_bit(SPI_XFER, &cfspi->state)) { cfspi 505 drivers/net/caif/caif_spi.c wake_up_interruptible(&cfspi->wait); cfspi 507 drivers/net/caif/caif_spi.c spin_unlock_irqrestore(&cfspi->lock, flags); cfspi 510 drivers/net/caif/caif_spi.c if (!cfspi->flow_off_sent && cfspi 511 drivers/net/caif/caif_spi.c cfspi->qhead.qlen > cfspi->qd_high_mark && cfspi 512 drivers/net/caif/caif_spi.c cfspi->cfdev.flowctrl) { cfspi 513 drivers/net/caif/caif_spi.c cfspi->flow_off_sent = 1; cfspi 514 drivers/net/caif/caif_spi.c cfspi->cfdev.flowctrl(cfspi->ndev, 0); cfspi 520 drivers/net/caif/caif_spi.c int cfspi_rxfrm(struct cfspi *cfspi, u8 *buf, size_t len) cfspi 549 drivers/net/caif/caif_spi.c skb = netdev_alloc_skb(cfspi->ndev, pkt_len + 1); cfspi 564 drivers/net/caif/caif_spi.c res = cfspi_xmit(skb, cfspi->ndev); cfspi 567 drivers/net/caif/caif_spi.c cfspi->ndev->stats.rx_packets++; cfspi 568 drivers/net/caif/caif_spi.c cfspi->ndev->stats.rx_bytes += pkt_len; cfspi 570 drivers/net/caif/caif_spi.c cfspi->ndev->stats.rx_dropped++; cfspi 598 drivers/net/caif/caif_spi.c struct cfspi *cfspi = netdev_priv(dev); cfspi 601 drivers/net/caif/caif_spi.c cfspi->flow_off_sent = 0; cfspi 602 drivers/net/caif/caif_spi.c cfspi->qd_low_mark = LOW_WATER_MARK; cfspi 603 drivers/net/caif/caif_spi.c cfspi->qd_high_mark = HIGH_WATER_MARK; cfspi 607 drivers/net/caif/caif_spi.c cfspi->slave = true; cfspi 608 drivers/net/caif/caif_spi.c cfspi->slave_talked = false; cfspi 610 drivers/net/caif/caif_spi.c cfspi->slave = false; cfspi 611 drivers/net/caif/caif_spi.c cfspi->slave_talked = false; cfspi 615 drivers/net/caif/caif_spi.c cfspi->xfer.va_tx[0] = dma_alloc(cfspi, &cfspi->xfer.pa_tx[0]); cfspi 616 drivers/net/caif/caif_spi.c if (!cfspi->xfer.va_tx[0]) { cfspi 621 drivers/net/caif/caif_spi.c cfspi->xfer.va_rx = dma_alloc(cfspi, &cfspi->xfer.pa_rx); cfspi 623 drivers/net/caif/caif_spi.c if (!cfspi->xfer.va_rx) { cfspi 629 drivers/net/caif/caif_spi.c INIT_WORK(&cfspi->work, cfspi_xfer); cfspi 632 drivers/net/caif/caif_spi.c spin_lock_init(&cfspi->lock); cfspi 635 drivers/net/caif/caif_spi.c cfspi->flow_stop = false; cfspi 638 drivers/net/caif/caif_spi.c init_waitqueue_head(&cfspi->wait); cfspi 641 drivers/net/caif/caif_spi.c cfspi->wq = create_singlethread_workqueue(dev->name); cfspi 642 drivers/net/caif/caif_spi.c if (!cfspi->wq) { cfspi 649 drivers/net/caif/caif_spi.c init_completion(&cfspi->comp); cfspi 652 drivers/net/caif/caif_spi.c dev_debugfs_add(cfspi); cfspi 655 drivers/net/caif/caif_spi.c cfspi->ifc.ss_cb = cfspi_ss_cb; cfspi 656 drivers/net/caif/caif_spi.c cfspi->ifc.xfer_done_cb = cfspi_xfer_done_cb; cfspi 657 drivers/net/caif/caif_spi.c cfspi->ifc.priv = cfspi; cfspi 661 drivers/net/caif/caif_spi.c list_add_tail(&cfspi->list, &cfspi_list); cfspi 665 drivers/net/caif/caif_spi.c queue_work(cfspi->wq, &cfspi->work); cfspi 670 drivers/net/caif/caif_spi.c dma_free(cfspi, cfspi->xfer.va_rx, cfspi->xfer.pa_rx); cfspi 672 drivers/net/caif/caif_spi.c dma_free(cfspi, cfspi->xfer.va_tx[0], cfspi->xfer.pa_tx[0]); cfspi 679 drivers/net/caif/caif_spi.c struct cfspi *cfspi = netdev_priv(dev); cfspi 683 drivers/net/caif/caif_spi.c list_del(&cfspi->list); cfspi 686 drivers/net/caif/caif_spi.c cfspi->ndev = NULL; cfspi 688 drivers/net/caif/caif_spi.c dma_free(cfspi, cfspi->xfer.va_rx, cfspi->xfer.pa_rx); cfspi 689 drivers/net/caif/caif_spi.c dma_free(cfspi, cfspi->xfer.va_tx[0], cfspi->xfer.pa_tx[0]); cfspi 690 drivers/net/caif/caif_spi.c set_bit(SPI_TERMINATE, &cfspi->state); cfspi 691 drivers/net/caif/caif_spi.c wake_up_interruptible(&cfspi->wait); cfspi 692 drivers/net/caif/caif_spi.c destroy_workqueue(cfspi->wq); cfspi 694 drivers/net/caif/caif_spi.c dev_debugfs_rem(cfspi); cfspi 708 drivers/net/caif/caif_spi.c struct cfspi *cfspi = netdev_priv(dev); cfspi 716 drivers/net/caif/caif_spi.c skb_queue_head_init(&cfspi->qhead); cfspi 717 drivers/net/caif/caif_spi.c skb_queue_head_init(&cfspi->chead); cfspi 718 drivers/net/caif/caif_spi.c cfspi->cfdev.link_select = CAIF_LINK_HIGH_BANDW; cfspi 719 drivers/net/caif/caif_spi.c cfspi->cfdev.use_frag = false; cfspi 720 drivers/net/caif/caif_spi.c cfspi->cfdev.use_stx = false; cfspi 721 drivers/net/caif/caif_spi.c cfspi->cfdev.use_fcs = false; cfspi 722 drivers/net/caif/caif_spi.c cfspi->ndev = dev; cfspi 727 drivers/net/caif/caif_spi.c struct cfspi *cfspi = NULL; cfspi 736 drivers/net/caif/caif_spi.c ndev = alloc_netdev(sizeof(struct cfspi), "cfspi%d", cfspi 741 drivers/net/caif/caif_spi.c cfspi = netdev_priv(ndev); cfspi 743 drivers/net/caif/caif_spi.c cfspi->ndev = ndev; cfspi 744 drivers/net/caif/caif_spi.c cfspi->pdev = pdev; cfspi 747 drivers/net/caif/caif_spi.c cfspi->dev = dev; cfspi 749 drivers/net/caif/caif_spi.c dev->ifc = &cfspi->ifc; cfspi 775 drivers/net/caif/caif_spi.c struct cfspi *cfspi = NULL; cfspi 778 drivers/net/caif/caif_spi.c cfspi = list_entry(list_node, struct cfspi, list); cfspi 779 drivers/net/caif/caif_spi.c unregister_netdev(cfspi->ndev); cfspi 23 drivers/net/caif/caif_spi_slave.c static inline int forward_to_spi_cmd(struct cfspi *cfspi) cfspi 25 drivers/net/caif/caif_spi_slave.c return cfspi->rx_cpck_len; cfspi 29 drivers/net/caif/caif_spi_slave.c static inline int forward_to_spi_cmd(struct cfspi *cfspi) cfspi 47 drivers/net/caif/caif_spi_slave.c static inline void debugfs_store_prev(struct cfspi *cfspi) cfspi 50 drivers/net/caif/caif_spi_slave.c cfspi->pcmd = cfspi->cmd; cfspi 52 drivers/net/caif/caif_spi_slave.c cfspi->tx_ppck_len = cfspi->tx_cpck_len; cfspi 53 drivers/net/caif/caif_spi_slave.c cfspi->rx_ppck_len = cfspi->rx_cpck_len; cfspi 56 drivers/net/caif/caif_spi_slave.c static inline void debugfs_store_prev(struct cfspi *cfspi) cfspi 63 drivers/net/caif/caif_spi_slave.c struct cfspi *cfspi; cfspi 67 drivers/net/caif/caif_spi_slave.c cfspi = container_of(work, struct cfspi, work); cfspi 70 drivers/net/caif/caif_spi_slave.c cfspi->cmd = SPI_CMD_EOT; cfspi 74 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_WAITING); cfspi 77 drivers/net/caif/caif_spi_slave.c wait_event_interruptible(cfspi->wait, cfspi 78 drivers/net/caif/caif_spi_slave.c test_bit(SPI_XFER, &cfspi->state) || cfspi 79 drivers/net/caif/caif_spi_slave.c test_bit(SPI_TERMINATE, &cfspi->state)); cfspi 81 drivers/net/caif/caif_spi_slave.c if (test_bit(SPI_TERMINATE, &cfspi->state)) cfspi 86 drivers/net/caif/caif_spi_slave.c memset(cfspi->xfer.va_tx, 0xFF, SPI_DMA_BUF_LEN); cfspi 87 drivers/net/caif/caif_spi_slave.c memset(cfspi->xfer.va_rx, 0xFF, SPI_DMA_BUF_LEN); cfspi 90 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_AWAKE); cfspi 93 drivers/net/caif/caif_spi_slave.c if (cfspi->tx_cpck_len) { cfspi 96 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_FETCH_PKT); cfspi 99 drivers/net/caif/caif_spi_slave.c ptr = (u8 *) cfspi->xfer.va_tx; cfspi 101 drivers/net/caif/caif_spi_slave.c len = cfspi_xmitfrm(cfspi, ptr, cfspi->tx_cpck_len); cfspi 102 drivers/net/caif/caif_spi_slave.c WARN_ON(len != cfspi->tx_cpck_len); cfspi 105 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_GET_NEXT); cfspi 108 drivers/net/caif/caif_spi_slave.c cfspi->tx_npck_len = cfspi_xmitlen(cfspi); cfspi 110 drivers/net/caif/caif_spi_slave.c WARN_ON(cfspi->tx_npck_len > SPI_DMA_BUF_LEN); cfspi 116 drivers/net/caif/caif_spi_slave.c ptr = (u8 *) cfspi->xfer.va_tx; cfspi 119 drivers/net/caif/caif_spi_slave.c *ptr++ = cfspi->tx_npck_len & 0x00FF; cfspi 120 drivers/net/caif/caif_spi_slave.c *ptr++ = (cfspi->tx_npck_len & 0xFF00) >> 8; cfspi 123 drivers/net/caif/caif_spi_slave.c cfspi->xfer.tx_dma_len = cfspi->tx_cpck_len + SPI_IND_SZ; cfspi 124 drivers/net/caif/caif_spi_slave.c cfspi->xfer.rx_dma_len = cfspi->rx_cpck_len + SPI_CMD_SZ; cfspi 127 drivers/net/caif/caif_spi_slave.c if (cfspi->tx_cpck_len && cfspi 128 drivers/net/caif/caif_spi_slave.c (cfspi->xfer.tx_dma_len % spi_frm_align)) { cfspi 130 drivers/net/caif/caif_spi_slave.c cfspi->xfer.tx_dma_len += spi_frm_align - cfspi 131 drivers/net/caif/caif_spi_slave.c (cfspi->xfer.tx_dma_len % spi_frm_align); cfspi 135 drivers/net/caif/caif_spi_slave.c if (cfspi->rx_cpck_len && cfspi 136 drivers/net/caif/caif_spi_slave.c (cfspi->xfer.rx_dma_len % spi_frm_align)) { cfspi 138 drivers/net/caif/caif_spi_slave.c cfspi->xfer.rx_dma_len += spi_frm_align - cfspi 139 drivers/net/caif/caif_spi_slave.c (cfspi->xfer.rx_dma_len % spi_frm_align); cfspi 142 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_INIT_XFER); cfspi 145 drivers/net/caif/caif_spi_slave.c ret = cfspi->dev->init_xfer(&cfspi->xfer, cfspi->dev); cfspi 148 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_WAIT_ACTIVE); cfspi 156 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_SIG_ACTIVE); cfspi 159 drivers/net/caif/caif_spi_slave.c cfspi->dev->sig_xfer(true, cfspi->dev); cfspi 161 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_WAIT_XFER_DONE); cfspi 164 drivers/net/caif/caif_spi_slave.c wait_for_completion(&cfspi->comp); cfspi 166 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_XFER_DONE); cfspi 168 drivers/net/caif/caif_spi_slave.c if (cfspi->cmd == SPI_CMD_EOT) { cfspi 173 drivers/net/caif/caif_spi_slave.c clear_bit(SPI_SS_ON, &cfspi->state); cfspi 176 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_WAIT_INACTIVE); cfspi 179 drivers/net/caif/caif_spi_slave.c if (SPI_XFER_TIME_USEC(cfspi->xfer.tx_dma_len, cfspi 180 drivers/net/caif/caif_spi_slave.c cfspi->dev->clk_mhz) < cfspi 185 drivers/net/caif/caif_spi_slave.c (cfspi->xfer.tx_dma_len, cfspi->dev->clk_mhz)); cfspi 188 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_SIG_INACTIVE); cfspi 191 drivers/net/caif/caif_spi_slave.c cfspi->dev->sig_xfer(false, cfspi->dev); cfspi 194 drivers/net/caif/caif_spi_slave.c if (cfspi->rx_cpck_len) { cfspi 197 drivers/net/caif/caif_spi_slave.c cfspi_dbg_state(cfspi, CFSPI_STATE_DELIVER_PKT); cfspi 200 drivers/net/caif/caif_spi_slave.c ptr = ((u8 *)(cfspi->xfer.va_rx + SPI_DATA_POS)); cfspi 202 drivers/net/caif/caif_spi_slave.c len = cfspi_rxfrm(cfspi, ptr, cfspi->rx_cpck_len); cfspi 203 drivers/net/caif/caif_spi_slave.c WARN_ON(len != cfspi->rx_cpck_len); cfspi 207 drivers/net/caif/caif_spi_slave.c ptr = (u8 *) cfspi->xfer.va_rx; cfspi 209 drivers/net/caif/caif_spi_slave.c ptr += forward_to_spi_cmd(cfspi); cfspi 211 drivers/net/caif/caif_spi_slave.c cfspi->cmd = *ptr++; cfspi 212 drivers/net/caif/caif_spi_slave.c cfspi->cmd |= ((*ptr++) << 8) & 0xFF00; cfspi 213 drivers/net/caif/caif_spi_slave.c cfspi->rx_npck_len = *ptr++; cfspi 214 drivers/net/caif/caif_spi_slave.c cfspi->rx_npck_len |= ((*ptr++) << 8) & 0xFF00; cfspi 216 drivers/net/caif/caif_spi_slave.c WARN_ON(cfspi->rx_npck_len > SPI_DMA_BUF_LEN); cfspi 217 drivers/net/caif/caif_spi_slave.c WARN_ON(cfspi->cmd > SPI_CMD_EOT); cfspi 219 drivers/net/caif/caif_spi_slave.c debugfs_store_prev(cfspi); cfspi 222 drivers/net/caif/caif_spi_slave.c if (cfspi->cmd == SPI_CMD_EOT) { cfspi 224 drivers/net/caif/caif_spi_slave.c cfspi->tx_cpck_len = 0; cfspi 225 drivers/net/caif/caif_spi_slave.c cfspi->rx_cpck_len = 0; cfspi 228 drivers/net/caif/caif_spi_slave.c cfspi->tx_cpck_len = cfspi->tx_npck_len; cfspi 229 drivers/net/caif/caif_spi_slave.c cfspi->rx_cpck_len = cfspi->rx_npck_len; cfspi 238 drivers/net/caif/caif_spi_slave.c spin_lock_irqsave(&cfspi->lock, flags); cfspi 239 drivers/net/caif/caif_spi_slave.c if (cfspi->cmd == SPI_CMD_EOT && !cfspi_xmitlen(cfspi) cfspi 240 drivers/net/caif/caif_spi_slave.c && !test_bit(SPI_SS_ON, &cfspi->state)) cfspi 241 drivers/net/caif/caif_spi_slave.c clear_bit(SPI_XFER, &cfspi->state); cfspi 243 drivers/net/caif/caif_spi_slave.c spin_unlock_irqrestore(&cfspi->lock, flags); cfspi 144 include/net/caif/caif_spi.h void cfspi_dbg_state(struct cfspi *cfspi, int state); cfspi 145 include/net/caif/caif_spi.h int cfspi_xmitfrm(struct cfspi *cfspi, u8 *buf, size_t len); cfspi 146 include/net/caif/caif_spi.h int cfspi_xmitlen(struct cfspi *cfspi); cfspi 147 include/net/caif/caif_spi.h int cfspi_rxfrm(struct cfspi *cfspi, u8 *buf, size_t len); cfspi 150 include/net/caif/caif_spi.h int cfspi_xmitfrm(struct cfspi *cfspi, u8 *buf, size_t len); cfspi 151 include/net/caif/caif_spi.h int cfspi_xmitlen(struct cfspi *cfspi); cfspi 152 include/net/caif/caif_spi.h int cfspi_rxfrm(struct cfspi *cfspi, u8 *buf, size_t len);