int tdmb_fc8050_power_on(void) { #ifdef FEATURE_DMB_USE_XO int rc = FALSE; #endif printk("tdmb_fc8050_power_on \n"); if ( fc8050_ctrl_info.TdmbPowerOnState == FALSE ) { #ifdef FEATURE_DMB_USE_BUS_SCALE msm_bus_scale_client_update_request(fc8050_ctrl_info.bus_scale_client_id, 1); /* expensive call, index:1 is the <84 512 3000 152000> entry */ #endif #ifdef FEATURE_DMB_USE_XO if(fc8050_ctrl_info.clk != NULL) { rc = clk_prepare_enable(fc8050_ctrl_info.clk); if (rc) { dev_err(&fc8050_ctrl_info.spi_ptr->dev, "could not enable clock\n"); return rc; } } #endif #ifdef FEATURE_DMB_USE_PM_QOS if(pm_qos_request_active(&fc8050_ctrl_info.pm_req_list)) { pm_qos_update_request(&fc8050_ctrl_info.pm_req_list, 20); } #endif // gpio_set_value(PM8058_GPIO_PM_TO_SYS(DMB_ANT_SEL_P-1), 0); // gpio_set_value(PM8058_GPIO_PM_TO_SYS(DMB_ANT_SEL_N-1), 1); wake_lock(&fc8050_ctrl_info.wake_lock); gpio_set_value(DMB_EN, 0); gpio_set_value(DMB_RESET_N, 1); udelay(100); gpio_set_value(DMB_EN, 1); mdelay(2); /* Due to X-tal stablization Time */ gpio_set_value(DMB_RESET_N, 0); udelay(100); gpio_set_value(DMB_RESET_N, 1); tdmb_fc8050_interrupt_free(); fc8050_ctrl_info.TdmbPowerOnState = TRUE; printk("tdmb_fc8050_power_on OK\n"); } else { printk("tdmb_fc8050_power_on the power already turn on \n"); } printk("tdmb_fc8050_power_on completed \n"); return TRUE; }
int tdmb_fc8050_power_on(void) { int rc; printk("tdmb_fc8050_power_on \n"); if ( fc8050_ctrl_info.TdmbPowerOnState == FALSE ) { rc = msm_xo_mode_vote(xo_handle_tdmb, MSM_XO_MODE_ON); if(rc < 0) { pr_err("Configuring MSM_XO_MODE_ON failed (%d)\n", rc); msm_xo_put(xo_handle_tdmb); return FALSE; } if(pm_qos_request_active(&fc8050_ctrl_info.pm_req_list)) { pm_qos_update_request(&fc8050_ctrl_info.pm_req_list, 20); } wake_lock(&fc8050_ctrl_info.wake_lock); gpio_set_value_cansleep(DMB_ANT_SEL_P_EAR, 0); gpio_set_value_cansleep(DMB_ANT_SEL_N_INNER, 1); gpio_set_value(DMB_EN, 0); gpio_set_value(DMB_RESET_N, 1); udelay(100); gpio_set_value(DMB_EN, 1); udelay(1000); /* Due to X-tal stablization Time */ gpio_set_value(DMB_RESET_N, 0); udelay(100); gpio_set_value(DMB_RESET_N, 1); tdmb_fc8050_interrupt_free(); fc8050_ctrl_info.TdmbPowerOnState = TRUE; printk("tdmb_fc8050_power_on OK\n"); } else { printk("tdmb_fc8050_power_on the power already turn on \n"); } printk("tdmb_fc8050_power_on completed \n"); return TRUE; }
int tdmb_fc8050_power_on(void) { printk("tdmb_fc8050_power_on \n"); if ( fc8050_ctrl_info.TdmbPowerOnState == FALSE ) { #ifdef PM_QOS /* QOS */ if(pm_qos_request_active(&fc8050_ctrl_info.pm_req_list)) { pm_qos_update_request(&fc8050_ctrl_info.pm_req_list, 20); } #endif /* PM_QOS */ wake_lock(&fc8050_ctrl_info.wake_lock); #ifdef ANTENNA_SWITCHING gpio_set_value_cansleep(DMB_ANT_SEL_P, 0); gpio_set_value_cansleep(DMB_ANT_SEL_N, 1); #endif /* ANTENNA_SWITCHING */ gpio_direction_input(DMB_INT_N); // gpio_direction_output(DMB_RESET_N, false); // gpio_direction_output(DMB_EN, true); gpio_set_value(DMB_EN, 1); gpio_set_value(DMB_RESET_N, 1); udelay(1000); udelay(1000); udelay(1000); gpio_set_value(DMB_RESET_N, 0); udelay(5); gpio_set_value(DMB_RESET_N, 1); tdmb_fc8050_interrupt_free(); fc8050_ctrl_info.TdmbPowerOnState = TRUE; printk("tdmb_fc8050_power_on OK\n"); } else { printk("tdmb_fc8050_power_on the power already turn on \n"); } printk("tdmb_fc8050_power_on completed \n"); return TRUE; }