diff --git a/drivers/headset_observe/rk_headset.c b/drivers/headset_observe/rk_headset.c index aa49bc94147c..eb8e7862315c 100644 --- a/drivers/headset_observe/rk_headset.c +++ b/drivers/headset_observe/rk_headset.c @@ -113,15 +113,15 @@ void Modem_Mic_release(void) } #endif -static int read_gpio(int gpio) +static int read_gpio(struct gpio_desc *gpio) { int i, level; for (i = 0; i < 3; i++) { - level = gpio_get_value(gpio); + level = gpiod_get_value(gpio); if (level < 0) { pr_warn("%s:get pin level again,pin=%d,i=%d\n", - __func__, gpio, i); + __func__, desc_to_gpio(gpio), i); msleep(1); continue; } else @@ -412,7 +412,7 @@ int rk_headset_probe(struct platform_device *pdev, register_early_suspend(&hs_early_suspend); #endif if (pdata->headset_gpio) { - headset->irq[HEADSET] = gpio_to_irq(pdata->headset_gpio); + headset->irq[HEADSET] = gpiod_to_irq(pdata->headset_gpio); if (pdata->headset_insert_type == HEADSET_IN_HIGH) headset->irq_type[HEADSET] = IRQF_TRIGGER_RISING; else @@ -431,7 +431,7 @@ int rk_headset_probe(struct platform_device *pdev, goto failed; } if (pdata->hook_gpio) { - headset->irq[HOOK] = gpio_to_irq(pdata->hook_gpio); + headset->irq[HOOK] = gpiod_to_irq(pdata->hook_gpio); headset->irq_type[HOOK] = pdata->hook_down_type == HOOK_DOWN_HIGH ? IRQF_TRIGGER_RISING : diff --git a/drivers/headset_observe/rk_headset.h b/drivers/headset_observe/rk_headset.h index c10961ce66f8..b1bdd663724d 100644 --- a/drivers/headset_observe/rk_headset.h +++ b/drivers/headset_observe/rk_headset.h @@ -10,11 +10,11 @@ struct rk_headset_pdata { /* heaset about */ - unsigned int headset_gpio; + struct gpio_desc *headset_gpio; /* Headphones into the state level */ unsigned int headset_insert_type; /* hook about */ - unsigned int hook_gpio; + struct gpio_desc *hook_gpio; /* Hook key down status */ unsigned int hook_down_type; #ifdef CONFIG_MODEM_MIC_SWITCH diff --git a/drivers/headset_observe/rk_headset_irq_hook_adc.c b/drivers/headset_observe/rk_headset_irq_hook_adc.c index f6cc50647fce..7ab114f72be6 100644 --- a/drivers/headset_observe/rk_headset_irq_hook_adc.c +++ b/drivers/headset_observe/rk_headset_irq_hook_adc.c @@ -120,10 +120,10 @@ static irqreturn_t headset_interrupt(int irq, void *dev_id) headset_info->heatset_irq_working = BUSY; msleep(150); for (i = 0; i < 3; i++) { - level = gpio_get_value(pdata->headset_gpio); + level = gpiod_get_value(pdata->headset_gpio); if (level < 0) { pr_err("%s:get pin level again,pin=%d,i=%d\n", - __func__, pdata->headset_gpio, i); + __func__, desc_to_gpio(pdata->headset_gpio), i); msleep(1); continue; } @@ -134,7 +134,7 @@ static irqreturn_t headset_interrupt(int irq, void *dev_id) goto out; } else { pr_err("%s:get pin level again, pin=%d,i=%d\n", - __func__, pdata->headset_gpio, i); + __func__, desc_to_gpio(pdata->headset_gpio), i); } old_status = headset_info->headset_status; @@ -328,8 +328,8 @@ static void hook_work_callback(struct work_struct *work) headset->heatset_irq_working == BUSY || headset->heatset_irq_working == WAIT || (pdata->headset_insert_type ? - gpio_get_value(pdata->headset_gpio) == 0 : - gpio_get_value(pdata->headset_gpio) > 0)) { + gpiod_get_value(pdata->headset_gpio) == 0 : + gpiod_get_value(pdata->headset_gpio) > 0)) { DBG("Headset is out or waiting for headset is in or out, after same time check HOOK key\n"); goto out; } @@ -349,8 +349,8 @@ static void hook_work_callback(struct work_struct *work) headset->heatset_irq_working == BUSY || headset->heatset_irq_working == WAIT || (pdata->headset_insert_type ? - gpio_get_value(pdata->headset_gpio) == 0 : - gpio_get_value(pdata->headset_gpio) > 0)) { + gpiod_get_value(pdata->headset_gpio) == 0 : + gpiod_get_value(pdata->headset_gpio) > 0)) { printk("headset is out, HOOK status must discard\n"); goto out; } else { @@ -436,7 +436,7 @@ int rk_headset_adc_probe(struct platform_device *pdev, if (pdata->headset_gpio) { unsigned long irq_type; - headset->irq[HEADSET] = gpio_to_irq(pdata->headset_gpio); + headset->irq[HEADSET] = gpiod_to_irq(pdata->headset_gpio); if (pdata->headset_insert_type == HEADSET_IN_HIGH) irq_type = IRQF_TRIGGER_HIGH; else diff --git a/drivers/headset_observe/rockchip_headset_core.c b/drivers/headset_observe/rockchip_headset_core.c index 3362dc584c35..2ef48f7d3a17 100644 --- a/drivers/headset_observe/rockchip_headset_core.c +++ b/drivers/headset_observe/rockchip_headset_core.c @@ -41,7 +41,6 @@ static int rockchip_headset_probe(struct platform_device *pdev) struct device_node *node = pdev->dev.of_node; struct rk_headset_pdata *pdata; int ret; - enum of_gpio_flags flags; pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); if (!pdata) { @@ -51,33 +50,24 @@ static int rockchip_headset_probe(struct platform_device *pdev) pdata_info = pdata; /* headset */ - ret = of_get_named_gpio_flags(node, "headset_gpio", 0, &flags); - if (ret < 0) { + pdata->headset_gpio = devm_gpiod_get(&pdev->dev, "headset", GPIOD_IN); + if (IS_ERR(pdata->headset_gpio)) { dev_err(&pdev->dev, "Can not read property headset_gpio\n"); + ret = PTR_ERR(pdata->headset_gpio); goto err; } else { - pdata->headset_gpio = ret; - ret = devm_gpio_request(&pdev->dev, pdata->headset_gpio, - "headset_gpio"); - if (ret < 0) { - dev_err(&pdev->dev, "headset_gpio request fail\n"); - goto err; - } - ret = gpio_direction_input(pdata->headset_gpio); - if (ret < 0) { - dev_err(&pdev->dev, - "headset_gpio set direction fail\n"); - goto err; - } - pdata->headset_insert_type = (flags & OF_GPIO_ACTIVE_LOW) ? - HEADSET_IN_LOW : - HEADSET_IN_HIGH; + pdata->headset_insert_type = gpiod_is_active_low(pdata->headset_gpio) ? + HEADSET_IN_LOW : + HEADSET_IN_HIGH; } /* hook */ - ret = of_get_named_gpio_flags(node, "hook_gpio", 0, &pdata->hook_gpio); - if (ret < 0) { + pdata->hook_gpio = devm_gpiod_get_optional(&pdev->dev, "hook", GPIOD_IN); + if (IS_ERR(pdata->hook_gpio)) { + ret = PTR_ERR(pdata->hook_gpio); + goto err; + } + if (!pdata->hook_gpio) { dev_warn(&pdev->dev, "Can not read property hook_gpio\n"); - pdata->hook_gpio = 0; /* adc mode */ pdata->chan = iio_channel_get(&pdev->dev, NULL); if (IS_ERR(pdata->chan)) { @@ -92,19 +82,6 @@ static int rockchip_headset_probe(struct platform_device *pdev) "have not set hook_down_type,set >hook< insert type low level default\n"); pdata->hook_down_type = 0; } - ret = devm_gpio_request(&pdev->dev, pdata->hook_gpio, - "hook_gpio"); - if (ret < 0) { - dev_warn(&pdev->dev, - "devm_gpio_request hook_gpio request ERROR\n"); - goto err; - } - ret = gpio_direction_input(pdata->hook_gpio); - if (ret < 0) { - dev_warn(&pdev->dev, - "gpio_direction_input hook_gpio set ERROR\n"); - goto err; - } } #ifdef CONFIG_MODEM_MIC_SWITCH