int fm_ant_power_fullseg(int on)
{
	int ret=0;

	DEBUG_PRINT("fm_ant_power_fullseg: %d", on);
	if(on)
	{
		fm_fullseg_antenna_sw_power_enable("8941_l17", 2850000, &reg_8941_l17);
		ret = gpio_request(gpios->fm_fullseg_ant_sw, "fm_fullseg_ant_sw");
		if (ret < 0) {
			pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
			return ret;
		}
		ret = gpio_direction_output(gpios->fm_fullseg_ant_sw, 0);
		if (ret < 0) {
			pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
			gpio_free(gpios->fm_fullseg_ant_sw);
			return ret;
		}
	}
	else
		fm_fullseg_antenna_sw_power_disable(reg_8941_l17);
	return ret;
}
int poweron_tuner(int on)
{
	int ret =0;

	if (on)
	{
		printk("[FULLSEG] %s, on\r\n", __func__); 
                ret = gpio_request(gpios->_1v8_en, "fullseg_1v8_en");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->_1v8_en, 1);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->_1v8_en);
                        return ret;
                }
#if 0
                ret = gpio_request(gpios->_1v1_en, "fullseg_1v1_en");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->_1v1_en, 1);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->_1v1_en);
                        return ret;
                }
#endif
                gpio_tlmm_config(GPIO_CFG(gpios->_1v1_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE);
                gpio_set_value(gpios->_1v1_en, 1);

	        ret = gpio_request(gpios->npdreg, "fullseg_npd_reg");
	        if (ret < 0) {
        	        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                	return ret;
	        }
        	ret = gpio_direction_output(gpios->npdreg, 1);
	        if (ret < 0) {
        	        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                	gpio_free(gpios->npdreg);
	                return ret;
        	}
		msleep(10); 

                ret = gpio_request(gpios->npdxtal, "fullseg_npd_xtal");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->npdxtal, 1);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->npdxtal);
                        return ret;
                }
                msleep(10); 


                ret = gpio_request(gpios->nrst, "fullseg_nrst");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->nrst, 1);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->nrst);
                        return ret;
                }

		
        	fm_fullseg_antenna_sw_power_enable("8941_l17", 2850000, &reg_8941_l17);

		gpio_free(gpios->fm_fullseg_ant_sw);
                ret = gpio_request(gpios->fm_fullseg_ant_sw, "fm_fullseg_ant_sw");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
	
                ret = gpio_direction_output(gpios->fm_fullseg_ant_sw, 1);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->fm_fullseg_ant_sw);
                        return ret;
                }
	}else{
		printk("[FULLSEG] %s, off\r\n", __func__);
		ret = gpio_request(gpios->fm_fullseg_ant_sw, "fm_fullseg_ant_sw");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->fm_fullseg_ant_sw, 0);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->fm_fullseg_ant_sw);
                        return ret;
                }

	        
	        fm_fullseg_antenna_sw_power_disable(reg_8941_l17);

                ret = gpio_request(gpios->nrst, "fullseg_nrst");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->nrst, 0);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->nrst);
                        return ret;
                }
		msleep(10); 

                ret = gpio_request(gpios->npdxtal, "fullseg_npd_xtal");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->npdxtal, 0);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->npdxtal);
                        return ret;
                }
                ret = gpio_request(gpios->npdreg, "fullseg_npd_reg");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->npdreg, 0);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->npdreg);
                        return ret;
                }
                msleep(10); 

                ret = gpio_request(gpios->_1v1_en, "fullseg_1v1_en");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->_1v1_en, 0);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->_1v1_en);
                        return ret;
                }

                ret = gpio_request(gpios->_1v8_en, "fullseg_1v8_en");
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
                        return ret;
                }
                ret = gpio_direction_output(gpios->_1v8_en, 0);
                if (ret < 0) {
                        pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
                        gpio_free(gpios->_1v8_en);
                        return ret;
                }


	}
	return ret;
}
int poweron_tuner(struct fullseg_platform_data *gpios, int on)
{
    int ret =0;

    if (on)
    {
        printk("[FULLSEG] %s, on\r\n", __func__);
        ret = gpio_direction_output(gpios->_1v8_en, 0);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->_1v8_en);
            return ret;
        }


        gpio_set_value(gpios->_1v8_en, 1);

        gpio_direction_output(gpios->_1v1_en, 0);

        gpio_set_value(gpios->_1v1_en, 1);


        printk("[FULLSEG] %s, set gpio state to low\r\n", __func__);
        ret = gpio_direction_output(gpios->nrst, 0);
        msleep(10);
        ret = gpio_direction_output(gpios->npdxtal, 0);
        ret = gpio_direction_output(gpios->npdreg, 0);
        msleep(10);

        ret = gpio_direction_output(gpios->npdreg, 1);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->npdreg);
            return ret;
        }
        msleep(10);

        ret = gpio_direction_output(gpios->npdxtal, 1);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->npdxtal);
            return ret;
        }
        msleep(10);

        ret = gpio_direction_output(gpios->nrst, 1);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->nrst);
            return ret;
        }


        fm_fullseg_antenna_sw_power_enable();

        gpio_free(gpios->fm_fullseg_ant_sw);
        ret = gpio_request(gpios->fm_fullseg_ant_sw, "fm_fullseg_ant_sw");
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_request failed %d\n", __func__, ret);
            return ret;
        }

        ret = gpio_direction_output(gpios->fm_fullseg_ant_sw, 1);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->fm_fullseg_ant_sw);
            return ret;
        }

    } else {
        printk("[FULLSEG] %s, off\r\n", __func__);
        ret = gpio_direction_output(gpios->fm_fullseg_ant_sw, 0);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->fm_fullseg_ant_sw);
            return ret;
        }

        fm_fullseg_antenna_sw_power_disable();

        ret = gpio_direction_output(gpios->nrst, 0);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->nrst);
            return ret;
        }
        msleep(10);

        ret = gpio_direction_output(gpios->npdxtal, 0);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->npdxtal);
            return ret;
        }
        ret = gpio_direction_output(gpios->npdreg, 0);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->npdreg);
            return ret;
        }


        gpio_direction_output(gpios->_1v1_en, 0);
        gpio_set_value(gpios->_1v1_en, 0);


        ret = gpio_direction_output(gpios->_1v8_en, 0);
        if (ret < 0) {
            pr_err("[FULLSEG] %s: gpio_direction_output failed %d\n", __func__, ret);
            gpio_free(gpios->_1v8_en);
            return ret;
        }
        gpio_set_value(gpios->_1v8_en, 0);
        mdelay(10);

    }

    return ret;

}