-/**************************************************************************
- *
- * wifi reference voltage control Func
- *
- *************************************************************************/
-int rockchip_wifi_ref_voltage(int on)
-{
- struct rfkill_wlan_data *mrfkill = g_rfkill;
- struct rksdmmc_gpio *vddio;
- struct regulator *ldo = NULL;
- int power = 0;
- bool toggle = false;
-
- LOG("%s: %d\n", __func__, on);
-
- if (mrfkill == NULL) {
- LOG("%s: rfkill-wlan driver has not Successful initialized\n", __func__);
- return -1;
- }
-
- if (!mrfkill->pdata->vref_ctrl_enble) {
- LOG("%s: wifi io reference voltage control is disabled.\n", __func__);
- return 0;
- }
-
- if (!rfkill_get_bt_power_state(&power, &toggle)) {
- if (power == 1) {
- LOG("%s: wifi shouldn't control io reference voltage, BT is running!\n", __func__);
- return 0;
- }
- }
-
- if (mrfkill->pdata->ioregulator.power_ctrl_by_pmu) {
- int ret = -1;
- char *ldostr;
- int level = mrfkill->pdata->ioregulator.enable;
- int voltage = 1000 * mrfkill->pdata->sdio_vol;
-
- ldostr = mrfkill->pdata->ioregulator.pmu_regulator;
- if (ldostr == NULL) {
- LOG("%s: wifi io reference voltage set to be controled by pmic, but which one?\n", __func__);
- return -1;
- }
- ldo = regulator_get(NULL, ldostr);
- if (ldo == NULL || IS_ERR(ldo)) {
- LOG("\n\n\n%s get ldo error,please mod this\n\n\n", __func__);
- return -1;
- } else {
- if (on == level) {
- if(cpu_is_rk3036() || cpu_is_rk312x())
- {
- /*regulator_set_voltage(ldo, voltage, voltage);
- LOG("%s: %s enabled, level = %d\n", __func__, ldostr, voltage);
- ret = regulator_enable(ldo);
- LOG("wifi turn on io reference voltage.\n");*/
- }else{
- regulator_set_voltage(ldo, voltage, voltage);
- LOG("%s: %s enabled, level = %d\n", __func__, ldostr, voltage);
- ret = regulator_enable(ldo);
- LOG("wifi turn on io reference voltage.\n");
- }
- } else {
- LOG("%s: %s disabled\n", __func__, ldostr);
- while (regulator_is_enabled(ldo) > 0) {
- ret = regulator_disable(ldo);
- }
- LOG("wifi shut off io reference voltage.\n");
- }
- regulator_put(ldo);
- msleep(100);
- }
- } else {
- vddio = &mrfkill->pdata->power_n;
-
- if (on){
- if (gpio_is_valid(vddio->io)) {
- gpio_set_value(vddio->io, vddio->enable);
- msleep(100);
- }
-
- LOG("wifi turn on io reference voltage.\n");
- }else{
- if (gpio_is_valid(vddio->io)) {
- gpio_set_value(vddio->io, !(vddio->enable));
- msleep(100);
- }
-
- LOG("wifi shut off io reference voltage.\n");
- }
- }
-
- return 0;
-}
-