diff options
Diffstat (limited to 'drivers/misc/cros_ec_spi.c')
| -rw-r--r-- | drivers/misc/cros_ec_spi.c | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/drivers/misc/cros_ec_spi.c b/drivers/misc/cros_ec_spi.c index ef7378260..7df709cc7 100644 --- a/drivers/misc/cros_ec_spi.c +++ b/drivers/misc/cros_ec_spi.c @@ -17,6 +17,30 @@  #include <cros_ec.h>  #include <spi.h> +int cros_ec_spi_packet(struct cros_ec_dev *dev, int out_bytes, int in_bytes) +{ +	int rv; + +	/* Do the transfer */ +	if (spi_claim_bus(dev->spi)) { +		debug("%s: Cannot claim SPI bus\n", __func__); +		return -1; +	} + +	rv = spi_xfer(dev->spi, max(out_bytes, in_bytes) * 8, +		      dev->dout, dev->din, +		      SPI_XFER_BEGIN | SPI_XFER_END); + +	spi_release_bus(dev->spi); + +	if (rv) { +		debug("%s: Cannot complete SPI transfer\n", __func__); +		return -1; +	} + +	return in_bytes; +} +  /**   * Send a command to a LPC CROS_EC device and return the reply.   * |