コード例 #1
0
/**********************************************************
 ** Function: LineOut Detection configuration function
 ** Parameter: none
 ** Return value: IRQ_HANDLED
 **
 ************************************************************/
static int lineout_config_gpio()
{
	int ret;

	printk("HEADSET: Config LineOut detection gpio\n");

	ret = gpio_request(hs_data->lineout_gpio, "lineout_int");
	ret = gpio_direction_input(hs_data->lineout_gpio);

	ret = request_irq(gpio_to_irq(hs_data->lineout_gpio),
			&lineout_irq_handler,
			IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING,
			"lineout_int", 0);

	if(!is_support_dock()){
		printk("%s: Not support dock\n", __func__);
		lineout_alive = false;
		switch_set_state(&hs_data->ldev, NO_DEVICE);
	}else if (gpio_get_value(LINEOUT_GPIO) == 0){
		lineout_alive = true;
		audio_stand_route(true);
		switch_set_state(&hs_data->ldev, LINEOUT_IN);
	}else{
		lineout_alive = false;
		audio_stand_route(false);
		switch_set_state(&hs_data->ldev, NO_DEVICE);
	}

	return 0;
}
コード例 #2
0
static void lineout_work_queue(struct work_struct *work)
{
	msleep(300);

	if(!is_support_dock()){
		printk("%s: Not support dock\n",__func__);
		lineout_alive = false;
		switch_set_state(&hs_data->ldev, NO_DEVICE);
		return;
	}

	/* check if audio stand is inserted */
	if(!isAudioStandIn()){
		printk("LINEOUT: No Audio Stand in\n");
		return;
	}

	if (gpio_get_value(LINEOUT_GPIO) == 0){
		printk("LINEOUT: LineOut inserted\n");
		lineout_alive = true;
		audio_stand_route(true);
		switch_set_state(&hs_data->ldev, LINEOUT_IN);
	}else if(gpio_get_value(LINEOUT_GPIO)){
		printk("LINEOUT: LineOut removed\n");
		lineout_alive = false;
		audio_stand_route(false);
		switch_set_state(&hs_data->ldev, NO_DEVICE);
	}

}
コード例 #3
0
static void lineout_work_queue(struct work_struct *work)
{
	msleep(300);
	/* check if audio stand is inserted */
	if(!isAudioStandIn()){
		printk("LINEOUT: No Audio Stand in\n");
		return;
	}

	if (gpio_get_value(LINEOUT_GPIO) == 0){
		printk("LINEOUT: LineOut inserted\n");
		lineout_alive = true;
		audio_stand_route(true);
	}else if(gpio_get_value(LINEOUT_GPIO)){
		printk("LINEOUT: LineOut removed\n");
		lineout_alive = false;
		audio_stand_route(false);
	}

}
コード例 #4
0
/**********************************************************
**  Function: LineOut Detection configuration function
**  Parameter: none
**  Return value: IRQ_HANDLED
**
************************************************************/
static int lineout_config_gpio()
{
	int ret;

	printk("HEADSET: Config LineOut detection gpio\n");

	tegra_gpio_enable(LINEOUT_GPIO);
	ret = gpio_request(LINEOUT_GPIO, "lineout_int");
	ret = gpio_direction_input(LINEOUT_GPIO);
	ret = request_irq(gpio_to_irq(LINEOUT_GPIO), &lineout_irq_handler,
			IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING, "lineout_int", 0);

	if (gpio_get_value(LINEOUT_GPIO) == 0){
		lineout_alive = true;
		audio_stand_route(true);
	}else{
		lineout_alive = false;
		audio_stand_route(false);
	}

	return 0;
}