aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/i2c
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2014-09-20 17:38:56 -0400
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-04-02 20:29:56 -0400
commit7c3be9f812be6c2466ecb705200fc13cc34caa9c (patch)
tree8a9511b18f1844e598fc55dd208e9d642bb4d1ab /drivers/media/i2c
parent9012d0888c8fc473d5760f2367b002dfddee80f9 (diff)
[media] v4l: mt9p031: Convert to the gpiod API
This simplifies platform data and DT integration. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/i2c')
-rw-r--r--drivers/media/i2c/mt9p031.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
index 9258d048a1e3..0db15f528ac1 100644
--- a/drivers/media/i2c/mt9p031.c
+++ b/drivers/media/i2c/mt9p031.c
@@ -15,12 +15,11 @@
15#include <linux/clk.h> 15#include <linux/clk.h>
16#include <linux/delay.h> 16#include <linux/delay.h>
17#include <linux/device.h> 17#include <linux/device.h>
18#include <linux/gpio.h> 18#include <linux/gpio/consumer.h>
19#include <linux/i2c.h> 19#include <linux/i2c.h>
20#include <linux/log2.h> 20#include <linux/log2.h>
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/of.h> 22#include <linux/of.h>
23#include <linux/of_gpio.h>
24#include <linux/of_graph.h> 23#include <linux/of_graph.h>
25#include <linux/pm.h> 24#include <linux/pm.h>
26#include <linux/regulator/consumer.h> 25#include <linux/regulator/consumer.h>
@@ -136,7 +135,7 @@ struct mt9p031 {
136 struct aptina_pll pll; 135 struct aptina_pll pll;
137 unsigned int clk_div; 136 unsigned int clk_div;
138 bool use_pll; 137 bool use_pll;
139 int reset; 138 struct gpio_desc *reset;
140 139
141 struct v4l2_ctrl_handler ctrls; 140 struct v4l2_ctrl_handler ctrls;
142 struct v4l2_ctrl *blc_auto; 141 struct v4l2_ctrl *blc_auto;
@@ -309,9 +308,9 @@ static int mt9p031_power_on(struct mt9p031 *mt9p031)
309{ 308{
310 int ret; 309 int ret;
311 310
312 /* Ensure RESET_BAR is low */ 311 /* Ensure RESET_BAR is active */
313 if (gpio_is_valid(mt9p031->reset)) { 312 if (mt9p031->reset) {
314 gpio_set_value(mt9p031->reset, 0); 313 gpiod_set_value(mt9p031->reset, 1);
315 usleep_range(1000, 2000); 314 usleep_range(1000, 2000);
316 } 315 }
317 316
@@ -332,8 +331,8 @@ static int mt9p031_power_on(struct mt9p031 *mt9p031)
332 } 331 }
333 332
334 /* Now RESET_BAR must be high */ 333 /* Now RESET_BAR must be high */
335 if (gpio_is_valid(mt9p031->reset)) { 334 if (mt9p031->reset) {
336 gpio_set_value(mt9p031->reset, 1); 335 gpiod_set_value(mt9p031->reset, 0);
337 usleep_range(1000, 2000); 336 usleep_range(1000, 2000);
338 } 337 }
339 338
@@ -342,8 +341,8 @@ static int mt9p031_power_on(struct mt9p031 *mt9p031)
342 341
343static void mt9p031_power_off(struct mt9p031 *mt9p031) 342static void mt9p031_power_off(struct mt9p031 *mt9p031)
344{ 343{
345 if (gpio_is_valid(mt9p031->reset)) { 344 if (mt9p031->reset) {
346 gpio_set_value(mt9p031->reset, 0); 345 gpiod_set_value(mt9p031->reset, 1);
347 usleep_range(1000, 2000); 346 usleep_range(1000, 2000);
348 } 347 }
349 348
@@ -1023,7 +1022,6 @@ mt9p031_get_pdata(struct i2c_client *client)
1023 if (!pdata) 1022 if (!pdata)
1024 goto done; 1023 goto done;
1025 1024
1026 pdata->reset = of_get_named_gpio(client->dev.of_node, "reset-gpios", 0);
1027 of_property_read_u32(np, "input-clock-frequency", &pdata->ext_freq); 1025 of_property_read_u32(np, "input-clock-frequency", &pdata->ext_freq);
1028 of_property_read_u32(np, "pixel-clock-frequency", &pdata->target_freq); 1026 of_property_read_u32(np, "pixel-clock-frequency", &pdata->target_freq);
1029 1027
@@ -1060,7 +1058,6 @@ static int mt9p031_probe(struct i2c_client *client,
1060 mt9p031->output_control = MT9P031_OUTPUT_CONTROL_DEF; 1058 mt9p031->output_control = MT9P031_OUTPUT_CONTROL_DEF;
1061 mt9p031->mode2 = MT9P031_READ_MODE_2_ROW_BLC; 1059 mt9p031->mode2 = MT9P031_READ_MODE_2_ROW_BLC;
1062 mt9p031->model = did->driver_data; 1060 mt9p031->model = did->driver_data;
1063 mt9p031->reset = -1;
1064 1061
1065 mt9p031->regulators[0].supply = "vdd"; 1062 mt9p031->regulators[0].supply = "vdd";
1066 mt9p031->regulators[1].supply = "vdd_io"; 1063 mt9p031->regulators[1].supply = "vdd_io";
@@ -1136,14 +1133,8 @@ static int mt9p031_probe(struct i2c_client *client,
1136 mt9p031->format.field = V4L2_FIELD_NONE; 1133 mt9p031->format.field = V4L2_FIELD_NONE;
1137 mt9p031->format.colorspace = V4L2_COLORSPACE_SRGB; 1134 mt9p031->format.colorspace = V4L2_COLORSPACE_SRGB;
1138 1135
1139 if (gpio_is_valid(pdata->reset)) { 1136 mt9p031->reset = devm_gpiod_get_optional(&client->dev, "reset",
1140 ret = devm_gpio_request_one(&client->dev, pdata->reset, 1137 GPIOD_OUT_HIGH);
1141 GPIOF_OUT_INIT_LOW, "mt9p031_rst");
1142 if (ret < 0)
1143 goto done;
1144
1145 mt9p031->reset = pdata->reset;
1146 }
1147 1138
1148 ret = mt9p031_clk_setup(mt9p031); 1139 ret = mt9p031_clk_setup(mt9p031);
1149 if (ret) 1140 if (ret)