static void pan_set_gpio(UINT8 pos, UINT8 val) { if(pos != GPIO_NULL) { HAL_GPIO_BIT_DIR_SET(pos, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(pos, val); } }
static UINT8 pan_get_gpio(UINT8 pos) { if(pos != GPIO_NULL) { HAL_GPIO_BIT_DIR_SET(pos, HAL_GPIO_I_DIR); return HAL_GPIO_BIT_GET(pos); } return 1; }
void ide_enable(UINT32 gpio_cs, UINT32 polar) { HAL_GPIO_BIT_DIR_SET(gpio_cs, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(gpio_cs, polar); if (ALI_S3602 == sys_ic_get_chip_id()) { (*(volatile UINT8 *)(0xb800008c)) &= (~0x04); } }
void api_standby_led_onoff(BOOL onoff) { #if (SYS_MAIN_BOARD == BOARD_DB_M3602_02V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_04V01) // Turn On Standby LED HAL_GPIO_BIT_DIR_SET(STANDBY_LED_POS, HAL_GPIO_O_DIR); if (onoff) HAL_GPIO_BIT_SET(STANDBY_LED_POS, 0); else HAL_GPIO_BIT_SET(STANDBY_LED_POS, 1); #endif }
void sd_enable(UINT32 gpio_cs, UINT32 polar, UINT32 gpio_int, UINT32 gpio_lock) { HAL_GPIO_BIT_DIR_SET(gpio_cs, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(gpio_cs, polar); set_sd_gpio(gpio_int, gpio_lock); if (ALI_S3602 == sys_ic_get_chip_id()) { (*(volatile UINT8 *)(0xb800008c)) |= (0x04); } }
void power_off_process2(void) { #if (SYS_MAIN_BOARD == BOARD_DB_M3602_02V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_04V01) // To avoid power leak according to James Huang HAL_GPIO_BIT_DIR_SET(60, HAL_GPIO_I_DIR); // Set UART0 TX/RX as INPUT(RX), bit19~18 = b10, bit17~16 = b00 *((unsigned long *)0xb8000088) &= ~0x000f0000; *((unsigned long *)0xb8000088) |= 0x00080000; #endif // SE: Cancel Mute before entering standby to avoid power leak api_audio_set_mute(FALSE); }
static INT32 pan_direct_gpio_open(struct pan_device *dev) { struct pan_hw_info *tp = (struct pan_hw_info *)dev->priv; #if (SYS_IRP_MOUDLE != SYS_DEFINE_NULL) if (tp->type_irp != 0) irc_m6303irc_init(tp); #endif #ifdef SUPPORT_FIRMWARE_CONFIG pan_set_gpio(POS_GPIO_STANDBY_KEY, !POS_GPIO_STANDBY_KEY_POLAR); pan_set_gpio(POS_GPIO_CHANNEL_UP_KEY, !POS_GPIO_CHANNEL_UP_KEY_POLAR); pan_set_gpio(POS_GPIO_CHANNEL_DOWN_KEY, !POS_GPIO_CHANNEL_DOWN_KEY_POLAR); pan_get_gpio(POS_GPIO_STANDBY_KEY); pan_get_gpio(POS_GPIO_CHANNEL_UP_KEY); pan_get_gpio(POS_GPIO_CHANNEL_DOWN_KEY); #endif /* Register an 1mS cycle interrupt ISR */ osal_interrupt_register_lsr(7, pan_direct_gpio_interrupt, (UINT32)dev); #if 0 HAL_GPIO_BIT_DIR_SET(POS_GPIO_STANDBY_KEY, HAL_GPIO_I_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_CHANNEL_UP_KEY, HAL_GPIO_I_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_CHANNEL_DOWN_KEY, HAL_GPIO_I_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_POWER_LED, HAL_GPIO_O_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_STANDBY_LED, HAL_GPIO_O_DIR); #endif pan_set_gpio(POS_GPIO_POWER_LED, POS_GPIO_POWER_LED_POLAR); //turn on power led pan_set_gpio(POS_GPIO_STANDBY_LED, !POS_GPIO_STANDBY_LED_POLAR); //turn off standby led // soc_printf("sta:%08x\n", *(UINT32*)0xb8000058); return SUCCESS; }
void v12_power_short_detect(UINT32 nouse) { #if(defined(SYS_12V_SWITCH) && defined(SYS_12V_SHORT_DET)) #if(SYS_12V_SWITCH==SYS_FUNC_ON && SYS_12V_SHORT_DET == SYS_FUNC_ON) INT32 v12,v12_short; static INT32 oldv12 = -1; static UINT8 v12_short_cut =0 ; static UINT32 count = 0; #define V12_POWER_RESET_WAIT_TIME 100 if(!v12_short_cut) { if(!v12_detect) return; HAL_GPIO_BIT_DIR_SET(SYS_12V_SHORT_DET_GPIO, HAL_GPIO_I_DIR); v12_short = HAL_GPIO_BIT_GET(SYS_12V_SHORT_DET_GPIO); v12_short = v12_short? 0 : 1; /* Polarity reverse */ if(v12_short == 1) /* V12 short detected*/ { /* Cut V12 Power*/ HAL_GPIO_BIT_DIR_SET(SYS_12V_GPIO, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(SYS_12V_GPIO,0); /* Set corresponding flags*/ v12_power_short = SIGNAL_STATUS_LNBSHORT; v12_short_cut = 1; count = 0; /* Set LED display */ led_display_flag = 1; key_pan_display("12SP",4); led_display_flag = 2; } else { RESET_V12_STATUS: if(v12_power_short == SIGNAL_STATUS_LNBSHORT || led_display_flag != 0) { /* Restore LED display*/ led_display_flag = 1; key_pan_display(led_display_data,led_data_len); led_display_flag = 0; v12_power_short = SIGNAL_STATUS_LNBNORMAL; } } } else { if(!v12_detect)/* User have re-set V12 */ { v12_short_cut = 0; goto RESET_V12_STATUS; } count++; if(count >= V12_POWER_RESET_WAIT_TIME) { /* Restore LNB Power*/ HAL_GPIO_BIT_DIR_SET(SYS_12V_GPIO, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(SYS_12V_GPIO,v12_detect); v12_short_cut = 0; count = 0; } } #endif #endif }
void power_off_process(void) { struct YCbCrColor bgcolor; extern struct rfm_device* g_rfm_dev; extern struct scart_device* g_scart_dev; #ifdef DVR_PVR_SUPPORT api_pvr_clear_up_all(); #endif // SE: Mute before scart power off to avoid noise api_audio_set_mute(TRUE); #if defined(HW_SS830C)||defined(HW_SS830C2) //Wirte GPIO#5 to high to avoid noise (used on SS830C) HAL_GPIO_BIT_DIR_SET(5, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(5, 1); #endif api_Scart_TVSAT_Switch(0); api_Scart_Power_OnOff(0); api_Scart_RGB_OnOff(0);/*CVBS mode*/ #ifdef VDAC_USE_SVIDEO_TYPE api_Svideo_OnOff(0); #endif api_Scart_OutPut_Switch(0); SetLNBShortDetect(0); Set12VShortDetect(0); api_LNB_power(0); #if(SYS_12V_SWITCH == SYS_FUNC_ON) api_diseqc_set_12v(g_nim_dev, 0); #endif #ifdef USB_MP_SUPPORT if(system_state == SYS_STATE_USB_MP) { ap_udisk_close(); } #endif #ifndef NEW_DEMO_FRAME if(hde_get_mode() != VIEW_MODE_MULTI) UIChChgStopProg(TRUE); #endif #if (TTX_ON == 1) ttx_enable(FALSE); #endif #if (SUBTITLE_ON == 1) subt_enable(FALSE); #endif sie_close(); OSD_ShowOnOff(OSDDRV_OFF); #ifdef NEW_DEMO_FRAME sim_close_monitor(0); #else si_monitor_off(0xFFFFFFFF); #endif stop_tdt(); epg_off(); vpo_win_onoff(g_vpo_dev, FALSE); #ifdef DUAL_VIDEO_OUTPUT if(g_sd_vpo_dev != NULL) vpo_win_onoff(g_sd_vpo_dev,TRUE); #endif dm_set_onoff(0); bgcolor.uY = 16; bgcolor.uCb = 128; bgcolor.uCr = 128; vpo_ioctl(g_vpo_dev,VPO_IO_SET_BG_COLOR,(UINT32)&bgcolor); //close drivers dmx_stop( g_dmx_dev); dmx_close( g_dmx_dev); if (g_dmx_dev2) { dmx_stop(g_dmx_dev2); dmx_close(g_dmx_dev2); } deca_stop(g_deca_dev,0,ADEC_STOP_IMM); deca_close(g_deca_dev); vdec_close(g_decv_dev); // Power HDMI phy at standby mode. #ifdef HDTV_SUPPORT struct hdmi_device *hdmi_dev; hdmi_dev = (struct hdmi_device *)dev_get_by_id(HLD_DEV_TYPE_HDMI, 0); if (hdmi_dev != NULL) { if (SUCCESS != hdmi_dev->close(hdmi_dev)) { PRINTF("hdmi_close failed!!\n"); ASSERT(0); } } #endif vpo_close(g_vpo_dev); #ifdef DUAL_VIDEO_OUTPUT if(RET_SUCCESS!=vpo_close((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 1))) ASSERT(0); #endif snd_close(g_snd_dev); nim_close(g_nim_dev); if(g_nim_dev2) nim_close(g_nim_dev2); if(g_rfm_dev) rfm_close(g_rfm_dev); #if (SYS_MAIN_BOARD == BOARD_M3329E_DEMO01V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_02V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_04V01) if(g_scart_dev) scart_close(g_scart_dev); #endif led_display_flag = 0; #if (SYS_MAIN_BOARD == BOARD_S3602_DEMO) // Power off HAL_GPIO_BIT_DIR_SET(25, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(25, 0); #elif (SYS_MAIN_BOARD == BOARD_DB_M3602_02V01 || SYS_MAIN_BOARD == BOARD_DB_M3602_04V01) // Power off /*alfred.wu 不允许ali的power off*/ /* HAL_GPIO_BIT_DIR_SET(61, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(61, 1); // Tuner LNB power off HAL_GPIO_BIT_DIR_SET(73, HAL_GPIO_O_DIR); HAL_GPIO_BIT_SET(73, 1); *//*end*/ #endif }