KT24-1110_65E-HA-651B/include_lib/driver/cpu/br25/asm/spi.h
2024-11-10 18:44:17 +08:00

79 lines
2.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _SPI_INTERFACE_H_
#define _SPI_INTERFACE_H_
#include "typedef.h"
#include "generic/ioctl.h"
/*enum spi_mode {
SPI_2WIRE_MODE,
SPI_ODD_MODE,
SPI_DUAL_MODE,
SPI_QUAD_MODE,
};*/
enum spi_mode {
SPI_MODE_BIDIR_1BIT, //支持SPIx(x=0,1,2)全双工di接收do发送
SPI_MODE_UNIDIR_1BIT, //支持SPIx(x=0,1,2)半双工do分时发送/接收
SPI_MODE_UNIDIR_2BIT, //支持SPIx(x=0)半双工di & do共2bit分时发送/接收
SPI_MODE_UNIDIR_4BIT, //支持SPIx(x=0)半双工di & do & d2 & d3共4bit分时发送/接收
};
enum {
SPI0,
SPI1,
SPI2,
SPI_MAX_HW_NUM,
};
#define SPI_MAX_IO_GROUP 2
struct spi_io {
u8 cs_pin;
u8 di_pin;
u8 do_pin;
u8 clk_pin;
u8 d2_pin;
u8 d3_pin;
};
struct spi_io_mapping {
u32 num; //可选端口数量
struct spi_io io[SPI_MAX_IO_GROUP];
};
enum spi_role {
SPI_ROLE_MASTER,
SPI_ROLE_SLAVE,
};
struct spi_platform_data {
u8 port; //端口,可选'A', 'B''C'
u8 mode; //模式选项为enum spi_mode中的枚举常量
u8 role; //角色选项为enum spi_role中的枚举常量
u32 clk; //波特率
};
extern const struct spi_platform_data spi0_p_data;
extern const struct spi_platform_data spi1_p_data;
extern const struct spi_platform_data spi2_p_data;
typedef const int spi_dev;
int spi_open(spi_dev spi);
int spi_dma_recv(spi_dev spi, void *buf, u32 len);
int spi_dma_send(spi_dev spi, const void *buf, u32 len);
void spi_dma_set_addr_for_isr(spi_dev spi, void *buf, u32 len, u8 rw);
void spi_set_ie(spi_dev spi, u8 en);
u8 spi_get_pending(spi_dev spi);
void spi_clear_pending(spi_dev spi);
void spi_set_bit_mode(spi_dev spi, int mode);
u8 spi_recv_byte(spi_dev spi, int *err);
u8 spi_recv_byte_for_isr(spi_dev spi);
int spi_send_byte(spi_dev spi, u8 byte);
void spi_send_byte_for_isr(spi_dev spi, u8 byte);
u8 spi_send_recv_byte(spi_dev spi, u8 byte, int *err);
int spi_set_baud(spi_dev spi, u32 baud);
u32 spi_get_baud(spi_dev spi);
void spi_close(spi_dev spi);
#endif