mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-28 02:35:28 +00:00
This allows us to use the two SPI ports as SPI master. Also, to save CPU time on reading large amount of data, let's add an async interface for SPI transaction. BUG=chrome-os-partner:29805 TEST=Read manufacturer ID from SPI flash with sync/async interface BRANCH=None Change-Id: I427f4215602cccc55c4151f4116226b1e0ccc15e Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/204719
49 lines
1.4 KiB
C
49 lines
1.4 KiB
C
/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/* SPI interface for Chrome EC */
|
|
|
|
#ifndef __CROS_EC_SPI_H
|
|
#define __CROS_EC_SPI_H
|
|
|
|
/* Enable / disable the SPI port. When the port is disabled, all its I/O lines
|
|
* are high-Z so the EC won't interfere with other devices on the SPI bus. */
|
|
int spi_enable(int enable);
|
|
|
|
/* Issue a SPI transaction. Assumes SPI port has already been enabled.
|
|
* Transmits <txlen> bytes from <txdata>, throwing away the corresponding
|
|
* received data, then transmits <rxlen> dummy bytes, saving the received data
|
|
* in <rxdata>. */
|
|
int spi_transaction(const uint8_t *txdata, int txlen,
|
|
uint8_t *rxdata, int rxlen);
|
|
|
|
/* Similar to spi_transaction(), but hands over to DMA for reading response.
|
|
* Must call spi_transaction_flush() after this to make sure the response is
|
|
* received.
|
|
*/
|
|
int spi_transaction_async(const uint8_t *txdata, int txlen,
|
|
uint8_t *rxdata, int rxlen);
|
|
|
|
/* Wait for async response received */
|
|
int spi_transaction_flush(void);
|
|
|
|
#ifdef CONFIG_SPI
|
|
/**
|
|
* Called when the NSS level changes, signalling the start or end of a SPI
|
|
* transaction.
|
|
*
|
|
* @param signal GPIO signal that changed
|
|
*/
|
|
void spi_event(enum gpio_signal signal);
|
|
|
|
#else
|
|
static inline void spi_event(enum gpio_signal signal)
|
|
{
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* __CROS_EC_SPI_H */
|