forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/drivers/video/backlight/l4f00242t03.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * l4f00242t03.c -- support for Epson L4F00242T03 LCD
34 *
....@@ -5,10 +6,6 @@
56 *
67 * Copyright (c) 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>
78 * Inspired by Marek Vasut work in l4f00242t03.c
8
- *
9
- * This program is free software; you can redistribute it and/or modify
10
- * it under the terms of the GNU General Public License version 2 as
11
- * published by the Free Software Foundation.
129 */
1310
1411 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
....@@ -17,13 +14,11 @@
1714 #include <linux/kernel.h>
1815 #include <linux/delay.h>
1916 #include <linux/module.h>
20
-#include <linux/gpio.h>
17
+#include <linux/gpio/consumer.h>
2118 #include <linux/lcd.h>
2219 #include <linux/slab.h>
2320 #include <linux/regulator/consumer.h>
24
-
2521 #include <linux/spi/spi.h>
26
-#include <linux/spi/l4f00242t03.h>
2722
2823 struct l4f00242t03_priv {
2924 struct spi_device *spi;
....@@ -31,16 +26,18 @@
3126 int lcd_state;
3227 struct regulator *io_reg;
3328 struct regulator *core_reg;
29
+ struct gpio_desc *reset;
30
+ struct gpio_desc *enable;
3431 };
3532
36
-static void l4f00242t03_reset(unsigned int gpio)
33
+static void l4f00242t03_reset(struct gpio_desc *gpiod)
3734 {
3835 pr_debug("l4f00242t03_reset.\n");
39
- gpio_set_value(gpio, 1);
36
+ gpiod_set_value(gpiod, 1);
4037 mdelay(100);
41
- gpio_set_value(gpio, 0);
38
+ gpiod_set_value(gpiod, 0);
4239 mdelay(10); /* tRES >= 100us */
43
- gpio_set_value(gpio, 1);
40
+ gpiod_set_value(gpiod, 1);
4441 mdelay(20);
4542 }
4643
....@@ -48,7 +45,6 @@
4845
4946 static void l4f00242t03_lcd_init(struct spi_device *spi)
5047 {
51
- struct l4f00242t03_pdata *pdata = dev_get_platdata(&spi->dev);
5248 struct l4f00242t03_priv *priv = spi_get_drvdata(spi);
5349 const u16 cmd[] = { 0x36, param(0), 0x3A, param(0x60) };
5450 int ret;
....@@ -79,21 +75,20 @@
7975 return;
8076 }
8177
82
- l4f00242t03_reset(pdata->reset_gpio);
78
+ l4f00242t03_reset(priv->reset);
8379
84
- gpio_set_value(pdata->data_enable_gpio, 1);
80
+ gpiod_set_value(priv->enable, 1);
8581 msleep(60);
8682 spi_write(spi, (const u8 *)cmd, ARRAY_SIZE(cmd) * sizeof(u16));
8783 }
8884
8985 static void l4f00242t03_lcd_powerdown(struct spi_device *spi)
9086 {
91
- struct l4f00242t03_pdata *pdata = dev_get_platdata(&spi->dev);
9287 struct l4f00242t03_priv *priv = spi_get_drvdata(spi);
9388
9489 dev_dbg(&spi->dev, "Powering down LCD\n");
9590
96
- gpio_set_value(pdata->data_enable_gpio, 0);
91
+ gpiod_set_value(priv->enable, 0);
9792
9893 regulator_disable(priv->io_reg);
9994 regulator_disable(priv->core_reg);
....@@ -171,13 +166,6 @@
171166 static int l4f00242t03_probe(struct spi_device *spi)
172167 {
173168 struct l4f00242t03_priv *priv;
174
- struct l4f00242t03_pdata *pdata = dev_get_platdata(&spi->dev);
175
- int ret;
176
-
177
- if (pdata == NULL) {
178
- dev_err(&spi->dev, "Uninitialized platform data.\n");
179
- return -EINVAL;
180
- }
181169
182170 priv = devm_kzalloc(&spi->dev, sizeof(struct l4f00242t03_priv),
183171 GFP_KERNEL);
....@@ -190,21 +178,21 @@
190178
191179 priv->spi = spi;
192180
193
- ret = devm_gpio_request_one(&spi->dev, pdata->reset_gpio,
194
- GPIOF_OUT_INIT_HIGH, "lcd l4f00242t03 reset");
195
- if (ret) {
181
+ priv->reset = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_HIGH);
182
+ if (IS_ERR(priv->reset)) {
196183 dev_err(&spi->dev,
197184 "Unable to get the lcd l4f00242t03 reset gpio.\n");
198
- return ret;
185
+ return PTR_ERR(priv->reset);
199186 }
187
+ gpiod_set_consumer_name(priv->reset, "lcd l4f00242t03 reset");
200188
201
- ret = devm_gpio_request_one(&spi->dev, pdata->data_enable_gpio,
202
- GPIOF_OUT_INIT_LOW, "lcd l4f00242t03 data enable");
203
- if (ret) {
189
+ priv->enable = devm_gpiod_get(&spi->dev, "enable", GPIOD_OUT_LOW);
190
+ if (IS_ERR(priv->enable)) {
204191 dev_err(&spi->dev,
205192 "Unable to get the lcd l4f00242t03 data en gpio.\n");
206
- return ret;
193
+ return PTR_ERR(priv->enable);
207194 }
195
+ gpiod_set_consumer_name(priv->enable, "lcd l4f00242t03 data enable");
208196
209197 priv->io_reg = devm_regulator_get(&spi->dev, "vdd");
210198 if (IS_ERR(priv->io_reg)) {