rk30 phone: modify headset detect request irq location

This commit is contained in:
宋秀杰
2012-06-03 16:38:27 +08:00
parent 22e9b8cfde
commit 863facb1bb
2 changed files with 74 additions and 71 deletions

View File

@@ -453,42 +453,7 @@ static int rockchip_headsetobserve_probe(struct platform_device *pdev)
setup_timer(&headset->headset_timer, headset_timer_callback, (unsigned long)headset);
// headset->headset_timer.expires = jiffies + 1000;
// add_timer(&headset->headset_timer);
//------------------------------------------------------------------
if (pdata->Headset_gpio) {
ret = gpio_request(pdata->Headset_gpio, NULL);
if (ret)
goto failed_free;
gpio_pull_updown(pdata->Headset_gpio, PullDisable);
gpio_direction_input(pdata->Headset_gpio);
headset->irq[HEADSET] = gpio_to_irq(pdata->Headset_gpio);
if(pdata->headset_in_type == HEADSET_IN_HIGH)
headset->irq_type[HEADSET] = IRQF_TRIGGER_RISING;
else
headset->irq_type[HEADSET] = IRQF_TRIGGER_FALLING;
ret = request_irq(headset->irq[HEADSET], headset_interrupt, headset->irq_type[HEADSET], "headset_input", NULL);
if (ret)
goto failed_free;
enable_irq_wake(headset->irq[HEADSET]);
}
else
goto failed_free;
//------------------------------------------------------------------
if (pdata->Hook_gpio) {
ret = gpio_request(pdata->Hook_gpio , NULL);
if (ret)
goto failed_free;
gpio_pull_updown(pdata->Hook_gpio, PullDisable);
gpio_direction_input(pdata->Hook_gpio);
headset->irq[HOOK] = gpio_to_irq(pdata->Hook_gpio);
headset->irq_type[HOOK] = IRQF_TRIGGER_FALLING;
ret = request_irq(headset->irq[HOOK], Hook_interrupt, headset->irq_type[HOOK] , "headset_hook", NULL);
if (ret)
goto failed_free;
disable_irq(headset->irq[HOOK]);
}
//------------------------------------------------------------------
// Create and register the input driver.
headset->input_dev = input_allocate_device();
if (!headset->input_dev) {
@@ -534,6 +499,43 @@ static int rockchip_headsetobserve_probe(struct platform_device *pdev)
register_early_suspend(&hs_early_suspend);
#endif
//------------------------------------------------------------------
if (pdata->Headset_gpio) {
ret = gpio_request(pdata->Headset_gpio, NULL);
if (ret)
goto failed_free_dev;
gpio_pull_updown(pdata->Headset_gpio, PullDisable);
gpio_direction_input(pdata->Headset_gpio);
headset->irq[HEADSET] = gpio_to_irq(pdata->Headset_gpio);
if(pdata->headset_in_type == HEADSET_IN_HIGH)
headset->irq_type[HEADSET] = IRQF_TRIGGER_RISING;
else
headset->irq_type[HEADSET] = IRQF_TRIGGER_FALLING;
ret = request_irq(headset->irq[HEADSET], headset_interrupt, headset->irq_type[HEADSET], "headset_input", NULL);
if (ret)
goto failed_free_dev;
enable_irq_wake(headset->irq[HEADSET]);
}
else
goto failed_free_dev;
//------------------------------------------------------------------
if (pdata->Hook_gpio) {
ret = gpio_request(pdata->Hook_gpio , NULL);
if (ret)
goto failed_free_dev;
gpio_pull_updown(pdata->Hook_gpio, PullDisable);
gpio_direction_input(pdata->Hook_gpio);
headset->irq[HOOK] = gpio_to_irq(pdata->Hook_gpio);
headset->irq_type[HOOK] = IRQF_TRIGGER_FALLING;
ret = request_irq(headset->irq[HOOK], Hook_interrupt, headset->irq_type[HOOK] , "headset_hook", NULL);
if (ret)
goto failed_free_dev;
disable_irq(headset->irq[HOOK]);
}
//------------------------------------------------------------------
return 0;
failed_free_dev:

View File

@@ -437,42 +437,7 @@ static int rockchip_headsetobserve_probe(struct platform_device *pdev)
headset->isMic = 0;
setup_timer(&headset->headset_timer, headset_timer_callback, (unsigned long)headset);
//------------------------------------------------------------------
if (pdata->Headset_gpio) {
ret = pdata->headset_io_init(pdata->Headset_gpio, pdata->headset_gpio_info.iomux_name, pdata->headset_gpio_info.iomux_mode);
if (ret)
goto failed_free;
headset->irq[HEADSET] = gpio_to_irq(pdata->Headset_gpio);
if(pdata->headset_in_type == HEADSET_IN_HIGH)
headset->irq_type[HEADSET] = IRQF_TRIGGER_RISING;
else
headset->irq_type[HEADSET] = IRQF_TRIGGER_FALLING;
ret = request_irq(headset->irq[HEADSET], headset_interrupt, headset->irq_type[HEADSET], "headset_input", NULL);
if (ret)
goto failed_free;
enable_irq_wake(headset->irq[HEADSET]);
}
else
goto failed_free;
//------------------------------------------------------------------
if(pdata->Hook_adc_chn>=0 && 2>=pdata->Hook_adc_chn)
{
printk("hook adc register\n");
headset->client = adc_register(pdata->Hook_adc_chn, hook_adc_callback, (void *)headset);
if(!headset->client) {
printk("hook adc register error\n");
ret = -EINVAL;
goto failed_free;
}
setup_timer(&headset->hook_timer,
hook_timer_callback, (unsigned long)headset);
}
//------------------------------------------------------------------
// Create and register the input driver.
headset->input_dev = input_allocate_device();
if (!headset->input_dev) {
@@ -518,6 +483,42 @@ static int rockchip_headsetobserve_probe(struct platform_device *pdev)
register_early_suspend(&hs_early_suspend);
#endif
//------------------------------------------------------------------
if (pdata->Headset_gpio) {
ret = pdata->headset_io_init(pdata->Headset_gpio, pdata->headset_gpio_info.iomux_name, pdata->headset_gpio_info.iomux_mode);
if (ret)
goto failed_free_dev;
headset->irq[HEADSET] = gpio_to_irq(pdata->Headset_gpio);
if(pdata->headset_in_type == HEADSET_IN_HIGH)
headset->irq_type[HEADSET] = IRQF_TRIGGER_RISING;
else
headset->irq_type[HEADSET] = IRQF_TRIGGER_FALLING;
ret = request_irq(headset->irq[HEADSET], headset_interrupt, headset->irq_type[HEADSET], "headset_input", NULL);
if (ret)
goto failed_free_dev;
enable_irq_wake(headset->irq[HEADSET]);
}
else
goto failed_free_dev;
//------------------------------------------------------------------
if(pdata->Hook_adc_chn>=0 && 2>=pdata->Hook_adc_chn)
{
printk("hook adc register\n");
headset->client = adc_register(pdata->Hook_adc_chn, hook_adc_callback, (void *)headset);
if(!headset->client) {
printk("hook adc register error\n");
ret = -EINVAL;
goto failed_free_dev;
}
setup_timer(&headset->hook_timer,
hook_timer_callback, (unsigned long)headset);
}
//------------------------------------------------------------------
return 0;
failed_free_dev: