#ifndef __IO_DEF_H #define __IO_DEF_H #include "global.h" #include "config.h" #include "sfr.h" #if (SD0_MAPPING == SD0MAP_G1) //SDCLK(PB0), SDCMD(PB1), SDDAT0(PB2) #define SD_MUX_IO_INIT() {GPIOBDE |= BIT(0)|BIT(1)|BIT(2);\ GPIOBCLR = BIT(0);\ GPIOBDIR &= ~BIT(0);\ GPIOBPU &= ~BIT(0);\ GPIOBDIR |= BIT(1) | BIT(2);\ GPIOBPU |= BIT(1) | BIT(2);\ GPIOBFEN |= BIT(1) | BIT(2);\ FUNCMCON0 = SD0MAP_G1;} #define SD_IO_INIT() {GPIOBDE |= BIT(0)|BIT(1)|BIT(2);\ GPIOBDIR &= ~BIT(0);\ GPIOBDIR |= BIT(1) | BIT(2);\ GPIOBPU |= BIT(1) | BIT(2);\ GPIOBFEN |= BIT(1) | BIT(2);\ FUNCMCON0 = SD0MAP_G1;} #define SD_CLK_DIR_IN() {GPIOBDIR |= BIT(0); GPIOBPU |= BIT(0);} #define SD_CLK_IN_DIS_PU10K() {GPIOBDIR |= BIT(0); GPIOBPU &= ~BIT(0);} #define SD_CLK_DIR_OUT() {GPIOBPU &= ~BIT(0); GPIOBDIR &= ~BIT(0);} #define SD_MUX_DETECT_INIT() {GPIOBDE |= BIT(0); GPIOBPU |= BIT(0); GPIOBDIR |= BIT(0);} #define SD_MUX_IS_ONLINE() ((GPIOB & BIT(0)) == 0) #define SD_MUX_IS_BUSY() ((GPIOBDIR & BIT(0)) == 0) #define SD_MUX_CMD_IS_BUSY() (GPIOBPU300 & BIT(1)) #define SD_CMD_MUX_PU300R() {GPIOBPU300 |= BIT(1); GPIOBPU &= ~BIT(1);} #define SD_CMD_MUX_PU10K() {GPIOBPU |= BIT(1); GPIOBPU300 &= ~BIT(1);} #define SD_DAT_MUX_PU300R() {GPIOBPU300 |= BIT(2); GPIOBPU &= ~BIT(2);} #define SD_DAT_MUX_PU10K() {GPIOBPU |= BIT(2); GPIOBPU300 &= ~BIT(2);} #define SD_CMD_MUX_IS_ONLINE() ((GPIOB & BIT(1)) == 0) #define SD_CLK_OUT_H() {GPIOBSET = BIT(0);} #define SD_CLK_OUT_L() {GPIOBCLR = BIT(0);} #define SD_CLK_STA() (GPIOB & BIT(0)) #define SD_DAT_DIR_OUT() {GPIOBDE |= BIT(2); GPIOBDIR &= ~BIT(2);} #define SD_DAT_DIR_IN() {GPIOBDIR |= BIT(2); GPIOBPU |= BIT(2);} #define SD_DAT_OUT_H() {GPIOBSET = BIT(2);} #define SD_DAT_OUT_L() {GPIOBCLR = BIT(2);} #define SD_DAT_STA() (GPIOB & BIT(2)) #define SD_CMD_DIR_OUT() {GPIOBDE |= BIT(1); GPIOADIR &= ~BIT(1);} #define SD_CMD_DIR_IN() {GPIOBDIR |= BIT(1); GPIOAPU |= BIT(1);} #define SD_CMD_OUT_H() {GPIOBSET = BIT(1);} #define SD_CMD_OUT_L() {GPIOBCLR = BIT(1);} #define SD_CMD_STA() (GPIOB & BIT(1)) #define SD_DAT_DIS_UP() #define SD_DAT_RES_UP() #define SDCLK_IO IO_PB0 #define SDCMD_IO IO_PB1 #define SDDAT_IO IO_PB2 #elif (SD0_MAPPING == SD0MAP_G2) //SDCMD(PB6), SDCLK(PB7), SDDAT0(PB5) #define SD_MUX_IO_INIT() {GPIOBDE |= BIT(5)|BIT(6)|BIT(7);\ GPIOBCLR = BIT(7);\ GPIOBDIR &= ~BIT(7);\ GPIOBPU &= ~BIT(7);\ GPIOBDIR |= BIT(6) | BIT(5);\ GPIOBPU |= BIT(6) | BIT(5);\ GPIOBSET |= BIT(7) | BIT(6) | BIT(5);\ GPIOBFEN |= BIT(7) | BIT(6) | BIT(5);\ FUNCMCON0 = SD0MAP_G2;} #define SD_IO_INIT() {GPIOBDE |= BIT(5)|BIT(6)|BIT(7);\ GPIOBDIR &= ~BIT(7);\ GPIOBDIR |= BIT(6) | BIT(5);\ GPIOBPU |= BIT(6) | BIT(5);\ GPIOBFEN |= BIT(7) | BIT(6) | BIT(5);\ FUNCMCON0 = SD0MAP_G2;} #define SD_CLK_DIR_IN() {GPIOBDIR |= BIT(7); GPIOBPU |= BIT(7);} #define SD_CLK_IN_DIS_PU10K() {GPIOBDIR |= BIT(7); GPIOBPU &= ~BIT(7);} #define SD_CLK_DIR_OUT() {GPIOBPU &= ~BIT(7); GPIOBDIR &= ~BIT(7);} #define SD_MUX_DETECT_INIT() {GPIOBDE |= BIT(7); GPIOBPU |= BIT(7); GPIOBDIR |= BIT(7);} #define SD_MUX_IS_ONLINE() ((GPIOB & BIT(7)) == 0) #define SD_MUX_IS_BUSY() ((GPIOBDIR & BIT(7)) == 0) #define SD_MUX_CMD_IS_BUSY() (GPIOBPU300 & BIT(6)) #define SD_CMD_MUX_PU300R() {GPIOBPU300 |= BIT(6); GPIOBPU &= ~BIT(6);} #define SD_CMD_MUX_PU10K() {GPIOBPU |= BIT(6); GPIOBPU300 &= ~BIT(6);} #define SD_DAT_MUX_PU300R() {GPIOBPU300 |= BIT(5); GPIOBPU &= ~BIT(5);} #define SD_DAT_MUX_PU10K() {GPIOBPU |= BIT(5); GPIOBPU300 &= ~BIT(5);} #define SD_CMD_MUX_IS_ONLINE() ((GPIOB & BIT(5)) == 0) #define SD_CLK_OUT_H() {GPIOBSET = BIT(7);} #define SD_CLK_OUT_L() {GPIOBCLR = BIT(7);} #define SD_CLK_STA() (GPIOB & BIT(7)) #define SD_DAT_DIR_OUT() {GPIOBDE |= BIT(5); GPIOBDIR &= ~BIT(5);} #define SD_DAT_DIR_IN() {GPIOBDIR |= BIT(5); GPIOBPU |= BIT(5);} #define SD_DAT_OUT_H() {GPIOBSET = BIT(5);} #define SD_DAT_OUT_L() {GPIOBCLR = BIT(5);} #define SD_DAT_STA() (GPIOB & BIT(5)) #define SD_CMD_DIR_OUT() {GPIOBDE |= BIT(6); GPIOBDIR &= ~BIT(6);} #define SD_CMD_DIR_IN() {GPIOBDIR |= BIT(6); GPIOBPU |= BIT(6);} #define SD_CMD_OUT_H() {GPIOBSET = BIT(6);} #define SD_CMD_OUT_L() {GPIOBCLR = BIT(6);} #define SD_CMD_STA() (GPIOB & BIT(6)) #define SD_DAT_DIS_UP() #define SD_DAT_RES_UP() #define SDCLK_IO IO_PB7 #define SDCMD_IO IO_PB6 #define SDDAT_IO IO_PB5 #elif (SD0_MAPPING == SD0MAP_G3) //SDCMD(PE2), SDCLK(PE3), SDDAT0(PE1) #define SD_MUX_IO_INIT() {GPIOEDE |= BIT(1)|BIT(2)|BIT(3);\ GPIOECLR = BIT(3);\ GPIOEDIR &= ~BIT(3);\ GPIOEPU &= ~BIT(3);\ GPIOEDIR |= BIT(1) | BIT(2);\ GPIOEPU |= BIT(1) | BIT(2);\ GPIOEFEN |= BIT(1) | BIT(2);\ FUNCMCON0 = SD0MAP_G3;} #define SD_IO_INIT() {GPIOEDE |= BIT(1)|BIT(2)|BIT(3);\ GPIOEDIR &= ~BIT(3);\ GPIOEDIR |= BIT(1) | BIT(2);\ GPIOEPU |= BIT(1) | BIT(2);\ GPIOEFEN |= BIT(1) | BIT(2);\ FUNCMCON0 = SD0MAP_G3;} #define SD_CLK_DIR_IN() {GPIOEDIR |= BIT(3); GPIOEPU |= BIT(3);} #define SD_CLK_IN_DIS_PU10K() {GPIOEDIR |= BIT(3); GPIOEPU &= ~BIT(3);} #define SD_CLK_DIR_OUT() {GPIOEPU &= ~BIT(3); GPIOEDIR &= ~BIT(3);} #define SD_MUX_DETECT_INIT() {GPIOEDE |= BIT(3); GPIOEPU |= BIT(3); GPIOEDIR |= BIT(3);} #define SD_MUX_IS_ONLINE() ((GPIOE & BIT(3)) == 0) #define SD_MUX_IS_BUSY() ((GPIOEDIR & BIT(3)) == 0) #define SD_MUX_CMD_IS_BUSY() (GPIOEPU300 & BIT(2)) #define SD_CMD_MUX_PU300R() {GPIOEPU300 |= BIT(2); GPIOEPU &= ~BIT(2);} #define SD_CMD_MUX_PU10K() {GPIOEPU |= BIT(2); GPIOEPU300 &= ~BIT(2);} #define SD_DAT_MUX_PU300R() {GPIOEPU300 |= BIT(1); GPIOEPU &= ~BIT(1);} #define SD_DAT_MUX_PU10K() {GPIOEPU |= BIT(1); GPIOEPU300 &= ~BIT(1);} #define SD_CMD_MUX_IS_ONLINE() ((GPIOE & BIT(2)) == 0) #define SD_CLK_OUT_H() {GPIOESET = BIT(3);} #define SD_CLK_OUT_L() {GPIOECLR = BIT(3);} #define SD_CLK_STA() (GPIOE & BIT(3)) #define SD_DAT_DIR_OUT() {GPIOEDE |= BIT(1); GPIOEDIR &= ~BIT(1);} #define SD_DAT_DIR_IN() {GPIOEDIR |= BIT(1); GPIOEPU |= BIT(1);} #define SD_DAT_OUT_H() {GPIOESET = BIT(1);} #define SD_DAT_OUT_L() {GPIOECLR = BIT(1);} #define SD_DAT_STA() (GPIOE & BIT(1)) #define SD_CMD_DIR_OUT() {GPIOADE |= BIT(2); GPIOEDIR &= ~BIT(2);} #define SD_CMD_DIR_IN() {GPIOEDIR |= BIT(2); GPIOEPU |= BIT(2);} #define SD_CMD_OUT_H() {GPIOESET = BIT(2);} #define SD_CMD_OUT_L() {GPIOECLR = BIT(2);} #define SD_CMD_STA() (GPIOE & BIT(2)) #define SD_DAT_DIS_UP() #define SD_DAT_RES_UP() #define SDCLK_IO IO_PE3 #define SDCMD_IO IO_PE2 #define SDDAT_IO IO_PE1 #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 //SD1 #if (SD1_MAPPING == SD0MAP_G1) //SDCMD(PA5), SDCLK(PA6), SDDAT0(PA7), SDDAT1(PA4), SDDAT2(PA3), SDDAT3(PA2) #define SD1_MUX_IO_INIT() {GPIOADE |= BIT(5)|BIT(6)|BIT(7);\ GPIOACLR = BIT(6);\ GPIOADIR &= ~BIT(6);\ GPIOAPU &= ~BIT(6);\ GPIOADIR |= BIT(5) | BIT(7);\ GPIOAPU |= BIT(5) | BIT(7);\ GPIOAFEN |= BIT(5) | BIT(7);\ FUNCMCON0 = SD0MAP_G1;} #define SD1_IO_INIT() {GPIOADE |= BIT(5)|BIT(6)|BIT(7);\ GPIOADIR &= ~BIT(6);\ GPIOADIR |= BIT(5) | BIT(7);\ GPIOAPU |= BIT(5) | BIT(7);\ GPIOAFEN |= BIT(5) | BIT(7);\ FUNCMCON0 = SD0MAP_G1;} #define SD1_CLK_DIR_IN() {GPIOADIR |= BIT(6); GPIOAPU |= BIT(6);} #define SD1_CLK_IN_DIS_PU10K() {GPIOADIR |= BIT(6); GPIOAPU &= ~BIT(6);} #define SD1_CLK_DIR_OUT() {GPIOAPU &= ~BIT(6); GPIOADIR &= ~BIT(6);} #define SD1_MUX_DETECT_INIT() {GPIOADE |= BIT(6); GPIOAPU |= BIT(6); GPIOADIR |= BIT(6);} #define SD1_MUX_IS_ONLINE() ((GPIOA & BIT(6)) == 0) #define SD1_MUX_IS_BUSY() ((GPIOADIR & BIT(6)) == 0) #define SD1_CMD_MUX_PU300R() {GPIOAPU300 |= BIT(5); GPIOAPU &= ~BIT(5);} #define SD1_CMD_MUX_PU10K() {GPIOAPU |= BIT(5); GPIOAPU300 &= ~BIT(5);} #define SD1_DAT_MUX_PU300R() {GPIOAPU300 |= BIT(7); GPIOAPU &= ~BIT(7);} #define SD1_DAT_MUX_PU10K() {GPIOAPU |= BIT(7); GPIOAPU300 &= ~BIT(7);} #define SD1_CMD_MUX_IS_ONLINE() ((GPIOA & BIT(5)) == 0) #define SD1_CLK_OUT_H() {GPIOASET = BIT(6);} #define SD1_CLK_OUT_L() {GPIOACLR = BIT(6);} #define SD1_CLK_STA() (GPIOA & BIT(6)) #define SD1_DAT_DIR_OUT() {GPIOADE |= BIT(7); GPIOADIR &= ~BIT(7);} #define SD1_DAT_DIR_IN() {GPIOADIR |= BIT(7); GPIOAPU |= BIT(7);} #define SD1_DAT_OUT_H() {GPIOASET = BIT(7);} #define SD1_DAT_OUT_L() {GPIOACLR = BIT(7);} #define SD1_DAT_STA() (GPIOA & BIT(7)) #define SD1_CMD_DIR_OUT() {GPIOADE |= BIT(5); GPIOADIR &= ~BIT(5);} #define SD1_CMD_DIR_IN() {GPIOADIR |= BIT(5); GPIOAPU |= BIT(5);} #define SD1_CMD_OUT_H() {GPIOASET = BIT(5);} #define SD1_CMD_OUT_L() {GPIOACLR = BIT(5);} #define SD1_CMD_STA() (GPIOA & BIT(5)) #define SD1CLK_IO IO_PA6 #define SD1CMD_IO IO_PA5 #define SD1DAT_IO IO_PA7 #elif (SD1_MAPPING == SD0MAP_G2) //SDCMD(PB0), SDCLK(PB1), SDDAT0(PB2) #define SD1_MUX_IO_INIT() {GPIOBDE |= BIT(0)|BIT(1)|BIT(2);\ GPIOBCLR = BIT(1);\ GPIOBDIR &= ~BIT(1);\ GPIOBPU &= ~BIT(1);\ GPIOBDIR |= BIT(2) | BIT(0);\ GPIOBPU |= BIT(2) | BIT(0);\ GPIOBSET |= BIT(2) | BIT(1) | BIT(0);\ GPIOBFEN |= BIT(2) | BIT(1) | BIT(0);\ FUNCMCON0 = SD0MAP_G2;} #define SD1_IO_INIT() {GPIOBDE |= BIT(0)|BIT(1)|BIT(2);\ GPIOBDIR &= ~BIT(1);\ GPIOBDIR |= BIT(2) | BIT(0);\ GPIOBPU |= BIT(2) | BIT(0);\ GPIOBFEN |= BIT(2) | BIT(1) | BIT(0);\ FUNCMCON0 = SD0MAP_G2;} #define SD1_CLK_DIR_IN() {GPIOBDIR |= BIT(1); GPIOBPU |= BIT(1);} #define SD1_CLK_IN_DIS_PU10K() {GPIOBDIR |= BIT(1); GPIOBPU &= ~BIT(1);} #define SD1_CLK_DIR_OUT() {GPIOBPU &= ~BIT(1); GPIOBDIR &= ~BIT(1);} #define SD1_MUX_DETECT_INIT() {GPIOBDE |= BIT(1); GPIOBPU |= BIT(1); GPIOBDIR |= BIT(1);} #define SD1_MUX_IS_ONLINE() ((GPIOB & BIT(1)) == 0) #define SD1_MUX_IS_BUSY() ((GPIOBDIR & BIT(1)) == 0) #define SD1_CMD_MUX_PU300R() {GPIOBPU300 |= BIT(0); GPIOBPU &= ~BIT(0);} #define SD1_CMD_MUX_PU10K() {GPIOBPU |= BIT(0); GPIOBPU300 &= ~BIT(0);} #define SD1_DAT_MUX_PU300R() {GPIOBPU300 |= BIT(2); GPIOBPU &= ~BIT(2);} #define SD1_DAT_MUX_PU10K() {GPIOBPU |= BIT(2); GPIOBPU300 &= ~BIT(2);} #define SD1_CMD_MUX_IS_ONLINE() ((GPIOB & BIT(0)) == 0) #define SD1_CLK_OUT_H() {GPIOBSET = BIT(1);} #define SD1_CLK_OUT_L() {GPIOBCLR = BIT(1);} #define SD1_CLK_STA() (GPIOB & BIT(1)) #define SD1_DAT_DIR_OUT() {GPIOBDE |= BIT(2); GPIOBDIR &= ~BIT(2);} #define SD1_DAT_DIR_IN() {GPIOBDIR |= BIT(2); GPIOBPU |= BIT(2);} #define SD1_DAT_OUT_H() {GPIOBSET = BIT(2);} #define SD1_DAT_OUT_L() {GPIOBCLR = BIT(2);} #define SD1_DAT_STA() (GPIOB & BIT(2)) #define SD1_CMD_DIR_OUT() {GPIOBDE |= BIT(0); GPIOBDIR &= ~BIT(0);} #define SD1_CMD_DIR_IN() {GPIOBDIR |= BIT(0); GPIOBPU |= BIT(0);} #define SD1_CMD_OUT_H() {GPIOBSET = BIT(0);} #define SD1_CMD_OUT_L() {GPIOBCLR = BIT(0);} #define SD1_CMD_STA() (GPIOB & BIT(0)) #define SD1CLK_IO IO_PB1 #define SD1CMD_IO IO_PB0 #define SD1DAT_IO IO_PB2 #elif (SD1_MAPPING == SD0MAP_G3) //SDCMD(PE5), SDCLK(PE6), SDDAT0(PE7), SDDAT1(PE4), SDDAT2(PE3), SDDAT3(PE2) #define SD1_MUX_IO_INIT() {GPIOEDE |= BIT(5)|BIT(6)|BIT(7);\ GPIOECLR = BIT(6);\ GPIOEDIR &= ~BIT(6);\ GPIOEPU &= ~BIT(6);\ GPIOEDIR |= BIT(5) | BIT(7);\ GPIOEPU |= BIT(5) | BIT(7);\ GPIOEFEN |= BIT(5) | BIT(7);\ FUNCMCON0 = SD0MAP_G3;} #define SD1_IO_INIT() {GPIOEDE |= BIT(5)|BIT(6)|BIT(7);\ GPIOEDIR &= ~BIT(6);\ GPIOEDIR |= BIT(5) | BIT(7);\ GPIOEPU |= BIT(5) | BIT(7);\ GPIOEFEN |= BIT(5) | BIT(7);\ FUNCMCON0 = SD0MAP_G3;} #define SD1_CLK_DIR_IN() {GPIOEDIR |= BIT(6); GPIOEPU |= BIT(6);} #define SD1_CLK_IN_DIS_PU10K() {GPIOEDIR |= BIT(6); GPIOEPU &= ~BIT(6);} #define SD1_CLK_DIR_OUT() {GPIOEPU &= ~BIT(6); GPIOEDIR &= ~BIT(6);} #define SD1_MUX_DETECT_INIT() {GPIOEDE |= BIT(6); GPIOEPU |= BIT(6); GPIOEDIR |= BIT(6);} #define SD1_MUX_IS_ONLINE() ((GPIOE & BIT(6)) == 0) #define SD1_MUX_IS_BUSY() ((GPIOEDIR & BIT(6)) == 0) #define SD1_CMD_MUX_PU300R() {GPIOEPU300 |= BIT(5); GPIOEPU &= ~BIT(5);} #define SD1_CMD_MUX_PU10K() {GPIOEPU |= BIT(5); GPIOEPU300 &= ~BIT(5);} #define SD1_DAT_MUX_PU300R() {GPIOEPU300 |= BIT(7); GPIOEPU &= ~BIT(7);} #define SD1_DAT_MUX_PU10K() {GPIOEPU |= BIT(7); GPIOEPU300 &= ~BIT(7);} #define SD1_CMD_MUX_IS_ONLINE() ((GPIOE & BIT(5)) == 0) #define SD1_CLK_OUT_H() {GPIOESET = BIT(6);} #define SD1_CLK_OUT_L() {GPIOECLR = BIT(6);} #define SD1_CLK_STA() (GPIOE & BIT(6)) #define SD1_DAT_DIR_OUT() {GPIOEDE |= BIT(7); GPIOEDIR &= ~BIT(7);} #define SD1_DAT_DIR_IN() {GPIOEDIR |= BIT(7); GPIOEPU |= BIT(7);} #define SD1_DAT_OUT_H() {GPIOESET = BIT(7);} #define SD1_DAT_OUT_L() {GPIOECLR = BIT(7);} #define SD1_DAT_STA() (GPIOE & BIT(7)) #define SD1_CMD_DIR_OUT() {GPIOADE |= BIT(5); GPIOEDIR &= ~BIT(5);} #define SD1_CMD_DIR_IN() {GPIOEDIR |= BIT(5); GPIOEPU |= BIT(5);} #define SD1_CMD_OUT_H() {GPIOESET = BIT(5);} #define SD1_CMD_OUT_L() {GPIOECLR = BIT(5);} #define SD1_CMD_STA() (GPIOE & BIT(5)) #define SD1CLK_IO IO_PE6 #define SD1CMD_IO IO_PE5 #define SD1DAT_IO IO_PE7 #elif (SD1_MAPPING == SD0MAP_G4) //SDCMD(PA5), SDCLK(PA6), SDDAT0(PB4) #define SD1_MUX_IO_INIT() {GPIOADE |= BIT(5)|BIT(6);\ GPIOACLR = BIT(6);\ GPIOADIR &= ~BIT(6);\ GPIOAPU &= ~BIT(6);\ GPIOADIR |= BIT(5);\ GPIOAPU |= BIT(5);\ GPIOAFEN |= BIT(5);\ GPIOBDE |= BIT(4);\ GPIOBDIR |= BIT(4);\ GPIOBPU |= BIT(4);\ GPIOBFEN |= BIT(4);\ FUNCMCON0 = SD0MAP_G4;} #define SD1_IO_INIT() {GPIOADE |= BIT(5)|BIT(6);\ GPIOADIR &= ~BIT(6);\ GPIOADIR |= BIT(5);\ GPIOAPU |= BIT(5);\ GPIOAFEN |= BIT(5);\ GPIOBDE |= BIT(4);\ GPIOBDIR |= BIT(4);\ GPIOBPU |= BIT(4);\ GPIOBFEN |= BIT(4);\ FUNCMCON0 = SD0MAP_G4;} #define SD1_CLK_DIR_IN() {GPIOADIR |= BIT(6); GPIOAPU |= BIT(6);} #define SD1_CLK_IN_DIS_PU10K() {GPIOADIR |= BIT(6); GPIOAPU &= ~BIT(6);} #define SD1_CLK_DIR_OUT() {GPIOAPU &= ~BIT(6); GPIOADIR &= ~BIT(6);} #define SD1_MUX_DETECT_INIT() {GPIOADE |= BIT(6); GPIOAPU |= BIT(6); GPIOADIR |= BIT(6);} #define SD1_MUX_IS_ONLINE() ((GPIOA & BIT(6)) == 0) #define SD1_MUX_IS_BUSY() ((GPIOADIR & BIT(6)) == 0) #define SD1_CMD_MUX_PU300R() {GPIOAPU300 |= BIT(5); GPIOAPU &= ~BIT(5);} #define SD1_CMD_MUX_PU10K() {GPIOAPU |= BIT(5); GPIOAPU300 &= ~BIT(5);} #define SD1_DAT_MUX_PU300R() {GPIOBPU300 |= BIT(4); GPIOBPU &= ~BIT(4);} #define SD1_DAT_MUX_PU10K() {GPIOBPU |= BIT(4); GPIOBPU300 &= ~BIT(4);} #define SD1_CMD_MUX_IS_ONLINE() ((GPIOA & BIT(5)) == 0) #define SD1_CLK_OUT_H() {GPIOASET = BIT(6);} #define SD1_CLK_OUT_L() {GPIOACLR = BIT(6);} #define SD1_CLK_STA() (GPIOA & BIT(6)) #define SD1_DAT_DIR_OUT() {GPIOBDE |= BIT(4); GPIOBDIR &= ~BIT(4);} #define SD1_DAT_DIR_IN() {GPIOBDIR |= BIT(4); GPIOBPU |= BIT(4);} #define SD1_DAT_OUT_H() {GPIOBSET = BIT(4);} #define SD1_DAT_OUT_L() {GPIOBCLR = BIT(4);} #define SD1_DAT_STA() (GPIOB & BIT(4)) #define SD1_CMD_DIR_OUT() {GPIOADE |= BIT(5); GPIOADIR &= ~BIT(5);} #define SD1_CMD_DIR_IN() {GPIOADIR |= BIT(5); GPIOAPU |= BIT(5);} #define SD1_CMD_OUT_H() {GPIOASET = BIT(5);} #define SD1_CMD_OUT_L() {GPIOACLR = BIT(5);} #define SD1_CMD_STA() (GPIOA & BIT(5)) #define SD1CLK_IO IO_PA6 #define SD1CMD_IO IO_PA5 #define SD1DAT_IO IO_PB4 #elif (SD1_MAPPING == SD0MAP_G5) //SDCMD(PA5), SDCLK(PA6), SDDAT0(PB3) #define SD1_MUX_IO_INIT() {GPIOADE |= BIT(5)|BIT(6);\ GPIOACLR = BIT(6);\ GPIOADIR &= ~BIT(6);\ GPIOAPU &= ~BIT(6);\ GPIOADIR |= BIT(5);\ GPIOAPU |= BIT(5);\ GPIOAFEN |= BIT(5);\ GPIOBDE |= BIT(3);\ GPIOBDIR |= BIT(3);\ GPIOBPU |= BIT(3);\ GPIOBFEN |= BIT(3);\ FUNCMCON0 = SD0MAP_G5;} #define SD1_IO_INIT() {GPIOADIR &= ~BIT(6);\ GPIOADIR |= BIT(5);\ GPIOAPU |= BIT(5);\ GPIOAFEN |= BIT(5);\ GPIOBDE |= BIT(3);\ GPIOBDIR |= BIT(3);\ GPIOBPU |= BIT(3);\ GPIOBFEN |= BIT(3);\ FUNCMCON0 = SD0MAP_G5;} #define SD1_CLK_DIR_IN() {GPIOADIR |= BIT(6); GPIOAPU |= BIT(6);} #define SD1_CLK_IN_DIS_PU10K() {GPIOADIR |= BIT(6); GPIOAPU &= ~BIT(6);} #define SD1_CLK_DIR_OUT() {GPIOAPU &= ~BIT(6); GPIOADIR &= ~BIT(6);} #define SD1_MUX_DETECT_INIT() {GPIOADE |= BIT(6); GPIOAPU |= BIT(6); GPIOADIR |= BIT(6);} #define SD1_MUX_IS_ONLINE() ((GPIOA & BIT(6)) == 0) #define SD1_MUX_IS_BUSY() ((GPIOADIR & BIT(6)) == 0) #define SD1_CMD_MUX_PU300R() {GPIOAPU300 |= BIT(5); GPIOAPU &= ~BIT(5);} #define SD1_CMD_MUX_PU10K() {GPIOAPU |= BIT(5); GPIOAPU300 &= ~BIT(5);} #define SD1_DAT_MUX_PU300R() {GPIOBPU300 |= BIT(3); GPIOBPU &= ~BIT(3);} #define SD1_DAT_MUX_PU10K() {GPIOBPU |= BIT(3); GPIOBPU300 &= ~BIT(3);} #define SD1_CMD_MUX_IS_ONLINE() ((GPIOA & BIT(5)) == 0) #define SD1_CLK_OUT_H() {GPIOASET = BIT(6);} #define SD1_CLK_OUT_L() {GPIOACLR = BIT(6);} #define SD1_CLK_STA() (GPIOA & BIT(6)) #define SD1_DAT_DIR_OUT() {GPIOBDE |= BIT(3); GPIOBDIR &= ~BIT(3);} #define SD1_DAT_DIR_IN() {GPIOBDIR |= BIT(3); GPIOBPU |= BIT(3);} #define SD1_DAT_OUT_H() {GPIOBSET = BIT(3);} #define SD1_DAT_OUT_L() {GPIOBCLR = BIT(3);} #define SD1_DAT_STA() (GPIOB & BIT(3)) #define SD1_CMD_DIR_OUT() {GPIOADE |= BIT(5); GPIOADIR &= ~BIT(5);} #define SD1_CMD_DIR_IN() {GPIOADIR |= BIT(5); GPIOAPU |= BIT(5);} #define SD1_CMD_OUT_H() {GPIOASET = BIT(5);} #define SD1_CMD_OUT_L() {GPIOACLR = BIT(5);} #define SD1_CMD_STA() (GPIOA & BIT(5)) #define SD1CLK_IO IO_PA6 #define SD1CMD_IO IO_PA5 #define SD1DAT_IO IO_PB3 #elif (SD1_MAPPING == SD0MAP_G6) //SDCMD(PB3), SDCLK(PA6), SDDAT0(PB4) #define SD1_MUX_IO_INIT() {GPIOADE |= BIT(6);\ GPIOACLR = BIT(6);\ GPIOADIR &= ~BIT(6);\ GPIOAPU &= ~BIT(6);\ GPIOBDE |= BIT(3)|BIT(4);\ GPIOBDIR |= BIT(3) | BIT(4);\ GPIOBPU |= BIT(3) | BIT(4);\ GPIOBFEN |= BIT(3) | BIT(4);\ FUNCMCON0 = SD0MAP_G6;} #define SD1_IO_INIT() {GPIOADE |= BIT(6);\ GPIOADIR &= ~BIT(6);\ GPIOBDE |= BIT(3)|BIT(4);\ GPIOBDIR |= BIT(3) | BIT(4);\ GPIOBPU |= BIT(3) | BIT(4);\ GPIOBFEN |= BIT(3) | BIT(4);\ FUNCMCON0 = SD0MAP_G6;} #define SD1_CLK_DIR_IN() {GPIOADIR |= BIT(6); GPIOAPU |= BIT(6);} #define SD1_CLK_IN_DIS_PU10K() {GPIOADIR |= BIT(6); GPIOAPU &= ~BIT(6);} #define SD1_CLK_DIR_OUT() {GPIOAPU &= ~BIT(6); GPIOADIR &= ~BIT(6);} #define SD1_MUX_DETECT_INIT() {GPIOADE |= BIT(6); GPIOAPU |= BIT(6); GPIOADIR |= BIT(6);} #define SD1_MUX_IS_ONLINE() ((GPIOA & BIT(6)) == 0) #define SD1_MUX_IS_BUSY() ((GPIOADIR & BIT(6)) == 0) #define SD1_CMD_MUX_PU300R() {GPIOBPU300 |= BIT(3); GPIOBPU &= ~BIT(3);} #define SD1_CMD_MUX_PU10K() {GPIOBPU |= BIT(3); GPIOBPU300 &= ~BIT(3);} #define SD1_DAT_MUX_PU300R() {GPIOBPU300 |= BIT(4); GPIOBPU &= ~BIT(4);} #define SD1_DAT_MUX_PU10K() {GPIOBPU |= BIT(4); GPIOBPU300 &= ~BIT(4);} #define SD1_CMD_MUX_IS_ONLINE() ((GPIOB & BIT(3)) == 0) #define SD1_CLK_OUT_H() {GPIOASET = BIT(6);} #define SD1_CLK_OUT_L() {GPIOACLR = BIT(6);} #define SD1_CLK_STA() (GPIOA & BIT(6)) #define SD1_DAT_DIR_OUT() {GPIOBDE |= BIT(4); GPIOBDIR &= ~BIT(4);} #define SD1_DAT_DIR_IN() {GPIOBDIR |= BIT(4); GPIOBPU |= BIT(4);} #define SD1_DAT_OUT_H() {GPIOBSET = BIT(4);} #define SD1_DAT_OUT_L() {GPIOBCLR = BIT(4);} #define SD1_DAT_STA() (GPIOB & BIT(4)) #define SD1_CMD_DIR_OUT() {GPIOBDE |= BIT(3); GPIOBDIR &= ~BIT(3);} #define SD1_CMD_DIR_IN() {GPIOBDIR |= BIT(3); GPIOBPU |= BIT(3);} #define SD1_CMD_OUT_H() {GPIOBSET = BIT(3);} #define SD1_CMD_OUT_L() {GPIOBCLR = BIT(3);} #define SD1_CMD_STA() (GPIOB & BIT(3)) #define SD1CLK_IO IO_PA6 #define SD1CMD_IO IO_PB3 #define SD1DAT_IO IO_PB4 #else #define SD1_MUX_IO_INIT() #define SD1_IO_INIT() #define SD1_CLK_DIR_IN() #define SD1_CLK_IN_DIS_PU10K() #define SD1_CLK_DIR_OUT() #define SD1_MUX_DETECT_INIT() #define SD1_MUX_IS_ONLINE() 0 #define SD1_MUX_IS_BUSY() 0 #define SD1_CMD_MUX_PU300R() #define SD1_CMD_MUX_PU10K() #define SD1_CMD_MUX_IS_ONLINE() 0 #define SD1_CLK_OUT_H() #define SD1_CLK_OUT_L() #define SD1_CLK_STA() 0 #define SD1_DAT_DIR_OUT() #define SD1_DAT_DIR_IN() #define SD1_DAT_OUT_H() #define SD1_DAT_OUT_L() #define SD1_DAT_STA() 0 #define SD1_CMD_DIR_OUT() #define SD1_CMD_DIR_IN() #define SD1_CMD_OUT_H() #define SD1_CMD_OUT_L() #define SD1_CMD_STA() 0 #define SD1CLK_IO IO_NONE #define SD1CMD_IO IO_NONE #define SD1DAT_IO IO_NONE #endif #endif //__IO_DEF_H