KT24-1110_65E-HA-651B/include_lib/driver/device/sdio_host_init.h

73 lines
2.6 KiB
C
Raw Normal View History

2024-11-10 10:44:17 +00:00
#ifndef _SDIO_HOST_INIT_H_
#define _SDIO_HOST_INIT_H_
/*
SDIO_GRP_0|SDIO_PORT_0: PA1-PA4->CMD,CLK,D2,D0; PH13,PH15->D3,D1
SDIO_GRP_0|SDIO_PORT_1: PH6-PH11->D3,CMD,CLK,D2,D0,D1
SDIO_GRP_0|SDIO_PORT_2: PC8-PC13->D2,D3,CMD,CLK,D0,D1
SDIO_GRP_0|SDIO_PORT_3: PG8-PG13->D2,D3,CMD,CLK,D0,D1
SDIO_GRP_1|SDIO_PORT_0: PF4-PF9->D2,D3,CMD,CLK,D0,D1
SDIO_GRP_1|SDIO_PORT_1: PG0-PG5->D2,D3,CMD,CLK,D0,D1
SDIO_GRP_1|SDIO_PORT_2: PD6-PD11->D2,D3,CMD,CLK,D0,D1
SDIO_GRP_1|SDIO_PORT_3: PA10-PA15->D2,D3,CMD,CLK,D0,D1
*/
//选择SDIO0? SDIO1? 作为输出,默认为SDIO1
#define SDIO_GRP_0 0
#define SDIO_GRP_1 (1 << 31)
#define SDIO_GRP_2 (1 << 30)
#define SDIO_GRP_MASK (1 << 31|1 << 30)
//选择SDIOx的哪个出口作为输出,默认为出口0
#define SDIO_PORT_0 0
#define SDIO_PORT_1 (1 << 29)
#define SDIO_PORT_2 (1 << 28)
#define SDIO_PORT_3 (1 << 29|1 << 28)
#define SDIO_PORT_MASK (1 << 29|1 << 28)
//是否使用四线模式, 默认为单线模式
#define SDIO_1_BIT_DATA 0
#define SDIO_4_BIT_DATA (1 << 27)
#define SDIO_4_BIT_DATA_MASK (1 << 27)
//是否使用硬件中断检测外设事件,例如接收到数据. , 默认使用轮询方式查询事件, //对接收速度不敏感使用SDIO_POLLING即可 ,使用SDIO_DATA1_IRQ如果接收数据量过大会导致CPU不足的问题.
#define SDIO_POLLING 0
#define SDIO_DATA1_IRQ (1 << 26)
#define SDIO_DATA1_IRQ_MASK (1 << 26)
//配置SDIO时钟(HZ), 默认为40MHZ
#define SDIO_MAX_CLK_MASK ((1 << 26)-1)
#define SDIO_CLOCK_80M (0) //80M 写0
#define SDIO_CLOCK_40M (40 * 1000000)
#define SDIO_CLOCK_26M (26 * 1000000)
#define SDIO_CLOCK_20M (20 * 1000000)
#define SDIO_CLOCK_16M (16 * 1000000)
#define SDIO_CLOCK_8M (8 * 1000000)
#define SDIO_CLOCK_4M (4 * 1000000)
#define SDIO_CLOCK_2M (2 * 1000000)
/*
sdio_host_init(0);
sdio_host_init(SDIO_GRP_1|SDIO_4_BIT_DATA);
sdio_host_init(SDIO_GRP_1|SDIO_PORT_1|SDIO_DATA1_IRQ);
sdio_host_init(SDIO_GRP_0|SDIO_PORT_0|SDIO_4_BIT_DATA|SDIO_DATA1_IRQ|(10*1000000));
*/
extern void sdio_host_init(unsigned int parm);
extern unsigned char *SDIO_GET_CMD_BUF(void);
extern void SDIO_SET_GRP_PORT(u32 grp, u32 port);
extern void cpu_sdio_host_uninit(void);
extern void sdio_dat1_irq_uninit(void);
extern void sdio_dat1_irq_init(void);
extern void host_set_timing(void *host, unsigned int timing);
extern void mmc_set_bus_width(void *host, unsigned int width);
extern void mmc_set_clock(void *host, unsigned int hz);
extern void SDIO_CONTROLLER_RESET(void);
extern void SDIO_IDLE_CLK_EN(u8 enable) ;
extern void SDIO_CONTROLLER_START(void);
extern void SDIO_CONTROLLER_SET_IRQ(void);
extern void SDIO_SET_4WIRE_MODE(u8 enable);
#endif //_SDIO_HOST_INIT_H_