- 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]);
+ if (pdata->Headset_gpio != NULL) {
+ 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]);
+ }