/*====================================================================
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       dmb_spi_gpio_init  
DESCRIPTION 
DEPENDENCIES
RETURN VALUE
SIDE EFFECTS
======================================================================*/
void dmb_spi_gpio_init(void)
{
  int i;
#ifdef CONFIG_ARCH_MSM
  int rc;
#endif

  DMB_MSG_SPI("[%s] \n", __func__);
  
  for(i = 0; i < ARRAY_SIZE(dmb_spi_gpio_table); i ++)
  {
#ifdef CONFIG_ARCH_MSM
    rc = gpio_tlmm_config(dmb_spi_gpio_table[i], GPIO_CFG_ENABLE);
    if (rc)
    {
      DMB_MSG_SPI("[%s] error!!! index=%d, rc=%d\n",__func__, i  , rc);
      break;
    }
#elif defined(CONFIG_ARCH_TEGRA)
    tegra_gpio_enable(dmb_spi_gpio_table[i][0]);
    tegra_gpio_init_configure(dmb_spi_gpio_table[i][0],dmb_spi_gpio_table[i][1],dmb_spi_gpio_table[i][2]);
    //DMB_MSG_HW("[%s] dmb_gpio_init gpio[%d], is_input[%d], value[%d]\n", __func__, dmb_spi_gpio_table[i][0], dmb_spi_gpio_table[i][1], dmb_spi_gpio_table[i][2]);
#endif
  }

  DMB_MSG_SPI("[%s] end cnt[%d]!!!\n",__func__, i);
}
static void __init cardhu_gpio_init_configure(void)
{
	struct board_info board_info;
	int len;
	int i;
	struct gpio_init_pin_info *pins_info;
	u32 project_info = tegra3_get_project_id();

	tegra_get_board_info(&board_info);

	switch (board_info.board_id) {
	case BOARD_E1198:
		if (board_info.fab < BOARD_FAB_A02) {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a02);
			pins_info = init_gpio_mode_e1291_a02;
		} else {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a03);
			pins_info = init_gpio_mode_e1291_a03;
		}
		break;
	case BOARD_E1291:
		if (board_info.fab < BOARD_FAB_A03) {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a02);
			pins_info = init_gpio_mode_e1291_a02;
		} else if (board_info.fab == BOARD_FAB_A03) {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a03);
			pins_info = init_gpio_mode_e1291_a03;
		} else {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a04);
			pins_info = init_gpio_mode_e1291_a04;
		}
		break;
	case BOARD_PM269:
		if (project_info == TEGRA3_PROJECT_TF300TL) {
			len = ARRAY_SIZE(init_gpio_mode_pm269_TF300TL);
			pins_info = init_gpio_mode_pm269_TF300TL;
		} else if (project_info == TEGRA3_PROJECT_TF300T) {
			len = ARRAY_SIZE(init_gpio_mode_pm269_TF300T);
			pins_info = init_gpio_mode_pm269_TF300T;
			printk("PBB5 is set to low with PM269\n");
		}
		break;
	default:
		return;
	}

	for (i = 0; i < len; ++i) {
		tegra_gpio_init_configure(pins_info->gpio_nr,
			pins_info->is_input, pins_info->value);
		pins_info++;
	}
}
int __init p1852_gpio_init(void)
{
	int i, pin_count = 0;
	struct gpio_init_pin_info *gpios_info = NULL;
	gpios_info = p1852_sku8_gpios;
	pin_count = ARRAY_SIZE(p1852_sku8_gpios);

	for (i = 0; i < pin_count; ++i) {
		tegra_gpio_init_configure(gpios_info->gpio_nr,
			gpios_info->is_input, gpios_info->value);
		gpios_info++;
	}
	return 0;
}
Beispiel #5
0
static void __init maya_gpio_init_configure(void)
{
	int len;
	int i;
	struct gpio_init_pin_info *pins_info;

	len = ARRAY_SIZE(init_gpio_mode_maya_common);
	pins_info = init_gpio_mode_maya_common;

	for (i = 0; i < len; ++i) {
		tegra_gpio_init_configure(pins_info->gpio_nr,
			pins_info->is_input, pins_info->value);
		pins_info++;
	}
}
Beispiel #6
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);
}
int __init m2601_gpio_init(void)
{
	int i, pin_count = 0;
	struct gpio_init_pin_info *gpios_info = NULL;

	if (system_rev == TEGRA_M2601_SKU1_A00) {
		gpios_info = m2601_gpios_A00;
		pin_count = ARRAY_SIZE(m2601_gpios_A00);
	} else {
		gpios_info = m2601_gpios_B00;
		pin_count = ARRAY_SIZE(m2601_gpios_B00);
	}

	for (i = 0; i < pin_count; i++) {
		tegra_gpio_init_configure(gpios_info->gpio_nr,
		gpios_info->is_input, gpios_info->value);
		gpios_info++;
	}
	return 0;
}
static void __init cardhu_gpio_init_configure(void)
{
	struct board_info board_info;
	int len;
	int i;
	struct gpio_init_pin_info *pins_info;

	tegra_get_board_info(&board_info);

	switch (board_info.board_id) {
	case BOARD_E1198:
		if (board_info.fab < BOARD_FAB_A02) {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a02);
			pins_info = init_gpio_mode_e1291_a02;
		} else {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a03);
			pins_info = init_gpio_mode_e1291_a03;
		}
		break;
	case BOARD_E1291:
		if (board_info.fab < BOARD_FAB_A03) {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a02);
			pins_info = init_gpio_mode_e1291_a02;
		} else if (board_info.fab == BOARD_FAB_A03) {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a03);
			pins_info = init_gpio_mode_e1291_a03;
		} else {
			len = ARRAY_SIZE(init_gpio_mode_e1291_a04);
			pins_info = init_gpio_mode_e1291_a04;
		}
		break;
	default:
		return;
	}

	for (i = 0; i < len; ++i) {
		tegra_gpio_init_configure(pins_info->gpio_nr,
			pins_info->is_input, pins_info->value);
		pins_info++;
	}
}
static void __init grouper_gpio_init_configure(void)
{
	int len;
	int i;
	struct gpio_init_pin_info *pins_info;
	u32 project_info = grouper_get_project_id();

	if (project_info == GROUPER_PROJECT_NAKASI_3G) {
		len = ARRAY_SIZE(init_gpio_mode_grouper3g);
		pins_info = init_gpio_mode_grouper3g;
	} else {
		len = ARRAY_SIZE(init_gpio_mode_grouper_common);
		pins_info = init_gpio_mode_grouper_common;
	}

	for (i = 0; i < len; ++i) {
		tegra_gpio_init_configure(pins_info->gpio_nr,
			pins_info->is_input, pins_info->value);
		pins_info++;
	}
}