13
13
#include <linux/gpio/consumer.h>
14
14
#include <linux/irq.h>
15
15
#include <linux/of_device.h>
16
- #include <linux/of_gpio.h>
17
16
#include <linux/of_graph.h>
18
17
#include <linux/phy/phy.h>
19
18
#include <linux/regulator/consumer.h>
@@ -265,7 +264,7 @@ struct exynos_dsi {
265
264
struct clk * * clks ;
266
265
struct regulator_bulk_data supplies [2 ];
267
266
int irq ;
268
- int te_gpio ;
267
+ struct gpio_desc * te_gpio ;
269
268
270
269
u32 pll_clk_rate ;
271
270
u32 burst_clk_rate ;
@@ -1298,14 +1297,14 @@ static void exynos_dsi_enable_irq(struct exynos_dsi *dsi)
1298
1297
{
1299
1298
enable_irq (dsi -> irq );
1300
1299
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 ));
1303
1302
}
1304
1303
1305
1304
static void exynos_dsi_disable_irq (struct exynos_dsi * dsi )
1306
1305
{
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 ));
1309
1308
1310
1309
disable_irq (dsi -> irq );
1311
1310
}
@@ -1335,29 +1334,20 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi,
1335
1334
int ret ;
1336
1335
int te_gpio_irq ;
1337
1336
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 ));
1345
1341
goto out ;
1346
1342
}
1347
1343
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 );
1355
1345
1356
1346
ret = request_threaded_irq (te_gpio_irq , exynos_dsi_te_irq_handler , NULL ,
1357
1347
IRQF_TRIGGER_RISING | IRQF_NO_AUTOEN , "TE" , dsi );
1358
1348
if (ret ) {
1359
1349
dev_err (dsi -> dev , "request interrupt failed with %d\n" , ret );
1360
- gpio_free (dsi -> te_gpio );
1350
+ gpiod_put (dsi -> te_gpio );
1361
1351
goto out ;
1362
1352
}
1363
1353
@@ -1367,10 +1357,9 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi,
1367
1357
1368
1358
static void exynos_dsi_unregister_te_irq (struct exynos_dsi * dsi )
1369
1359
{
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 );
1374
1363
}
1375
1364
}
1376
1365
@@ -1745,9 +1734,6 @@ static int exynos_dsi_probe(struct platform_device *pdev)
1745
1734
if (!dsi )
1746
1735
return - ENOMEM ;
1747
1736
1748
- /* To be checked as invalid one */
1749
- dsi -> te_gpio = - ENOENT ;
1750
-
1751
1737
init_completion (& dsi -> completed );
1752
1738
spin_lock_init (& dsi -> transfer_lock );
1753
1739
INIT_LIST_HEAD (& dsi -> transfer_list );
0 commit comments