summaryrefslogtreecommitdiff
path: root/drivers/headset_observe/rk_headset.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/headset_observe/rk_headset.c')
-rw-r--r--[-rwxr-xr-x]drivers/headset_observe/rk_headset.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/drivers/headset_observe/rk_headset.c b/drivers/headset_observe/rk_headset.c
index e6b6a289a548..522ba44340ed 100755..100644
--- a/drivers/headset_observe/rk_headset.c
+++ b/drivers/headset_observe/rk_headset.c
@@ -373,13 +373,14 @@ int rk_headset_probe(struct platform_device *pdev,struct rk_headset_pdata *pdata
{
int ret;
struct headset_priv *headset;
-
+
headset = kzalloc(sizeof(struct headset_priv), GFP_KERNEL);
if (headset == NULL) {
dev_err(&pdev->dev, "failed to allocate driver data\n");
return -ENOMEM;
}
+ headset_info = headset;
headset->pdata = pdata;
headset->headset_status = HEADSET_OUT;
headset->hook_status = HOOK_UP;
@@ -429,42 +430,36 @@ int rk_headset_probe(struct platform_device *pdev,struct rk_headset_pdata *pdata
hs_early_suspend.level = ~0x0;
register_early_suspend(&hs_early_suspend);
#endif
- //------------------------------------------------------------------
if (pdata->headset_gpio) {
- if(!pdata->headset_gpio){
- dev_err(&pdev->dev,"failed init headset,please full hook_io_init function in board\n");
- goto failed_free_dev;
- }
-
headset->irq[HEADSET] = gpio_to_irq(pdata->headset_gpio);
if(pdata->headset_insert_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)
+ ret = devm_request_irq(&pdev->dev, headset->irq[HEADSET], headset_interrupt, headset->irq_type[HEADSET], "headset_input", NULL);
+ if (ret)
goto failed_free_dev;
if (pdata->headset_wakeup)
enable_irq_wake(headset->irq[HEADSET]);
- }
- else
+ } else {
+ dev_err(&pdev->dev, "failed init headset,please full hook_io_init function in board\n");
goto failed_free_dev;
-//------------------------------------------------------------------
+ }
+
if (pdata->hook_gpio) {
headset->irq[HOOK] = gpio_to_irq(pdata->hook_gpio);
headset->irq_type[HOOK] = pdata->hook_down_type == HOOK_DOWN_HIGH ? IRQF_TRIGGER_RISING : IRQF_TRIGGER_FALLING;
-
- ret = request_irq(headset->irq[HOOK], hook_interrupt, headset->irq_type[HOOK] , "headset_hook", NULL);
- if (ret)
+
+ ret = devm_request_irq(&pdev->dev, headset->irq[HOOK], hook_interrupt, headset->irq_type[HOOK], "headset_hook", NULL);
+ if (ret)
goto failed_free_dev;
disable_irq(headset->irq[HOOK]);
}
-//------------------------------------------------------------------
- headset_info = headset;
- schedule_delayed_work(&headset->h_delayed_work[HEADSET], msecs_to_jiffies(500));
- return 0;
-
+
+ schedule_delayed_work(&headset->h_delayed_work[HEADSET], msecs_to_jiffies(500));
+ return 0;
+
failed_free_dev:
platform_set_drvdata(pdev, NULL);
input_free_device(headset->input_dev);