ARM64: dts: rk3399-box-rev2: enable hdmi uboot logo display
[firefly-linux-kernel-4.4.55.git] / drivers / spi / rk29_spim.h
index fb3ab62c602da7c692fc828dde5a52b33bb79657..073c434a7929063290d70b0f588266f44cb1d726 100755 (executable)
 #ifndef __DRIVERS_SPIM_RK29XX_HEADER_H\r
 #define __DRIVERS_SPIM_RK29XX_HEADER_H\r
 #include <linux/io.h>\r
-#include <mach/rk29-dma-pl330.h>\r
+#ifdef CONFIG_ARCH_RK30\r
+#include <plat/dma-pl330.h>\r
+#else\r
+#include <mach/dma-pl330.h>\r
+#endif\r
 \r
 /* SPI register offsets */\r
 #define SPIM_CTRLR0                            0x0000\r
 \r
 #define SPI_SCOL_OFFSET                        7                  /* Serial Clock Polarity */\r
 \r
+#define SPI_OPMOD_OFFSET           20\r
+#define SPI_OPMOD_MASTER        0\r
+#define SPI_OPMOD_SLAVE         1\r
+\r
 #define SPI_TMOD_OFFSET                        18                 /* Transfer Mode */\r
 #define        SPI_TMOD_TR                         0x00                       /* xmit & recv */\r
 #define SPI_TMOD_TO                        0x01                       /* xmit only */\r
@@ -128,18 +136,21 @@ struct rk29xx_spi {
        u32         irq_polarity;\r
        u32                     fifo_len;       /* depth of the FIFO buffer */\r
        struct clk              *clock_spim;    /* clk apb */\r
+       struct clk              *pclk;\r
        struct platform_device  *pdev;\r
        \r
        /* Driver message queue */\r
        struct workqueue_struct *workqueue;\r
        struct work_struct      pump_messages;\r
-       spinlock_t              lock;\r
+       spinlock_t              lock;   \r
+       struct mutex            dma_lock;\r
        struct list_head        queue;\r
        int                     busy;\r
        int                     run;\r
 \r
        /* Message Transfer pump */\r
-       struct tasklet_struct   pump_transfers;\r
+       struct tasklet_struct   pump_transfers; \r
+       struct tasklet_struct   dma_transfers;  \r
 \r
        /* Current message transfer state info */\r
        struct spi_message      *cur_msg;\r
@@ -154,6 +165,8 @@ struct rk29xx_spi {
        int                     dma_mapped;\r
        dma_addr_t              rx_dma;\r
        dma_addr_t              tx_dma;\r
+       void                    *buffer_tx_dma;\r
+       void                    *buffer_rx_dma;\r
        size_t                  rx_map_len;\r
        size_t                  tx_map_len;\r
        u8                      n_bytes;        /* current is a 1/2 bytes op */\r
@@ -167,6 +180,9 @@ struct rk29xx_spi {
 \r
        /* Dma info */\r
        struct completion               xfer_completion;\r
+       \r
+       struct completion               tx_completion;\r
+       struct completion               rx_completion;\r
        unsigned    state;\r
        unsigned                        cur_speed;\r
        unsigned long                   sfr_start;\r
@@ -242,6 +258,7 @@ struct rk29xx_spi_chip {
        u8 poll_mode;   /* 0 for contoller polling mode */\r
        u8 type;        /* SPI/SSP/Micrwire */\r
        u8 enable_dma;\r
+       u8 slave_enable;\r
        void (*cs_control)(struct rk29xx_spi *dws, u32 cs, u8 flag);\r
 };\r
 \r