Revert "[media] Add device tree support to adp1653 flash driver"

As requested by Sakari:

	"The driver changes are still being reviewed.
	 It's been proposed that the max-microamp property be renamed."

So, as the DT bindings are not agreed upstream yet, let's revert
it.
Requested-by: NSakari Ailus <sakari.ailus@iki.fi>
This reverts commit b6100f10.
上级 b6100f10
master alk-4.19.24 alk-4.19.30 alk-4.19.34 alk-4.19.36 alk-4.19.43 alk-4.19.48 alk-4.19.57 ck-4.19.67 ck-4.19.81 ck-4.19.91 github/fork/deepanshu1422/fix-typo-in-comment github/fork/haosdent/fix-typo linux-next v4.19.91 v4.19.90 v4.19.89 v4.19.88 v4.19.87 v4.19.86 v4.19.85 v4.19.84 v4.19.83 v4.19.82 v4.19.81 v4.19.80 v4.19.79 v4.19.78 v4.19.77 v4.19.76 v4.19.75 v4.19.74 v4.19.73 v4.19.72 v4.19.71 v4.19.70 v4.19.69 v4.19.68 v4.19.67 v4.19.66 v4.19.65 v4.19.64 v4.19.63 v4.19.62 v4.19.61 v4.19.60 v4.19.59 v4.19.58 v4.19.57 v4.19.56 v4.19.55 v4.19.54 v4.19.53 v4.19.52 v4.19.51 v4.19.50 v4.19.49 v4.19.48 v4.19.47 v4.19.46 v4.19.45 v4.19.44 v4.19.43 v4.19.42 v4.19.41 v4.19.40 v4.19.39 v4.19.38 v4.19.37 v4.19.36 v4.19.35 v4.19.34 v4.19.33 v4.19.32 v4.19.31 v4.19.30 v4.19.29 v4.19.28 v4.19.27 v4.19.26 v4.19.25 v4.19.24 v4.19.23 v4.19.22 v4.19.21 v4.19.20 v4.19.19 v4.19.18 v4.19.17 v4.19.16 v4.19.15 v4.19.14 v4.19.13 v4.19.12 v4.19.11 v4.19.10 v4.19.9 v4.19.8 v4.19.7 v4.19.6 v4.19.5 v4.19.4 v4.19.3 v4.19.2 v4.19.1 v4.19 v4.19-rc8 v4.19-rc7 v4.19-rc6 v4.19-rc5 v4.19-rc4 v4.19-rc3 v4.19-rc2 v4.19-rc1 ck-release-21 ck-release-20 ck-release-19.2 ck-release-19.1 ck-release-19 ck-release-18 ck-release-17.2 ck-release-17.1 ck-release-17 ck-release-16 ck-release-15.1 ck-release-15 ck-release-14 ck-release-13.2 ck-release-13 ck-release-12 ck-release-11 ck-release-10 ck-release-9 ck-release-7 alk-release-15 alk-release-14 alk-release-13.2 alk-release-13 alk-release-12 alk-release-11 alk-release-10 alk-release-9 alk-release-7
无相关合并请求
* Analog Devices ADP1653 flash LED driver
Required Properties:
- compatible: Must contain be "adi,adp1653"
- reg: I2C slave address
- gpios: References to the GPIO that controls the power for the chip.
There are two led outputs available - flash and indicator. One led is
represented by one child node, nodes need to be named "flash" and "indicator".
Required properties of the LED child node:
- max-microamp : see Documentation/devicetree/bindings/leds/common.txt
Required properties of the flash LED child node:
- flash-max-microamp : see Documentation/devicetree/bindings/leds/common.txt
- flash-timeout-us : see Documentation/devicetree/bindings/leds/common.txt
Example:
adp1653: led-controller@30 {
compatible = "adi,adp1653";
reg = <0x30>;
gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; /* 88 */
flash {
flash-timeout-us = <500000>;
flash-max-microamp = <320000>;
max-microamp = <50000>;
};
indicator {
max-microamp = <17500>;
};
};
......@@ -8,7 +8,6 @@
* Contributors:
* Sakari Ailus <sakari.ailus@iki.fi>
* Tuukka Toivonen <tuukkat76@gmail.com>
* Pavel Machek <pavel@ucw.cz>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
......@@ -35,8 +34,6 @@
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/of_gpio.h>
#include <linux/gpio.h>
#include <media/adp1653.h>
#include <media/v4l2-device.h>
......@@ -309,17 +306,9 @@ adp1653_init_device(struct adp1653_flash *flash)
static int
__adp1653_set_power(struct adp1653_flash *flash, int on)
{
int ret = 0;
if (flash->platform_data->power) {
ret = flash->platform_data->power(&flash->subdev, on);
} else {
gpio_set_value(flash->platform_data->power_gpio, on);
if (on)
/* Some delay is apparently required. */
udelay(20);
}
int ret;
ret = flash->platform_data->power(&flash->subdev, on);
if (ret < 0)
return ret;
......@@ -327,13 +316,8 @@ __adp1653_set_power(struct adp1653_flash *flash, int on)
return 0;
ret = adp1653_init_device(flash);
if (ret >= 0)
return ret;
if (flash->platform_data->power)
if (ret < 0)
flash->platform_data->power(&flash->subdev, 0);
else
gpio_set_value(flash->platform_data->power_gpio, 0);
return ret;
}
......@@ -423,77 +407,21 @@ static int adp1653_resume(struct device *dev)
#endif /* CONFIG_PM */
static int adp1653_of_init(struct i2c_client *client,
struct adp1653_flash *flash,
struct device_node *node)
{
u32 val;
struct adp1653_platform_data *pd;
enum of_gpio_flags flags;
int gpio;
struct device_node *child;
if (!node)
return -EINVAL;
pd = devm_kzalloc(&client->dev, sizeof(*pd), GFP_KERNEL);
if (!pd)
return -ENOMEM;
flash->platform_data = pd;
child = of_get_child_by_name(node, "flash");
if (!child)
return -EINVAL;
if (of_property_read_u32(child, "flash-timeout-microsec", &val))
return -EINVAL;
pd->max_flash_timeout = val;
if (of_property_read_u32(child, "flash-max-microamp", &val))
return -EINVAL;
pd->max_flash_intensity = val/1000;
if (of_property_read_u32(child, "max-microamp", &val))
return -EINVAL;
pd->max_torch_intensity = val/1000;
child = of_get_child_by_name(node, "indicator");
if (!child)
return -EINVAL;
if (of_property_read_u32(child, "max-microamp", &val))
return -EINVAL;
pd->max_indicator_intensity = val;
if (!of_find_property(node, "gpios", NULL)) {
dev_err(&client->dev, "No gpio node\n");
return -EINVAL;
}
pd->power_gpio = of_get_gpio_flags(node, 0, &flags);
if (pd->power_gpio < 0) {
dev_err(&client->dev, "Error getting GPIO\n");
return -EINVAL;
}
return 0;
}
static int adp1653_probe(struct i2c_client *client,
const struct i2c_device_id *devid)
{
struct adp1653_flash *flash;
int ret;
/* we couldn't work without platform data */
if (client->dev.platform_data == NULL)
return -ENODEV;
flash = devm_kzalloc(&client->dev, sizeof(*flash), GFP_KERNEL);
if (flash == NULL)
return -ENOMEM;
flash->platform_data = client->dev.platform_data;
if (!flash->platform_data) {
ret = adp1653_of_init(client, flash, client->dev.of_node);
if (ret)
return ret;
}
mutex_init(&flash->power_lock);
......@@ -510,10 +438,10 @@ static int adp1653_probe(struct i2c_client *client,
goto free_and_quit;
flash->subdev.entity.type = MEDIA_ENT_T_V4L2_SUBDEV_FLASH;
return 0;
free_and_quit:
dev_err(&client->dev, "adp1653: failed to register device\n");
v4l2_ctrl_handler_free(&flash->ctrls);
return ret;
}
......@@ -536,7 +464,7 @@ static const struct i2c_device_id adp1653_id_table[] = {
};
MODULE_DEVICE_TABLE(i2c, adp1653_id_table);
static const struct dev_pm_ops adp1653_pm_ops = {
static struct dev_pm_ops adp1653_pm_ops = {
.suspend = adp1653_suspend,
.resume = adp1653_resume,
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部