Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#ifndef _SPI_DRV_H_
|
||||
#define _SPI_DRV_H_
|
||||
|
||||
enum{
|
||||
SPI_EDGE_RISING = 0,
|
||||
SPI_EDGE_FALLING = 1,
|
||||
SPI_EDGE_LIMIT
|
||||
};
|
||||
|
||||
enum{
|
||||
SPI_ENDIAN_LSB = 0,
|
||||
SPI_ENDIAN_MSB = 1,
|
||||
SPI_ENDIAN_LIMIT
|
||||
};
|
||||
|
||||
enum{
|
||||
SPI_PATH_IMAGE = 0,
|
||||
SPI_PATH_REGISTER = 1,
|
||||
SPI_PATH_LIMIT
|
||||
};
|
||||
|
||||
enum{
|
||||
SPI_FORMAT_RGB565 = 0,
|
||||
SPI_FORMAT_RGB666 = 1,
|
||||
SPI_FORMAT_RGB666_2_3 = 2,
|
||||
SPI_FORMAT_RGB888 = 3,
|
||||
SPI_FORMAT_RGB888_2_3 = 4,
|
||||
SPI_FORMAT_LIMIT
|
||||
};
|
||||
|
||||
enum{
|
||||
SPI_STATUS_UNINIT = 0,
|
||||
SPI_STATUS_INIT = 1,
|
||||
SPI_STATUS_LIMIT
|
||||
};
|
||||
|
||||
/* used for CraneM&CraneL */
|
||||
enum
|
||||
{
|
||||
SPI_6_5M = 0,
|
||||
SPI_13M = 1,
|
||||
SPI_26M,
|
||||
SPI_52M,
|
||||
SPI_3_25M,
|
||||
SPI_1_625M,
|
||||
SPI_812_5k,
|
||||
SPI_CLK_LIMIT
|
||||
};
|
||||
|
||||
|
||||
struct timing_spi {
|
||||
uint32_t wclk; /*KHz*/
|
||||
uint32_t rclk; /*KHz*/
|
||||
};
|
||||
|
||||
struct spi_info{
|
||||
uint16_t line_num; /*3 or 4*/
|
||||
uint16_t interface_id; /*1 or 2*/
|
||||
uint16_t data_lane_num; /*1 or 2*/
|
||||
uint16_t format;
|
||||
uint16_t device_id; /*0 or 1*/
|
||||
uint16_t sample_edge;
|
||||
uint16_t force_cs; /*0-disable, 1-enable*/
|
||||
uint16_t endian;
|
||||
uint16_t reserved;
|
||||
struct timing_spi *timing;
|
||||
};
|
||||
|
||||
struct s_spi_ctx{
|
||||
uint32_t base_addr;
|
||||
uint32_t sclk; /*KHz*/
|
||||
uint16_t cur_path;
|
||||
uint16_t cur_cs;
|
||||
uint16_t status;
|
||||
uint8_t work_mode;
|
||||
uint8_t reserved;
|
||||
struct spi_info info;
|
||||
};
|
||||
|
||||
struct s_spi_ctx* spi_init(uint32_t sclk, struct spi_info *info, int32_t work_mode);
|
||||
int spi_update(struct s_spi_ctx *spi_ctx, int32_t work_mode);
|
||||
int spi_set_cs(struct s_spi_ctx *spi_ctx, uint32_t enable);
|
||||
int spi_write_cmd(struct s_spi_ctx *spi_ctx, uint32_t cmd, uint32_t bits);
|
||||
int spi_write_data(struct s_spi_ctx *spi_ctx, uint32_t data, uint32_t bits);
|
||||
int spi_read_data(struct s_spi_ctx *spi_ctx, uint32_t cmd, uint32_t cmd_bits,
|
||||
uint32_t *data, uint32_t data_bits);
|
||||
int spi_before_refresh(struct s_spi_ctx *spi_ctx);
|
||||
int spi_after_refresh(struct s_spi_ctx *spi_ctx);
|
||||
void spi_uninit(struct s_spi_ctx *mcu_ctx);
|
||||
|
||||
/* add for CraneM */
|
||||
void spi_lcd_init(void);
|
||||
void spi_set_clk_rate(unsigned int clk_dev);
|
||||
void ssp_write_cmd_data_to_LCD(uint32_t cmd, uint32_t data, uint32_t data_bits, uint16_t line_num);
|
||||
void ssp_write_data_to_LCD_Gram(uint16_t* data, uint32_t sum_pixel, uint32_t data_bits, uint16_t line_num);
|
||||
|
||||
void ssp_read_data_from_LCD(uint32_t *data, uint32_t data_bits);
|
||||
void wait_ssp_write_data_to_LCD_complete(void);
|
||||
#endif /*_SPI_DRV_H_*/
|
||||
Reference in New Issue
Block a user