From 863facb1bbefa19ddbc666fedbb76f65d46d7bc2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=AE=8B=E7=A7=80=E6=9D=B0?= Date: Sun, 3 Jun 2012 16:38:27 +0800 Subject: [PATCH] rk30 phone: modify headset detect request irq location --- drivers/headset_observe/rk_headset.c | 72 +++++++++--------- .../headset_observe/rk_headset_irq_hook_adc.c | 73 ++++++++++--------- 2 files changed, 74 insertions(+), 71 deletions(-) diff --git a/drivers/headset_observe/rk_headset.c b/drivers/headset_observe/rk_headset.c index bd2a1ddc653b..e9f39d805ed6 100755 --- a/drivers/headset_observe/rk_headset.c +++ b/drivers/headset_observe/rk_headset.c @@ -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: diff --git a/drivers/headset_observe/rk_headset_irq_hook_adc.c b/drivers/headset_observe/rk_headset_irq_hook_adc.c index 61e2841e3eeb..53d4a170d60c 100755 --- a/drivers/headset_observe/rk_headset_irq_hook_adc.c +++ b/drivers/headset_observe/rk_headset_irq_hook_adc.c @@ -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: -- 2.34.1