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

media: i2c: ov13b10: Replace client->dev usage

The driver needs to access the struct device in many places, and
retrieves it from the i2c_client itself retrieved with
v4l2_get_subdevdata(). Store it as a pointer in struct ov13b10 and
access it from there instead, to simplify the driver.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Mehdi Djait <mehdi.djait@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>

authored by

Laurent Pinchart and committed by
Mauro Carvalho Chehab
42bab2cb 9df44248

+43 -46
+43 -46
drivers/media/i2c/ov13b10.c
··· 700 700 }; 701 701 702 702 struct ov13b10 { 703 + struct device *dev; 704 + 703 705 struct v4l2_subdev sd; 704 706 struct media_pad pad; 705 707 ··· 807 805 static int ov13b10_write_regs(struct ov13b10 *ov13b, 808 806 const struct ov13b10_reg *regs, u32 len) 809 807 { 810 - struct i2c_client *client = v4l2_get_subdevdata(&ov13b->sd); 811 808 int ret; 812 809 u32 i; 813 810 ··· 814 813 ret = ov13b10_write_reg(ov13b, regs[i].address, 1, 815 814 regs[i].val); 816 815 if (ret) { 817 - dev_err_ratelimited(&client->dev, 816 + dev_err_ratelimited(ov13b->dev, 818 817 "Failed to write reg 0x%4.4x. error = %d\n", 819 818 regs[i].address, ret); 820 819 ··· 969 968 { 970 969 struct ov13b10 *ov13b = container_of(ctrl->handler, 971 970 struct ov13b10, ctrl_handler); 972 - struct i2c_client *client = v4l2_get_subdevdata(&ov13b->sd); 973 971 s64 max; 974 972 int ret; 975 973 ··· 987 987 * Applying V4L2 control value only happens 988 988 * when power is up for streaming 989 989 */ 990 - if (!pm_runtime_get_if_in_use(&client->dev)) 990 + if (!pm_runtime_get_if_in_use(ov13b->dev)) 991 991 return 0; 992 992 993 993 ret = 0; ··· 1021 1021 ov13b10_set_ctrl_vflip(ov13b, ctrl->val); 1022 1022 break; 1023 1023 default: 1024 - dev_info(&client->dev, 1024 + dev_info(ov13b->dev, 1025 1025 "ctrl(id:0x%x,val:0x%x) is not handled\n", 1026 1026 ctrl->id, ctrl->val); 1027 1027 break; 1028 1028 } 1029 1029 1030 - pm_runtime_put(&client->dev); 1030 + pm_runtime_put(ov13b->dev); 1031 1031 1032 1032 return ret; 1033 1033 } ··· 1166 1166 /* Verify chip ID */ 1167 1167 static int ov13b10_identify_module(struct ov13b10 *ov13b) 1168 1168 { 1169 - struct i2c_client *client = v4l2_get_subdevdata(&ov13b->sd); 1170 1169 int ret; 1171 1170 u32 val; 1172 1171 ··· 1178 1179 return ret; 1179 1180 1180 1181 if (val != OV13B10_CHIP_ID) { 1181 - dev_err(&client->dev, "chip id mismatch: %x!=%x\n", 1182 + dev_err(ov13b->dev, "chip id mismatch: %x!=%x\n", 1182 1183 OV13B10_CHIP_ID, val); 1183 1184 return -EIO; 1184 1185 } ··· 1233 1234 1234 1235 static int ov13b10_start_streaming(struct ov13b10 *ov13b) 1235 1236 { 1236 - struct i2c_client *client = v4l2_get_subdevdata(&ov13b->sd); 1237 1237 const struct ov13b10_reg_list *reg_list; 1238 1238 int ret, link_freq_index; 1239 1239 ··· 1244 1246 ret = ov13b10_write_reg(ov13b, OV13B10_REG_SOFTWARE_RST, 1245 1247 OV13B10_REG_VALUE_08BIT, OV13B10_SOFTWARE_RST); 1246 1248 if (ret) { 1247 - dev_err(&client->dev, "%s failed to set powerup registers\n", 1249 + dev_err(ov13b->dev, "%s failed to set powerup registers\n", 1248 1250 __func__); 1249 1251 return ret; 1250 1252 } ··· 1253 1255 reg_list = &link_freq_configs[link_freq_index].reg_list; 1254 1256 ret = ov13b10_write_reg_list(ov13b, reg_list); 1255 1257 if (ret) { 1256 - dev_err(&client->dev, "%s failed to set plls\n", __func__); 1258 + dev_err(ov13b->dev, "%s failed to set plls\n", __func__); 1257 1259 return ret; 1258 1260 } 1259 1261 ··· 1261 1263 reg_list = &ov13b->cur_mode->reg_list; 1262 1264 ret = ov13b10_write_reg_list(ov13b, reg_list); 1263 1265 if (ret) { 1264 - dev_err(&client->dev, "%s failed to set mode\n", __func__); 1266 + dev_err(ov13b->dev, "%s failed to set mode\n", __func__); 1265 1267 return ret; 1266 1268 } 1267 1269 ··· 1285 1287 static int ov13b10_set_stream(struct v4l2_subdev *sd, int enable) 1286 1288 { 1287 1289 struct ov13b10 *ov13b = to_ov13b10(sd); 1288 - struct i2c_client *client = v4l2_get_subdevdata(sd); 1289 1290 int ret = 0; 1290 1291 1291 1292 mutex_lock(&ov13b->mutex); 1292 1293 1293 1294 if (enable) { 1294 - ret = pm_runtime_resume_and_get(&client->dev); 1295 + ret = pm_runtime_resume_and_get(ov13b->dev); 1295 1296 if (ret < 0) 1296 1297 goto err_unlock; 1297 1298 ··· 1303 1306 goto err_rpm_put; 1304 1307 } else { 1305 1308 ov13b10_stop_streaming(ov13b); 1306 - pm_runtime_put(&client->dev); 1309 + pm_runtime_put(ov13b->dev); 1307 1310 } 1308 1311 1309 1312 mutex_unlock(&ov13b->mutex); ··· 1311 1314 return ret; 1312 1315 1313 1316 err_rpm_put: 1314 - pm_runtime_put(&client->dev); 1317 + pm_runtime_put(ov13b->dev); 1315 1318 err_unlock: 1316 1319 mutex_unlock(&ov13b->mutex); 1317 1320 ··· 1357 1360 /* Initialize control handlers */ 1358 1361 static int ov13b10_init_controls(struct ov13b10 *ov13b) 1359 1362 { 1360 - struct i2c_client *client = v4l2_get_subdevdata(&ov13b->sd); 1361 1363 struct v4l2_fwnode_device_properties props; 1362 1364 struct v4l2_ctrl_handler *ctrl_hdlr; 1363 1365 s64 exposure_max; ··· 1439 1443 1440 1444 if (ctrl_hdlr->error) { 1441 1445 ret = ctrl_hdlr->error; 1442 - dev_err(&client->dev, "%s control init failed (%d)\n", 1446 + dev_err(ov13b->dev, "%s control init failed (%d)\n", 1443 1447 __func__, ret); 1444 1448 goto error; 1445 1449 } 1446 1450 1447 - ret = v4l2_fwnode_device_parse(&client->dev, &props); 1451 + ret = v4l2_fwnode_device_parse(ov13b->dev, &props); 1448 1452 if (ret) 1449 1453 goto error; 1450 1454 ··· 1470 1474 mutex_destroy(&ov13b->mutex); 1471 1475 } 1472 1476 1473 - static int ov13b10_get_pm_resources(struct device *dev) 1477 + static int ov13b10_get_pm_resources(struct ov13b10 *ov13b) 1474 1478 { 1475 - struct v4l2_subdev *sd = dev_get_drvdata(dev); 1476 - struct ov13b10 *ov13b = to_ov13b10(sd); 1477 1479 int ret; 1478 1480 1479 - ov13b->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); 1481 + ov13b->reset = devm_gpiod_get_optional(ov13b->dev, "reset", GPIOD_OUT_LOW); 1480 1482 if (IS_ERR(ov13b->reset)) 1481 - return dev_err_probe(dev, PTR_ERR(ov13b->reset), 1483 + return dev_err_probe(ov13b->dev, PTR_ERR(ov13b->reset), 1482 1484 "failed to get reset gpio\n"); 1483 1485 1484 - ov13b->img_clk = devm_clk_get_optional(dev, NULL); 1486 + ov13b->img_clk = devm_clk_get_optional(ov13b->dev, NULL); 1485 1487 if (IS_ERR(ov13b->img_clk)) 1486 - return dev_err_probe(dev, PTR_ERR(ov13b->img_clk), 1488 + return dev_err_probe(ov13b->dev, PTR_ERR(ov13b->img_clk), 1487 1489 "failed to get imaging clock\n"); 1488 1490 1489 - ov13b->avdd = devm_regulator_get_optional(dev, "avdd"); 1491 + ov13b->avdd = devm_regulator_get_optional(ov13b->dev, "avdd"); 1490 1492 if (IS_ERR(ov13b->avdd)) { 1491 1493 ret = PTR_ERR(ov13b->avdd); 1492 1494 ov13b->avdd = NULL; 1493 1495 if (ret != -ENODEV) 1494 - return dev_err_probe(dev, ret, 1496 + return dev_err_probe(ov13b->dev, ret, 1495 1497 "failed to get avdd regulator\n"); 1496 1498 } 1497 1499 1498 1500 return 0; 1499 1501 } 1500 1502 1501 - static int ov13b10_check_hwcfg(struct device *dev, struct ov13b10 *ov13b) 1503 + static int ov13b10_check_hwcfg(struct ov13b10 *ov13b) 1502 1504 { 1503 1505 struct v4l2_fwnode_endpoint bus_cfg = { 1504 1506 .bus_type = V4L2_MBUS_CSI2_DPHY 1505 1507 }; 1508 + struct device *dev = ov13b->dev; 1506 1509 struct fwnode_handle *ep; 1507 1510 struct fwnode_handle *fwnode = dev_fwnode(dev); 1508 1511 unsigned int i, j; ··· 1597 1602 if (!ov13b) 1598 1603 return -ENOMEM; 1599 1604 1605 + ov13b->dev = &client->dev; 1606 + 1600 1607 /* Check HW config */ 1601 - ret = ov13b10_check_hwcfg(&client->dev, ov13b); 1608 + ret = ov13b10_check_hwcfg(ov13b); 1602 1609 if (ret) { 1603 - dev_err(&client->dev, "failed to check hwcfg: %d", ret); 1610 + dev_err(ov13b->dev, "failed to check hwcfg: %d", ret); 1604 1611 return ret; 1605 1612 } 1606 1613 1607 1614 /* Initialize subdev */ 1608 1615 v4l2_i2c_subdev_init(&ov13b->sd, client, &ov13b10_subdev_ops); 1609 1616 1610 - ret = ov13b10_get_pm_resources(&client->dev); 1617 + ret = ov13b10_get_pm_resources(ov13b); 1611 1618 if (ret) 1612 1619 return ret; 1613 1620 1614 - full_power = acpi_dev_state_d0(&client->dev); 1621 + full_power = acpi_dev_state_d0(ov13b->dev); 1615 1622 if (full_power) { 1616 - ret = ov13b10_power_on(&client->dev); 1623 + ret = ov13b10_power_on(ov13b->dev); 1617 1624 if (ret) { 1618 - dev_err(&client->dev, "failed to power on\n"); 1625 + dev_err(ov13b->dev, "failed to power on\n"); 1619 1626 return ret; 1620 1627 } 1621 1628 1622 1629 /* Check module identity */ 1623 1630 ret = ov13b10_identify_module(ov13b); 1624 1631 if (ret) { 1625 - dev_err(&client->dev, "failed to find sensor: %d\n", ret); 1632 + dev_err(ov13b->dev, "failed to find sensor: %d\n", ret); 1626 1633 goto error_power_off; 1627 1634 } 1628 1635 } ··· 1643 1646 ov13b->pad.flags = MEDIA_PAD_FL_SOURCE; 1644 1647 ret = media_entity_pads_init(&ov13b->sd.entity, 1, &ov13b->pad); 1645 1648 if (ret) { 1646 - dev_err(&client->dev, "%s failed:%d\n", __func__, ret); 1649 + dev_err(ov13b->dev, "%s failed:%d\n", __func__, ret); 1647 1650 goto error_handler_free; 1648 1651 } 1649 1652 ··· 1654 1657 */ 1655 1658 /* Set the device's state to active if it's in D0 state. */ 1656 1659 if (full_power) 1657 - pm_runtime_set_active(&client->dev); 1658 - pm_runtime_enable(&client->dev); 1659 - pm_runtime_idle(&client->dev); 1660 + pm_runtime_set_active(ov13b->dev); 1661 + pm_runtime_enable(ov13b->dev); 1662 + pm_runtime_idle(ov13b->dev); 1660 1663 1661 1664 ret = v4l2_async_register_subdev_sensor(&ov13b->sd); 1662 1665 if (ret < 0) ··· 1665 1668 return 0; 1666 1669 1667 1670 error_media_entity_runtime_pm: 1668 - pm_runtime_disable(&client->dev); 1671 + pm_runtime_disable(ov13b->dev); 1669 1672 if (full_power) 1670 - pm_runtime_set_suspended(&client->dev); 1673 + pm_runtime_set_suspended(ov13b->dev); 1671 1674 media_entity_cleanup(&ov13b->sd.entity); 1672 1675 1673 1676 error_handler_free: 1674 1677 ov13b10_free_controls(ov13b); 1675 - dev_err(&client->dev, "%s failed:%d\n", __func__, ret); 1678 + dev_err(ov13b->dev, "%s failed:%d\n", __func__, ret); 1676 1679 1677 1680 error_power_off: 1678 - ov13b10_power_off(&client->dev); 1681 + ov13b10_power_off(ov13b->dev); 1679 1682 1680 1683 return ret; 1681 1684 } ··· 1689 1692 media_entity_cleanup(&sd->entity); 1690 1693 ov13b10_free_controls(ov13b); 1691 1694 1692 - pm_runtime_disable(&client->dev); 1693 - pm_runtime_set_suspended(&client->dev); 1695 + pm_runtime_disable(ov13b->dev); 1696 + pm_runtime_set_suspended(ov13b->dev); 1694 1697 } 1695 1698 1696 1699 static DEFINE_RUNTIME_DEV_PM_OPS(ov13b10_pm_ops, ov13b10_suspend,