1313#include <linux/gpio/consumer.h>
1414#include <linux/irq.h>
1515#include <linux/of_device.h>
16- #include <linux/of_gpio.h>
1716#include <linux/of_graph.h>
1817#include <linux/phy/phy.h>
1918#include <linux/regulator/consumer.h>
@@ -265,7 +264,7 @@ struct exynos_dsi {
265264 struct clk * * clks ;
266265 struct regulator_bulk_data supplies [2 ];
267266 int irq ;
268- int te_gpio ;
267+ struct gpio_desc * te_gpio ;
269268
270269 u32 pll_clk_rate ;
271270 u32 burst_clk_rate ;
@@ -1298,14 +1297,14 @@ static void exynos_dsi_enable_irq(struct exynos_dsi *dsi)
12981297{
12991298 enable_irq (dsi -> irq );
13001299
1301- if (gpio_is_valid ( dsi -> te_gpio ) )
1302- enable_irq (gpio_to_irq (dsi -> te_gpio ));
1300+ if (dsi -> te_gpio )
1301+ enable_irq (gpiod_to_irq (dsi -> te_gpio ));
13031302}
13041303
13051304static void exynos_dsi_disable_irq (struct exynos_dsi * dsi )
13061305{
1307- if (gpio_is_valid ( dsi -> te_gpio ) )
1308- disable_irq (gpio_to_irq (dsi -> te_gpio ));
1306+ if (dsi -> te_gpio )
1307+ disable_irq (gpiod_to_irq (dsi -> te_gpio ));
13091308
13101309 disable_irq (dsi -> irq );
13111310}
@@ -1335,29 +1334,20 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi,
13351334 int ret ;
13361335 int te_gpio_irq ;
13371336
1338- dsi -> te_gpio = of_get_named_gpio (panel -> of_node , "te-gpios" , 0 );
1339- if (dsi -> te_gpio == - ENOENT )
1340- return 0 ;
1341-
1342- if (!gpio_is_valid (dsi -> te_gpio )) {
1343- ret = dsi -> te_gpio ;
1344- dev_err (dsi -> dev , "cannot get te-gpios, %d\n" , ret );
1337+ dsi -> te_gpio = devm_gpiod_get_optional (dsi -> dev , "te" , GPIOD_IN );
1338+ if (IS_ERR (dsi -> te_gpio )) {
1339+ dev_err (dsi -> dev , "gpio request failed with %ld\n" ,
1340+ PTR_ERR (dsi -> te_gpio ));
13451341 goto out ;
13461342 }
13471343
1348- ret = gpio_request (dsi -> te_gpio , "te_gpio" );
1349- if (ret ) {
1350- dev_err (dsi -> dev , "gpio request failed with %d\n" , ret );
1351- goto out ;
1352- }
1353-
1354- te_gpio_irq = gpio_to_irq (dsi -> te_gpio );
1344+ te_gpio_irq = gpiod_to_irq (dsi -> te_gpio );
13551345
13561346 ret = request_threaded_irq (te_gpio_irq , exynos_dsi_te_irq_handler , NULL ,
13571347 IRQF_TRIGGER_RISING | IRQF_NO_AUTOEN , "TE" , dsi );
13581348 if (ret ) {
13591349 dev_err (dsi -> dev , "request interrupt failed with %d\n" , ret );
1360- gpio_free (dsi -> te_gpio );
1350+ gpiod_put (dsi -> te_gpio );
13611351 goto out ;
13621352 }
13631353
@@ -1367,10 +1357,9 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi,
13671357
13681358static void exynos_dsi_unregister_te_irq (struct exynos_dsi * dsi )
13691359{
1370- if (gpio_is_valid (dsi -> te_gpio )) {
1371- free_irq (gpio_to_irq (dsi -> te_gpio ), dsi );
1372- gpio_free (dsi -> te_gpio );
1373- dsi -> te_gpio = - ENOENT ;
1360+ if (dsi -> te_gpio ) {
1361+ free_irq (gpiod_to_irq (dsi -> te_gpio ), dsi );
1362+ gpiod_put (dsi -> te_gpio );
13741363 }
13751364}
13761365
@@ -1745,9 +1734,6 @@ static int exynos_dsi_probe(struct platform_device *pdev)
17451734 if (!dsi )
17461735 return - ENOMEM ;
17471736
1748- /* To be checked as invalid one */
1749- dsi -> te_gpio = - ENOENT ;
1750-
17511737 init_completion (& dsi -> completed );
17521738 spin_lock_init (& dsi -> transfer_lock );
17531739 INIT_LIST_HEAD (& dsi -> transfer_list );
0 commit comments