/*====================================================================
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 */
}
Beispiel #3
0
/*====================================================================
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
}
Beispiel #4
0
/*====================================================================
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__);
}