Lines Matching refs:nspi
41 static int __nci_spi_send(struct nci_spi *nspi, struct sk_buff *skb, in __nci_spi_send() argument
58 t.delay_usecs = nspi->xfer_udelay; in __nci_spi_send()
63 return spi_sync(nspi->spi, &m); in __nci_spi_send()
66 int nci_spi_send(struct nci_spi *nspi, in nci_spi_send() argument
78 hdr[1] = nspi->acknowledge_mode; in nci_spi_send()
82 if (nspi->acknowledge_mode == NCI_SPI_CRC_ENABLED) { in nci_spi_send()
92 ret = __nci_spi_send(nspi, NULL, 1); in nci_spi_send()
104 ret = __nci_spi_send(nspi, skb, 0); in nci_spi_send()
105 if (ret != 0 || nspi->acknowledge_mode == NCI_SPI_CRC_DISABLED) in nci_spi_send()
108 reinit_completion(&nspi->req_completion); in nci_spi_send()
110 &nspi->req_completion, in nci_spi_send()
113 if (completion_rc <= 0 || nspi->req_result == ACKNOWLEDGE_NACK) in nci_spi_send()
137 struct nci_spi *nspi; in nci_spi_allocate_spi() local
139 nspi = devm_kzalloc(&spi->dev, sizeof(struct nci_spi), GFP_KERNEL); in nci_spi_allocate_spi()
140 if (!nspi) in nci_spi_allocate_spi()
143 nspi->acknowledge_mode = acknowledge_mode; in nci_spi_allocate_spi()
144 nspi->xfer_udelay = delay; in nci_spi_allocate_spi()
146 nspi->spi = spi; in nci_spi_allocate_spi()
147 nspi->ndev = ndev; in nci_spi_allocate_spi()
148 init_completion(&nspi->req_completion); in nci_spi_allocate_spi()
150 return nspi; in nci_spi_allocate_spi()
154 static int send_acknowledge(struct nci_spi *nspi, u8 acknowledge) in send_acknowledge() argument
161 skb = nci_skb_alloc(nspi->ndev, 0, GFP_KERNEL); in send_acknowledge()
174 ret = __nci_spi_send(nspi, skb, 0); in send_acknowledge()
181 static struct sk_buff *__nci_spi_read(struct nci_spi *nspi) in __nci_spi_read() argument
194 req[1] = nspi->acknowledge_mode; in __nci_spi_read()
206 ret = spi_sync(nspi->spi, &m); in __nci_spi_read()
210 if (nspi->acknowledge_mode == NCI_SPI_CRC_ENABLED) in __nci_spi_read()
216 skb = nci_skb_alloc(nspi->ndev, rx_len, GFP_KERNEL); in __nci_spi_read()
226 rx.delay_usecs = nspi->xfer_udelay; in __nci_spi_read()
229 ret = spi_sync(nspi->spi, &m); in __nci_spi_read()
233 if (nspi->acknowledge_mode == NCI_SPI_CRC_ENABLED) { in __nci_spi_read()
283 struct sk_buff *nci_spi_read(struct nci_spi *nspi) in nci_spi_read() argument
288 skb = __nci_spi_read(nspi); in nci_spi_read()
292 if (nspi->acknowledge_mode == NCI_SPI_CRC_ENABLED) { in nci_spi_read()
294 send_acknowledge(nspi, ACKNOWLEDGE_NACK); in nci_spi_read()
301 nspi->req_result = nci_spi_get_ack(skb); in nci_spi_read()
302 if (nspi->req_result) in nci_spi_read()
303 complete(&nspi->req_completion); in nci_spi_read()
315 if (nspi->acknowledge_mode == NCI_SPI_CRC_ENABLED) in nci_spi_read()
316 send_acknowledge(nspi, ACKNOWLEDGE_ACK); in nci_spi_read()