123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- #ifndef __IO_DEF_H
- #define __IO_DEF_H
- #include "global.h"
- #include "config.h"
- #include "sfr.h"
- #if (SD0_MAPPING == SD0MAP_G1)
- //SDCMD(PA5), SDCLK(PA6), SDDAT0(PA7)
- #define SD0CMD_GP A
- #define SD0CLK_GP A
- #define SD0DAT_GP A
- #define SD0CMD_BIT BIT(5)
- #define SD0CLK_BIT BIT(6)
- #define SD0DAT_BIT BIT(7)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G1
- #define SDCMD_IO IO_PA5
- #define SDCLK_IO IO_PA6
- #define SDDAT_IO IO_PA7
- #elif (SD0_MAPPING == SD0MAP_G2)
- //SDCMD(PB0), SDCLK(PB1), SDDAT0(PB2)
- #define SD0CMD_GP B
- #define SD0CLK_GP B
- #define SD0DAT_GP B
- #define SD0CMD_BIT BIT(0)
- #define SD0CLK_BIT BIT(1)
- #define SD0DAT_BIT BIT(2)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G2
- #define SDCMD_IO IO_PB0
- #define SDCLK_IO IO_PB1
- #define SDDAT_IO IO_PB2
- #elif (SD0_MAPPING == SD0MAP_G3)
- //SDCMD(PE5), SDCLK(PE6), SDDAT0(PE7)
- #define SD0CMD_GP E
- #define SD0CLK_GP E
- #define SD0DAT_GP E
- #define SD0CMD_BIT BIT(5)
- #define SD0CLK_BIT BIT(6)
- #define SD0DAT_BIT BIT(7)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G3
- #define SDCMD_IO IO_PB13
- #define SDCLK_IO IO_PB14
- #define SDDAT_IO IO_PB15
- #elif (SD0_MAPPING == SD0MAP_G4)
- //SDCMD(PA5), SDCLK(PA6), SDDAT0(PB4)
- #define SD0CMD_GP A
- #define SD0CLK_GP A
- #define SD0DAT_GP B
- #define SD0CMD_BIT BIT(5)
- #define SD0CLK_BIT BIT(6)
- #define SD0DAT_BIT BIT(4)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G4
- #define SDCMD_IO IO_PE11
- #define SDCLK_IO IO_PE12
- #define SDDAT_IO IO_PE13
- #elif (SD0_MAPPING == SD0MAP_G5)
- //SDCMD(PA5), SDCLK(PA6), SDDAT0(PB3)
- #define SD0CMD_GP A
- #define SD0CLK_GP A
- #define SD0DAT_GP B
- #define SD0CMD_BIT BIT(5)
- #define SD0CLK_BIT BIT(6)
- #define SD0DAT_BIT BIT(3)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G5
- #define SDCMD_IO IO_PE11
- #define SDCLK_IO IO_PE12
- #define SDDAT_IO IO_PB3
- #elif (SD0_MAPPING == SD0MAP_G6)
- //SDCMD(PB3), SDCLK(PA6), SDDAT0(PB4)
- #define SD0CMD_GP B
- #define SD0CLK_GP A
- #define SD0DAT_GP B
- #define SD0CMD_BIT BIT(3)
- #define SD0CLK_BIT BIT(6)
- #define SD0DAT_BIT BIT(6)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G6
- #define SDCMD_IO IO_PE11
- #define SDCLK_IO IO_PE12
- #define SDDAT_IO IO_PB4
- #elif (SD0_MAPPING == SD0MAP_G7)
- #error "SD0MAP_G7 is not allowed!"
- //SDCMD(PB3), SDCLK(PE12), SDDAT0(PB4)
- #define SD0CMD_GP B
- #define SD0CLK_GP E
- #define SD0DAT_GP B
- #define SD0CMD_BIT BIT(11)
- #define SD0CLK_BIT BIT(12)
- #define SD0DAT_BIT BIT(6)
- #define SD0_FCON_INIT() FUNCMCON0 = SD0MAP_G7
- #define SDCMD_IO IO_PB3
- #define SDCLK_IO IO_PE12
- #define SDDAT_IO IO_PB4
- #endif
- #if (SD0_MAPPING >= SD0MAP_G1 && SD0_MAPPING <= SD0MAP_G7)
- #define SD0CMD_GPIODE SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, DE))
- #define SD0CMD_GPIOFEN SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, FEN))
- #define SD0CMD_GPIODIR SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, DIR))
- #define SD0CMD_GPIOSET SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, SET))
- #define SD0CMD_GPIOCLR SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, CLR))
- #define SD0CMD_GPIOPU SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, PU))
- #define SD0CMD_GPIOPU300 SET_MACRO(GPIO, SET_MACRO(SD0CMD_GP, PU300))
- #define SD0CMD_GPIO SET_MACRO(GPIO, SD0CMD_GP)
- #define SD0CLK_GPIODE SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, DE))
- #define SD0CLK_GPIOFEN SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, FEN))
- #define SD0CLK_GPIODIR SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, DIR))
- #define SD0CLK_GPIOSET SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, SET))
- #define SD0CLK_GPIOCLR SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, CLR))
- #define SD0CLK_GPIOPU SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, PU))
- #define SD0CLK_GPIOPU300 SET_MACRO(GPIO, SET_MACRO(SD0CLK_GP, PU300))
- #define SD0CLK_GPIO SET_MACRO(GPIO, SD0CLK_GP)
- #define SD0DAT_GPIODE SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, DE))
- #define SD0DAT_GPIOFEN SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, FEN))
- #define SD0DAT_GPIODIR SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, DIR))
- #define SD0DAT_GPIOSET SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, SET))
- #define SD0DAT_GPIOCLR SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, CLR))
- #define SD0DAT_GPIOPU SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, PU))
- #define SD0DAT_GPIOPU300 SET_MACRO(GPIO, SET_MACRO(SD0DAT_GP, PU300))
- #define SD0DAT_GPIO SET_MACRO(GPIO, SD0DAT_GP)
- #define SD_MUX_IO_INIT() {SD0CLK_GPIODE |= SD0CLK_BIT;\
- SD0CMD_GPIODE |= SD0CMD_BIT;\
- SD0DAT_GPIODE |= SD0DAT_BIT;\
- SD0CLK_GPIOCLR = SD0CLK_BIT;\
- SD0CLK_GPIODIR &= ~SD0CLK_BIT;\
- SD0CLK_GPIOPU &= ~SD0CLK_BIT;\
- SD0CLK_GPIOFEN |= SD0CLK_BIT;\
- SD0CMD_GPIODIR |= SD0CMD_BIT;\
- SD0CMD_GPIOPU |= SD0CMD_BIT;\
- SD0CMD_GPIOFEN |= SD0CMD_BIT;\
- SD0DAT_GPIODIR |= SD0DAT_BIT;\
- SD0DAT_GPIOPU |= SD0DAT_BIT;\
- SD0DAT_GPIOFEN |= SD0DAT_BIT;\
- SD0_FCON_INIT();}
- #define SD_IO_INIT() {SD0CLK_GPIODE |= SD0CLK_BIT;\
- SD0CMD_GPIODE |= SD0CMD_BIT;\
- SD0DAT_GPIODE |= SD0DAT_BIT;\
- SD0CLK_GPIODIR &= ~SD0CLK_BIT;\
- SD0CLK_GPIOFEN |= SD0CLK_BIT;\
- SD0CMD_GPIODIR |= SD0CMD_BIT;\
- SD0CMD_GPIOPU |= SD0CMD_BIT;\
- SD0CMD_GPIOFEN |= SD0CMD_BIT;\
- SD0DAT_GPIODIR |= SD0DAT_BIT;\
- SD0DAT_GPIOPU |= SD0DAT_BIT;\
- SD0DAT_GPIOFEN |= SD0DAT_BIT;\
- SD0_FCON_INIT();}
- #define SD_CLK_DIR_IN() {SD0CLK_GPIODIR |= SD0CLK_BIT; SD0CLK_GPIOPU |= SD0CLK_BIT;}
- #define SD_CLK_IN_DIS_PU10K() {SD0CLK_GPIODIR |= SD0CLK_BIT; SD0CLK_GPIOPU &= ~SD0CLK_BIT;}
- #define SD_CLK_DIR_OUT() {SD0CLK_GPIOPU &= ~SD0CLK_BIT; SD0CLK_GPIODIR &= ~SD0CLK_BIT;}
- #define SD_MUX_DETECT_INIT() {SD0CLK_GPIODE |= SD0CLK_BIT; SD0CLK_GPIOPU |= SD0CLK_BIT; SD0CLK_GPIODIR |= SD0CLK_BIT;}
- #define SD_MUX_IS_ONLINE() ((SD0CLK_GPIO & SD0CLK_BIT) == 0)
- #define SD_MUX_IS_BUSY() ((SD0CLK_GPIODIR & SD0CLK_BIT) == 0)
- #define SD_MUX_CMD_IS_BUSY() (SD0CMD_GPIOPU300 & SD0CMD_BIT)
- #define SD_CMD_MUX_PU300R() {SD0CMD_GPIOPU300 |= SD0CMD_BIT; SD0CMD_GPIOPU &= ~SD0CMD_BIT;}
- #define SD_CMD_MUX_PU10K() {SD0CMD_GPIOPU |= SD0CMD_BIT; SD0CMD_GPIOPU300 &= ~SD0CMD_BIT;}
- #define SD_DAT_MUX_PU300R() {SD0DAT_GPIOPU300 |= SD0DAT_BIT; SD0DAT_GPIOPU &= ~SD0DAT_BIT;}
- #define SD_DAT_MUX_PU10K() {SD0DAT_GPIOPU |= SD0DAT_BIT; SD0DAT_GPIOPU300 &= ~SD0DAT_BIT;}
- #define SD_CMD_MUX_IS_ONLINE() ((SD0CMD_GPIO & SD0CMD_BIT) == 0)
- #define SD_CLK_OUT_H() {SD0CLK_GPIOSET = SD0CLK_BIT;}
- #define SD_CLK_OUT_L() {SD0CLK_GPIOCLR = SD0CLK_BIT;}
- #define SD_CLK_STA() (SD0CLK_GPIO & SD0CLK_BIT)
- #define SD_DAT_DIR_OUT() {SD0DAT_GPIODE |= SD0DAT_BIT; SD0DAT_GPIODIR &= ~SD0DAT_BIT;}
- #define SD_DAT_DIR_IN() {SD0DAT_GPIODIR |= SD0DAT_BIT; SD0DAT_GPIOPU |= SD0DAT_BIT;}
- #define SD_DAT_OUT_H() {SD0DAT_GPIOSET = SD0DAT_BIT;}
- #define SD_DAT_OUT_L() {SD0DAT_GPIOCLR = SD0DAT_BIT;}
- #define SD_DAT_STA() (SD0DAT_GPIO & SD0DAT_BIT)
- #define SD_CMD_DIR_OUT() {SD0CMD_GPIODE |= SD0CMD_BIT; SD0CMD_GPIODIR &= ~SD0CMD_BIT;}
- #define SD_CMD_DIR_IN() {SD0CMD_GPIODIR |= SD0CMD_BIT; SD0CMD_GPIOPU |= SD0CMD_BIT;}
- #define SD_CMD_OUT_H() {SD0CMD_GPIOSET = SD0CMD_BIT;}
- #define SD_CMD_OUT_L() {SD0CMD_GPIOCLR = SD0CMD_BIT;}
- #define SD_CMD_STA() (SD0CMD_GPIO & SD0CMD_BIT)
- #define SD_DAT_DIS_UP() static u32 pu300, pu,dir;\
- pu300 = GPIOBPU300;\
- pu = SD0DAT_GPIOPU;\
- dir = SD0DAT_GPIODIR;\
- SD0DAT_GPIODIR |= BIT(3);\
- SD0DAT_GPIOPU300 &= ~BIT(3);\
- SD0DAT_GPIOPU &= ~BIT(3);
- #define SD_DAT_RES_UP() SD0DAT_GPIOPU300 = pu300;\
- SD0DAT_GPIOPU = pu;\
- SD0DAT_GPIODIR = dir;
- #else
- #define SD_MUX_IO_INIT()
- #define SD_IO_INIT()
- #define SD_CLK_DIR_IN()
- #define SD_CLK_IN_DIS_PU10K()
- #define SD_CLK_DIR_OUT()
- #define SD_MUX_DETECT_INIT()
- #define SD_MUX_IS_ONLINE() 0
- #define SD_MUX_IS_BUSY() 0
- #define SD_MUX_CMD_IS_BUSY() 0
- #define SD_CMD_MUX_PU300R()
- #define SD_CMD_MUX_PU10K()
- #define SD_CMD_MUX_IS_ONLINE() 0
- #define SD_CLK_OUT_H()
- #define SD_CLK_OUT_L()
- #define SD_CLK_STA() 0
- #define SD_DAT_DIR_OUT()
- #define SD_DAT_DIR_IN()
- #define SD_DAT_OUT_H()
- #define SD_DAT_OUT_L()
- #define SD_DAT_STA() 0
- #define SD_CMD_DIR_OUT()
- #define SD_CMD_DIR_IN()
- #define SD_CMD_OUT_H()
- #define SD_CMD_OUT_L()
- #define SD_CMD_STA() 0
- #define SD_DAT_DIS_UP()
- #define SD_DAT_RES_UP()
- #define SDCLK_IO IO_NONE
- #define SDCMD_IO IO_NONE
- #define SDDAT_IO IO_NONE
- #endif
- #endif //__IO_DEF_H
|