Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

media: dw9714: move power sequences to dedicated functions

Move the power-up and power-down sequences to their own functions. This is
a preparation for the upcoming powerdown pin support.

Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>

authored by

Matthias Fend and committed by
Hans Verkuil
1eefe42e feec4b07

+29 -15
+29 -15
drivers/media/i2c/dw9714.c
··· 137 137 return hdl->error; 138 138 } 139 139 140 + static int dw9714_power_up(struct dw9714_device *dw9714_dev) 141 + { 142 + int ret; 143 + 144 + ret = regulator_enable(dw9714_dev->vcc); 145 + if (ret) 146 + return ret; 147 + 148 + usleep_range(1000, 2000); 149 + 150 + return 0; 151 + } 152 + 153 + static int dw9714_power_down(struct dw9714_device *dw9714_dev) 154 + { 155 + return regulator_disable(dw9714_dev->vcc); 156 + } 157 + 140 158 static int dw9714_probe(struct i2c_client *client) 141 159 { 142 160 struct dw9714_device *dw9714_dev; ··· 169 151 if (IS_ERR(dw9714_dev->vcc)) 170 152 return PTR_ERR(dw9714_dev->vcc); 171 153 172 - rval = regulator_enable(dw9714_dev->vcc); 173 - if (rval < 0) { 174 - dev_err(&client->dev, "failed to enable vcc: %d\n", rval); 175 - return rval; 176 - } 177 - 178 - usleep_range(1000, 2000); 154 + rval = dw9714_power_up(dw9714_dev); 155 + if (rval) 156 + return dev_err_probe(&client->dev, rval, 157 + "failed to power up: %d\n", rval); 179 158 180 159 v4l2_i2c_subdev_init(&dw9714_dev->sd, client, &dw9714_ops); 181 160 dw9714_dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | ··· 200 185 return 0; 201 186 202 187 err_cleanup: 203 - regulator_disable(dw9714_dev->vcc); 188 + dw9714_power_down(dw9714_dev); 204 189 v4l2_ctrl_handler_free(&dw9714_dev->ctrls_vcm); 205 190 media_entity_cleanup(&dw9714_dev->sd.entity); 206 191 ··· 215 200 216 201 pm_runtime_disable(&client->dev); 217 202 if (!pm_runtime_status_suspended(&client->dev)) { 218 - ret = regulator_disable(dw9714_dev->vcc); 203 + ret = dw9714_power_down(dw9714_dev); 219 204 if (ret) { 220 205 dev_err(&client->dev, 221 - "Failed to disable vcc: %d\n", ret); 206 + "Failed to power down: %d\n", ret); 222 207 } 223 208 } 224 209 pm_runtime_set_suspended(&client->dev); ··· 249 234 usleep_range(DW9714_CTRL_DELAY_US, DW9714_CTRL_DELAY_US + 10); 250 235 } 251 236 252 - ret = regulator_disable(dw9714_dev->vcc); 237 + ret = dw9714_power_down(dw9714_dev); 253 238 if (ret) 254 - dev_err(dev, "Failed to disable vcc: %d\n", ret); 239 + dev_err(dev, "Failed to power down: %d\n", ret); 255 240 256 241 return ret; 257 242 } ··· 272 257 if (pm_runtime_suspended(&client->dev)) 273 258 return 0; 274 259 275 - ret = regulator_enable(dw9714_dev->vcc); 260 + ret = dw9714_power_up(dw9714_dev); 276 261 if (ret) { 277 - dev_err(dev, "Failed to enable vcc: %d\n", ret); 262 + dev_err(dev, "Failed to power up: %d\n", ret); 278 263 return ret; 279 264 } 280 - usleep_range(1000, 2000); 281 265 282 266 for (val = dw9714_dev->current_val % DW9714_CTRL_STEPS; 283 267 val < dw9714_dev->current_val + DW9714_CTRL_STEPS - 1;