/*==================================================================== FUNCTION dmb_power_off DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void dmb_power_off(void) { DMB_MSG_HW("[%s] start!!!\n", __func__); #ifdef FEATURE_DMB_PMIC_POWER dmb_pmic_power_onoff(0); #endif #ifdef DMB_PWR_EN dmb_set_gpio(DMB_PWR_EN, 0); #endif msleep(1); #ifdef FEATURE_DMB_SET_ANT_PATH_POWER dmb_pmic_ant_switch_power(FALSE); #endif #ifdef FEATURE_DMB_SET_ANT_PATH dmb_set_gpio(DMB_ANT_SEL, 0); #ifdef DMB_ANT_SEL2 dmb_set_gpio(DMB_ANT_SEL2, 0); #endif #endif #ifdef FEATURE_DMB_PMIC_TCXO_192M dmb_set_gpio(DMB_XO_SEL, 0); #endif DMB_MSG_HW("[%s] end!!!\n", __func__); #if (defined(FEATURE_DMB_TSIF_IF) && defined(FEATURE_DMB_TSIF_CLK_CTL)) dmb_tsif_clk_disable(); #endif }
/*==================================================================== FUNCTION dmb_set_ant_path DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void dmb_set_ant_path(int ant_type) { #ifdef FEATURE_DMB_SET_ANT_PATH DMB_MSG_HW("[%s] ant_type[%d]\n", __func__, ant_type); #if defined(CONFIG_ARCH_MSM8960) && (DMB_ANT_SEL == 26) gpio_tlmm_config(GPIO_CFG(DMB_ANT_SEL, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); #endif if (ant_type == DMB_ANT_EARJACK) { dmb_set_gpio(DMB_ANT_SEL, DMB_ANT_EAR_ACT); #ifdef DMB_ANT_SEL2 dmb_set_gpio(DMB_ANT_SEL2, DMB_ANT_EAR_ACT2); #endif } else { dmb_set_gpio(DMB_ANT_SEL, (DMB_ANT_EAR_ACT)?0:1); #ifdef DMB_ANT_SEL2 dmb_set_gpio(DMB_ANT_SEL2, (DMB_ANT_EAR_ACT2)?0:1); #endif } #else DMB_MSG_HW("[%s] Do nothing, No ANT. switch\n", __func__); #endif /* FEATURE_DMB_SET_ANT_PATH */ }
/*==================================================================== FUNCTION dmb_power_on DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void dmb_power_on(void) { DMB_MSG_HW("[%s] start!!!\n", __func__); #ifdef FEATURE_DMB_SET_ANT_PATH_POWER dmb_pmic_ant_switch_power(TRUE); #endif #ifdef FEATURE_DMB_PMIC_19200 dmb_pmic_xo_onoff(1); #endif #ifdef DMB_XO_SEL dmb_set_gpio(DMB_XO_SEL, 1); #endif #ifdef DMB_LNA_EN dmb_set_gpio(DMB_LNA_EN, 1); #if 0 // zeros temp dmb_set_gpio(DMB_LNA, 0); #endif //0 #endif #if (defined(FEATURE_DMB_TSIF_IF) && defined(FEATURE_DMB_TSIF_CLK_CTL)) dmb_tsif_clk_enable(); #endif }
/*==================================================================== FUNCTION dmb_gpio_init DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void dmb_gpio_init(void) { int i; #ifdef CONFIG_ARCH_MSM int rc; #endif DMB_MSG_HW("[%s] dmb_gpio_init!!!\n",__func__); for(i = 0; i < ARRAY_SIZE(dmb_gpio_init_table); i ++) { #ifdef CONFIG_ARCH_MSM #ifdef FEATURE_DMB_PMIC_GPIO if(GPIO_PIN(dmb_gpio_init_table[i]) >= FEATURE_DMB_PMIC_GPIO) continue; // PMIC GPIO인 경우 board-8064-pmic.c에서 초기화 한다. #endif rc = gpio_request(dmb_gpio_num[i], dmb_gpio_name[i]); if(rc) { DMB_MSG_HW("[%s] gpio_request fail %d rc %d\n",__func__, dmb_gpio_num[i], rc); break; } rc = gpio_tlmm_config(dmb_gpio_init_table[i], GPIO_CFG_ENABLE); if(rc) { DMB_MSG_HW("[%s] gpio_tlmm_config(%#x)=%d\n",__func__, dmb_gpio_init_table[i], rc); break; } #elif defined(CONFIG_ARCH_TEGRA) tegra_gpio_enable(dmb_gpio_init_table[i][0]); tegra_gpio_init_configure(dmb_gpio_init_table[i][0],dmb_gpio_init_table[i][1],dmb_gpio_init_table[i][2]); //DMB_MSG_HW("[%s] dmb_gpio_init gpio[%d], is_input[%d], value[%d]\n", __func__, dmb_gpio_init_table[i][0], dmb_gpio_init_table[i][1], dmb_gpio_init_table[i][2]); #endif } #if (defined(CONFIG_MACH_APQ8064_EF48S)||defined(CONFIG_MACH_APQ8064_EF49K)||defined(CONFIG_MACH_APQ8064_EF50L)||defined(CONFIG_MACH_APQ8064_EF51S)||defined(CONFIG_MACH_APQ8064_EF51K)||defined(CONFIG_MACH_APQ8064_EF51L)) #ifdef DMB_ANT_SEL dmb_set_gpio(DMB_ANT_SEL, 0); #endif #endif // EF39S ant_sel low #if (defined(CONFIG_SKY_EF39S_BOARD) && (BOARD_REV > WS10)) dmb_set_gpio(DMB_ANT_SEL, 0); #endif DMB_MSG_HW("[%s] end cnt[%d]!!!\n",__func__, i); }
/*==================================================================== FUNCTION dmb_gpio_init DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void dmb_gpio_init(void) { int i; #ifdef CONFIG_ARCH_MSM int rc; #endif DMB_MSG_HW("[%s] dmb_gpio_init!!!\n",__func__); for(i = 0; i < ARRAY_SIZE(dmb_gpio_init_table); i ++) { #ifdef CONFIG_ARCH_MSM rc = gpio_tlmm_config(dmb_gpio_init_table[i], GPIO_CFG_ENABLE); if (rc) { DMB_MSG_HW("[%s] gpio_tlmm_config(%#x)=%d\n",__func__, dmb_gpio_init_table[i], rc); break; } #elif defined(CONFIG_ARCH_TEGRA) tegra_gpio_enable(dmb_gpio_init_table[i][0]); tegra_gpio_init_configure(dmb_gpio_init_table[i][0],dmb_gpio_init_table[i][1],dmb_gpio_init_table[i][2]); //DMB_MSG_HW("[%s] dmb_gpio_init gpio[%d], is_input[%d], value[%d]\n", __func__, dmb_gpio_init_table[i][0], dmb_gpio_init_table[i][1], dmb_gpio_init_table[i][2]); #endif } // EF39S ant_sel low #if (defined(CONFIG_SKY_EF39S_BOARD) && (BOARD_REV > WS10)) dmb_set_gpio(DMB_ANT_SEL, 0); #endif DMB_MSG_HW("[%s] end cnt[%d]!!!\n",__func__, i); }
/*==================================================================== FUNCTION mtv350_power_on DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void mtv350_power_on(void) { // 1. DMB_EN : LOW // 2. DMB_EN : HIGH TDMB_MSG_RTV_BB("[%s] start!!!\n", __func__); dmb_power_on(); //dmb_set_gpio(DMB_RESET, 0); dmb_set_gpio(DMB_PWR_EN, 0); msleep(1); dmb_power_on_chip(); mdelay(20); //dmb_set_gpio(DMB_RESET, 1); //msleep(10); RTV_GUARD_INIT; tdmb_power_on = TRUE; TDMB_MSG_RTV_BB("[%s] end!!!\n", __func__); }
/*==================================================================== FUNCTION mtv350_set_powersave_mode DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void mtv350_set_powersave_mode(void) { #if 0 // 20101102 cys dmb_set_gpio(DMB_RESET, FALSE); msleep(1); #endif // 0 }
/*==================================================================== FUNCTION dmb_power_on_chip DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void dmb_power_on_chip(void) { DMB_MSG_HW("[%s] start!!!\n", __func__); #ifdef FEATURE_DMB_PMIC_POWER dmb_pmic_power_onoff(1); #endif #ifdef DMB_PWR_EN dmb_set_gpio(DMB_PWR_EN, 1); #endif #if defined(CONFIG_MACH_MSM8960_SIRIUSLTE) && (BOARD_VER == PT11) dmb_set_gpio(58, 1); dmb_set_gpio(77, 1); #endif }
/*==================================================================== FUNCTION sharp_power_on DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void sharp_power_on(void) { // 1. DMB_RESET : LOW // 2. DMB_PWR_EN : HIGH // 3. DMB_RESET : HIGH ISDBT_MSG_SHARP_BB("[%s] start!!!\n", __func__); dmb_power_on(); dmb_set_gpio(DMB_RESET, 0); msleep(1); dmb_power_on_chip(); msleep(100); dmb_set_gpio(DMB_RESET, 1); msleep(100); isdbt_chip_power_on = TRUE; ISDBT_MSG_SHARP_BB("[%s] end!!!\n", __func__); }
/*==================================================================== FUNCTION fc8150_power_on DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void fc8150_power_on(void) { // 1. DMB_PWR_EN : HIGH // 2. DMB_RESET : HIGH // 3. DMB_RESET : LOW // 4. DMB_RESET : HIGH ISDBT_MSG_FC8150_BB("[%s] start!!!\n", __func__); dmb_power_on(); dmb_power_on_chip(); dmb_set_gpio(DMB_RESET, 1); mdelay(5); dmb_set_gpio(DMB_RESET, 0); mdelay(1); dmb_set_gpio(DMB_RESET, 1); isdbt_chip_power_on = TRUE; //ISDBT_MSG_FC8150_BB("[%s] end!!!\n", __func__); }
/*==================================================================== FUNCTION mtv319_power_on DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void mtv319_power_on(void) { // 1. DMB_EN : LOW // 2. DMB_EN : HIGH TDMB_MSG_RTV_BB("[%s] start!!!\n", __func__); dmb_power_on(); dmb_set_gpio(DMB_PWR_EN, 0); msleep(1); dmb_power_on_chip(); mdelay(20); tdmb_power_on = TRUE; TDMB_MSG_RTV_BB("[%s] end!!!\n", __func__); }
/*==================================================================== FUNCTION fc8150_power_off DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void fc8150_power_off(void) { // 1. DMB_PWR_EN : LOW ISDBT_MSG_FC8150_BB("[%s] start!!![%d]\n", __func__, isdbt_chip_power_on); if (!isdbt_chip_power_on) { ISDBT_MSG_FC8150_BB("[%s] aleady power off\n", __func__); return; } dmb_power_off(); dmb_set_gpio(DMB_RESET, 0); isdbt_chip_power_on = FALSE; //ISDBT_MSG_FC8150_BB("[%s] end!!!\n", __func__); }
/*==================================================================== FUNCTION sharp_power_off DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void sharp_power_off(void) { // 1. DMB_RESET : LOW // 2. DMB_PWR_EN : LOW ISDBT_MSG_SHARP_BB("[%s] start!!![%d]\n", __func__, isdbt_chip_power_on); if(!isdbt_chip_power_on) { return; } dmb_set_gpio(DMB_RESET, 0); msleep(1); dmb_power_off(); isdbt_chip_power_on = FALSE; ISDBT_MSG_SHARP_BB("[%s] end!!!\n", __func__); }