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

staging: iio: isl29028: use regmap to retrieve struct device

Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Simplified version of Coccinelle semantic patch used:

@ a @
identifier drvdata, r;
position p;
@@
struct drvdata@p {
...
struct regmap *r;
...
};

@ b @
identifier a.drvdata, d;
position a.p;
@@
struct drvdata@p {
...
- struct device *d;
...
};

@ passed depends on b @
identifier a.drvdata, a.r, b.d, i, f;
@@
f (..., struct drvdata *i ,...) {
+ struct device *dev = regmap_get_device(i->r);
<+...
- i->d
+ dev
...+>
}

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>

authored by

Alison Schofield and committed by
Jonathan Cameron
722fc316 6ad515c6

+30 -25
+30 -25
drivers/staging/iio/light/isl29028.c
··· 69 69 }; 70 70 71 71 struct isl29028_chip { 72 - struct device *dev; 73 72 struct mutex lock; 74 73 struct regmap *regmap; 75 74 ··· 165 166 166 167 static int isl29028_read_als_ir(struct isl29028_chip *chip, int *als_ir) 167 168 { 169 + struct device *dev = regmap_get_device(chip->regmap); 168 170 unsigned int lsb; 169 171 unsigned int msb; 170 172 int ret; 171 173 172 174 ret = regmap_read(chip->regmap, ISL29028_REG_ALSIR_L, &lsb); 173 175 if (ret < 0) { 174 - dev_err(chip->dev, 176 + dev_err(dev, 175 177 "Error in reading register ALSIR_L err %d\n", ret); 176 178 return ret; 177 179 } 178 180 179 181 ret = regmap_read(chip->regmap, ISL29028_REG_ALSIR_U, &msb); 180 182 if (ret < 0) { 181 - dev_err(chip->dev, 183 + dev_err(dev, 182 184 "Error in reading register ALSIR_U err %d\n", ret); 183 185 return ret; 184 186 } ··· 190 190 191 191 static int isl29028_read_proxim(struct isl29028_chip *chip, int *prox) 192 192 { 193 + struct device *dev = regmap_get_device(chip->regmap); 193 194 unsigned int data; 194 195 int ret; 195 196 196 197 ret = regmap_read(chip->regmap, ISL29028_REG_PROX_DATA, &data); 197 198 if (ret < 0) { 198 - dev_err(chip->dev, "Error in reading register %d, error %d\n", 199 + dev_err(dev, "Error in reading register %d, error %d\n", 199 200 ISL29028_REG_PROX_DATA, ret); 200 201 return ret; 201 202 } ··· 219 218 220 219 static int isl29028_als_get(struct isl29028_chip *chip, int *als_data) 221 220 { 221 + struct device *dev = regmap_get_device(chip->regmap); 222 222 int ret; 223 223 int als_ir_data; 224 224 225 225 if (chip->als_ir_mode != MODE_ALS) { 226 226 ret = isl29028_set_als_ir_mode(chip, MODE_ALS); 227 227 if (ret < 0) { 228 - dev_err(chip->dev, 228 + dev_err(dev, 229 229 "Error in enabling ALS mode err %d\n", ret); 230 230 return ret; 231 231 } ··· 253 251 254 252 static int isl29028_ir_get(struct isl29028_chip *chip, int *ir_data) 255 253 { 254 + struct device *dev = regmap_get_device(chip->regmap); 256 255 int ret; 257 256 258 257 if (chip->als_ir_mode != MODE_IR) { 259 258 ret = isl29028_set_als_ir_mode(chip, MODE_IR); 260 259 if (ret < 0) { 261 - dev_err(chip->dev, 260 + dev_err(dev, 262 261 "Error in enabling IR mode err %d\n", ret); 263 262 return ret; 264 263 } ··· 274 271 int val, int val2, long mask) 275 272 { 276 273 struct isl29028_chip *chip = iio_priv(indio_dev); 274 + struct device *dev = regmap_get_device(chip->regmap); 277 275 int ret = -EINVAL; 278 276 279 277 mutex_lock(&chip->lock); 280 278 switch (chan->type) { 281 279 case IIO_PROXIMITY: 282 280 if (mask != IIO_CHAN_INFO_SAMP_FREQ) { 283 - dev_err(chip->dev, 281 + dev_err(dev, 284 282 "proximity: mask value 0x%08lx not supported\n", 285 283 mask); 286 284 break; 287 285 } 288 286 if (val < 1 || val > 100) { 289 - dev_err(chip->dev, 287 + dev_err(dev, 290 288 "Samp_freq %d is not in range[1:100]\n", val); 291 289 break; 292 290 } 293 291 ret = isl29028_set_proxim_sampling(chip, val); 294 292 if (ret < 0) { 295 - dev_err(chip->dev, 293 + dev_err(dev, 296 294 "Setting proximity samp_freq fail, err %d\n", 297 295 ret); 298 296 break; ··· 303 299 304 300 case IIO_LIGHT: 305 301 if (mask != IIO_CHAN_INFO_SCALE) { 306 - dev_err(chip->dev, 302 + dev_err(dev, 307 303 "light: mask value 0x%08lx not supported\n", 308 304 mask); 309 305 break; 310 306 } 311 307 if ((val != 125) && (val != 2000)) { 312 - dev_err(chip->dev, 308 + dev_err(dev, 313 309 "lux scale %d is invalid [125, 2000]\n", val); 314 310 break; 315 311 } 316 312 ret = isl29028_set_als_scale(chip, val); 317 313 if (ret < 0) { 318 - dev_err(chip->dev, 314 + dev_err(dev, 319 315 "Setting lux scale fail with error %d\n", ret); 320 316 break; 321 317 } ··· 323 319 break; 324 320 325 321 default: 326 - dev_err(chip->dev, "Unsupported channel type\n"); 322 + dev_err(dev, "Unsupported channel type\n"); 327 323 break; 328 324 } 329 325 mutex_unlock(&chip->lock); ··· 335 331 int *val, int *val2, long mask) 336 332 { 337 333 struct isl29028_chip *chip = iio_priv(indio_dev); 334 + struct device *dev = regmap_get_device(chip->regmap); 338 335 int ret = -EINVAL; 339 336 340 337 mutex_lock(&chip->lock); ··· 375 370 break; 376 371 377 372 default: 378 - dev_err(chip->dev, "mask value 0x%08lx not supported\n", mask); 373 + dev_err(dev, "mask value 0x%08lx not supported\n", mask); 379 374 break; 380 375 } 381 376 mutex_unlock(&chip->lock); ··· 422 417 423 418 static int isl29028_chip_init(struct isl29028_chip *chip) 424 419 { 420 + struct device *dev = regmap_get_device(chip->regmap); 425 421 int ret; 426 422 427 423 chip->enable_prox = false; ··· 432 426 433 427 ret = regmap_write(chip->regmap, ISL29028_REG_TEST1_MODE, 0x0); 434 428 if (ret < 0) { 435 - dev_err(chip->dev, "%s(): write to reg %d failed, err = %d\n", 429 + dev_err(dev, "%s(): write to reg %d failed, err = %d\n", 436 430 __func__, ISL29028_REG_TEST1_MODE, ret); 437 431 return ret; 438 432 } 439 433 ret = regmap_write(chip->regmap, ISL29028_REG_TEST2_MODE, 0x0); 440 434 if (ret < 0) { 441 - dev_err(chip->dev, "%s(): write to reg %d failed, err = %d\n", 435 + dev_err(dev, "%s(): write to reg %d failed, err = %d\n", 442 436 __func__, ISL29028_REG_TEST2_MODE, ret); 443 437 return ret; 444 438 } 445 439 446 440 ret = regmap_write(chip->regmap, ISL29028_REG_CONFIGURE, 0x0); 447 441 if (ret < 0) { 448 - dev_err(chip->dev, "%s(): write to reg %d failed, err = %d\n", 442 + dev_err(dev, "%s(): write to reg %d failed, err = %d\n", 449 443 __func__, ISL29028_REG_CONFIGURE, ret); 450 444 return ret; 451 445 } 452 446 453 447 ret = isl29028_set_proxim_sampling(chip, chip->prox_sampling); 454 448 if (ret < 0) { 455 - dev_err(chip->dev, "setting the proximity, err = %d\n", 456 - ret); 449 + dev_err(dev, "setting the proximity, err = %d\n", ret); 457 450 return ret; 458 451 } 459 452 460 453 ret = isl29028_set_als_scale(chip, chip->lux_scale); 461 454 if (ret < 0) 462 - dev_err(chip->dev, 463 - "setting als scale failed, err = %d\n", ret); 455 + dev_err(dev, "setting als scale failed, err = %d\n", ret); 464 456 return ret; 465 457 } 466 458 ··· 500 496 chip = iio_priv(indio_dev); 501 497 502 498 i2c_set_clientdata(client, indio_dev); 503 - chip->dev = &client->dev; 504 499 mutex_init(&chip->lock); 505 500 506 501 chip->regmap = devm_regmap_init_i2c(client, &isl29028_regmap_config); 507 502 if (IS_ERR(chip->regmap)) { 508 503 ret = PTR_ERR(chip->regmap); 509 - dev_err(chip->dev, "regmap initialization failed: %d\n", ret); 504 + dev_err(&client->dev, "regmap initialization failed: %d\n", 505 + ret); 510 506 return ret; 511 507 } 512 508 513 509 ret = isl29028_chip_init(chip); 514 510 if (ret < 0) { 515 - dev_err(chip->dev, "chip initialization failed: %d\n", ret); 511 + dev_err(&client->dev, "chip initialization failed: %d\n", ret); 516 512 return ret; 517 513 } 518 514 ··· 524 520 indio_dev->modes = INDIO_DIRECT_MODE; 525 521 ret = devm_iio_device_register(indio_dev->dev.parent, indio_dev); 526 522 if (ret < 0) { 527 - dev_err(chip->dev, "iio registration fails with error %d\n", 523 + dev_err(&client->dev, 524 + "iio registration fails with error %d\n", 528 525 ret); 529 526 return ret; 530 527 }