1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * --------------------------------------------------------------------------- 4*4882a593Smuzhiyun * drivers/nfc/st95hf/spi.h functions declarations for SPI communication 5*4882a593Smuzhiyun * --------------------------------------------------------------------------- 6*4882a593Smuzhiyun * Copyright (C) 2015 STMicroelectronics – All Rights Reserved 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __LINUX_ST95HF_SPI_H 10*4882a593Smuzhiyun #define __LINUX_ST95HF_SPI_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/spi/spi.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* Basic ST95HF SPI CMDs */ 15*4882a593Smuzhiyun #define ST95HF_COMMAND_SEND 0x0 16*4882a593Smuzhiyun #define ST95HF_COMMAND_RESET 0x1 17*4882a593Smuzhiyun #define ST95HF_COMMAND_RECEIVE 0x2 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define ST95HF_RESET_CMD_LEN 0x1 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* 22*4882a593Smuzhiyun * structure to contain st95hf spi communication specific information. 23*4882a593Smuzhiyun * @req_issync: true for synchronous calls. 24*4882a593Smuzhiyun * @spidev: st95hf spi device object. 25*4882a593Smuzhiyun * @done: completion structure to wait for st95hf response 26*4882a593Smuzhiyun * for synchronous calls. 27*4882a593Smuzhiyun * @spi_lock: mutex to allow only one spi transfer at a time. 28*4882a593Smuzhiyun */ 29*4882a593Smuzhiyun struct st95hf_spi_context { 30*4882a593Smuzhiyun bool req_issync; 31*4882a593Smuzhiyun struct spi_device *spidev; 32*4882a593Smuzhiyun struct completion done; 33*4882a593Smuzhiyun struct mutex spi_lock; 34*4882a593Smuzhiyun }; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* flag to differentiate synchronous & asynchronous spi request */ 37*4882a593Smuzhiyun enum req_type { 38*4882a593Smuzhiyun SYNC, 39*4882a593Smuzhiyun ASYNC, 40*4882a593Smuzhiyun }; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun int st95hf_spi_send(struct st95hf_spi_context *spicontext, 43*4882a593Smuzhiyun unsigned char *buffertx, 44*4882a593Smuzhiyun int datalen, 45*4882a593Smuzhiyun enum req_type reqtype); 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun int st95hf_spi_recv_response(struct st95hf_spi_context *spicontext, 48*4882a593Smuzhiyun unsigned char *receivebuff); 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun int st95hf_spi_recv_echo_res(struct st95hf_spi_context *spicontext, 51*4882a593Smuzhiyun unsigned char *receivebuff); 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #endif 54