#include <linux/io.h>
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/dmaengine.h>
#include <linux/bitops.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/sched.h>
#include <linux/scatterlist.h>
#include <linux/spi/spi.h>
#include <linux/platform_data/dma-ep93xx.h>
#include <linux/platform_data/spi-ep93xx.h>
#define SSPCR0 …
#define SSPCR0_SPO …
#define SSPCR0_SPH …
#define SSPCR0_SCR_SHIFT …
#define SSPCR1 …
#define SSPCR1_RIE …
#define SSPCR1_TIE …
#define SSPCR1_RORIE …
#define SSPCR1_LBM …
#define SSPCR1_SSE …
#define SSPCR1_MS …
#define SSPCR1_SOD …
#define SSPDR …
#define SSPSR …
#define SSPSR_TFE …
#define SSPSR_TNF …
#define SSPSR_RNE …
#define SSPSR_RFF …
#define SSPSR_BSY …
#define SSPCPSR …
#define SSPIIR …
#define SSPIIR_RIS …
#define SSPIIR_TIS …
#define SSPIIR_RORIS …
#define SSPICR …
#define SPI_TIMEOUT …
#define SPI_FIFO_SIZE …
struct ep93xx_spi { … };
#define bits_per_word_to_dss(bpw) …
static int ep93xx_spi_calc_divisors(struct spi_controller *host,
u32 rate, u8 *div_cpsr, u8 *div_scr)
{ … }
static int ep93xx_spi_chip_setup(struct spi_controller *host,
struct spi_device *spi,
struct spi_transfer *xfer)
{ … }
static void ep93xx_do_write(struct spi_controller *host)
{ … }
static void ep93xx_do_read(struct spi_controller *host)
{ … }
static int ep93xx_spi_read_write(struct spi_controller *host)
{ … }
static enum dma_transfer_direction
ep93xx_dma_data_to_trans_dir(enum dma_data_direction dir)
{ … }
static struct dma_async_tx_descriptor *
ep93xx_spi_dma_prepare(struct spi_controller *host,
enum dma_data_direction dir)
{ … }
static void ep93xx_spi_dma_finish(struct spi_controller *host,
enum dma_data_direction dir)
{ … }
static void ep93xx_spi_dma_callback(void *callback_param)
{ … }
static int ep93xx_spi_dma_transfer(struct spi_controller *host)
{ … }
static irqreturn_t ep93xx_spi_interrupt(int irq, void *dev_id)
{ … }
static int ep93xx_spi_transfer_one(struct spi_controller *host,
struct spi_device *spi,
struct spi_transfer *xfer)
{ … }
static int ep93xx_spi_prepare_message(struct spi_controller *host,
struct spi_message *msg)
{ … }
static int ep93xx_spi_prepare_hardware(struct spi_controller *host)
{ … }
static int ep93xx_spi_unprepare_hardware(struct spi_controller *host)
{ … }
static bool ep93xx_spi_dma_filter(struct dma_chan *chan, void *filter_param)
{ … }
static int ep93xx_spi_setup_dma(struct ep93xx_spi *espi)
{ … }
static void ep93xx_spi_release_dma(struct ep93xx_spi *espi)
{ … }
static int ep93xx_spi_probe(struct platform_device *pdev)
{ … }
static void ep93xx_spi_remove(struct platform_device *pdev)
{ … }
static struct platform_driver ep93xx_spi_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;