Files
banban/ql-kernel/threadx/common/include/qspi_host.h
T

112 lines
2.5 KiB
C

#ifndef _QSPI_HOST_H
#define _QSPI_HOST_H
#include "qspi_common.h"
#include "qspi_flash.h"
#define QSPI_RX_BUFF_MAX 32
#define QSPI_TX_BUFF_MAX 64
#define QSPI_TX_BUFF_POP_MIN 16
#define QSPI_AHB_BUFF_MAX_SIZE (256*3)
#define QSPI_DMA_TX_CHANNEL 28
#define ENABLE_QSPI_INT
#define ENABLE_QSPI_DMA
#if (defined(LTEONLY_8M8M) || defined(CRANEL_4MRAM) || defined(LTEGSM_THIN))
#define SW_HANDLE_XIP
#endif
typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef unsigned long UINT32;
typedef unsigned char Int8;
typedef unsigned short Int16;
typedef unsigned long Int32;
struct spi_flash_cmd;
enum {
QSPI_LUT_NOTSET = -1,
QSPI_LUT_SEQID0 = 0,
QSPI_LUT_SEQID1,
QSPI_LUT_SEQID2,
QSPI_LUT_SEQID3,
QSPI_LUT_SEQID4,
QSPI_LUT_SEQID5,
QSPI_LUT_SEQID6,
QSPI_LUT_SEQID7,
QSPI_LUT_SEQID8,
QSPI_LUT_SEQID9,
QSPI_LUT_SEQID10,
QSPI_LUT_SEQID11,
QSPI_LUT_SEQID12,
QSPI_LUT_SEQID13,
QSPI_LUT_SEQID14,
QSPI_LUT_SEQID15
};
enum {
QSPI_NORMAL_MODE = 0,
QSPI_DISABLE_MODE,
QSPI_STOP_MODE
};
enum {
QSPI_FUNC_CLK_26MHZ = 0,
QSPI_FUNC_CLK_52MHZ,
QSPI_FUNC_CLK_78MHZ,
QSPI_FUNC_CLK_104MHZ,
QSPI_FUNC_CLK_156MHZ,
QSPI_FUNC_CLK_208MHZ,
QSPI_FUNC_CLK_312MHZ,
QSPI_FUNC_CLK_416MHZ,
QSPI_FUNC_CLK_400MHZ = QSPI_FUNC_CLK_78MHZ, //with PLL2
};
enum {
QSPI_CS_A1 = 0,
QSPI_CS_A2,
QSPI_CS_B1,
QSPI_CS_B2,
QSPI_CS_MAX
};
enum {
QSPI_CPU_XFER = 0,
QSPI_DMA_XFER
};
struct qspi_host
{
struct spi_flash_cmd *cmd;
int bytes_left;
volatile int complete;
int wmrk;
int cs_addr[QSPI_CS_MAX];
int use_intr;
int en_tx_dma;
int use_dma;
int use_xip;
int xip_read;
int bus_clk;
int lut_map;
};
void _writel(unsigned int data , unsigned int addr );
unsigned int _readl(unsigned int addr);
void *qspi_memcpy(void *dst, const void *src, int num);
void qspi_enable_ahb_preempt(int on);
void dcache_invalidate_range(unsigned int addr, unsigned int len);
void qspi_config_lookup_tbl(struct spi_flash_chip *chip,
struct spi_flash_cmd_cfg *cmd_cfg,
uint8_t mode, int seq_id);
int qspi_enable_xip(struct spi_flash_chip *chip,
struct spi_flash_cmd_cfg *cmd_cfg);
int qspi_preinit_lookup_tbl(struct spi_flash_chip *chip);
struct qspi_host * qspi_host_init(int cs, int mhz, int use_xip);
int qspi_start_cmd(struct spi_flash_chip *chip, struct spi_flash_cmd *cmd);
unsigned int disable_interupt_for_qspi(void);
void enable_interupt_for_qspi(unsigned int cpsr);
int qspi_need_send_resume(void);
#endif