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) {
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:
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) {
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: