static void aic3008_powerinit(void) { int value = htc_get_pcbid_info(); if (value >= PROJECT_PHASE_XA) { power_config("AUD_MCLK_EN", TEGRA_GPIO_PX7, INIT_OUTPUT_HIGH); power_config("AUD_MCLK_EN", TEGRA_GPIO_PX7, GPIO_OUTPUT); power_config("AUD_AIC3008_RST#", TEGRA_GPIO_PW5, INIT_OUTPUT_HIGH); power_config("AUD_AIC3008_RST#", TEGRA_GPIO_PW5, GPIO_OUTPUT); power_config("v_aud_a1v8", TEGRA_GPIO_PD2, REGULATOR_METHOD); power_config("v_aud_3v3", TEGRA_GPIO_PB2, REGULATOR_METHOD); } else AUD_ERR("%s: no pcbid satisfy.", __func__); power_config("AUD_MCLK", TEGRA_GPIO_PW4, INIT_OUTPUT_LOW); sfio_deconfig("AUD_MCLK", TEGRA_GPIO_PW4); power_config("AUD_SPK_EN", TEGRA_GPIO_PP6, INIT_OUTPUT_LOW); sfio_deconfig("AUD_SPK_EN", TEGRA_GPIO_PP6); power_config("AUD_LINEOUT_EN", TEGRA_GPIO_PP7, INIT_OUTPUT_LOW); sfio_deconfig("AUD_LINEOUT_EN", TEGRA_GPIO_PP7); common_init(); spin_lock_init(&aic3008_power.spin_lock); aic3008_power.isPowerOn = true; return; }
void common_deconfig(void) { sfio_deconfig("AUD_I2S_WS", TEGRA_GPIO_PA2); sfio_deconfig("AUD_I2S_SCK", TEGRA_GPIO_PA3); sfio_deconfig("AUD_I2S_DOUT", TEGRA_GPIO_PA4); sfio_deconfig("AUD_I2S_DIN", TEGRA_GPIO_PA5); sfio_deconfig("AUD_SPI_MOSI", TEGRA_GPIO_PX0); sfio_deconfig("AUD_SPI_MISO", TEGRA_GPIO_PX1); sfio_deconfig("AUD_SPI_SCK", TEGRA_GPIO_PX2); sfio_deconfig("AUD_SPI_CS#", TEGRA_GPIO_PX3); }
static void aic3008_powerinit(void) { if (pcbid >= PROJECT_PHASE_XD) { power_config("AUD_MCLK_EN", TEGRA_GPIO_PN1, INIT_OUTPUT_HIGH); } else if (pcbid >= PROJECT_PHASE_XA && pcbid <= PROJECT_PHASE_XC) { power_config("AUD_MCLK_EN", TEGRA_GPIO_PX7, INIT_OUTPUT_HIGH); } else AUD_ERR("%s: no pcbid satisfy.", __func__); power_config("AUD_AIC3008_RST#", TEGRA_GPIO_PW5, INIT_OUTPUT_HIGH); power_config("v_aud_a1v8", TEGRA_GPIO_PD2, REGULATOR_METHOD); power_config("v_aud_3v3", TEGRA_GPIO_PB2, REGULATOR_METHOD); power_config("AUD_MCLK", TEGRA_GPIO_PW4, INIT_OUTPUT_LOW); sfio_deconfig("AUD_MCLK", TEGRA_GPIO_PW4); power_config("AUD_SPK_EN", TEGRA_GPIO_PP6, INIT_OUTPUT_LOW); sfio_deconfig("AUD_SPK_EN", TEGRA_GPIO_PP6); power_config("AUD_LINEOUT_EN", TEGRA_GPIO_PP7, INIT_OUTPUT_LOW); sfio_deconfig("AUD_LINEOUT_EN", TEGRA_GPIO_PP7); common_init(); spin_lock_init(&aic3008_power_ctl->spin_lock); aic3008_power_ctl->isPowerOn = true; return; }
static void aic3008_powerinit(void) { power_config("AUD_MCLK_EN", TEGRA_GPIO_PX7, INIT_OUTPUT_HIGH); power_config("AUD_AIC3008_RST#", TEGRA_GPIO_PW5, INIT_OUTPUT_HIGH); power_config("AUD_MCLK", TEGRA_GPIO_PW4, INIT_OUTPUT_LOW); sfio_deconfig("AUD_MCLK", TEGRA_GPIO_PW4); if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) { power_config("AUD_HP_GAIN_CONTROL", TEGRA_GPIO_PD1, INIT_OUTPUT_LOW); power_config("AUD_SPK_RST#", TEGRA_GPIO_PP6, INIT_OUTPUT_HIGH); power_config("AUD_HEADPHONE_EN", TEGRA_GPIO_PP7, INIT_OUTPUT_LOW); } else { power_config("AUD_SPK_EN", TEGRA_GPIO_PP6, INIT_OUTPUT_LOW); power_config("AUD_LINEOUT_EN", TEGRA_GPIO_PP7, INIT_OUTPUT_LOW); } common_init(); spin_lock_init(&aic3008_power_ctl->spin_lock); aic3008_power_ctl->isPowerOn = true; return; }