static unsigned int msm_bahama_shutdown_power(int value) { int rc = 0; #if defined (CONFIG_ARIMA_BT_DBG_INFO) printk(KERN_INFO "[BT_DBG] - msm_bahama_shutdown_power(), value = %d", value); printk(KERN_INFO "[BT_DBG] - vreg_disable(\"msme1\") by msm_bahama_shutdown_power() \n"); printk(KERN_INFO "[BT_DBG] - \" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \" \n"); printk(KERN_INFO "[BT_DBG] - \" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \" \n"); printk(KERN_INFO "[BT_DBG] - \" !!!!!!!!!!!!!!!!!!! BT ERROR !!!!!!!!!!!!!!!!!!!!!!! \" \n"); printk(KERN_INFO "[BT_DBG] - \" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \" \n"); printk(KERN_INFO "[BT_DBG] - \" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \" \n"); #endif if (IS_ERR_OR_NULL(reg_s3)) { rc = reg_s3 ? PTR_ERR(reg_s3) : -ENODEV; goto out; } rc = regulator_disable(reg_s3); if (rc) { pr_err("%s: could not disable regulator: %d\n", __func__, rc); goto out; } //+ murphy 2011.11.07 #if 1 rc = bt_set_gpio(0); if (rc) { pr_err("%s: bt_set_gpio = %d\n", __func__, rc); goto reg_enable; } gpio_free(gpio_bt_sys_rest_en); #else if (value == BAHAMA_ID) { rc = bt_set_gpio(0); if (rc) { pr_err("%s: bt_set_gpio = %d\n", __func__, rc); goto reg_enable; } gpio_free(gpio_bt_sys_rest_en); } #endif //- murphy 2011.11.07 regulator_put(reg_s3); reg_s3 = NULL; return 0; reg_enable: regulator_enable(reg_s3); out: return rc; }
static unsigned int msm_bahama_shutdown_power(int value) { int rc = 0; if (IS_ERR_OR_NULL(reg_s3)) { rc = reg_s3 ? PTR_ERR(reg_s3) : -ENODEV; goto out; } rc = regulator_disable(reg_s3); if (rc) { pr_err("%s: could not disable regulator: %d\n", __func__, rc); goto out; } if (value == BAHAMA_ID) { rc = bt_set_gpio(0); if (rc) { pr_err("%s: bt_set_gpio = %d\n", __func__, rc); goto reg_enable; } gpio_free(gpio_bt_sys_rest_en); } regulator_put(reg_s3); reg_s3 = NULL; return 0; reg_enable: regulator_enable(reg_s3); out: return rc; }
static void fm_radio_shutdown(struct marimba_fm_platform_data *pdata) { int rc; const char *id = "FMPW"; /* Releasing the GPIO line used by FM */ uint32_t irqcfg = GPIO_CFG(FM_GPIO, 0, GPIO_CFG_INPUT, GPIO_CFG_PULL_UP, GPIO_CFG_2MA); rc = gpio_tlmm_config(irqcfg, GPIO_CFG_ENABLE); if (rc) pr_err("%s: gpio_tlmm_config(%#x)=%d\n", __func__, irqcfg, rc); /* Releasing the 1.8V Regulator */ if (!IS_ERR_OR_NULL(fm_regulator)) { rc = regulator_disable(fm_regulator); if (rc) pr_err("%s: could not disable regulator: %d\n", __func__, rc); regulator_put(fm_regulator); fm_regulator = NULL; } /* Voting off the clock */ rc = pmapp_clock_vote(id, PMAPP_CLOCK_ID_D1, PMAPP_CLOCK_VOTE_OFF); if (rc < 0) pr_err("%s: voting off failed with :(%d)\n", __func__, rc); rc = bt_set_gpio(0); if (rc) pr_err("%s: bt_set_gpio = %d", __func__, rc); }
static unsigned int msm_bahama_setup_power(void) { int rc = 0; reg_s3 = regulator_get(NULL, "msme1"); if (IS_ERR(reg_s3)) { rc = PTR_ERR(reg_s3); pr_err("%s: could not get regulator: %d\n", __func__, rc); goto out; } rc = regulator_set_voltage(reg_s3, 1800000, 1800000); if (rc < 0) { pr_err("%s: could not set voltage: %d\n", __func__, rc); goto reg_fail; } rc = regulator_enable(reg_s3); if (rc < 0) { pr_err("%s: could not enable regulator: %d\n", __func__, rc); goto reg_fail; } //Cellon add start, Eagle.Yin, 2012/12/27 for debug WCN2243 code //if (machine_is_msm7627a_qrd1()) gpio_tlmm_config(GPIO_CFG(gpio_bt_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); //Cellon add end, Eagle.Yin, 2012/12/27 for debug WCN2243 code /*setup Bahama_sys_reset_n*/ rc = gpio_request(gpio_bt_sys_rest_en, "bahama sys_rst_n"); if (rc < 0) { pr_err("%s: gpio_request %d = %d\n", __func__, gpio_bt_sys_rest_en, rc); goto reg_disable; } rc = bt_set_gpio(1); if (rc < 0) { pr_err("%s: bt_set_gpio %d = %d\n", __func__, gpio_bt_sys_rest_en, rc); goto gpio_fail; } return rc; gpio_fail: gpio_free(gpio_bt_sys_rest_en); reg_disable: regulator_disable(reg_s3); reg_fail: regulator_put(reg_s3); out: reg_s3 = NULL; return rc; }
static int fm_radio_setup(struct marimba_fm_platform_data *pdata) { int rc = 0; const char *id = "FMPW"; uint32_t irqcfg; struct marimba config = { .mod_id = SLAVE_ID_BAHAMA}; u8 value; /* Voting for 1.8V Regulator */ fm_regulator = regulator_get(NULL , "msme1"); if (IS_ERR(fm_regulator)) { rc = PTR_ERR(fm_regulator); pr_err("%s: could not get regulator: %d\n", __func__, rc); goto out; } /* Set the voltage level to 1.8V */ rc = regulator_set_voltage(fm_regulator, 1800000, 1800000); if (rc < 0) { pr_err("%s: could not set voltage: %d\n", __func__, rc); goto reg_free; } /* Enabling the 1.8V regulator */ rc = regulator_enable(fm_regulator); if (rc) { pr_err("%s: could not enable regulator: %d\n", __func__, rc); goto reg_free; } /* Voting for 19.2MHz clock */ rc = pmapp_clock_vote(id, PMAPP_CLOCK_ID_D1, PMAPP_CLOCK_VOTE_ON); if (rc < 0) { pr_err("%s: clock vote failed with :(%d)\n", __func__, rc); goto reg_disable; } rc = bt_set_gpio(1); if (rc) { pr_err("%s: bt_set_gpio = %d", __func__, rc); goto gpio_deconfig; } /*re-write FM Slave Id, after reset*/ value = BAHAMA_SLAVE_ID_FM_ADDR; rc = marimba_write_bit_mask(&config, BAHAMA_SLAVE_ID_FM_REG, &value, 1, 0xFF); if (rc < 0) { pr_err("%s: FM Slave ID rewrite Failed = %d", __func__, rc); goto gpio_deconfig; } /* Configuring the FM GPIO */ irqcfg = GPIO_CFG(FM_GPIO, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA); rc = gpio_tlmm_config(irqcfg, GPIO_CFG_ENABLE); if (rc) { pr_err("%s: gpio_tlmm_config(%#x)=%d\n", __func__, irqcfg, rc); goto gpio_deconfig; } return 0; gpio_deconfig: pmapp_clock_vote(id, PMAPP_CLOCK_ID_D1, PMAPP_CLOCK_VOTE_OFF); bt_set_gpio(0); reg_disable: regulator_disable(fm_regulator); reg_free: regulator_put(fm_regulator); fm_regulator = NULL; out: return rc; };
&value, sizeof(v20_init[i].value), v20_init[i].mask); if (rc < 0) { pr_err("%s: reg %d write failed: %d\n", __func__, v20_init[i].reg, rc); return rc; } pr_debug("%s: reg 0x%02x value 0x%02x" " mask 0x%02x\n", __func__, v20_init[i].reg, v20_init[i].value, v20_init[i].mask); } } } rc = bt_set_gpio(0); if (rc) { pr_err("%s: bt_set_gpio = %d\n", __func__, rc); } pr_debug("core type: %d\n", type); return rc; } static int bluetooth_power(int on) { int pin, rc = 0; const char *id = "BTPW"; int cid = 0;
static unsigned int msm_bahama_setup_power(void) { int rc = 0; #if defined(CONFIG_QCT2243_V21) reg_s3 = regulator_get(NULL, "bt"); #else reg_s3 = regulator_get(NULL, "msme1"); #endif if (IS_ERR(reg_s3)) { rc = PTR_ERR(reg_s3); pr_err("%s: could not get regulator: %d\n", __func__, rc); goto out; } #if defined(CONFIG_QCT2243_V21) rc = regulator_set_voltage(reg_s3, 3300000, 3300000); #else rc = regulator_set_voltage(reg_s3, 1800000, 1800000); #endif if (rc < 0) { pr_err("%s: could not set voltage: %d\n", __func__, rc); goto reg_fail; } rc = regulator_enable(reg_s3); if (rc < 0) { pr_err("%s: could not enable regulator: %d\n", __func__, rc); goto reg_fail; } #if defined(CONFIG_QCT2243_V21) && defined(CONFIG_CPLD) #else gpio_tlmm_config(GPIO_CFG(gpio_bt_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); rc = gpio_request(gpio_bt_sys_rest_en, "bahama sys_rst_n"); if (rc < 0) { pr_err("%s: gpio_request %d = %d\n", __func__, gpio_bt_sys_rest_en, rc); goto reg_disable; } #endif rc = bt_set_gpio(1); if (rc < 0) { pr_err("%s: bt_set_gpio %d = %d\n", __func__, gpio_bt_sys_rest_en, rc); goto gpio_fail; } return rc; gpio_fail: #if defined(CONFIG_QCT2243_V21) && defined(CONFIG_CPLD) #else gpio_free(gpio_bt_sys_rest_en); reg_disable: #endif regulator_disable(reg_s3); reg_fail: regulator_put(reg_s3); out: reg_s3 = NULL; return rc; }
static unsigned int msm_bahama_setup_power(void) { int rc = 0; #if defined (CONFIG_ARIMA_BT_DBG_INFO) printk(KERN_INFO "[BT_DBG] - msm_bahama_setup_power() \n"); printk(KERN_INFO "[BT_DBG] - vreg_enable(\"msme1\") by msm_bahama_setup_power() \n"); #endif //+ murphy 2011.11.07 //enable touch ic 2.8v power, or I2C bus will be drop down by some reason. #if 0 #ifdef CONFIG_TOUCHSCREEN_ELAN_EKTF2040 printk(KERN_INFO "[BT_DBG] - Power on touch IC (EKTF2040) \n"); elan_ktf2k_ts_power(1); #endif #endif //- murphy 2011.11.07 reg_s3 = regulator_get(NULL, "msme1"); if (IS_ERR(reg_s3)) { rc = PTR_ERR(reg_s3); pr_err("%s: could not get regulator: %d\n", __func__, rc); goto out; } rc = regulator_set_voltage(reg_s3, 1800000, 1800000); if (rc < 0) { pr_err("%s: could not set voltage: %d\n", __func__, rc); goto reg_fail; } rc = regulator_enable(reg_s3); if (rc < 0) { pr_err("%s: could not enable regulator: %d\n", __func__, rc); goto reg_fail; } gpio_tlmm_config(GPIO_CFG(gpio_bt_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); /*setup Bahama_sys_reset_n*/ rc = gpio_request(gpio_bt_sys_rest_en, "bahama sys_rst_n"); if (rc < 0) { pr_err("%s: gpio_request %d = %d\n", __func__, gpio_bt_sys_rest_en, rc); goto reg_disable; } rc = bt_set_gpio(1); if (rc < 0) { pr_err("%s: bt_set_gpio %d = %d\n", __func__, gpio_bt_sys_rest_en, rc); goto gpio_fail; } return rc; gpio_fail: gpio_free(gpio_bt_sys_rest_en); reg_disable: regulator_disable(reg_s3); reg_fail: regulator_put(reg_s3); out: reg_s3 = NULL; return rc; }