int board_gpio_init(void)
{
char buffer[BUF_SIZE] = {0};
U16 pwm_ch = 0;
U16 val = -1;
U32 period = 0;
U32 addr = 0;
U32 duty = 0;
U32 u32ModeRIU = 0;
U32 u32ModeMask = 0;
U32 u32RegAddr = 0;
U16 u16RegVal = 0;
#if defined(WIFI_RESET_GPIO_NUM)
/********wifi gpio reset init**********/
memset(buffer, 0, BUF_SIZE);
#ifdef WIFI_RESET_ACTIVE_LEVEL
printf("wifi gpio reset init. gpio %d level %d\n", WIFI_RESET_GPIO_NUM, WIFI_RESET_ACTIVE_LEVEL);
if(WIFI_RESET_ACTIVE_LEVEL == 1)
{
snprintf(buffer, BUF_SIZE, "gpio clear %d", WIFI_RESET_GPIO_NUM);
run_command(buffer, 0);
udelay(100000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", WIFI_RESET_GPIO_NUM);
}
else
{
snprintf(buffer, BUF_SIZE, "gpio set %d", WIFI_RESET_GPIO_NUM);
run_command(buffer, 0);
udelay(100000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d", WIFI_RESET_GPIO_NUM);
}
#else
printf("wifi gpio reset init. gpio %d level default high\n", WIFI_RESET_GPIO_NUM);
snprintf(buffer, BUF_SIZE, "gpio clear %d", WIFI_RESET_GPIO_NUM);
run_command(buffer, 0);
udelay(100000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", WIFI_RESET_GPIO_NUM);
#endif
run_command(buffer, 0);
#endif
/********** IR-CUT GPIO INIT **********/
#ifdef CONFIG_MS_GPIO
#if defined(IR_CUT_GPIO_NUM)
printf("ir-cut gpio init\n");
#ifdef DN_STATUS_GPIO_VALUE_INVERSED
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_GPIO_NUM);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d ", IR_CUT_GPIO_NUM);
run_command(buffer, 0);
udelay(150000);
#else
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_GPIO_NUM);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_GPIO_NUM);
run_command(buffer, 0);
udelay(150000);
#endif
#endif
#if defined(IR_CUT_DOUBLE_GPIO1) && defined(IR_CUT_DOUBLE_GPIO2)
printf("ir-cut double gpio init\n");
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO1);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_DOUBLE_GPIO1);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO1);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO2);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_DOUBLE_GPIO2);
run_command(buffer, 0);
udelay(150000);
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO2);
run_command(buffer, 0);
udelay(150000);
#endif
#else
#if defined(IR_CUT_GPIO_NUM) && (IR_CUT_GPIO_NUM==78)
printf("ir-cut gpio init\n");
// set pinmux
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE);
u32ModeMask = REG_TEST_IN_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE);
u32ModeMask = REG_TEST_OUT_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
_GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH0_AISEL);
_GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH1_AISEL);
#ifdef DN_STATUS_GPIO_VALUE_INVERSED
// output gpio78 1
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) |= GPIO78_MOUT;
udelay(150000);
// output gpio78 0
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT);
udelay(150000);
#else
// output gpio78 0
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT);
udelay(150000);
// output gpio78 1
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) |= GPIO78_MOUT;
udelay(150000);
#endif
#endif
#if defined(IR_CUT_GPIO_NUM) && (IR_CUT_GPIO_NUM==53)
printf("ir-cut gpio init\n");
#ifdef DN_STATUS_GPIO_VALUE_INVERSED
// output gpio53 1
MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN);
MHal_RIU_REG(GPIO53_ROUT) |= GPIO53_MOUT;
udelay(150000);
// output gpio53 0
MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN);
MHal_RIU_REG(GPIO53_ROUT) &= (~GPIO53_MOUT);
udelay(150000);
#else
// output gpio53 0
MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN);
MHal_RIU_REG(GPIO53_ROUT) &= (~GPIO53_MOUT);
udelay(150000);
// output gpio53 1
MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN);
MHal_RIU_REG(GPIO53_ROUT) |= GPIO53_MOUT;
udelay(150000);
#endif
#endif
#if (defined(IR_CUT_DOUBLE_GPIO1) && defined(IR_CUT_DOUBLE_GPIO2)) || (defined(IR_CUT_GROUP2_DOUBLE_GPIO1) && defined(IR_CUT_GROUP2_DOUBLE_GPIO2))
#if ((IR_CUT_DOUBLE_GPIO1==78) && (IR_CUT_DOUBLE_GPIO2==79)) || ((IR_CUT_GROUP2_DOUBLE_GPIO1==78) && (IR_CUT_GROUP2_DOUBLE_GPIO2==79))
printf("ir-cut double gpio init\n");
// set pinmux
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE);
u32ModeMask = REG_TEST_IN_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE);
u32ModeMask = REG_TEST_OUT_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
_GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH0_AISEL);
_GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH1_AISEL);
// output gpio78 0
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT);
udelay(150000);
// output gpio78 1
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) |= GPIO78_MOUT;
udelay(150000);
// output gpio78 0
MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN);
MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT);
udelay(150000);
// output gpio79 0
MHal_RIU_REG(GPIO79_ROEN) &= (~GPIO79_MOEN);
MHal_RIU_REG(GPIO79_ROUT) &= (~GPIO79_MOUT);
udelay(150000);
// output gpio79 1
MHal_RIU_REG(GPIO79_ROEN) &= (~GPIO79_MOEN);
MHal_RIU_REG(GPIO79_ROUT) |= GPIO79_MOUT;
udelay(150000);
// output gpio79 0
MHal_RIU_REG(GPIO79_ROEN) &= (~GPIO79_MOEN);
MHal_RIU_REG(GPIO79_ROUT) &= (~GPIO79_MOUT);
udelay(150000);
#endif
#if ((IR_CUT_DOUBLE_GPIO1==80) && (IR_CUT_DOUBLE_GPIO2==81)) || ((IR_CUT_GROUP2_DOUBLE_GPIO1==80) && (IR_CUT_GROUP2_DOUBLE_GPIO2==81))
printf("ir-cut double gpio init 33333333333\n");
// set pinmux
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE);
u32ModeMask = REG_TEST_IN_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE);
u32ModeMask = REG_TEST_OUT_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
_GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH0_AISEL);
_GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH1_AISEL);
// output gpio80 0
MHal_RIU_REG(GPIO80_ROEN) &= (~GPIO80_MOEN);
MHal_RIU_REG(GPIO80_ROUT) &= (~GPIO80_MOUT);
udelay(150000);
// output gpio80 1
MHal_RIU_REG(GPIO80_ROEN) &= (~GPIO80_MOEN);
MHal_RIU_REG(GPIO80_ROUT) |= GPIO80_MOUT;
udelay(150000);
// output gpio80 0
MHal_RIU_REG(GPIO80_ROEN) &= (~GPIO80_MOEN);
MHal_RIU_REG(GPIO80_ROUT) &= (~GPIO80_MOUT);
udelay(150000);
// output gpio81 0
MHal_RIU_REG(GPIO81_ROEN) &= (~GPIO81_MOEN);
MHal_RIU_REG(GPIO81_ROUT) &= (~GPIO81_MOUT);
udelay(150000);
// output gpio81 1
MHal_RIU_REG(GPIO81_ROEN) &= (~GPIO81_MOEN);
MHal_RIU_REG(GPIO81_ROUT) |= GPIO81_MOUT;
udelay(150000);
// output gpio81 0
MHal_RIU_REG(GPIO81_ROEN) &= (~GPIO81_MOEN);
MHal_RIU_REG(GPIO81_ROUT) &= (~GPIO81_MOUT);
udelay(150000);
#endif
#endif
#endif
#ifdef CONFIG_RESET_MCU_GPIO_NUM
reset_mcu();
#endif
/********** IR-WTL SHARE PWM INIT **********/
#if defined(IR_WTL_LED_SHARE_SAME_PWM) && (IR_WTL_LED_PWM_PORT_NUM==52)
printf("ir-wtl share pwm, set ir gpio init\n");
#if defined(WHITE_LAMP_GPIO_NUM) && (WHITE_LAMP_GPIO_NUM==15)
// output gpio15 0
MHal_RIU_REG(GPIO15_ROEN) &= (~GPIO15_MOEN);
MHal_RIU_REG(GPIO15_ROUT) &= (~GPIO15_MOUT);
udelay(150000);
#endif
#if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==14)
// output gpio14 1
MHal_RIU_REG(GPIO14_ROEN) &= (~GPIO14_MOEN);
MHal_RIU_REG(GPIO14_ROUT) |= GPIO14_MOUT;
udelay(150000);
#endif
printf("ir-wtl led pwm init\n");
// use pwm0
pwm_ch = 0;
// PAD_PWM0 52
// clear TEST_IN
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2), val);
// clear TEST_OUT
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2));
val &= ~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2), val);
// clear I2C0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x09<<2));
val &= ~(0x07);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x09<<2), val);
// clear I2C1 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x09<<2));
val &= ~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x009<<2), val);
// write pwm0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2));
val &= ~(0x07);
val |= 0x01;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2), val);
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2));
val &= ~(0x03);
val |= 0x0;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2), val);
// set pwm period:50Khz
period = 12000000 / 50000;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period);
// set pwm duty:50%
addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2);
duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 50 / 100;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty);
// enable pwm
CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch);
#else
/********** IR-LED PWM INIT **********/
#if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==76)
memset(buffer, 0, BUF_SIZE);
snprintf(buffer, BUF_SIZE, "gpio set %d", IR_LED_GPIO_NUM);
run_command(buffer, 0);
#endif
#if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==14)
#if defined(WHITE_LAMP_GPIO_NUM) && (WHITE_LAMP_GPIO_NUM==15)
printf("white led gpio init\n");
#if defined(WHITE_LAMP_ACTIVE_LOW) && (WHITE_LAMP_ACTIVE_LOW==1)
// set output gpio15 to turn off the white lamp
MHal_RIU_REG(GPIO15_ROEN) &= (~GPIO15_MOEN);
MHal_RIU_REG(GPIO15_ROUT) |= GPIO15_MOUT;
udelay(150000);
#endif
#endif
printf("ir-led pwm init\n");
// use pwm0
pwm_ch = 0;
// clear ej_mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2), val);
// clear spi0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2), val);
// clear fuart mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val);
// clear uart0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2));
val &= ~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val);
// write pwm0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2));
val &= ~(0x03);
val |= 0x03;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2), val);
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2));
val &= ~(0x03);
val |= 0x03;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2), val);
// set pwm period:50Khz
period = 12000000 / 50000;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period);
// set pwm duty:50%
addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2);
duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 50 / 100;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty);
// enable pwm
CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch);
#endif
#if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==53)
// PAD_PWM1 53
printf("ir-led pwm init\n");
// use pwm0
pwm_ch = 1;
//clear TEST_IN
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2));
val &=~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val);
//cclear TEST_OUT
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2));
val &=~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val);
//clear I2C0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x09<<2));
val &=~(0x07);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x09<<2), val);
//clear I2C1 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x09<<2));
val &=~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x009<<2), val);
//write pwm1 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2));
val &=~(0x38);
val |= 0x8;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2), val);
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2));
val &=~(0x0c);
val |= 0x0;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2), val);
// set pwm period:50Khz
period = 12000000 / 50000;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period);
// set pwm duty:50%
addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2);
duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 50 / 100;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty);
// enable pwm
CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch);
#endif
#if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==16)
printf("ir-led pwm init\n");
// use pwm2
pwm_ch = 2;
// PAD_FUART_CTS
//clear EJ_MODE
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xF<<2));
val &=~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xF<<2), val);
//clear TEST_IN
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2));
val &=~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val);
//clear TEST_OUT
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2));
val &=~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val);
//clear SPI0_MODE
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2));
val &=~(0x7);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2), val);
//clear FUART_MODE
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x3<<2));
val &=~(0x7);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2), val);
//clear FUART1_MODE
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x3<<2));
val &=~(0x700);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2), val);
//write pwm2 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2));
val &=~(0x1C0);
val |= 0x80;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2), val);
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2));
val &=~(0xc0);
val |= 0x0;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2), val);
//set pwm period/duty
period = 12000000/5000;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3));
printf("reg=0x%08X ,period=0x%x\n", CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x04<<2), period);
addr = CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x04<<2);
duty = (INREG16(addr) + \
((INREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x05<<2))<<16)))*50/100;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3));
printf("reg=0x%08X ,duty=0x%x\n", CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x02<<2), duty);
CLRREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (0x7f<<2), 1<<pwm_ch);
#endif
#endif
/********** IR-WL PWM INIT **********/
#if defined(WHITE_LAMP_ONLY)
#if (WHITE_LAMP_GPIO_NUM==14)
printf("ir-wl pwm init use pwm0\n");
// use pwm0
pwm_ch = 0;
// clear ej_mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2), val);
// clear spi0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2), val);
// clear fuart mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2));
val &= ~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val);
// clear uart0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2));
val &= ~(0x30);
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val);
// write pwm0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2));
val &= ~(0x03);
val |= 0x03;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2), val);
val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2));
val &= ~(0x03);
val |= 0x03;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2), val);
// set pwm period:50Khz
period = 12000000 / 50000;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period);
// set pwm duty:10%
addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2);
duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 10 / 100;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty);
// enable pwm
CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch);
#else
printf("ir-wl pwm init use pwm1\n");
// use pwm0
pwm_ch = 1;
//clear ej_mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0f<<2));
val &=~(0x03);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0f<<2), val);
//clear test0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2));
val &=~(0x33);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val);
//clear spi0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0c<<2));
val &=~(0x07);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0c<<2), val);
//clear fuart mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2));
val &=~(0x07);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2), val);
//clear uart0 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2));
val &=~(0x70);
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2), val);
//write pwm1 mode
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2));
val &=~(0x18);
val |= 0x18;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2), val);
val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2));
val &=~(0x0c);
val |= 0x0c;
OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2), val);
// set pwm period
period = 12000000 / 50000;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period);
// set pwm duty
addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2);
duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 10 / 100;
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF));
OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3));
printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty);
// enable pwm
CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch);
#endif
#endif
/********** RED/GREEN LED GPIO INIT **********/
#ifdef CONFIG_MS_GPIO
#if defined(LED_RED_GPIO)
printf("red led gpio init\n");
memset(buffer, 0, BUF_SIZE);
#if (LED_RED_GPIO_ACTIVE_LOW==1) || defined(LED_GPIO_ACTIVE_LOW)
snprintf(buffer, BUF_SIZE, "gpio clear %d", LED_RED_GPIO);
#else
snprintf(buffer, BUF_SIZE, "gpio set %d", LED_RED_GPIO);
#endif
run_command(buffer, 0);
#endif
#if defined(LED_GREEN_GPIO)
printf("green led gpio init\n");
memset(buffer, 0, BUF_SIZE);
#if (LED_GREEN_GPIO_ACTIVE_LOW==1) || defined(LED_GPIO_ACTIVE_LOW)
snprintf(buffer, BUF_SIZE, "gpio set %d", LED_GREEN_GPIO);
#else
snprintf(buffer, BUF_SIZE, "gpio clear %d", LED_GREEN_GPIO);
#endif
run_command(buffer, 0);
#endif
#else
#if defined(LED_RED_GPIO)
#if (LED_RED_GPIO==77)
printf("red led gpio init\n");
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM5_MODE);
u32ModeMask = REG_PM_PWM5_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM10_MODE);
u32ModeMask = REG_PM_PWM10_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE);
u32ModeMask = REG_PM_VID_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE);
u32ModeMask = REG_PM_LED_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
MHal_RIU_REG(GPIO77_ROEN) &= (~GPIO77_MOEN);
#if defined(LED_GPIO_ACTIVE_LOW)
// output gpio77 0
MHal_RIU_REG(GPIO77_ROUT) &= (~GPIO77_MOUT);
#else
// output gpio77 1
MHal_RIU_REG(GPIO77_ROUT) |= GPIO77_MOUT;
#endif
#endif
#if (LED_RED_GPIO==76)
printf("red led gpio init\n");
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM9_MODE);
u32ModeMask = REG_PM_PWM9_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE);
u32ModeMask = REG_PM_VID_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE);
u32ModeMask = REG_PM_LED_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
MHal_RIU_REG(GPIO76_ROEN) &= (~GPIO76_MOEN);
#if defined(LED_GPIO_ACTIVE_LOW)
// output gpio76 0
MHal_RIU_REG(GPIO76_ROUT) &= (~GPIO76_MOUT);
#else
// output gpio76 1
MHal_RIU_REG(GPIO76_ROUT) |= GPIO76_MOUT;
#endif
#endif
#endif
#if defined(LED_GREEN_GPIO)
#if (LED_GREEN_GPIO==76)
printf("green led gpio init\n");
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM9_MODE);
u32ModeMask = REG_PM_PWM9_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE);
u32ModeMask = REG_PM_VID_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE);
u32ModeMask = REG_PM_LED_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
MHal_RIU_REG(GPIO76_ROEN) &= (~GPIO76_MOEN);
#if defined(LED_GPIO_ACTIVE_LOW)
// output gpio76 1
MHal_RIU_REG(GPIO76_ROUT) |= GPIO76_MOUT;
#else
// output gpio76 0
MHal_RIU_REG(GPIO76_ROUT) &= (~GPIO76_MOUT);
#endif
#endif
#if (LED_GREEN_GPIO==77)
printf("green led gpio init\n");
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM5_MODE);
u32ModeMask = REG_PM_PWM5_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM10_MODE);
u32ModeMask = REG_PM_PWM10_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE);
u32ModeMask = REG_PM_VID_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE);
u32ModeMask = REG_PM_LED_MODE_MASK;
if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) {
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
}
MHal_RIU_REG(GPIO77_ROEN) &= (~GPIO77_MOEN);
#if defined(LED_GPIO_ACTIVE_LOW)
// output gpio77 1
MHal_RIU_REG(GPIO77_ROUT) |= GPIO77_MOUT;
#else
// output gpio77 0
MHal_RIU_REG(GPIO77_ROUT) &= (~GPIO77_MOUT);
#endif
#endif
#endif
#if defined(LED_RED_GPIO) && (LED_RED_GPIO==46) && defined(LED_GREEN_GPIO) && (LED_GREEN_GPIO==47)
u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_EJ_MODE);
u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_EJ_MODE_MASK);
if (u16RegVal) {
_GPIO_W_WORD_MASK(u32RegAddr, 0, REG_EJ_MODE_MASK);
}
u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_TEST_IN_MODE);
u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_TEST_IN_MODE_MASK);
if (u16RegVal) {
_GPIO_W_WORD_MASK(u32RegAddr, 0, REG_TEST_IN_MODE_MASK);
}
u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_TEST_OUT_MODE);
u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_TEST_OUT_MODE_MASK);
if (u16RegVal) {
_GPIO_W_WORD_MASK(u32RegAddr, 0, REG_TEST_OUT_MODE_MASK);
}
u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_SPI0_MODE);
u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_SPI0_MODE_MASK);
if (u16RegVal) {
_GPIO_W_WORD_MASK(u32RegAddr, 0, REG_SPI0_MODE_MASK);
}
u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_PWM6_MODE);
u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_PWM6_MODE_MASK);
if (u16RegVal) {
_GPIO_W_WORD_MASK(u32RegAddr, 0, REG_PWM6_MODE_MASK);
}
u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_PWM7_MODE);
u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_PWM7_MODE_MASK);
if (u16RegVal) {
_GPIO_W_WORD_MASK(u32RegAddr, 0, REG_PWM7_MODE_MASK);
}
#if defined(LED_GPIO_ACTIVE_LOW)
printf("red led gpio init\n");
MHal_RIU_REG(GPIO46_ROEN) &= (~GPIO46_MOEN);
// output gpio46 0
MHal_RIU_REG(GPIO46_ROUT) &= (~GPIO46_MOUT);
printf("green led gpio init\n");
MHal_RIU_REG(GPIO47_ROEN) &= (~GPIO47_MOEN);
// output gpio47 1
MHal_RIU_REG(GPIO47_ROUT) |= GPIO47_MOUT;
#else
printf("red led gpio init\n");
MHal_RIU_REG(GPIO46_ROEN) &= (~GPIO46_MOEN);
// output gpio46 1
MHal_RIU_REG(GPIO46_ROUT) |= GPIO46_MOUT;
printf("green led gpio init\n");
MHal_RIU_REG(GPIO47_ROEN) &= (~GPIO47_MOEN);
// output gpio47 0
MHal_RIU_REG(GPIO47_ROUT) &= (~GPIO47_MOUT);
#endif
#endif
printf("led gpio init\n");
#if defined(LED_RED_GPIO) && defined(LED_GREEN_GPIO) && defined(LED_RED_GPIO_ACTIVE_LOW) && defined(LED_GREEN_GPIO_ACTIVE_LOW)
#if (LED_RED_GPIO == 44)
printf("red led gpio init\n");
memset(buffer, 0, BUF_SIZE);
#if (LED_RED_GPIO_ACTIVE_LOW==1) || defined(LED_GPIO_ACTIVE_LOW)
snprintf(buffer, BUF_SIZE, "gpio clear %d", LED_RED_GPIO);
#else
snprintf(buffer, BUF_SIZE, "gpio set %d", LED_RED_GPIO);
#endif
run_command(buffer, 0);
#if 0
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_EJ_MODE);
u32ModeMask = REG_EJ_MODE_MASK;
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_ALLPAD_IN_MODE);
u32ModeMask = REG_ALLPAD_IN_MODE_MASK;
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE);
u32ModeMask = REG_TEST_IN_MODE_MASK;
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE);
u32ModeMask = REG_TEST_OUT_MODE_MASK;
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_SPI0_MODE);
u32ModeMask = REG_SPI0_MODE_MASK;
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_PWM4_MODE);
u32ModeMask = REG_PWM4_MODE_MASK;
_GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask);
#endif
#else
MHal_GPIO_Pad_EN(GPIO_ROEN(LED_RED_GPIO),GPIO_MOEN(LED_RED_GPIO));
MHal_GPIO_Pad_EN(GPIO_ROEN(LED_GREEN_GPIO),GPIO_MOEN(LED_GREEN_GPIO));
#if (LED_RED_GPIO_ACTIVE_LOW == 1 && LED_GREEN_GPIO_ACTIVE_LOW == 1)
// output RED 0/GREEN 1
MHal_GPIO_OutLOW(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO));
MHal_GPIO_OutHigh(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO));
printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,0,LED_GREEN_GPIO,1);
#endif
#if (LED_RED_GPIO_ACTIVE_LOW == 0 && LED_GREEN_GPIO_ACTIVE_LOW == 1)
// output RED 1/GREEN 1
MHal_GPIO_OutHigh(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO));
MHal_GPIO_OutHigh(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO));
printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,1,LED_GREEN_GPIO,1);
#endif
#if (LED_RED_GPIO_ACTIVE_LOW == 1 && LED_GREEN_GPIO_ACTIVE_LOW == 0)
// output RED 0/GREEN 0
MHal_GPIO_OutLOW(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO));
MHal_GPIO_OutLOW(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO));
printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,0,LED_GREEN_GPIO,0);
#endif
#if (LED_RED_GPIO_ACTIVE_LOW == 0 && LED_GREEN_GPIO_ACTIVE_LOW == 0)
// output RED 1/GREEN 0
MHal_GPIO_OutHigh(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO));
MHal_GPIO_OutLOW(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO));
printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,1,LED_GREEN_GPIO,0);
#endif
#endif
#endif
#endif
#ifdef UPGRADE_LED_GPIO_NUM
MDrv_GPIO_Pad_Set(UPGRADE_LED_GPIO_NUM);
#endif
U16 wtd_rst_status;
wtd_rst_status = INREG16(GET_REG_ADDR(REG_ADDR_BASE_WDT, WDT_RST_RSTLEN));
printf("wtd rst status: 0x%04X\n", (unsigned int)wtd_rst_status);
return 0;
}