78 lines
3.3 KiB
C
78 lines
3.3 KiB
C
#ifndef _SDIO_HOST_INIT_H_
|
||
#define _SDIO_HOST_INIT_H_
|
||
|
||
/*
|
||
CMD CLK D0 D1 D2 D3
|
||
SDIO_GRP_0|SDIO_PORT_0: IO_PORTA_01, IO_PORTA_02, IO_PORTA_04, IO_PORTH_13, IO_PORTA_03, IO_PORTA_05
|
||
SDIO_GRP_0|SDIO_PORT_1: IO_PORTH_07, IO_PORTH_08, IO_PORTH_10, IO_PORTH_11, IO_PORTH_09, IO_PORTH_06
|
||
SDIO_GRP_0|SDIO_PORT_2: IO_PORTG_02, IO_PORTG_03, IO_PORTG_04, IO_PORTG_05, IO_PORTG_00, IO_PORTG_01
|
||
SDIO_GRP_0|SDIO_PORT_3: IO_PORTG_10, IO_PORTG_11, IO_PORTG_12, IO_PORTG_13, IO_PORTG_08, IO_PORTG_09
|
||
SDIO_GRP_1|SDIO_PORT_0: IO_PORTF_04, IO_PORTF_05, IO_PORTF_06, IO_PORTF_07, IO_PORTF_02, IO_PORTF_03
|
||
SDIO_GRP_1|SDIO_PORT_1: IO_PORTG_02, IO_PORTG_03, IO_PORTG_04, IO_PORTG_05, IO_PORTG_00, IO_PORTG_01
|
||
SDIO_GRP_1|SDIO_PORT_2: IO_PORTD_08, IO_PORTD_09, IO_PORTD_10, IO_PORTD_11, IO_PORTD_06, IO_PORTD_07
|
||
SDIO_GRP_1|SDIO_PORT_3: IO_PORTA_08, IO_PORTA_10, IO_PORTA_11, IO_PORTA_12, IO_PORTA_06, IO_PORTA_07
|
||
SDIO_GRP_2|SDIO_PORT_0: IO_PORTF_04, IO_PORTF_05, IO_PORTF_06, IO_PORTF_07, IO_PORTF_02, IO_PORTF_03
|
||
SDIO_GRP_2|SDIO_PORT_1: IO_PORTH_07, IO_PORTH_08, IO_PORTH_10, IO_PORTH_11, IO_PORTH_09, IO_PORTH_06
|
||
|
||
注意:ac521x的SD2-B不能用wekeup中断,只能用轮训
|
||
*/
|
||
|
||
//选择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_DATA1_IRQ 0
|
||
#define SDIO_POLLING (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_
|